在当今数字化音视频传输领域,HDMI(High-Definition Multimedia Interface)接口凭借其高带宽、高质量的传输特性,得到了广泛应用。而基于 FPGA(Field-Programmable Gate Array)的 HDMI 接口设计,为实现灵活、高效的音视频传输提供了一种理想的解决方案。以下将对基于 FPGA 的 HDMI 接口设计进行详细解析。
一、HDMI 概述
HDMI 是一种先进的音视频传输协议,主要目的是解决传统 VGA 接口传输速度过慢以及体积过大的问题。它采用了 TMDS(Transition Minimized Differential Signaling)协议进行数据传输,这也是 DVI(Digital Visual Interface)标准的主要特点之一。TMDS 协议通过差分信号传输数据,能够有效减少信号干扰,提高传输的可靠性和稳定性。

二、HDMI 物理结构
从 HDMI 的物理结构来看,它在传输数据时,通过三对差分信号来传输数据,同时使用一对差分信号传输时钟(clock)。在实际应用中,不同厂家的开发板上对于 HDMI 引脚的定义都有详细说明,用户可以根据需要在相关网站查找。

三、TMDS 编码过程
TMDS 编码示意图
TMDS 编码一般是将 8 位数据经过编码和直流平衡处理,转换为 10 位的数据。虽然从表面上看,这增加了冗余位,对传输要求更高了,但实际上这种算法使数据在同轴电缆中的传输可靠性更强。例如,8 位并行的 RED 数据经过编码后进行并转串操作。具体过程如下:
将 8 位并行 RED 数据发送到 TMDS 发送端。
进行并 / 串转换。
实施化传输处理,并加上第 9 位(编码位)。

直流平衡
直流平衡(DC-balanced)是 TMDS 编码中的一个重要概念,即在编码过程中要保证信道中直流偏移为零。具体方法是在原来的 9 位数据后面加上第 10 位数据,使传输的数据趋于直流平衡,从而减少信号对传输线的电磁干扰,提高信号传输的可靠性。
TMDS 发送和接收的链接示意图
DVI 或 HDMI 视频传输所使用的 TMDS 连接通过四个串行通道实现。对于 DVI,其中三个通道分别用于传输视频中每个像素点的红、绿、蓝三个颜色分量(RGB44 格式);HDMI 默认也使用三个 RGB 通道,但同样可以选择传输像素点的亮度和色度信息(YCrCb44 或 YCrCb 42 格式)。第四个通道是时钟通道,用于传输像素时钟,为接收端提供接收的参考频率,保证数据在接收端能够正确恢复。

在传输视频图像时,数据通道在有效像素期间传输编码后的有效像素字符;在帧与帧之间、行与行之间的消隐期内,数据通道传输控制字符。这些控制字符提供了视频的行同步(HZYNC)以及帧同步(VSYNC)信息,也可用于指定所传输数据的边界。对于 DVI 传输,整个视频的消隐期都用来传输控制字符;而 HDMI 传输的消隐期除了控制字符之外,还可以用于传输音频或者其他附加数据(例如字母信息),4-bit 音频和附加数据将通过 TERC4 编码机制转换成 10-bit TERC4 字符,然后在绿色和红色通道上传输。
每个通道输入的视频像素数据都要使用 DVI 规范中的 TMDS 编码算法进行编码。每个 8-bit 的数据都将被转换成 460 个特定 10-bit 字符中的一个,该编码机制大致实现了传输过程中的直流平衡,并且每个编码后的 10-bit 字符中状态跳转的次数将被限制在五次以内。此外,每个通道 2-bit 控制信号的状态也要进行编码,编码后分别对应四个不同的 10-bit 控制字符。视频字符和控制字符状态跳转次数的不同将会被用于发送和接收设备的同步。如果不需要附加数据,只传输视频数据,完全可以把 HDMI 接口当做 DVI 接口进行驱动。
四、HDMI 电路原理
这里以黑金 AX7050 底板的 HDMI 原理图接口为例,其中 AZ1045_04F 是 TVS(Transient Voltage Suppressor)二极管,其作用是防止外面静电对 FPGA 产生损坏。本次实验只使用到 TMDS 数据和时钟,相关的管脚约束需要在约束文件中指定电平标准为 LVTTL。虽然差分信号 vivado 会在引导正极引脚位置后自动对负极进行分配,但实际测试后发现可能无法实现预期效果,因此采用黑金提供的时序约束进行代码编写。
