2. HDMI FRL基础
HDMI 2.1 引入的 FRL(Fixed Rate Link,固定速率链路)是理解高速 HDMI 信号完整性的起点。它与传统 TMDS(Transition Minimized Differential Signaling)并非简单的“速率升级”,而是从时钟架构、编码方式、链路建立流程到协议分层的一次系统性重构。只有先厘清 FRL 与 TMDS 的本质差异,才能正确解读后续的抖动、均衡、误码与一致性测试。
一、FRL 与 TMDS 的核心差异
TMDS 采用“源端同步时钟 + 每通道串行数据”的架构,三条数据通道加一条独立时钟通道,接收端用时钟通道恢复采样相位。其速率受限于时钟通道与数据通道的偏斜控制,最高只能到 HDMI 2.0 的 6 Gbps/通道(18 Gbps 总带宽)。FRL 则彻底取消了独立时钟通道,改为嵌入式时钟(Embedded Clock),由接收端从数据流中通过 CDR(Clock Data Recovery)恢复时钟,并把通道数扩展为 3 或 4 条,单通道速率提升到 6/8/10/12 Gbps。
更关键的是编码差异:TMDS 使用 8b/10b 编码,每 10 bit 中携带 8 bit 有效数据,开销 25%;FRL 使用 16b/18b 编码,每 18 bit 中携带 16 bit 有效数据,开销仅约 11.1%。这意味着在相同物理速率下,FRL 的有效吞吐更高,同时其直流平衡与跳变密度特性也完全不同,直接影响均衡器设计与抖动预算。
二、通道编码:16b/18b 带来的变化
FRL 的 16b/18b 编码把 16 bit 有效载荷映射为 18 bit 传输符号,其中 2 bit 用于同步头(Sync Header),用于标识数据是控制字符还是数据字符。相比 8b/10b,16b/18b 的编码开销更低,但代价是游程长度(Run Length)更长、低频成分更丰富,对接收端 CDR 和均衡器提出更高要求。同时,FRL 在链路层引入 FEC(前向纠错)与重传机制,使误码率在物理层不完美时仍能维持链路可用。
关键参数:FRL 的 16b/18b 编码中,每 18 bit 符号包含 16 bit 数据 + 2 bit 同步头。同步头用于区分“数据帧”与“控制帧”,是链路训练和状态机切换的基础。
三、速率等级与通道配置
FRL 定义了 6 个速率等级(Rate 1~6),通过 3 Lane 或 4 Lane 组合实现不同总带宽。链路训练时,源端与接收端会逐级尝试,直到找到双方都支持且误码率满足要求的最高等级。
| 速率等级 | 每 Lane 速率 | 3 Lane 总带宽 | 4 Lane 总带宽 | 典型应用 |
|---|---|---|---|---|
| FRL Rate 1 | 3 Gbps | 9 Gbps | 12 Gbps | 4K30 基础 |
| FRL Rate 2 | 6 Gbps | 18 Gbps | 24 Gbps | 4K60 8bit |
| FRL Rate 3 | 8 Gbps | 24 Gbps | 32 Gbps | 4K60 10bit |
| FRL Rate 4 | 10 Gbps | 30 Gbps | 40 Gbps | 4K120 8bit |
| FRL Rate 5 | 12 Gbps | 36 Gbps | 48 Gbps | 4K120 10bit / 8K60 |
| FRL Rate 6 | 12 Gbps | — | 48 Gbps | 8K60 10bit 以上 |
四、链路训练与 FRL 协议栈
FRL 链路建立不是“上电即通”,而是经过一套链路训练(Link Training)流程:源端发送训练序列(Training Pattern),接收端根据误码情况反馈调整均衡参数和速率等级,双方通过 SCDC(Status and Data Channel)寄存器交换能力与状态。训练成功后,链路进入正常数据传输,并持续监控误码,必要时触发重训练或降速。
FRL 协议栈自下而上可分为:物理层(PHY,负责 SerDes、CDR、均衡)、链路层(Link Layer,负责 16b/18b 编解码、FEC、重传、通道对齐)、协议层(Protocol Layer,负责数据包封装与 SCDC 交互)。理解这一分层,有助于在调试时快速定位问题:是物理层眼图闭合,还是链路层 FEC 纠错超限,抑或协议层训练状态机卡死。
调试提示:当 FRL 链路无法达到预期速率时,优先检查 SCDC 寄存器中的 FRL_Rate 与 FRL_Training_Status,再结合示波器观察训练序列的眼图与抖动。很多“链路不稳”问题实际是训练阶段均衡收敛不足,而非物理连接故障。
五、常见误区与复盘
- 误区一:FRL 只是 TMDS 的提速版。实际上 FRL 取消了独立时钟通道,改用嵌入式时钟与 CDR,编码、训练、纠错机制全部不同,不能沿用 TMDS 的调试经验。
- 误区二:速率等级越高越好。高等级对线材、连接器、PCB 损耗更敏感,若信道裕量不足,强行跑高等级反而导致重传频繁、有效吞吐下降。
- 误区三:忽略 SCDC 交互。FRL 的能力协商依赖 SCDC,若寄存器读写异常,链路可能停留在低速率或反复重训练。
- 复盘要点:建立“物理层眼图 → 链路层 FEC 计数 → 协议层训练日志”的三级排查路径,先确认物理层裕量,再分析链路层纠错,最后检查协议层状态机。
# 典型 FRL 链路训练状态检查(伪代码)
read SCDC.FRL_Rate # 当前协商速率等级
read SCDC.FRL_Training_Status # 0=未训练, 1=训练中, 2=成功, 3=失败
read SCDC.FEC_Error_Count # FEC 纠错计数,持续增长说明物理层裕量不足
read SCDC.Link_Retrain_Count # 重训练次数,频繁重训练需检查信道或均衡设置
掌握 FRL 与 TMDS 的差异、16b/18b 编码特性、速率等级组合以及链路训练与协议栈分层,是后续进行抖动分解、误码率测试和一致性验证的基础。只有把链路建立过程与各层职责看清楚,才能在信号完整性测试中准确判断问题归属。