基于FPGA实现HDMI数据传输


前言

随着网络带宽、存储器容量、处理器解码能力的不断发展,与我们日息相关的图像显示领域也出现了非常大的进步,在数据传输方面也从早期的VGA模拟信号传输方式发展到DVI接口、HDMI接口传输,市面上普遍的显示设备都带有hdmi接口,所以学习HDMI接口是必要的。

一、HDMI接口含义 与TMDS介绍

高清晰度多媒体接口(High Definition Multimedia Interface)是一种全数位化影像和声音传送接口,可以传送无压缩的音频信号及视频信号。HDMI接口可以提供高达5Gbps的数据传输带宽,可以传送无压缩的音频信号及高分辨率视频信号。同时无需在信号传送前进行数/模或者模/数转换,可以保证最高质量的影音信号传送,查看HDMI规范,发现其数据链路层都是使用TMDS(最小化传输差分信号)编码方式。在数据传输过程中,包括了输入接口层、TMDS发送器、TMDS接收器和输出接口层。
在这里插入图片描述
1.输入接口层
输入接口层的信号格式为典型的RGB行场同步数字接口,该 接口包括数据使能信号DE(Data Enable)、24 位像素数据(Pixel Data)、6位的控制数据(包括HSYNC、VSYNC和空信号)和同步时钟信号。

2.TMDS发送器
TMDS 发送器完成对输入接口层的数据和控制信号按照TMDS编码方式进行编码,再将编码的数据通过高速串行接口输出,最终将输入接口层的信号编码进4个TMDS链路层中。

3.TMDS接收器
与TMDS 发送器相反,TMDS接收器的功能是将TMDS链路上的高速串行数据接收,解串,TMDS解码,得到与输入接口层相同的控制信号和数据。

4.输出接口层
输出接口层将TMDS接收器解码得到的数据流和控制信号传递给最终的数据消费者,例如RGB接口的液晶显示面板。

二、 TMDS 流程解释与实现原理

1.流程解释
TMDS编码包含两个大的内容,传输控制信号的控制段和用来传输图像像素数据的数据段。一个完整的图像传输TMDS模块包含三个相同的编码和发送模块。每个发送模块包含8位的像素数据,对应24位像素数据中单个颜色的8位数据。2个控制信号,这两个控制信号可以分别接行同步(HSYNC)、场同步(VSYNC)信号,也可以空置接0。另外还有一个数据有效信号DE,该信号用来区分控制数据和像素数据。当DE信号为高电平的时候,表明当前数据有效,编码器对8位的Data数据进行编码。当DE信号为低电平的时候,则对2位的控制信号进行编码。

在这里插入图片描述
串行发送器使用的时钟信号频率为编码器的5倍,,这是因为串行发送器在发送数据时候是采用双数据速率的方式传输数据的,一个时钟周期可以传输2位信号,所以只需要5倍的编码器的时钟即可完成10位数据的及时传输。下图为使用TMDS方式传输视频数据的示意图,可以看到,从编码(Encoder)的角度,TMDS 发送器将图像数据和控制信号分成了3组,每组使用一个编码器加串行发送器。每个编码器对8位的图像数据和2位的控制信号组成。另外还对串行发送时钟进行了输出,作为3 个数据/控制通道的同步时钟。

在这里插入图片描述
第一组中,将像素数据中的蓝色(BLUE)分量和控制信号中的行同步(HSYNC)、场同步(VSYNC)划分成了一组,经过编码器和串行调制器后输出,名为Channel 0。
第二组中,将像素数据中的绿色(GREEN)分量和两个空的控制信号CTL0、CTL1划分成了一组,经过编码器和串行调制器后输出,名为Channel 1。在这一组中,CTL0和CTL1接入的是空信号。
第三组中,将像素数据中的红色(RED)分量和两个空的控制信号CTL2、CTL3划分成了一组,经过编码器和串行调制器后输出,名为Channel 2。在这一组中,CTL2和CTL3接入的是空信号。
至此,关于TMDS对数据的划分方式就非常的清晰了。设计的重点就是编码器和串行化数据发送器的设计。

2.实现原理

经过最小化传输方式实现的TMDS,其用来作为像素数据的TMDS字符包含5个或更少的跳变,而用来作为控制数据的TMDS字符包含7个或更多的跳变。在空期间传送的多跳变内容形成解码端的字符边界的基础,这些字符在串行数据流中个体不是独一无二,但它们足
够相似,使得在发送空间隙期间,解码器它们可以唯一地检测出它们连续的存在。
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决定是否对输入代码进行反转。

三、 TMDS 代码编写步骤

1.算法流程

  • 先统计输入的数据中有多少个1
  • 根据输入数据中1的个数和输入数据的最低位的值,来确定编码方向
  • 根据编码方向,对输入数据进行编码,方向为1,则采用异或编码方式,方向为0,则采用同或编码方式,并将编码方向值作为编码后数据的第9位。
    2.直流平衡编码
    直流平衡编码中,主要是根据前一个编码过程统计的整个数据流中的1和0的差值,来指导本次编码过程的差值,确保在整个数据流的传输过程中,传输的1和0 的总个数是相差不大的。这样能够保证整个传输链路的直流平衡。
    所谓直流平衡,就是指信号在传输中0和1的数据个数相同,则发送方和接收方直接的就不会有直流电流的传递,在通信系统
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值