FRL链路训练总体流程

链路训练,说白了就是让Source和Sink双方握手,商量好用什么方式干活。HDMI 2.1的FRL模式和传统的TMDS模式不一样,它有一套更复杂的训练流程。我当年第一次接触FRL训练时,也被这状态机搞得头晕,后来调过几个项目才摸清楚门道。

你想想看,FRL想要跑48Gbps,甚至更高,这就要求链路必须非常可靠。所以,训练的目的就是找到双方都能稳定工作的模式,包含几个关键要素:数据通道数、速率、是否启用FEC(前向纠错)、LTTPR的配置等等。

嗯,我们直接切入正题。FRL链路训练的整体流程,本质上是一个由Source驱动的状态机,Sink和中间的LTTPR配合完成。我习惯把它分成三大块来理解:状态机的迁移、与LTTPR的交互、以及如何判断训练好坏。

核心观点:链路训练就是一场“Source主导、Sink应答、LTTPR转发”的协议舞蹈。训练失败,九成以上是信号质量问题,剩下是协议握手不匹配。

2.1 训练状态机详解

FRL训练状态机,官方标准的图看着很复杂,但我帮你拆解成几个关键“关卡”。

  1. 第一阶段:触发训练 (HPD & SCDC)
  2. 第二阶段:训练准备 (对时钟和数据通道进行预充电)
  3. 第三阶段:CR (Clock Recovery,时钟恢复) 锁定
  4. 第四阶段:CTS (Character Train Symbol,特征训练符号) 码流锁定
  5. 第五阶段:数据通道训练 (EQ 均衡和 symbol lock)
  6. 第六阶段:验证并进入正常模式 (FRL模式或FRL + FEC模式)

每个阶段的结果只有两个:Pass (通过) 或 Fail (失败)。Fail了就重试,重试次数超了就链路断开。

下面是状态机整体的迁移流程,我用一张图帮你建立直观印象。这张图我自己之前做培训时一直用,很管用。

FRL 链路训练状态机流程图 FRL 链路训练状态机核心流程 等待 HPD & 读取 SC (1) 开始状态 训练准备 (信道预充电) (2) 准备状态 CR 锁定 (3) 时钟恢复 CTS 码流锁定 (4) 码流对齐 数据通道训练 (EQ + Lock) (5) 均衡调整 失败回退 训练完成 (6) 运行状态 关键:每步都可能失败,失败后重试。重试超限 (3次) 则链路断开。

个人经验:这张图的重点在于“失败回退”那条虚线。我曾经遇到一个案子,Source硬件EQ能力偏弱,导致数据通道训练死活锁不定。结果就是Source和Sink在CR和Data EQ之间来回跳,一直进入不了稳态。当时看log,这状态机就像在“死循环”里打转。

2.2 LTTPR 交互过程

谈到FRL训练,就绕不开LTTPR。它像个中继器,负责把Source的训练请求转发给Sink,再把Sink的回应转回来。

我开始接触LTTPR时也搞混过,后来自己的总结是:注意它参与的三个时刻。

  • 训练开始前 (Cable Discovery): Source通过读取DDC (Display Data Channel)上的寄存器,来发现链路上有几颗LTTPR。这是我排查链路时必看的一步。如果Source读不到LTTPR的ID,那说明I2C总线或EDID的buffer可能有问题。
  • 训练进行中 (Re-timer 模式): LTTPR处于直通状态,不修改训练数据,只均衡和转发CDR (Clock and Data Recovery) 时钟数据恢复。它帮助信号在长线缆中恢复眼图。
  • 训练失败时 (Re-driver 模式 vs Re-timer 模式): 有些LTTPR芯片可以配置成Re-driver,它只放大信号,但引入的噪声也大。我个人更倾向于Re-timer模式,虽然延迟大一点,但信号质量更干净。

避坑指南:我曾经在某款芯片上踩过LTTPR的坑。Source发起训练时,LTTPR的转发延迟过大,超过了Source的时序容忍窗口。结果Source一直收不到Sink的有效响应,反复失败。排查了两天才定位到,最后是通过调整LTTPR的配置寄存器,降低它的转发深度才解决。

2.3 训练成功/失败判定标准

怎么快速判断训练到底成没成?我总结了几个核心指标,你在实验室看log或抓波形时,盯着这几项看就行。

判定项 成功标志 失败标志 (常见原因)
1. SCDC Read 状态 成功读取 Sink 的 FRL 能力寄存器 SCDC 读取超时、NACK 应答、数据全 0 或全 F
2. CR 锁定 所有通道的 CR 锁定状态位变为 1 通道时钟抖动过大,无法恢复时钟 (PLL 失锁)
3. Symbol Lock CTS 码流能正确对齐,实现 symbol lock 信号衰减导致码流误码率高,无法对齐
4. EQ 训练结果 所有通道 EQ 稳定,误码率 ≤ 1E-9 链路均衡不足或过度,眼图闭合
5. 训练完成标志 Source 成功切换到 FRL 模式 训练超时 (max retries),Source 回退至 TMDS 模式

说白了,你只要看到训练完成后Source发出的TMDS信号变成了FRL信号,并且Sink能正常解码出图像,那就算成功了。如果训练失败,最常见的现象就是:花屏一下,然后黑屏。

我的判断习惯: 我会优先检查 SCDC Address 0x20 ~ 0x2A 这组寄存器。训练完成后,这几个寄存器里记录了FRL的速率和通道数。如果读出来全是0或者和预期不符,那训练肯定没成功。很多工程师会忽略这个,我建议你一定要看。

训练失败后,Source通常会尝试3次。3次都失败,链路就会断开,HDMI端口的输出可能就被拉低或者变成TTL电平。这时候不要急着换芯片,先用示波器抓一下HPD和TMDS的最小化传输差分信号,看时序对不对,眼图好不好。嗯,这一点非常重要。