HDMI数据的接收发送实验(十四)

本章概括

本章旨在设计并实现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接收链路提供了稳定、可同步的数据基础,并可直接用于环出显示或进一步图像处理。

下次我们来详细介绍时钟的动态相移配置。

本文章由威三学社威三学院出品

对课程感兴趣可以私信联系

相关推荐
凡亿卓达方案设计20 小时前
FPGA硬件开发怎么选靠谱方案商?
fpga开发
Eloudy1 天前
QSFP28、RoCEv2、RFSoC-4x2 数据传输与器件链路
网络·fpga开发·rocev2
Echo_cy_1 天前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
現実君1 天前
关于MCU下位替换FPGA的经验与方案
单片机·嵌入式硬件·fpga开发
Terasic友晶科技1 天前
【教程】Agilex 5 SoC 的两种启动模式的开发演示(一)(FPGA Configuration First)
fpga开发·agilex 5 soc
ALINX技术博客1 天前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
仲南音3 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner4 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20204 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy4 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发