时钟恢复基本原理:PLL 与 CDR 到底在干什么
做 SGMII 调试,绕不开时钟恢复。说白了,就是接收端要从一串连 0 连 1 的数据流里,硬生生地把时钟“拽”出来。为什么这么折腾?因为 SGMII 不传单独的时钟线。数据自己带着时钟信息,相当于信号既当运动员又当裁判。
我刚开始接触这个项目时,总觉得这也太别扭了。后来一想,少一根线就是省一笔成本,工程上很划算。但代价是什么?你得有一套靠谱的时钟恢复方案。核心就是两个东西:PLL 和 CDR。
PLL 工作原理
PLL,锁相环。名字听着唬人,本质上就是一个自动对齐的跟踪器。它让本地产生的时钟,去追输入信号的相位和频率。
一个基本 PLL 由四部分组成:
- 鉴频鉴相器 (PFD):比较输入参考时钟和反馈时钟的相位差、频率差。输出一个误差信号。
- 电荷泵 + 环路滤波器 (CP + LF):把误差信号转换成控制电压。滤波器负责滤掉高频噪声,决定环路稳定性和响应速度。
- 压控振荡器 (VCO):根据控制电压调整输出频率。电压高,频率快;电压低,频率慢。
- 分频器 (Divider):把 VCO 的高频输出分回到参考频率,形成闭环。
环路闭合后,系统会不断修正误差,直到输出时钟和参考时钟“锁定”在一起。这时候输出频率 = 参考频率 × 分频比。
我的一点经验:别只看锁定指示。很多新手觉得 PLL Lock 灯亮了就万事大吉。我遇到过 Lock 灯亮着但误码率很高的情况。为什么?环路带宽设置太窄,VCO 的抖动没被抑制住。锁定只是第一步,抖动才是关键。
环路带宽与锁定时间
环路带宽是 PLL 的灵魂参数。它决定了三个事情:
- 锁定速度:带宽越宽,锁定越快。
- 噪声过滤:带宽越窄,对参考时钟的噪声过滤越好。
- VCO 噪声抑制:带宽越宽,对 VCO 自身噪声的抑制能力越强。
你看,这里面有矛盾。太宽了参考噪声进来,太窄了 VCO 抖得厉害。一般工程上取个折中。对于 SGMII 这种 1.25Gbps 的速率,我个人习惯把 PLL 带宽设在 1-5 MHz 之间。
关键指标:SGMII 参考时钟的频率容差要求 ±100 ppm。如果源端晶振偏差超过了这个范围,PLL 就没法锁定,CDR 也会跟着崩溃。
锁定时间也是个坑。芯片上电或者链路重新协商时,PLL 需要一定时间进入锁定状态。我记得有一次调试,现象是链路偶尔掉,查了半天发现是复位时序太紧,PLL 还没锁住就让 CDR 开始工作。结果呢?时钟还没稳定就开始恢复数据,那不乱套才怪。
建议至少留出 5-10 倍锁定时间的裕量。
CDR 基础
CDR,时钟数据恢复。和 PLL 有些像,但使命不同。PLL 是盯着一路参考时钟去跟踪,而 CDR 是从数据信号的跳变沿里提取时钟信息。
SGMII 使用的编码是 8B/10B,保证数据里平均每 5 个比特就有一次跳变。这就保证了 CDR 有足够的沿信息来锁定相位。
注意:如果链路发送连续的长 0 或长 1(没有跳变),CDR 会失去相位参考,输出时钟频率就会漂移。很多调试问题根因就是这个。
CDR 的基本架构
常见的 CDR 架构有几种:
| 类型 | 原理 | 特点 |
|---|---|---|
| 基于 PLL 的 CDR | 用鉴相器替换 PFD,跟踪数据边沿 | 结构简单,应用广泛,但在连续相同比特时容易漂移 |
| 基于 DLL 的 CDR | 用延迟线调整采样相位 | 锁定快,无抖动累积,但频率捕捉范围窄 |
| 过采样 CDR | 用多相位时钟同时采样,再选出最佳采样点 | 不需要反馈环路,抗抖动好,功耗高 |
SGMII 物理层里最主流的是基于 PLL 的 CDR。它的工作流程大概是这样:
- 边沿检测:监听数据信号的上升沿和下降沿。
- 相位比较:将边沿位置与本地时钟的采样点做对比,算出相位误差。
- 环路调整:误差信号经过滤波器,调整 VCO 的频率或相位,使采样点落在数据眼的正中间。
- 数据采样:锁定后,在最佳位置采样数据,同时输出恢复时钟。
你想想看,如果采样点偏了,靠近边沿,那数据很容易被误判。高速信号下,哪怕偏了 50ps 都可能出错。
避坑指南:我曾经在一款 FPGA 上实现了软 CDR,结果发现在 -40°C 到 85°C 温度循环下,恢复时钟的频率会漂移超过 200ppm。查来查去,问题出在温度对 VCO 的增益影响。后来加上温度补偿机制,才稳住。
PLL 和 CDR 的核心差异
| 维度 | PLL | CDR |
|---|---|---|
| 参考源 | 稳定的参考时钟 | 数据信号的边沿 |
| 锁定目标 | 频率 + 相位 | 最优采样相位 |
| 输入连续性 | 始终有信号 | 可能缺少跳变 |
| 主要挑战 | 抖动、锁定时间 | 数据模式相关抖动 |
做调试的时候,一定要分清楚你看到的问题是 PLL 还是 CDR 引起的。我个人习惯先测参考时钟质量,再查 CDR 锁定状态,最后看眼图。顺序乱了,容易绕弯路。
知识结构:本章核心逻辑
这张图把本章的两条主线串起来了。左边 PLL,右边 CDR。你调试的时候,可以顺着这张图的链条去排查。先看 PLL 是否锁定、带宽是否合理,再看 CDR 的相位跟踪有没有出问题。记住,锁定只是及格线,抖动性能才是优秀的标准。