1、模块接口说明
序号 | 名称 | 方向 | 说明 |
---|---|---|---|
1 | PXLCLK_I | input | rgb像素时钟输入71.25M |
2 | PXLCLK_5X_I | input | hdmi高速时钟输入71.25Mx5=371.25M |
3 | LOCKED_I | input | 外部mmcm时钟锁定 |
4 | RST_N | input | 复位,低有效 |
5 | VGA_RGB | input[23:0] | RGB24位数据输入 |
6 | VGA_HS | input | 行同步 |
7 | VGA_VS | input | 场同步 |
8 | VGA_DE | input | 数据有效 |
9 | HDMI_CLK_P | output | HDMI高速时钟 |
10 | HDMI_CLK_N | output | HDMI高速时钟 |
11 | HDMI_D2_P | output | HDMI数据2 |
12 | HDMI_D2_N | output | HDMI数据2 |
13 | HDMI1_D1_P | output | HDMI数据1 |
14 | HDMI1_D1_N | output | HDMI数据1 |
15 | HDMI1_D0_P | output | HDMI数据0 |
15 | HDMI1_D0_N | output | HDMI数据0 |
2、模块简述:
将RGB24位数据,转换成hdmi接口数据。通过TMDS模块对数据进行编码,然后将数据R由8bit数据转换成HDMI1_D0接口数据10bit,将数据G由8bit数据转换成HDMI1_D1接口数据10bit,将数据B由G8bit数据转换成HDMI1_D2接口数据10bit。最后每个模块的10bit数据通过OSERDESE2,将并行数据转换成串行数据,通过接口将数据发送出去。
3、TMDS编码规则
TMDS数据通道传送的是一个连续的10bit TMDS字符流,在空期间,传送4个有显著特征的字符,它们直接对应编码器的2个控制信号的4个可能的状态。在数据有效期间,10bit的字符包含8bit的像素数据,编码的字符提供近似的DC平衡,并最少化数据流的跳变次数,对有效像素数据的编码处理可以认为有两个阶段:第一个阶段是依据输入的8bit像素数据产生跳变最少的9bit代码字;第二阶段是产生一个10bit的代码字,最终的TMDS字符,将维持发送字符总体的DC平衡。
编码器在第一个阶段产生的9bit代码字由“8bit” + “1bit”组成,“8bit”反映输入的8bit数据位的跳变,“1bit”表示用来描述跳变的两个方法中哪一个被使用,无论哪种方法,输出的最低位都会与输入的最低位相匹配。用一个建立的初值,输出字的余下7bit的产生是按照顺序将输入的每一位与前一导出的位进行XOR或NOR(XNOR)。使用XOR还是XNOR要看哪个方法使得编码结果包含最少的跳变,代码字的第9位用来表示导出输出代码是使用XOR还是XNOR,这9bit代码字的解码方法很简单,就是相邻位的XOR或XNOR操作。从解码输入到解码器输出最低位不改变。
在有效数据期间,编码器执行使传输的数据流维持近似的DC平衡处理,这是通过选择性地反转第一阶段产生的9bit代码中的8bit数据位来实现的,第10bit被加到代码字上,表示是否进行了反转处理,编码器是基于跟踪发送流中1和0个数的不一致以及当前代码字1和0的数目来确定什么时候反转下一个TMDS字符。如果太多的1被发送,且输入包含的1多于0,则代码字反转,这个发送端的动态编码决定在接收端可以很简单地解码出来,方法是以TMDS字符的第10bit决定是否对输入代码进行反转。
4、数据串行化
通过调用OSERDESE2,将并行数据串行化。
5、测试图像