一、TMDS简介
HDMI和DVI协议使用TMDS作为它们的物理层。支持高达225MHz的传输速率,一个传输链路能满足高2048*1536分辨率电视信号。一般来说,一个HDMI/DVI接口包含四个TMDS通道,三条数据通道和一条时钟通道,每条通道采用差分电平传输,即一条通道要2根线,正极和负极。TMDS编解码算法可以使得被传输信号过渡过程的上冲和下冲减小,传输的数据趋于直流平衡,使信号对传输线的电磁干扰减少,提高信号传输的速度和可靠性。
二、TMDS编码


q_out[9]表示q_out[0:7]与q_m[0:7]的关系,q_out[9]==1表示q_out[0:7] = ~q_m[0:7],q_out[9]==0表示q_out[0:7] = q_m[0:7]
q_out[8]表示q_m[0:7]是用什么方式产生的,q_out[8]==1表示q_m[0:7]是用XOR方式产生的,q_out[8]==0表示q_m[0:7]是用XNOR方式产生的,q_out[8]永远等于q_m[8]
在算法流程上,首先,它会根据输入的8bit数据中1的个数来决定中间值q_m的产生方式,这里大概是为了满足最后输出数据的跳变次数要求。对于输入8bit像素数据,其输出的10bit数据中0-1或1-0的跳变次数要小于5次;对于输入控制数据,其输出的10bit数据中0-1或1-0的跳变次数要大于等于7次。然后,它根据上一次记录的cnt值(该值表示了上次输出的10bit数据中1的个数比0的个数多几个,最高位为符号位,取值范围为-7~7)和本次生成的中间值的0、1个数比,来决定输出的10bit数据q_out与中间值的关系。大致思路如下:上一次输出1的个数偏多了,这一次如果中间值还是1多,那么把中间值每个位取反,这一次如果中间值还是0多,那么照常输出,保证这一次的输出可以补偿上一次的不足,已达到直流平衡。最后,它会计算这一次输出的10bit数据中1比0多了几个,存到变量cnt中。
Verilog实现l:
`timescale 1 ps / 1ps
module dvi_encoder (
input clkin, // pixel clock input
input rstin, // async. reset input (active high)
input [7:0] din, // data inputs: expect registered
input c0, // c0 input
input c1, // c1 input
input de, // de input
output reg [9:0] dout // data outputs
);
////////////////////////////////////////////////////////////
// Count
TMDS编码与解码在HDMI/DVI接口中的应用

TMDS是一种用于HDMI和DVI协议的物理层技术,确保高分辨率视频信号的可靠传输。文章详细介绍了TMDS编码过程,包括如何通过计算输入数据中1的个数来决定编码方式,以及如何通过Verilog代码实现编码器。此外,还展示了TMDS解码的Verilog实现,如何恢复原始数据。整个过程旨在保持信号的直流平衡并减少电磁干扰,提高传输效率。
最低0.47元/天 解锁文章
9019

被折叠的 条评论
为什么被折叠?



