2. HDMI物理层基础:TMDS差分信号原理、TMDS通道结构(数据通道+时钟通道)、信号电平与摆幅
好,咱们进入正题。HDMI的物理层,说白了就是信号怎么从芯片A跑到芯片B的那段路。这段路的核心技术,就是TMDS——Transition Minimized Differential Signaling,最小化传输差分信号。名字挺长,但拆开看就两件事:一是差分,二是信号跳变要少。
2.1 TMDS差分信号原理
先聊差分信号。我刚开始做HDMI设计时,有个误区——总觉得差分信号就是两根线传相反的电平。其实没那么简单。
TMDS用的是电流驱动型差分对。每对线由两根导线组成,一根传正信号(D+),一根传负信号(D-)。接收端看的是两根线的电压差,而不是对地电压。这样做的好处很明显:抗共模干扰能力强。你想想看,如果外部噪声同时耦合到两根线上,差分电压基本不变,信号照样稳。
具体到TMDS,它的差分电压摆幅典型值是400mV到600mV。我习惯把目标定在500mV左右,留点余量。摆幅太小,信噪比不够;摆幅太大,EMI问题就来了。
关键参数:
- 差分电压摆幅:400mV ~ 600mV(典型500mV)
- 共模电压:3.3V(TMDS标准)
- 单端摆幅:200mV ~ 300mV
- 传输速率:最高可达3.4Gbps(HDMI 1.4)
这里有个坑。我曾经遇到过一块板子,信号测试眼图总是闭合。查了半天,发现是差分对的两根线长度差了5mm。5mm啊,在低速信号上根本不算事,但在3Gbps的TMDS上,那就是半个比特的时间了。所以,等长设计是TMDS的命根子。
2.2 TMDS通道结构
TMDS通道分两类:数据通道和时钟通道。HDMI标准里,数据通道有3个,时钟通道有1个。一共4对差分线。
2.2.1 数据通道(Data Channels)
三个数据通道,分别叫Channel 0、Channel 1、Channel 2。每个通道传10位数据,但实际有效数据只有8位。多出来的2位干嘛用?编码用的。
TMDS编码的核心思想是:减少信号跳变次数。为什么?因为跳变越少,EMI越小,信号完整性越好。具体编码过程是这样的:
- 把8位原始数据转换成9位,保证跳变次数最少
- 再加1位DC平衡位,保证信号的平均直流电平稳定
- 最终输出10位数据,串行化后通过差分对传输
我刚开始学这个的时候,觉得编码逻辑挺复杂的。后来发现,其实FPGA厂商都提供了现成的IP核,直接调用就行。但理解原理很重要——至少你知道为什么TMDS信号看起来不像普通数字信号那么“干净”。
个人经验: 调试TMDS信号时,别只看眼图。先看DC平衡是否正常。如果信号的平均电平漂移了,多半是编码环节出了问题。我曾经被这个问题坑了整整两天。
2.2.2 时钟通道(Clock Channel)
时钟通道传的是像素时钟。比如1080p@60Hz,像素时钟是148.5MHz,那时钟通道就跑148.5MHz。数据通道跑的是时钟频率的10倍,也就是1.485Gbps。
时钟通道不编码,直接传差分时钟信号。为什么?因为时钟需要最干净的信号质量。数据通道可以容忍一些抖动,但时钟不行。时钟抖了,整个系统就乱了。
嗯,这里要注意:时钟通道的走线一定要比数据通道短。我见过一个设计,时钟线比数据线长了10mm,结果数据眼图闭合了。为什么?因为时钟和数据到达接收端的时间不一致,采样点偏了。所以,等长设计不只是数据通道内部的事,时钟通道也要参与。
2.3 信号电平与摆幅
TMDS的信号电平,标准定义得很清楚。但实际设计中,你得考虑很多因素。
| 参数 | 最小值 | 典型值 | 最大值 | 单位 |
|---|---|---|---|---|
| 差分摆幅 | 400 | 500 | 600 | mV |
| 共模电压 | 3.0 | 3.3 | 3.6 | V |
| 单端高电平 | 3.2 | 3.5 | 3.8 | V |
| 单端低电平 | 2.8 | 3.0 | 3.2 | V |
摆幅为什么不能太大?因为TMDS是电流驱动型。摆幅大了,电流就大,功耗就上去了。而且,大摆幅意味着更快的边沿速率,EMI问题会更严重。
摆幅为什么不能太小?因为接收端需要足够的信噪比。摆幅太小,噪声容限就低了,误码率会上升。
所以,500mV是个折中值。我一般设计时,会留±50mV的余量。也就是说,目标摆幅设在500mV,但允许450mV到550mV的范围。这样既保证了信号质量,又给了PCB制造一些容差。
避坑指南: 我曾经遇到过一批板子,TMDS信号摆幅只有350mV。查了半天,发现是源端驱动器的电流设置不对。TMDS驱动器的输出电流典型值是10mA,如果终端电阻是50Ω,差分摆幅就是10mA × 50Ω × 2 = 1V?不对,这里要注意:TMDS的终端电阻是50Ω到3.3V,所以实际差分摆幅是10mA × 50Ω = 500mV。如果电流设置错了,摆幅就不对了。
2.4 实际设计中的注意事项
聊了这么多理论,说点实际的。TMDS物理层设计,我总结了几个要点:
- 阻抗控制: 差分阻抗100Ω,单端阻抗50Ω。这是硬指标,不能妥协。
- 等长设计: 同一通道内的差分对,长度差不超过5mil。时钟通道和数据通道之间,长度差不超过50mil。
- 参考平面: TMDS信号必须有完整的参考平面。我见过有人为了省成本,在信号层下面挖了地,结果EMI测试直接超标。
- AC耦合电容: TMDS不需要AC耦合电容,因为它是DC耦合的。但有些设计为了兼容性,会加电容。我个人不建议这么做,因为电容会引入额外的阻抗不连续点。
最后说一句:TMDS物理层设计,说白了就是控制好阻抗、等长、参考平面这三件事。这三件事做好了,信号质量基本没问题。剩下的,就是测试验证了。
测试小技巧: 用示波器测TMDS信号时,记得用差分探头。单端探头测出来的波形是变形的,因为共模噪声会叠加进去。我刚开始做测试时,用单端探头测了半天,波形怎么看怎么不对。后来换了差分探头,一下就清楚了。