open_prj21_RGB LCD和HDMI

LCD基础

时序

a)

当HSYNC信号发出以后,需要等待HSPW+HBP个CLK时间才会接收到真正有效的像素数据。当显示完一行数据以后需要等待HFP个CLK时间才能发出下一个HSYNC信号,所以显示一行所需要的时间就是:HSPW + HBP + HOZVAL + HFP。

显示一帧所需要的时间就是:VSPW+VBP+LINE+VFP个行时间。

b)像素时钟

1)像素时钟就是RGB LCD的时钟信号,以ATK7016这款屏幕为例,显示一帧图像所需要的时钟数就是:NCLK = (VSPW+VBP+LINE+VFP) x (HSPW + HBP + HOZVAL + HFP) = (3 + 20 + 600 + 12) x (20 + 140 + 1024 +160) = 635 x 1344 = 853440。显示一帧图像需要853440个时钟数,那么显示60帧就是:853440 x 60 = 51206400 ≈ 51.2M,所以像素时钟就是51.2MHz。

RGB LCD彩条显示实验

a)总体模块设计:RGB TFT-LCD输入时序包含三个要素:像素时钟、同步信号、图像数据,由此我们可以大致规划出系统结构如下图所示。其中,读取ID模块用于获取LCD屏的ID;由于不同分辨率的屏幕需要不同的驱动时钟,因此时钟分频模块根据LCD ID来输出不同频率的像素时钟;LCD显示模块负责产生液晶屏上显示的数据,即彩条数据;LCD驱动模块根据LCD屏的ID,输出不同参数的时序,来驱动LCD屏,并将输

入的彩条数据显示到LCD屏上。

ROM

a)ROM作为只读存储器,在调用IP核时需要指定初始化文件,在这里就是写入存储器中的图片数据,各种格式的图片(bmp、jpg等)在Xilinx开发软件中都是以COE文件或者HEX文件的形式导入到ROM中的。COE文件格式较为简单,因此本次实验选取COE的文件格式。COE是一种Xilinx工具能识别的文件格式,在文件的开头定义了存储数据的进制和初始化的数据,存储的数据最后一行以";"结束,其余的以","结束。例如一个存储数据为16进制,深度为5的COE文件内容如下图所示:

图中第一行定义存储的数据为16进制,第二行初始化的数值向量,分别对应不同存储单元的数据,存储地址从0开始,依次累加,最后一个存储地址的数据以";"结束。

HDMI基础

基础概念

a)HDMI是新一代的多媒体接口标准,英文全称是High-Definition Multimedia Interface,即高清多媒体接口。它能够同时传输视频和音频,简化了设备的接口和连线;同时提供了更高的数据传输带宽,可以传输无压缩的数字音频及高分辨率视频信号。HDMI 1.0版本于2002年发布,最高数据传输速度为5Gbps;HDMI2.0版本于2013年推出的,2.0理论传输速度能达到18Gbit/s,实际传输速度能达到14.4Gbit/s;而2017年发布的HDMI 2.1标准的理论带宽可达48Gbps,实际速度也能达到42.6Gbit/s。

b)在HDMI接口出现之前,被广泛应用的是VGA接口。VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传输的标准。VGA接口采用15针插针式结构,里面传输模拟信号颜色分量、同步等信号,是很多老显卡、笔记本和投影仪所使用的接口。由于VGA接口传输的是模拟信号,其信号容易受到干扰,因此VGA在高分辨率下字体容易虚,信号线长的话,图像有拖尾现象。

c)

d)DVI或HDMI视频传输所使用的TMDS连接通过四个串行通道实现。对于DVI来说,其中三个通道分别用于传输视频中每个像素点的红、绿、蓝三个颜色分量(RGB 4:4:4格式)。HDMI默认也是使用三个RGB通道,但是它同样可以选择传输像素点的亮度和色度信息(YCrCb 4:4:4或YCrCb 4:2:2格式)。第四个通道是时钟通道,用于传输像素时钟。独立的TMDS时钟通道为接收端提供接收的参考频率,保证数据在接收端能够正确恢复。

如果每个像素点的颜色深度为24位,即RGB每个颜色分量各占8位,那么每个通道上的颜色数据将通过一个8B/10B的编码器(Encoder)来转换成一个10位的像素字符。然后这个10位的字符通过并串转换器(Serializer)转换成串行数据,最后由TMDS数据通道发送出去。这个10:1的并转串过程所生成的串行数据速率是实际像素时钟速率的10倍。

e)在传输视频图像的过程中,数据通道上传输的是编码后的有效像素字符。而在每一帧图像的行与行之间,以及视频中不同帧之间的时间间隔(消隐期)内,数据通道上传输的则是控制字符。每个通道上有两位控制信号的输入接口,共对应四种不同的控制字符。这些控制字符提供了视频的行同步(HSYNC)以及帧同步(VSYNC)信息,也可以用来指定所传输数据的边界(用于同步)。对于DVI传输,整个视频的消隐期都用来传输控制字符。而HDMI传输的消隐期除了控制字符之外,还可以用于传输音频或者其他附加数据,比如字幕信息等。这就是DVI和HDMI协议之间最主要的差别。

