2. FRL(固定速率链路)简介:FRL基本概念、与传统TMDS比较
大家好,我是你们的HDMI调试陪跑人。今天我们来聊聊HDMI 2.1最核心的变动——FRL。说白了,就是一条全新的数据传输公路,把过去用了二十多年的TMDS给替换掉了。为什么换?怎么换?换完我们调试时要注意什么?我踩过的坑,一点点倒给你们听。
2.1 FRL背后的设计哲学
FRL全称是Fixed Rate Link,固定速率链路。你想想看,TMDS时代每个通道速率上限3.4Gbps,三个数据通道加一个时钟通道,撑死了10.2Gbps。到了8K@60、4K@120这些场景,带宽根本不够用。HDMI 2.1直接把物理层重新设计,用了4条lane,每条lane可以独立工作在3、6、8、10、12Gbps这几个固定档位。总带宽最大48Gbps,够你传两个8K信号外加音频。
为什么叫“固定速率”?因为每条lane的比特率在链路建立后就锁死了,不会像有些接口那样自适应变速率。嗯,这个“固定”其实给训练带来了不少方便,但也埋了一些坑。我个人习惯把FRL的训练分成两步:第一步是让每个lane的时钟恢复成功,第二步才是通道间对齐。后面章节会细讲。
核心要点:FRL取消了独立的时钟通道,改为在4个数据lane内嵌入时钟。每个lane使用16b/18b编码(实际是16bit数据加2bit辅助信息),通过信令速率而非时钟频率来同步。
2.2 FRL vs TMDS:核心差异
先看一张对比表,这是我经手项目里反复对照用的。
| 对比项 | TMDS(HDMI 1.4/2.0) | FRL(HDMI 2.1) |
|---|---|---|
| 通道数 | 3个数据通道 + 1个专用时钟通道 | 4个数据lane(所有信息混合传输) |
| 编码方式 | 8b/10b | 16b/18b(数据+头/尾位) |
| 最大单通道速率 | 3.4 Gbps | 12 Gbps |
| 总带宽 | 10.2 Gbps(3×3.4) | 48 Gbps(4×12) |
| 时钟恢复 | 独立时钟线,接收端直接PLL锁定 | 需要从数据流中恢复时钟,依赖CDR |
| 链路训练 | 无需训练,热插拔检测即工作 | 必须经过LT(Link Training),失败则降速或回退TMDS |
| 前向纠错(FEC) | 无 | 可选RS-FEC,用于长线或高干扰场景 |
从表格里能看出,FRL把时钟嵌进去了,这要求接收端的CDR(时钟数据恢复)做得非常好。我在项目里遇到过一种情况:某款电视的HDMI输入在6Gbps lane下能正常工作,但切到12Gbps后画面就花屏。最后查出来是CDR的环路带宽设得太窄,跟不上抖动。换成宽带宽模式就好了。
避坑指南:我曾经在FRL切换到12Gbps时,忘记检查source和sink的预设均衡能力。结果训练阶段link明明训练成功了,数据却全是错的。后来发现是source的预加重没打开,高频信号衰减太大。记住:成功训练 ≠ 数据正确。一定要在训练后发个同步码(SCRamble) 验证。
2.3 FRL链路结构一图流
下面这张SVG图是我自己画的,把FRL的4个lane、时钟嵌入、编码层次和训练关系理了一遍。你们调试时可以拿它当检查清单。
2.4 实战中要注意的细节
好了,理论讲完,我直接说调试时容易翻车的地方。
- FRL训练失败后回退TMDS:这是规范允许的,但很多电视只支持FRL,不支持旧HDMI 2.0。我之前帮客户调试一个投影仪,source强行切FRL,sink没回应,结果画面黑了30秒才恢复。后来我在source端加了3次重试,每次间隔200ms,搞定。
- 16b/18b的辅助位使用:FRL的每18bit中有2bit是头部和尾部,用来做帧同步和边带通信。如果你在做协议分析,一定要注意这2bit的值——我曾经发现某sink芯片把这2bit忽略了,导致解帧逻辑全乱。最后改了sink的PHY配置才解决。
- FEC对长线的影响:RS-FEC可以修复最多60%的符号错误,但也引入了延迟。如果你们的产品是游戏显示器(低延迟需求),我建议慎用FEC。测试下来,不开FEC的延迟大约2个line周期,开了之后翻倍。自己权衡。
个人小技巧:调试FRL时,先用3Gbps低速档把链路建立起来,确认基本通信无误后,再逐档往上提。这叫“爬坡式训练”。我所有项目都这么干,省去很多查线材问题的功夫。
2.5 小结(本章就到这儿)
FRL不是翻版TMDS加个速,它是从物理层到链路层的全面重构。理解四个lane独立工作、时钟内嵌、训练流程这三个核心理念,后面的调试才不会抓瞎。下一章我们会深入训练的具体寄存器操作,准备好逻辑分析仪就行。