4. 时钟恢复与锁相环(CDR):CDR收敛条件、频率偏移导致训练失败、PLL失锁分析

CDR,也就是时钟数据恢复,在HDMI 2.1 FRL链路里可以说是最关键的环节之一。我个人一直认为,链路训练能不能成,CDR至少要占一半的权重。信号从TX发出来,经过线缆、连接器、PCB走线,到达RX端的时候,早就不是原来那个干净的样子了。

这时候CDR要做的,就是从这堆「混沌」的数据里,把时钟信息给抠出来。嗯,听着简单,实际做起来坑不少。

4.1 CDR收敛的基本条件

CDR要锁定,说白了需要同时满足三个条件:频率对得上、相位跟得上、幅度足够。缺一个都不行。

条件 要求 典型失效表现
频率匹配 RX参考时钟与TX字符时钟偏差 < ±300 ppm CDR长期无法锁定,锁定指示灯闪烁
相位跟踪 PLL环路带宽需覆盖数据抖动的频率分量 锁定后频繁失锁,误码率飙升
幅度可用 RX输入眼图张开度 > 0.2 UI(最差条件下) 无锁定,或锁定在错误相位

关键指标:FRL 3 Lane模式下,CDR收敛时间通常要求在50 µs以内。如果超过100 µs还没锁定,基本可以判定链路存在问题。

我在调试某品牌电视的项目中遇到过,CDR总是要等好几毫秒才锁定,软硬件组互相甩锅。最后我们发现是RX端参考时钟的PPM偏差太大,换了一颗晶振就搞定了。你看,有时候问题就这么简单,但定位过程能让你掉一层皮。

4.2 频率偏移导致训练失败

频率偏移是CDR训练失败的「头号杀手」。HDMI 2.1 FRL的字符时钟频率是固定的,但发送端和接收端的参考时钟源不可能完全一致。这个误差一旦超过CDR的捕获范围,训练必然失败。

为什么会这样?我简单说一下。

  1. 源端TX时钟:一般来自板载晶振或PLL,精度通常在±50 ppm以内。
  2. 宿端RX参考时钟:同样来自本地晶振,精度指标也一样。
  3. 两者偏差叠加:最坏情况可能是+50 ppm对-50 ppm,差值达到100 ppm。

但实际项目中,很多低成本的晶振在温度变化时频率漂移会更大。我曾经测过一颗号称±25 ppm的晶振,在85°C下直接漂到了+120 ppm。这要是用在HDMI 2.1链路里,CDR根本没办法收敛。

避坑提醒:我曾经在量产测试时发现一批产品在高低温箱里频繁CDR失败。追查下来,是RX端使用的晶振在低温下频率偏移过大。后来我强制要求供应商提供全温范围内的频率漂移数据,并把验收标准收紧到±30 ppm以内。

频率偏移的另一个陷阱是符号间干扰与时钟耦合。长距离传输后,数据波形上升沿变缓,此时CDR对频率偏差的容忍度会进一步下降。也就是说,理想条件下可能能容忍±500 ppm,但实际链路降级后,可能±200 ppm就锁不住了。

这里给个自查清单:

  • 确认TX和RX的参考时钟源精度是否满足±50 ppm
  • 检查时钟源的电源纹波,我见过很多案例是电源不干净导致PLL抖动过大
  • 在极端温度下验证CDR锁定裕量,别只常温测一下就完事

4.3 PLL失锁分析

PLL失锁比频率偏移要复杂一些。频率偏移是「根本对不上」,PLL失锁是「对上了,又跑了」。我把它分成三类来分析:

失锁类型 根源 典型现象
瞬态失锁 输入信号幅度突变或相位跳变 偶尔出现,持续时间短,往往被误认为是误码
稳态失锁 环路滤波器参数设置不当,或VCO控制电压漂移 锁定后几十毫秒到几百毫秒失锁,有规律
热失锁 温度变化导致VCO频率漂移超过环路能跟踪的范围 温度升高或降低后失锁,冷却后恢复正常

我印象比较深的是有一次调试车载HDMI 2.1方案。在实验室里跑得好好的,一装到车上路测就频繁黑屏。抓log发现是瞬态失锁。测了一下车内的电源环境,发现地弹噪声高达200 mV,直接耦合进了CDR的输入信号。

个人经验:诊断PLL失锁时别急着调PLL参数。先看看电源纹波、看看地弹、看看信号完整性。很多时候失锁是外因引起的,不是PLL本身的问题。如果确认是PLL参数问题,我建议从环路带宽和电荷泵电流两个方向入手。

环路带宽的选择需要权衡:

  • 带宽太宽(比如 > 5 MHz):锁定速度快,但对噪声敏感,容易引入高频抖动
  • 带宽太窄(比如 < 200 kHz):噪声抑制好,但锁定慢,且无法跟踪快速变化的频率

对于HDMI 2.1 FRL的12 Gbps速率,我个人习惯把环路带宽设在1~2 MHz之间。当然,这个值取决于你的PCB设计和信号质量,没有一招鲜的办法。

最后再强调一点:CDR调试不能只看锁定成功与否。你需要观察锁定的过程——锁定花了多长时间、是从哪个方向逼近的、是否出现多次过冲。这些信息能从PLL的状态寄存器里读出来,别浪费了。

嗯,CDR这部分就先聊到这儿。记住,时钟恢复是模拟电路和数字逻辑的博弈,调试时要有耐心,也要有系统性思维。

图4-1 CDR 锁定阶段与关键失效点 无输入信号 等待数据流 频率捕获阶段 PLL 频率牵引 相位跟踪阶段 消除相位误差 比特锁定 数据有效输出 ⚠ 频率偏移过大 频率偏差 > 捕获范围 → 无法收敛 ⚠ 瞬态失锁 相位跳变 / 幅度突变 → 频繁重新锁定 ⚠ 稳态失锁 VCO漂移 / 温度影响 → 锁定后间歇性失锁 调试要点 1. 先确认参考时钟PPM是否在允许范围内(±50 ppm) 2. 检查CDR状态寄存器:锁定时间、失锁次数、相位误差 3. 观察电源纹波和地弹:建议纹波 < 50 mVpp 4. 温度测试不可跳过:PLL失锁往往只在高温/低温下暴露