4. 时钟恢复(CDR)原理
时钟恢复,说白了就是把串行数据里藏着的时钟信息“提取”出来。
SGMII链路上只有数据线,没有单独的时钟线。接收端必须从数据跳变中重建出同步时钟,才能正确采样。这件事,就是CDR(Clock and Data Recovery)干的。
我记得刚接触高速串行链路时,总觉得这步很玄学。后来调了几个月眼图,才真正理解:CDR就是一个闭环反馈系统。核心三个环节:相位检测、环路滤波器、压控振荡器(VCO)。下面一个一个拆开讲。
相位检测:找出时钟和数据的“时间差”
相位检测器(PD)是CDR的“眼睛”。它比较接收数据边沿和本地时钟边沿,输出一个误差信号。
说白了,就是看时钟比数据“早到了”还是“晚到了”。
我当时在项目中用的是线性相位检测器,也叫“Hogge检测器”。结构很简单:
- 数据上升沿触发第一个D触发器(时钟上升沿采样)
- 数据下降沿触发第二个D触发器(时钟下降沿采样)
- 两个输出异或,得到脉冲宽度信号
脉冲宽度代表相位差。误差越大,脉冲越宽。完美对齐时,脉冲宽度为零。
实际项目中要注意什么?
- 鉴相死区:当相位差极小时,数字PD可能无法产生有效误差脉冲。我用的是Bang-Bang鉴相器,它输出“超前/滞后”二值信号,没有死区问题。虽然精度粗,但鲁棒性不错
- 数据跳变密度:CDR需要数据中频繁出现边沿。SGMII的8B/10B编码保证了足够跳变——这是个好特性
环路滤波器:给误差信号“滤波”
相位检测器输出的是高频抖动信号,不能直接去调VCO。需要一个环路滤波器把噪声滤掉,提取出直流分量。
我习惯把环路滤波器理解为“系统的决策大脑”。它决定了CDR的收敛速度和抗噪能力。
常用的环路滤波器结构:
- 一阶无源RC:最简单,但噪声性能一般。适合低速率
- 二阶有源:性能好,常用在高速CDR中。包含比例路径和积分路径
- 数字环路滤波器:现在流行全数字CDR,用累加器+比例系数:
freq_error = integral(phase_error) * Ki + phase_error * Kp
为什么用二阶?
一阶环路只能跟踪固定频偏,对于SGMII这种有频率漂移的场景,必须用二阶。换句话说,二阶环路能无误差地跟踪斜坡输入的频率变化。我自己的项目中,比例系数Kp和积分系数Ki的配置是调了好几天才稳下来的。
关键参数经验值:
| 参数 | 典型值 | 太大了 | 太小了 |
|---|---|---|---|
| 比例系数 Kp | 0.5~1.0 | 锁定快但抖动大 | 锁定慢 |
| 积分系数 Ki | 0.01~0.1 | 过冲甚至振荡 | 跟踪不上频偏 |
| 环路带宽 | 数据速率/1000 | 自激 | 无法跟踪抖动 |
VCO:产生可调的本地时钟
VCO的任务是根据环路滤波器的控制电压,输出一个频率可调的时钟信号。在CDR环里,它负责“输出”最终的恢复时钟。
理想VCO的特性:f_out = f_free + Kvco * V_ctrl。但现实世界是非线性的。
我记得项目早期选了一款VCO,Kvco(调谐增益)标称50 MHz/V,实测在中心频率附近增益波动超过40%。结果锁相环相位噪声恶化了3个dB。
VCO的关键指标:
- 调谐范围:需覆盖SGMII数据速率的 ±200 ppm(SGMII规范要求)
- 相位噪声:直接影响最终时钟抖动。通常要求< -120 dBc/Hz @ 1MHz偏移
- 压控增益波动:尽可能平摊,避免增益突变引起环路不稳定
CDR环路完整结构
把三个模块串起来,就是完整的CDR闭环系统:
数据波形 → 相位检测器 → 误差信号 → 环路滤波器 → 控制电压 → VCO
↕
恢复时钟(反馈回PD)
你会发现它是个负反馈系统。目标就是让VCO时钟沿锁在数据眼图的正中间。
为什么一定要锁在中间?因为那里采样余量最大,抗抖动能力最强。我个人习惯在仿真时看“相位对齐波形”——PD输出积分值归零时,就是完美对齐了。
下面这张图展示了CDR三个核心模块如何协同工作:
CDR模块综合判断
三个模块放在一起,需要整体调优。我整理了一个辅助判断表:
| 问题表现 | 可能故障模块 | 排查方向 |
|---|---|---|
| 始终无法锁定 | 相位检测器/输入数据 | 检查数据跳变密度;确认PD极性;VCO初始频率是否在捕捉带内 |
| 锁定后眼图抖动较大 | 环路滤波器/VCO | 降低环路带宽;检查VCO电源噪声;增加去耦电容 |
| 锁定时间长(>10μs) | 环路滤波器 | 适当增加Kp或Ki;检查是否因PG(频率引导)逻辑异常 |
| 锁定后频率偏移大 | VCO | 检查Kvco线性度;确认VCO初始频率是否与标称值偏差过大;可能有温漂 |
我调试CDR时,常用这套排查思路——先暴力扫一下系统能否锁定,再看抖动和稳定时间。相位检测器的极性错了会直接锁反,后文会单独讲。