第3章:Retimer芯片的FRL训练功能
3.1 Retimer在链路中的角色——不只是“中继”
很多人以为Retimer就是个信号放大器,把衰减的波形重新抬一抬。其实没那么简单。我最早接触Retimer时也这么想,结果被老前辈一针见血地指出——你看的是Repeater,不是Retimer。两者的区别在哪?Repeater只做幅度和时序的简单再生,而Retimer必须做时钟数据恢复(CDR)和完整均衡。
说白了,Retimer在FRL链路里干这三件事:
- 信号整形——通过CTLE和DFE补偿信道损耗,把眼图重新睁开。
- 时钟同步——从数据里恢复出干净的时钟,再重新采样发送,消除抖动累积。
- 协议感知转发——在FRL训练阶段解析链路训练序列(LT),并参与协商。
我曾经遇到一个项目,SoC端输出已经很好了,但经过一段长PCB走线和两个连接器后,显示器端的眼图完全闭合。加上一颗Retimer后,我原本预期只改善20%的裕量,结果眼高翻了近一倍。这就是CDR加均衡的威力。Retimer不是万能药,但在FRL链路里是救场利器。
3.2 Retimer的训练控制——谁说了算?
FRL训练的发起方永远是Source端(GPU/SoC)。Retimer在中间扮演什么角色?我个人的理解是:诚实的中间人。它不篡改训练消息,但会根据自己的能力对某些参数做“翻译”或“微调”。
3.2.1 训练中的LT序列处理
FRL训练分为几个阶段:LT-TP1(时钟训练)→ LT-TP2(符号锁定)→ LT-TP3(链路训练)→ LT-TP4(链路配置)。Retimer在每个阶段的参与方式不同:
| 训练阶段 | Retimer动作 | 我的经验陷阱 |
|---|---|---|
| LT-TP1 | 侦听时钟训练序列,校准本地CDR | 如果Retimer PLL锁定慢,可能错过第一组脉冲,导致上报“未锁定”。 |
| LT-TP2 | 透传符号锁定序列,同时训练自己的EQ | 某些Retimer在EQ未收敛时会主动插入“训练失败”码,Source误判为Sink异常。 |
| LT-TP3 | 转发Source与Sink间的FEC参数、lane数、时钟频率等协商 | 我曾碰过Retimer固件把FEC编码能力位写反,导致Source以为Sink不支持FEC,降级到5.4Gbps。 |
| LT-TP4 | 确认最终配置,进入正常工作状态 | 注意Retimer需要等待Source发出VTG_CTRL后才能转变状态,否则会出现链路抖动。 |
避坑指南:我曾经在一个项目里,Retimer在LT-TP2结束后自己内部状态机跑到“就绪”,但没等Source的确认信号就直接转发数据,结果Source端收到乱序字符,整个链路回退重训。后来我在Retimer配置里强制打开了“训练握手等待使能”才解决。记住:Retimer永远不要抢跑。
3.2.2 训练参数协商中的Retimer干预
FRL定义了Source与Sink之间通过VSC(Vendor Specific Control)和SCDC(Status and Control Data Channel)交换能力。Retimer一般不会修改这些寄存器,但有些芯片提供了“参数覆盖”功能——比如强制固定FRL速率、强制关闭某条lane。这些功能主要用于调试,量产时不能开。
我个人习惯是:在原型阶段用覆盖功能快速验证链路极限,但正式代码里必须禁用,否则CM会把PCB改版成本算在你头上。
3.3 透明模式——Retimer的“隐身衣”
透明模式(Transparent Mode),也叫Pass-through模式。在这种模式下,Retimer对Source和Sink完全不可见。它不做任何训练干预,只做物理层透传。什么时候用这种模式?
- 短距离链路:如果只是PCB内跨芯片走线,且信号裕量足够,Retimer不需要参与训练协商。
- 与旧版HDMI设备兼容:某些HDMI 2.0设备不支持FRL训练,Retimer透明模式可以让Source直接与Sink完成TMDS握手。
- 故障调试:我习惯先用透明模式确认Source和Sink本身能否直接建立链路,如果成功,再切回正常模式看Retimer是否引入问题。
但要注意:透明模式下Retimer仍然在进行CDR和均衡,只是不处理训练消息。它有独立的EQ收敛过程,如果EQ收敛慢,会导致训练超时。我曾经在实验室折腾了两天,最后发现Retimer的透明模式EQ收敛时间需要40ms,而Source的超时时间只有35ms。解决方法?把超时值放宽到50ms,或者让Retimer在Source开始训练前就预锁。
⚠️ 重要提醒:透明模式不等于“直通”。Retimer的CDR仍然会对数据做重采样,引入延迟和抖动。如果你把Retimer完全当电线用,在高频FRL(12Gbps/lane)下可能反而恶化信号。建议至少测量一下眼图再做决定。
3.4 Retimer训练状态机——我习惯画的一张图
下面这张SVG图是我每次讲课都会展示的,它是Retimer在FRL训练中核心状态跳转的主干路径。你看懂这张图,就理解了80%的调试思路。
这张图里有个关键点:从“侦听+训练”到“协商转发”是顺滑的,但一旦协商失败或超时,状态机会回退到初始校准阶段。我见过不少调试案例,Retimer回退后EQ参数没有重置,导致二次训练必失败。解决方法是在RESET状态清除所有EQ收敛权值。
3.5 选型与调试时的三个关键参数
最后,我整理一下在实际项目中需要重点关注的Retimer参数:
- CDR锁定时间:必须在Source的LT-TP1窗口内完成。我习惯留50%余量,比如Source窗口10ms,Retimer锁定时间就得<5ms。
- EQ收敛速度与精度:可以向下兼容,但向上(高频率)收敛要足够快。我曾经测过某款芯片,在12Gbps时EQ需要3000个UI才稳定,而LT-TP2窗口只有2048个UI——结果就是眼图开到一半就进入下一阶段,导致接收错误。
- 训练消息延时:Retimer转发SCDC写命令时会有几ns到数十ns的延时。如果Source的回读超时设得太紧,Sink的写响应还没来得及返回就被判超时。建议至少留5μs的余量。
一句话总结:Retimer在FRL链路里是“带CDR的高级中继”,不是简单放大器。透明模式省心但有限制,正常模式需要你仔细校准训练时序。我每次做新板,都会先抓一下LT序列的log,确认Retimer的状态机在每个阶段停留的时间——这比看一百页手册都管用。