4. TMDS链路结构:3个数据通道+1个时钟通道

好,咱们今天聊聊TMDS的物理链路结构。说白了,它就是一条高速公路——3条数据车道加1条时钟车道。我在做HDMI接口设计时,经常被问到:“为什么非要3个通道?2个不行吗?”嗯,这个问题问得好,咱们慢慢拆解。

4.1 通道角色分配

TMDS链路由4对差分信号组成:

  • 3个数据通道:Channel 0、Channel 1、Channel 2
  • 1个时钟通道:Clock Channel

每个通道都是独立的差分对。你想想看,3个数据通道并行工作,每个通道负责传输不同的数据流。时钟通道则像乐队的指挥,告诉所有数据通道“现在该敲哪个音符”。

关键点:时钟通道的频率是像素时钟的1/10。比如1080p@60Hz的像素时钟是148.5MHz,那TMDS时钟就是14.85MHz。这个比例关系我建议你记牢,调试时经常要用到。

4.2 数据映射规则

每个数据通道传输的内容是有严格分工的。我刚开始接触时也搞混过,后来画了张图才理清楚。

咱们用一张SVG图来展示这个映射关系:

TMDS 数据映射结构 像素数据 R[7:0], G[7:0], B[7:0] TMDS 编码器 8b/10b 编码 Channel 0: B[7:0] + HSYNC + VSYNC Channel 1: G[7:0] + CTL0 + CTL1 Channel 2: R[7:0] + CTL2 + CTL3 Clock Channel: 像素时钟/10 图例说明: 数据通道(3条并行) 时钟通道(1条) 8b/10b编码器(每个通道独立)

4.3 通道0:蓝色通道 + 同步信号

Channel 0负责传输蓝色分量,同时还要捎带两个同步信号——HSYNC(行同步)和VSYNC(场同步)。

为什么把同步信号放在蓝色通道?我记得第一次看到这个设计时也觉得奇怪。后来查了资料才明白:人眼对蓝色最不敏感,把同步信号塞进蓝色通道,对画质的影响最小。这个设计思路,说白了就是“把不重要的东西放在最不敏感的通道上”。

实战经验:我在调试4K@60Hz时遇到过一个问题——画面偶尔出现水平撕裂。排查了半天,最后发现是Channel 0的同步信号时序有毛刺。用示波器抓了一下,果然HSYNC的上升沿抖动超过了100ps。后来在PCB布局上把Channel 0的走线缩短了30%,问题就解决了。

4.4 通道1:绿色通道 + 控制信号

Channel 1负责绿色分量,外加两个控制信号CTL0和CTL1。绿色分量在RGB中占比最重——人眼对绿色最敏感,所以绿色通道的带宽需求也最大。

CTL0和CTL1在视频消隐期传输,用来传递一些辅助信息。比如在HDMI中,这两个信号被用来传输音频数据包和辅助数据。

4.5 通道2:红色通道 + 控制信号

Channel 2负责红色分量,外加CTL2和CTL3。红色通道的结构和绿色通道基本对称。

你可能会问:为什么控制信号要分散在三个通道里?嗯,这是为了平衡每个通道的数据量。如果所有控制信号都挤在一个通道里,那个通道的编码效率就会下降。3个通道平均分担,整体效率最高。

4.6 时钟通道:链路的“心跳”

时钟通道是TMDS链路中最特殊的一个。它不传输数据,只传输时钟信号。这个时钟的频率是像素时钟除以10。

为什么是除以10?因为每个像素的8位数据经过8b/10b编码后变成10位,所以时钟频率降为1/10。这个比例关系,我建议你刻在脑子里——调试时经常要用到。

注意:时钟通道的抖动指标非常严格。我曾经在一个项目中,因为时钟通道的PCB走线绕了个弯,导致时钟抖动超标,整个链路无法锁定。后来把走线改成直线,问题就解决了。所以,时钟通道的走线一定要短、要直、要远离干扰源。

4.7 数据映射的完整流程

咱们把整个流程串起来看:

  1. 像素数据输入:每个像素的R、G、B各8位,共24位数据
  2. 通道分配:R→Channel 2,G→Channel 1,B→Channel 0
  3. 控制信号插入:HSYNC/VSYNC→Channel 0,CTL0/CTL1→Channel 1,CTL2/CTL3→Channel 2
  4. 8b/10b编码:每个通道的8位数据编码为10位
  5. 并行传输:3个通道同时发送10位数据
  6. 时钟同步:时钟通道提供同步信号,频率为像素时钟/10

这个流程看起来简单,但每个环节都有坑。我建议你在做设计时,先用逻辑分析仪抓一下每个通道的数据,确认映射关系是否正确。我曾经因为一个引脚分配错误,把红色和蓝色通道搞反了,结果画面颜色完全不对——人脸是蓝色的,天空是红色的。嗯,这种低级错误,犯过一次就不会再犯了。

4.8 通道间的时序关系

3个数据通道必须严格对齐。也就是说,同一个像素的R、G、B数据要在同一时刻到达接收端。如果某个通道的走线长了那么一点点,就会导致颜色错位。

我在做HDMI 2.0设计时,遇到过一个问题:4K分辨率下,画面边缘有彩色条纹。排查后发现是Channel 2的走线比Channel 0长了15mm,导致红色分量比蓝色分量晚到了约100ps。在4K@60Hz下,一个像素的周期只有约6.7ns,100ps的偏差已经足够产生可见的色差了。

解决办法?把三个通道的走线长度控制在±5mm以内。这个经验值我建议你记下来——走线等长是TMDS设计的基本功。

参数 最小值 典型值 最大值 说明
通道间延迟差 - < 50ps 100ps 超过此值可能出现色差
时钟抖动 - < 50ps 100ps 超过此值可能导致失锁
走线长度差 - < 5mm 10mm PCB设计时的经验值

好了,TMDS的链路结构就讲到这里。3个数据通道加1个时钟通道,每个通道各司其职,配合起来才能完成高速数据传输。下一节咱们聊聊8b/10b编码的具体实现——那才是TMDS的精髓所在。

一句话总结:TMDS链路就是3条数据车道+1条时钟车道,数据按颜色分量分配到3个通道,时钟频率是像素时钟的1/10。记住这个结构,后面的内容就好理解了。