本章概括
本章旨在设计并实现HDMI接收端的关键数据处理模块,解决从高速串行数据流中恢复出并行像素数据及控制信号的问题。HDMI接口传输的TMDS数据为串行比特流,接收端需将其转换为10位并行数据,并从中识别出行场同步状态及有效数据区域。由于传输路径延迟、时钟抖动等因素,接收端必须完成数据与时钟的动态对齐,确保采样稳定性。在此基础上,本章将利用Xilinx FPGA内置的ISERDESE2原语实现1bit转10bit的串并转换,通过主从级联方式扩展转换宽度,并设计控制字符检测逻辑,利用HDMI协议中固定的控制字符序列(如354H、0ABH等)作为有效接收的标志,最终为后续像素解码与输出提供正确对齐的数据流。
二、实现的具体功能
2.1 基于ISERDESE2主从级联的10位数据转换
HDMI每个通道的TMDS数据为串行比特流,需要转换为10位并行数据(par_dat9:0)。单个ISERDESE2原语仅支持最高8位的串并转换,因此通过主从两个原语级联实现10位转换:
主ISERDESE2:负责转换低8位(par_dat7:0)。其Q1Q8输出依次对应par_dat[7]par_dat0。
从ISERDESE2:负责转换高2位(par_dat9:8)。其Q3输出对应par_dat9,Q4输出对应par_dat8。
级联方式:主模块的SHIFTOUT1(低位)和SHIFTOUT2(高位)连接到从模块的SHIFTIN1和SHIFTIN2,将未转换的高2位串行数据传递给从模块处理。具体连接如图1所示。

通过此级联结构,可将输入的1bit串行数据稳定转换为10位并行数据,供后续逻辑使用。
2.2 控制字符检测与接收同步标志生成
在HDMI数据传输过程中,因为HDMI通道中还会传输音频、控制字符等信号,后面传输的内容取决于控制信号,将HDMI发来的数据信号经过串转并之后,每个通道中2bit的控制信号会被编码成对应的4个不同10bit的控制字符(354H,0ABH,154H,2ABH),在发送的每一帧图像里,B通道中都存在这样一组连续的控制字符(354H,0ABH,354H)。
在时序规范中,每一帧图像传输前,都会有如下的时序,及:
de信号为低时,行同步为0,场同步为0时:控制字符为354H。
de信号为低时,行同步为1,场同步为0时:控制字符为0ABH。
de信号为低时,行同步为0,场同步为0时:控制字符为354H。
以上的控制字符为连续的,如图2所示:

当B通道中的pixel_10bit产生这样一组数据时,就证明了接收到了从HDMI线上传来的数据。要抓到这一控制信号,还需要考虑到由于HDMI线长度的影响,数据或时钟会存在延迟,为了把接收的数据对齐,我们用时钟的动态相移配置把数据和时钟调到稳定的状态,在数据与时钟对齐后,再进行串转并就会抓到这一组固定的3个控制字符,然后产生一个标志信号,代表信号接收正确,就可以通过解码计算出它的像素,也可以再把信号进行并转串输出到HDMI输出接口,给另外的显示器显示内容。
三、总结
本章围绕HDMI接收端的数据处理流程,完成了从串行TMDS数据到10位并行数据的转换,并实现了基于控制字符序列的同步检测与接收标志生成。通过ISERDESE2原语的主从级联设计,成功将1bit串行流扩展为10bit并行数据(par_dat9:0),其中主模块负责低8位、从模块负责高2位,并利用SHIFTOUT与SHIFTIN的级联链路保证了数据传输的完整性。在此基础上,针对HDMI协议中B通道特有的控制字符序列(354H → 0ABH → 354H),设计了检测逻辑,能够实时监控并识别该序列。为解决因线缆长度等因素引起的数据与时钟相位偏移,采用动态时钟相移配置进行稳定对齐,只有当连续捕获到正确的控制字符序列后,才置位接收有效标志信号,确保后续像素解码和输出显示的可靠性。本章实现的功能为HDMI接收链路提供了稳定、可同步的数据基础,并可直接用于环出显示或进一步图像处理。
下次我们来详细介绍时钟的动态相移配置。
本文章由威三学社威三学院出品
对课程感兴趣可以私信联系