FRL 与 TMDS 差异详解:差分信号、时钟嵌入、训练机制
说实话,做 HDMI 设计这些年,被问得最多的问题就是:“FRL 到底比 TMDS 强在哪?” 很多朋友拿着 datasheet 看,觉得不就是速率变高了吗?其实没那么简单。这一章我们来扒开细节看看,TMDS 和 FRL 从信号底层到训练流程,到底有哪些本质区别。
我个人习惯把这种对比叫做“从马车到汽车”的升级。为什么呢?你想想看,TMDS 是 HDMI 1.4/2.0 时代的“马车”——稳定、成熟、好修,但跑不快。而 FRL 是 HDMI 2.1 的“汽车”——动力强、结构复杂、需要更智能的驾驶系统(也就是训练机制)。
核心观点: FRL 不是简单的 TMDS 速率升级,而是物理层协议的全面重构。三大核心变化——差分信号编码、时钟嵌入、训练机制——缺一不可。
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。每个阶段都有明确的目标:
- LT0: 检测接收端是否存在,交换基础能力(流格式、支持的 FRL 速率)。
- LT1: 发送端发送特定的训练 pattern,接收端测量每条 lane 的信号质量。
- LT2: 发送端调整预加重和摆幅,接收端反馈“好了”或“再来”。
- LT3: 确认最终参数,发送端锁频、锁相。
- 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 以上 |