28 液晶屏7寸LCD显示测试
软件版本:VIVADO2021.1
操作系统:WIN10 64bit
硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA
登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!
1 概述
	
前文中,我们已经实现了HDMI输出实验,米联客的HDMI输出采用了FPGA实现了HDMI输出协议,直接驱动了HDMI接口的液晶屏。我们可以把HDMI输出IP看作一个黑盒子,黑盒子的接口是RGB输入接口,输出是HDMI接口输出。不管是HDMI接口,或者是VGA接口,亦或是RGB接口等等...关键的是让程序正确输出RGB时序。对于本文中使用的液晶屏,可以通过RGB接口直接驱动液晶屏,也可以通过LVDS驱动液晶屏,如果使用LVDS接口,也是首先要正确输出RGB的驱动时序。
米联客的液晶屏同时支持RGB接口和LVDS接口,RGB接口是3.3V IO,LVDS接口支持标准的LVDS和LVDS25。用户在使用液晶屏的时候一定要根据开发板支持的电平选择对应的驱动接口,以免损坏液晶屏或者开发板。
液晶屏参数:
型号  | VCLD-7TH  | 
液晶显示屏型号  | T HC63LVDM83D  | 
液晶分辨率  | 1024*600  | 
液晶屏幕比例  | 4:3  | 
液晶驱动接口  | RGB/VGA  | 
触摸芯片型号  | GP915  | 
支持触点数量  | 5  | 
支持最大分辨率  | 1024*600  | 
2 LCD液晶屏参数
	
以上参数中液晶屏支持分辨率为1024*600,使用的接口是LVDS接口。我们做的液晶屏产品增加的RGB转LVDS芯片所以也支持RGB接口驱动液晶屏,对于一些新手来说,RGB接口更加方便,而且RGB是3.3V的接口。
3 LCD液晶屏驱动时序
		
本实验以8bit LVDS 方式工作,下图中给出了6bit和8bit的工作时序,FPGA程序设计需要满足以下时序。另外注意,时钟的占空比,高电平:低电平=4:3
	
4 LCD液晶屏接口
RGB接口定义  | |||
引脚号  | 标识  | 描述  | 类型  | 
1  | CTP_INT  | 触摸中断  | 输出  | 
2  | CTP_RST  | 触摸复位  | 输入  | 
3  | CTP_SDA  | I2C数据脚  | 输入/输出  | 
4  | CTP_SCL  | I2C时钟脚  | 输出入  | 
5  | GND  | 电源地  | 电源  | 
6  | PWM  | PWM调光  | 输入  | 
7  | DE  | 数据有效  | 输入  | 
8  | VSYNC  | 场同步  | 输入  | 
9  | HSYNC  | 行同步  | 输入  | 
10  | BL-EN  | 背光使能  | 输入  | 
11  | PCLK  | 像素时钟  | 输入  | 
12  | GND  | 电源地  | 电源  | 
13~20  | B0~B7  | 数据  | 输入  | 
21~28  | G0~G7  | 数据  | 输入  | 
29~36  | R0~R7  | 数据  | 输入  | 
37  | VDD  | 电源3.3V  | 电源  | 
38  | GND  | 电源地  | 电源  | 
39  | BL_VDD  | 电源5V  | 电源  | 
40  | BL_VDD  | 电源5V  | 电源  | 
LVDS接口定义  | |||
引脚号  | 标识  | 类型  | |
1~3  | BL-5V  | 电源5V  | 电源  | 
4  | NC  | 悬空  | |
5  | BL-EN  | 背光使能  | 输入  | 
6  | PWM  | PWM调光  | 输入  | 
7  | NC  | 悬空  | |
8~10  | BL-GND  | 电源地  | 电源  | 
11  | GND  | 电源地  | 电源  | 
12  | CTP_INT  | 触摸中断  | 输出  | 
13  | CTP_RST  | 触摸复位  | 输入  | 
14  | CTP_SCL  | I2C时钟脚  | 输入  | 
15  | CTP_SDA  | I2C数据脚  | 输入/输出  | 
16  | GND  | 电源地  | 电源  | 
17~18  | NC  | 悬空  | |
19  | GND  | 电源地  | 电源  | 
20/21  | RXIN3+/ RXIN3-  | 差分数据  | 输入  | 
22  | GND  | 电源地  | 电源  | 
23/24  | RXCLKIN+/ RXCLKIN -  | 差分时钟  | 输入  | 
25  | GND  | 电源地  | 电源  | 
26/27  | RXIN2+/ RXIN2-  | 差分数据  | 输入  | 
28  | GND  | 电源地  | 电源  | 
29/30  | RXIN1+/ RXIN1-  | 差分数据  | 输入  | 
31  | GND  | 电源地  | 电源  | 
32/33  | RXIN0+/ RXIN0-  | 差分数据  | 输入  | 
34~36  | GND  | 电源地  | 电源  | 
37~39  | VDD  | 电源3.3V  | 电源  | 
40  | NC  | 悬空  | |
5 硬件电路分析
硬件接口和子卡模块请阅读"附录 1"
配套工程的 FPGA PIN 脚定义路径为 fpga_prj/uisrc/04_pin/ fpga_pin.xdc。
6 系统框图
	
