TMDS编解码原理与实现

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

一、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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值