链路训练的目标与重要性:建立可靠链路、动态均衡、抗干扰
好,咱们进入第4章。前面几章我们把FRL的物理层基础聊得差不多了。这章聊聊链路训练,说白了就是HDMI 2.1芯片之间“握手”的过程。你想啊,两边的芯片刚上电,怎么知道对面是谁?能跑多快?中间线缆有没有毛病?这事不能靠猜,必须有一套标准流程。我刚开始啃这块的时候,看协议文档看得头大,后来自己动手抓了几次波形,才真正明白它在干啥。
4.1 链路训练到底在干什么?
链路训练,本质上就是Source(发送端)和Sink(接收端)之间的一次“双向沟通”。它解决的核心问题是:我们能不能在这个物理通道上,稳定地跑出目标速率?
我记得在项目中遇到过一次,某款电视的HDMI口,接A厂的光纤线就黑屏,接B厂的铜缆却正常。查到最后,就是链路训练阶段均衡没调好。所以这东西不是理论,是实打实的坑。
4.2 建立可靠链路:从握手到锁定
链路训练的第一步,是双方“认识”。Source发一段特定的训练序列(TSS/CTS),Sink收到后,得能识别出这个模式。
这过程中有几个关键点:
- 时钟恢复(CDR):Sink的PLL要先锁定到Source的时钟上。同步没做好,后面全白搭。
- 字符边界对齐:FRL用的是8b/10b编码,Sink得找到每个10-bit字符的起始位置。我在项目调试中好几次,就是这个地方没对齐,导致误码率飙升。
- FRL模式协商:Source和Sink得商量好,是用3 lane还是4 lane?每lane跑几Gbps?这些信息在训练过程里,通过特定的Pattern来交换。
个人习惯:我调试新板子时,会先用逻辑分析仪抓一下TSS序列。如果Sink端收到的Pattern有错位,基本可以断定是PCB走线或连接器的问题。眼图仪在这时候反而不好用,因为它看不全协议层的东西。
4.3 动态均衡:线缆有多差,就补多少
为什么要动态均衡?因为线缆和PCB走线对高频信号的衰减是不一样的。6Gbps的信号和48Gbps的信号,衰减量天差地别。
HDMI 2.1 FRL里,均衡是由Sink端主导的。Sink会测量接收到的信号质量(比如眼图张开度),然后通过SCDC通道告诉Source:兄弟,把你的信号摆幅提高点,或者预加重增强点。
- CTLE(连续时间线性均衡):Sink端的模拟电路部分,补偿高频损耗。一般有多个档位可以切换。
- DFE(判决反馈均衡):处理码间串扰。这个调试起来更麻烦,参数设不好容易振荡。
- Source端调整:Source根据Sink的反馈,调整输出摆幅和预加重。
避坑指南:我曾经在一个项目中,发现均衡训练总是不收敛。查了三天,最后发现是Sink端的DFE初始参数设置错误,导致反馈环路一直震荡。切记:DFE的系数要根据实际通道特性来初始化的,不能无脑套默认值。
4.4 抗干扰:链路稳定性的最后防线
链路训练不是一次性的,它要持续运行。为啥?因为环境会变。线缆被踢一脚、附近有强电磁干扰、设备温度升高导致信号特性漂移……这些都可能让原本稳定的链路突然出问题。
HDMI 2.1 FRL的链路训练包含了链路状态监测机制。一旦发现误码率超标,马上启动重训练。这个过程要快到用户无感知——你想想看,正看着4K电影呢,突然黑屏一秒再亮,那体验多糟糕。
具体抗干扰的手段包括:
- 通道坏道标记:如果某条lane实在修不好,可以把它标记为“坏道”,降低速率继续用。我记得第一次看到这个机制的时候,心里嘀咕“这都行?”,后来发现确实管用。
- 快速重训练:当链路质量恶化时,Source自动发起快速重训练,不经过完整的复位流程,缩短中断时间。
- SCDC轮询:Sink通过SCDC定期检查链路状态。如果连续几次轮询都发现异常,就启动重训练。
核心要点回顾:
- 建立可靠链路:时钟锁定 + 字符对齐 + 模式协商,缺一不可。
- 动态均衡:Source和Sink协同工作,补偿通道损耗,不是单方面的事。
- 抗干扰:链路训练是持续的过程,不是一锤子买卖。热插拔、ESD、线缆松动都要能应对。
嗯,这章的内容说到这里。链路训练是整个HDMI 2.1软件栈里最底层也最关键的一环,搞懂了它,后面调试问题心里才有底。