从前面的介绍中我们可以看出,TMDS连接从逻辑功能上可以划分成两个阶段:编码和并串转换。在编码阶段,编码器将视频源中的像素数据、HDMI的音频/附加数据,以及行同步和场同步信号分别编码成10位的字符流。然后在并串转换阶段将上述的字符流转换成串行数据流,并将其从三个差分输出通道发送出去。

f)编码

1)每个通道输入的视频像素数据都要使用DVI规范中的TMDS编码算法进行编码。每个8-bit的数据都将被转换成460个特定10-bit字符中的一个。这个编码机制大致上实现了传输过程中的直流平衡,即一段时间内传输的高电平(数字"1")的个数大致等于低电平(数字"0")的个数。同时,每个编码后的10-bit字符中状态跳转("由1到0"或者"由0到1")的次数将被限制在五次以内。

2)除了视频数据之外,每个通道2-bit控制信号的状态也要进行编码,编码后分别对应四个不同的10-bit控制字符,分别是10'b1101010100,10'b0010101011,10'b0101010100,和10'b1010101011。可以看出,每个控制字符都有七次以上的状态跳转。视频字符和控制字符状态跳转次数的不同将会被用于发送和接收设备的同步。

3)HDMI协议与DVI协议在很多方面都是相同的,包括物理连接TMDS、有效视频编码算法以及控制字符的定义等。但是,相比于DVI,HDMI在视频的消隐期会传输更多的数据,包括音频数据和附加数据。4-bit音频和附加数据将通过TERC4编码机制转换成10-bitTERC4字符,然后在绿色和红色通道上传输。

g)HDMI_HPD指的是热拔插检测(Hot Plug Detect),当视频设备与接收设备通过HDMI连接时,接收设备将HPD置为高电平,通知发送设备。当发送设备检测到HPD为低电平时,表明断开连接。HDMI_HPD通过两个电阻实现分压转换。

h)HDMI_SCL_LS和HDMI_SDA_LS是HDMI接口的显示数据通道(DDC,Display Data Channel),用于HDMI发送端和接收端之间交换一些配置信息,通过I2C协议通信。发送端通过DDC通道,读取接收端保存在HDMI显示器EEPROM中的EDID数据,获取接收端的信息,确认接收端终端显示的设置和功能,决定跟接收端之间以什么格式传输音/视频数据。需要说明的是,HDMI的IIC引脚是5V电平的,需要将其转换为PL端所需的3.3V电压。

RGB2DVI模块设计

a)

1)Encoder模块负责对数据进行编码,Serializer模块对编码后的数据进行并串转换,最后通过OBUFDS转化成TMDS差分信号传输。

2)整个系统需要两个输入时钟,一个是视频的像素时钟pixel_clk,第二个时钟是10位数据转换为4位数据的时钟pixel_clk_2_5x,第三个时钟pixel_clk x5的频率是在第二个时钟上面倍频得到的。由前面的简介部分我们知道,并串转换过程的实现的是10:1的转换率,理论上转换器需要一个10倍像素时钟频率的串行时钟。但是OSERDESE3不能直接进行10:1的并串转换,所以我们先将10位数据转换称为4位的数据,然后利用OSERDESE3进行4:1的并串转换。pixel_clk x5是pixel_clk 2_5x的两倍时钟是因为OSERDESE3模块可以实现DDR的功能,即在pixel_clk 2_5x时钟的基础上又实现了双倍数据速率。

相关推荐
坏孩子的诺亚方舟3 小时前
open_prj20_MPSOC概述
fpga开发·正点原子·mpsoc
nature_forest4 小时前
DSP与FPGA之间EMIF接口之DSP参数配置下板测试问题总结
fpga开发
小麦嵌入式5 小时前
FPGA入门(三):3-8 译码器 仿真波形解读
stm32·单片机·嵌入式硬件·mcu·fpga开发·硬件工程
upper20201 天前
从零开始动手做Verilog实验--04--11阶FIR滤波器
fpga开发
nuoxin1141 天前
SSD201-富利威
arm开发·驱动开发·fpga开发·ffmpeg·射频工程
哄娃睡觉1 天前
FPGA、ARM、MCU、DSP的区别
fpga开发
nature_forest2 天前
vivado2018.2固化程序方法之.bin文件固化法
windows·fpga开发
m0_46644103詹湛2 天前
FPGA时序优化与高速接口实战手册
笔记·学习·fpga开发·硬件架构·verilog
upper20202 天前
从零开始做Verilog实验--01--4位计数器
fpga开发