[X]关闭

2-3-28 基于FPGA的液晶屏7寸LCD显示测试

文档创建者:uisrc
浏览次数:413
最后更新:2023-12-29
文档课程分类
AMD: FPGA部分(2024样板资料) » 2_FPGA实验篇(仅旗舰) » 1-FPGA基础入门实验
软件版本:VIVADO2021.1
操作系统:WIN10 64bit
硬件平台:适用XILINX A7/K7/Z7/ZU/KU系列FPGA
登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!
1 概述
2504661-20231229173844132-1325886981.jpg
前文中,我们已经实现了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液晶屏参数
2504661-20231229173849885-948677310.jpg
以上参数中液晶屏支持分辨率为1024*600,使用的接口是LVDS接口。我们做的液晶屏产品增加的RGB转LVDS芯片所以也支持RGB接口驱动液晶屏,对于一些新手来说,RGB接口更加方便,而且RGB是3.3V的接口。
3 LCD液晶屏驱动时序
2504661-20231229173850433-137440894.jpg
本实验以8bit LVDS 方式工作,下图中给出了6bit和8bit的工作时序,FPGA程序设计需要满足以下时序。另外注意,时钟的占空比,高电平:低电平=4:3
2504661-20231229173850933-2019080858.jpg
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 系统框图
2504661-20231229173851340-710992072.jpg
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损坏)
2504661-20231229173851831-1510015380.jpg
7寸液晶屏的接口使用的是RGB接口
2504661-20231229173852712-1632252899.jpg
9 测试结果
2504661-20231229173853676-1938771165.jpg

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则