7 RGB接口显示程序
默认液晶屏是直接支持LVDS信号驱动,而不支持RGB驱动,所以如果从省硬件IO资源以及省成本角度,LVDS成本更低。但是LVDS对于FPGA支持有要求,XILINX 的FPGA支持LVDS25和标准LVDS。而一般的开发板IO电平为3.3V所以一般情况下,开发板默认不能支持LVDS输出。米联客的开发板如果支持3.3V默认输出的,需要修改核心板的ADJ电阻实现2.5V或者1.8V输出,修改后就可以使用LVDS驱动液晶屏。用户选购板卡使用液晶的时候需要清楚知道自己的IO电平。
/*************LCD 视频输出测试************* --版本号1.1 --使用VTC产生视频时序 --使用TPG产生测试图像数据 *********************************************************************/ `timescale 1 ps / 1 ps 
 module display( input I_sysclk,//系统时钟输入 output O_lcd_pwm,//背光PWM output O_lcd_pclk, output [7:3] O_lcd_r, output [7:2] O_lcd_g, output [7:3] O_lcd_b, output O_lcd_hs, output O_lcd_vs, output O_lcd_de, output O_card_power_en ); 
 wire vid_rst,vid_clk,vid_vs,vid_hs,vid_de; 
 assign O_card_power_en = 1'b1;//子卡上电 assign O_lcd_pwm = 1'b1;//设置背光PWM,设置1背光全开 assign O_lcd_pclk = vid_clk; 
 //MMCM/PLL 时钟模块 clk_wiz_0 u_clk(.clk_in1(I_sysclk),.clk_out1(vid_clk),.locked(vid_rst)); 
 //例化uivtc VTC 产生视频时序,液晶屏分辨率1024*600 uivtc# ( .H_ActiveSize(1024), //视频时间参数,行视频信号,一行有效(需要显示的部分)像素所占的时钟数,一个时钟对应一个有效像素 .H_FrameSize(1344), //视频时间参数,行视频信号,一行视频信号总计占用的时钟数 .H_SyncStart(1048), //视频时间参数,行同步开始,即多少时钟数后开始产生行同步信号 .H_SyncEnd(1184), //视频时间参数,行同步结束,即多少时钟数后停止产生行同步信号,之后就是行有效数据部分 .V_ActiveSize(600), //视频时间参数,场视频信号,一帧图像所占用的有效(需要显示的部分)行数量,通常说的视频分辨率即H_ActiveSize*V_ActiveSize .V_FrameSize(628), //视频时间参数,场视频信号,一帧视频信号总计占用的行数量 .V_SyncStart(601), //视频时间参数,场同步开始,即多少行数后开始产生场同步信号 .V_SyncEnd (602) //视频时间参数,场同步结束,即多少行数后停止产生场同步信号,之后就是场有效数据部分 ) uivtc_inst ( .I_vtc_rstn(vid_rst),//系统时钟,像素时钟 .I_vtc_clk(vid_clk),//系统复位 .O_vtc_vs(vid_vs),//场同步输出 .O_vtc_hs(vid_hs),//行同步输出 .O_vtc_de_valid(vid_de) //视频数据有效 ); 
 //例化TPG 产生测试视频数据 uitpg uitpg_inst ( .I_tpg_rstn(vid_rst),//系统复位 .I_tpg_clk(vid_clk),//系统时钟,像素时钟 .I_tpg_vs(vid_vs),//场同步输入 .I_tpg_hs(vid_hs),//行同步输入 .I_tpg_de(vid_de),//视频数据有效 .O_tpg_vs(O_lcd_vs),//场同步输出 .O_tpg_hs(O_lcd_hs),//行同步输出 .O_tpg_de(O_lcd_de), .O_tpg_data({{O_lcd_r,3'd0},{O_lcd_g,2'd0},{O_lcd_b,3'd0}}) //测试图像数据输出 ); 
 endmodule 
  | 
8 硬件连线
(该教程为通用型教程,教程中仅展示一款示例开发板的连接方式,具体连接方式以所购买的开发板型号以及结合配套代码管脚约束为准。)
我们使用米联客3.3V BASE子卡,接口使用的是我们液晶屏的RGB口。下图是RGB接线方式。请确保下载器和开发板已经正确连接,并且开发板已经上电。(注意JTAG端子不支持热插拔,而USB接口支持,所以在不通电的情况下接通好JTAG后,再插入USB到电脑,之后再上电,以免造成JTAG IO损坏)
	
7寸液晶屏的接口使用的是RGB接口
	
9 测试结果
	
本文来米联客(milianke),作者:米联客(milianke),转载请注明原文链接:https://www.cnblogs.com/milianke/p/17935407.html
                    
                
                
            
        
浙公网安备 33010602011771号