FRL 与 TMDS 差异详解:差分信号、时钟嵌入、训练机制

说实话,做 HDMI 设计这些年,被问得最多的问题就是:“FRL 到底比 TMDS 强在哪?” 很多朋友拿着 datasheet 看,觉得不就是速率变高了吗?其实没那么简单。这一章我们来扒开细节看看,TMDS 和 FRL 从信号底层到训练流程,到底有哪些本质区别。

我个人习惯把这种对比叫做“从马车到汽车”的升级。为什么呢?你想想看,TMDS 是 HDMI 1.4/2.0 时代的“马车”——稳定、成熟、好修,但跑不快。而 FRL 是 HDMI 2.1 的“汽车”——动力强、结构复杂、需要更智能的驾驶系统(也就是训练机制)。

核心观点: FRL 不是简单的 TMDS 速率升级,而是物理层协议的全面重构。三大核心变化——差分信号编码、时钟嵌入、训练机制——缺一不可。

FRL vs TMDS 三大差异对比图 FRL vs TMDS 三大差异 TMDS 传统模式 FRL 新模式 ① 差分信号 TMDS:3通道数据 + 1通道时钟 DC平衡编码(8b/10b 改进型) ① 差分信号 FRL:4通道纯数据(lane) 16b/18b 编码 + RS-FEC ② 时钟 TMDS:独立时钟通道(TMDS Clock) 接收端使用 PLL 恢复数据 ② 时钟嵌入 FRL:时钟嵌入数据流 接收端通过 CDR 恢复时钟 ③ 训练机制 TMDS:无链路训练阶段 直接开始数据传输 ③ 训练机制 FRL:链路训练(LT)阶段 LT0~LT4 渐进式协商

TMDS 回顾:为什么它”退役“了?

TMDS(Transition Minimized Differential Signaling),翻译过来是“过渡最小化差分信号”。名字很长,本质上是 3 条数据通道加 1 条专用时钟通道。每条数据通道负责传输 10-bit 的编码数据(8b/10b 变体)。

我在项目中遇到过很多次,有人想把 TMDS 直接拉到 48Gbps——结果就是眼图闭合得像个“比目鱼”。为什么呢?因为 TMDS 的编码效率只有 80%(8/10),而且时钟通道本身要占用带宽和功耗。到 4K120 以上,这路时钟的抖动就已经很大了。

特性 TMDS FRL
数据通道数 3 通道 4 通道(Lane)
时钟通道 独立 1 通道 嵌入数据流
编码方式 8b/10b(改进型) 16b/18b + RS-FEC
编码效率 80% 88.9%
链路训练 无 有(LT0~LT4)
最高带宽/通道 ~6 Gbps 12 Gbps(FRL6)

第一个差异:差分信号背后的编码革命

同样是差分信号,TMDS 和 FRL 底层的编码逻辑截然不同。你看 TMDS 的 3 个数据通道,每个都独立传输,发送器需要保证 PLL 锁定到同一个时钟域。这个强制同步非常严格,一旦有一个通道的 skew 太大,整个画面就会闪烁。

FRL 用了 16b/18b 编码——说白了就是把 16 bit 数据映射到 18 bit 传输。为什么要这么做?为了在有限带宽内塞进更多有效数据。我做过一个统计:同样 12 Gbps 链路带宽,TMDS(效率 80%)只能传 9.6 Gbps 有效数据,而 FRL 能传 10.67 Gbps 以上。哦,还没算 RS-FEC 纠错码的开销。

个人经验: 以前调 TMDS 时,最常跟硬件吵架的问题就是“为什么链路抖动这么大?” 换到 FRL 后,CDR 恢复时钟配合 FEC 纠错,对物理层质量的要求没那么苛刻了。刚做 FRL 时我还是不太信,直到看到眼图实测——嗯,确实改善了一大截。

第二个差异:时钟嵌入——告别专用时钟通道

这个点很关键:TMDS 有一路专用时钟,FRL 没有。FRL 怎么做时钟同步?通过 CDR(Clock Data Recovery)。

你想想看,传统 TMDS 接收端用 PLL 锁定时钟,这个时钟是独立的、不会被数据干扰的。但 FRL 需要从数据流里“挖”出时钟——说白了就是靠数据的跳变沿来恢复时钟。这要求数据不能有太长的连续 0 或连续 1。

16b/18b 编码的一个核心作用就在这里:保证 DC 平衡,确保跳变密度足够,让 CDR 不会失锁。我曾经吃过这个亏——早期原型机上误码率怎么都降不下来,最后发现是编码器出来的数据流有超过 20 个连续 0,CDR 直接“晕菜”了。

避坑指南: 做 FRL 接收端时,CDR 的环路带宽选择是个大坑。带宽太窄对 jitter 容忍差,带宽太宽又容易被数据 pattern 干扰。我建议在 LT2 阶段测量链路的实际抖动特征后,动态调整 CDR 参数——很多芯片都提供这个寄存器接口,记得用上。

第三个差异:训练机制——FRL 的“自协商”进化

这是 FRL 和 TMDS 最大的区别,没有之一。TMDS 上电后就等着发信号。FRL 可不一样——它需要做链路训练(Link Training,简称 LT)。

FRL 的训练分为 5 个阶段:LT0 到 LT4。每个阶段都有明确的目标:

  1. LT0: 检测接收端是否存在,交换基础能力(流格式、支持的 FRL 速率)。
  2. LT1: 发送端发送特定的训练 pattern,接收端测量每条 lane 的信号质量。
  3. LT2: 发送端调整预加重和摆幅,接收端反馈“好了”或“再来”。
  4. LT3: 确认最终参数,发送端锁频、锁相。
  5. LT4: 进入正常数据传输,链路正式启用。

那 TMDS 有没有训练?没有。TMDS 的做法是:源端假设接收端一定支持 3 通道 + 1 时钟,直接发视频流,接收端自己想办法。说白了就是“莽”,早期的 HDMI 兼容性问题很多都跟这个有关。

实际案例: 我在为 8K 电视做源端兼容性测试时,发现某品牌显示器的 FRL 接收端在 LT2 阶段反馈了 3 次“需要更大摆幅”,但我的芯片已经把摆幅寄存器调到最大了。查了很久发现是 PCB 走线的阻抗有偏差——差了 8Ω,导致信号反射严重。调整 PCB 走线后,一次就通过了。所以做 FRL 设计时,PCB 阻抗控制比 TMDS 时代的要求高一个量级。

三大差异的归纳总结

用一个对比表来收尾:

维度 TMDS FRL
通道数 3 data + 1 clock 4 data lane
时钟同步 外部 PLL CDR 从数据嵌入时钟
启动方式 直接传 LT0~LT4 逐级协商
纠错能力 无(仅靠编码) RS-FEC(可纠 1 个 symbol)
典型误码率 < 1e-9 < 1e-15(FEC 生效后)
适用分辨率 4K60 以下 8K60 / 4K120 以上