uisrc 发表于 2023-12-29 19:17:01

2-3-28 基于FPGA的液晶屏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:34 LCD液晶屏接口
RGB接口定义
引脚号标识描述类型
1CTP_INT触摸中断输出
2CTP_RST触摸复位输入
3CTP_SDAI2C数据脚输入/输出
4CTP_SCLI2C时钟脚输出入
5GND电源地电源
6PWMPWM调光输入
7DE数据有效输入
8VSYNC场同步输入
9HSYNC行同步输入
10BL-EN背光使能输入
11PCLK像素时钟输入
12GND电源地电源
13~20B0~B7数据输入
21~28G0~G7数据输入
29~36R0~R7数据输入
37VDD电源3.3V电源
38GND电源地电源
39BL_VDD电源5V电源
40BL_VDD电源5V电源




LVDS接口定义
引脚号标识
类型
1~3BL-5V电源5V电源
4NC悬空

5BL-EN背光使能输入
6PWMPWM调光输入
7NC悬空

8~10BL-GND电源地电源
11GND电源地电源
12CTP_INT触摸中断输出
13CTP_RST触摸复位输入
14CTP_SCLI2C时钟脚输入
15CTP_SDAI2C数据脚输入/输出
16GND电源地电源
17~18NC悬空

19GND电源地电源
20/21RXIN3+/ RXIN3-差分数据输入
22GND电源地电源
23/24RXCLKIN+/ RXCLKIN -差分时钟输入
25GND电源地电源
26/27RXIN2+/ RXIN2-差分数据输入
28GND电源地电源
29/30RXIN1+/ RXIN1-差分数据输入
31GND电源地电源
32/33RXIN0+/ RXIN0-差分数据输入
34~36GND电源地电源
37~39VDD电源3.3V电源
40NC悬空



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,//系统时钟输入outputO_lcd_pwm,//背光PWMoutputO_lcd_pclk,output O_lcd_r,output O_lcd_g,output O_lcd_b,outputO_lcd_hs,outputO_lcd_vs,outputO_lcd_de,outputO_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_0u_clk(.clk_in1(I_sysclk),.clk_out1(vid_clk),.locked(vid_rst));
//例化uivtc VTC 产生视频时序,液晶屏分辨率1024*600uivtc#(.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 测试结果
页: [1]
查看完整版本: 2-3-28 基于FPGA的液晶屏7寸LCD显示测试