2、HDMI物理层基础:TMDS差分信号原理、TMDS通道结构、时钟通道与数据通道
好,咱们正式开始啃HDMI的物理层。说实话,很多工程师做HDMI调试,上来就抓波形、量电压,结果发现信号眼图一团糟,却不知道问题出在哪。根本原因是什么?就是对物理层理解不够深。
这一章,咱们把TMDS这个核心传输技术彻底讲透。你搞懂了TMDS,HDMI的物理层就通了七成。
2.1 TMDS是什么?为什么非要用它?
TMDS,全称Transition Minimized Differential Signaling,翻译过来就是「过渡最小化差分信号」。名字很长,但核心就两个词:过渡最小化和差分信号。
先问个问题:为什么HDMI不直接用普通的数字信号传输?
原因很简单——高速信号跑起来,电磁干扰(EMI)和信号衰减是两大噩梦。普通的单端信号,比如TTL电平,到了几Gbps的速率,辐射噪声能把整个系统搞崩溃。我早期做过一个项目,HDMI线缆稍微长一点,旁边的WiFi模块就直接断连,查了半天才发现是信号辐射太强。
TMDS就是为了解决这个问题而生的。它用差分信号抵消共模噪声,再用编码算法减少信号跳变次数,一举两得。
核心要点:TMDS的本质是「8b/10b编码 + 差分传输」的组合拳。8b/10b编码保证直流平衡,差分传输保证抗干扰能力。
2.2 差分信号原理:两根线比一根线强在哪?
差分信号,说白了就是用两根线传一个信号。一根传正相(D+),一根传反相(D-)。接收端看的是两根线的电压差,而不是对地电压。
举个例子:假设正相线电压3.3V,反相线电压1.65V,那差分电压就是1.65V。如果外界来了个共模噪声,两根线同时被抬高了0.5V,正相变成3.8V,反相变成2.15V,差分电压还是1.65V。噪声被抵消了。
这就是差分信号最牛的地方——共模抑制。
我在调试一款4K@60Hz的HDMI产品时,遇到过信号完整性极差的情况。示波器一看,单端波形全是毛刺,但切换到差分模式,眼图清晰得很。这就是差分信号在实战中的威力。
个人经验:调试时别只看单端波形。养成习惯,直接用差分探头看D+和D-的差值。很多问题单端看不出来,差分下一目了然。
2.3 TMDS通道结构:三条数据通道 + 一条时钟通道
HDMI的TMDS链路,一共四条通道。三条数据通道(Channel 0、1、2),一条时钟通道。你想想看,为什么是三条数据通道?
因为RGB刚好三个颜色分量。每个通道负责一个颜色分量:
- Channel 0:蓝色分量 + 水平同步(HSYNC) + 垂直同步(VSYNC)
- Channel 1:绿色分量 + 控制信号
- Channel 2:红色分量 + 控制信号
每个通道都是独立的差分对,也就是每个通道需要两根线。所以HDMI标准19针中,有12根针是用于TMDS数据/时钟传输的(3个数据通道×2根 + 1个时钟通道×2根 + 3根地线)。
这里有个容易混淆的点:时钟通道是独立的,不参与数据编码。它就是一个纯粹的差分时钟信号,频率等于像素时钟。比如1080p@60Hz,像素时钟148.5MHz,时钟通道就跑148.5MHz。
注意:时钟通道的抖动直接影响整个链路的稳定性。我曾经遇到一个案例,数据通道眼图很好,但就是偶尔闪屏。最后发现是时钟通道的PLL锁相环滤波电容虚焊,导致时钟抖动超标。所以调试时,先看时钟通道的眼图,再看数据通道。
2.4 数据通道内部:TMDS编码与解码流程
每个数据通道内部,数据是怎么从源端到宿端的?我画个流程图给你看:
这个流程你看懂了吗?源端先把8位像素数据送进TMDS编码器,编码成10位。为什么要从8位变成10位?因为多了2位冗余,可以用来保证直流平衡和最小化跳变。然后这10位数据被并串转换,变成高速串行流,最后通过差分对发送出去。
宿端反过来:差分信号进来,先串并转换回10位,再解码成8位原始数据。
每个通道的传输速率是多少?简单算一下:像素时钟 × 10。比如148.5MHz的像素时钟,每个通道的串行速率就是1.485Gbps。三个通道加起来,总带宽就是4.455Gbps。这还只是HDMI 1.4的水平,到了HDMI 2.0,速率翻倍到6Gbps每通道。
2.5 时钟通道:为什么它这么重要?
时钟通道在HDMI里是个特殊的存在。它不传数据,只传时钟。接收端用这个时钟来采样三个数据通道的信号。
你可能会问:为什么不用数据里恢复时钟?像PCIe那样?
嗯,这是个好问题。HDMI的设计哲学是「简单可靠」。独立时钟通道的好处是:接收端不需要复杂的时钟数据恢复(CDR)电路,直接用PLL锁定时钟通道的信号就行。这降低了接收端的成本和复杂度。
但代价是什么?时钟通道的抖动会直接影响数据采样点。如果时钟抖动大,数据眼图的张开度就会变小,误码率上升。
避坑指南:我曾经调试过一个4K@30Hz的项目,画面偶尔出现水平条纹。查了三天,最后发现是PCB上时钟通道的走线绕了太多弯,导致阻抗不连续,反射产生了抖动。解决办法很简单:时钟通道走线尽量短、尽量直,远离其他高速信号。
2.6 数据通道与时钟通道的时序关系
数据通道和时钟通道之间,有一个严格的时序关系。HDMI规范要求:数据通道的跳变沿必须对齐到时钟通道的上升沿和下降沿之间。
说白了,就是数据在时钟的中间位置跳变,这样接收端在时钟边沿采样时,数据已经稳定了。
这个关系用表格表示更清楚:
| 参数 | 最小值 | 典型值 | 最大值 | 说明 |
|---|---|---|---|---|
| 时钟频率 | 25 MHz | 148.5 MHz | 340 MHz (HDMI 2.0) | 取决于分辨率 |
| 数据速率 | 250 Mbps | 1.485 Gbps | 3.4 Gbps | 每通道 |
| 数据-时钟建立时间 | 0.5 Tbit | 0.5 Tbit | - | 数据跳变在时钟边沿之前 |
| 数据-时钟保持时间 | 0.5 Tbit | 0.5 Tbit | - | 数据跳变在时钟边沿之后 |
| 时钟抖动(峰峰值) | - | < 0.3 UI | 0.4 UI | 超过0.4 UI容易误码 |
这里的Tbit就是每个数据位的时长。比如1.485Gbps速率下,Tbit ≈ 673ps。数据跳变必须在时钟边沿前后各0.5Tbit的窗口内完成。
2.7 实际调试中的TMDS物理层检查清单
说了这么多理论,最后给点实用的。你在调试HDMI物理层时,按这个顺序检查:
- 先看时钟通道:用示波器测时钟差分对的眼图。抖动是否在0.3UI以内?频率是否准确?
- 再看数据通道:每个通道的眼图是否张开?眼高、眼宽是否达标?
- 检查共模电压:TMDS的共模电压标准是3.3V,偏差不要超过±10%。
- 测量差分阻抗:HDMI要求差分阻抗100Ω ±15%。用TDR测一下PCB走线和线缆的阻抗。
- 验证编码正确性:用逻辑分析仪抓取解码后的数据,确认8b/10b编码没有错误。
重要提醒:千万别跳过时钟通道直接看数据。时钟是HDMI物理层的「心脏」,心脏有问题,其他都是白搭。我见过太多工程师花大量时间调数据通道,最后发现是时钟PLL的环路滤波器参数设错了。
好了,TMDS物理层的基础就讲到这里。你把这些搞懂了,后面讲信号完整性、眼图测试、PCB布局的时候,就能跟上节奏了。
可可精品资料库