时钟恢复基本原理:PLL 与 CDR 到底在干什么

做 SGMII 调试,绕不开时钟恢复。说白了,就是接收端要从一串连 0 连 1 的数据流里,硬生生地把时钟“拽”出来。为什么这么折腾?因为 SGMII 不传单独的时钟线。数据自己带着时钟信息,相当于信号既当运动员又当裁判。

我刚开始接触这个项目时,总觉得这也太别扭了。后来一想,少一根线就是省一笔成本,工程上很划算。但代价是什么?你得有一套靠谱的时钟恢复方案。核心就是两个东西:PLL 和 CDR。

PLL 工作原理

PLL,锁相环。名字听着唬人,本质上就是一个自动对齐的跟踪器。它让本地产生的时钟,去追输入信号的相位和频率。

一个基本 PLL 由四部分组成:

  • 鉴频鉴相器 (PFD):比较输入参考时钟和反馈时钟的相位差、频率差。输出一个误差信号。
  • 电荷泵 + 环路滤波器 (CP + LF):把误差信号转换成控制电压。滤波器负责滤掉高频噪声,决定环路稳定性和响应速度。
  • 压控振荡器 (VCO):根据控制电压调整输出频率。电压高,频率快;电压低,频率慢。
  • 分频器 (Divider):把 VCO 的高频输出分回到参考频率,形成闭环。

环路闭合后,系统会不断修正误差,直到输出时钟和参考时钟“锁定”在一起。这时候输出频率 = 参考频率 × 分频比。

我的一点经验:别只看锁定指示。很多新手觉得 PLL Lock 灯亮了就万事大吉。我遇到过 Lock 灯亮着但误码率很高的情况。为什么?环路带宽设置太窄,VCO 的抖动没被抑制住。锁定只是第一步,抖动才是关键。

环路带宽与锁定时间

环路带宽是 PLL 的灵魂参数。它决定了三个事情:

  1. 锁定速度:带宽越宽,锁定越快。
  2. 噪声过滤:带宽越窄,对参考时钟的噪声过滤越好。
  3. 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。它的工作流程大概是这样:

  1. 边沿检测:监听数据信号的上升沿和下降沿。
  2. 相位比较:将边沿位置与本地时钟的采样点做对比,算出相位误差。
  3. 环路调整:误差信号经过滤波器,调整 VCO 的频率或相位,使采样点落在数据眼的正中间。
  4. 数据采样:锁定后,在最佳位置采样数据,同时输出恢复时钟。

你想想看,如果采样点偏了,靠近边沿,那数据很容易被误判。高速信号下,哪怕偏了 50ps 都可能出错。

避坑指南:我曾经在一款 FPGA 上实现了软 CDR,结果发现在 -40°C 到 85°C 温度循环下,恢复时钟的频率会漂移超过 200ppm。查来查去,问题出在温度对 VCO 的增益影响。后来加上温度补偿机制,才稳住。

PLL 和 CDR 的核心差异

维度 PLL CDR
参考源 稳定的参考时钟 数据信号的边沿
锁定目标 频率 + 相位 最优采样相位
输入连续性 始终有信号 可能缺少跳变
主要挑战 抖动、锁定时间 数据模式相关抖动

做调试的时候,一定要分清楚你看到的问题是 PLL 还是 CDR 引起的。我个人习惯先测参考时钟质量,再查 CDR 锁定状态,最后看眼图。顺序乱了,容易绕弯路。

知识结构:本章核心逻辑

时钟恢复核心知识结构 时钟恢复基础 PLL 锁相环 基本组成 环路带宽 锁定时间 CDR 时钟数据恢复 基本架构 工作流程 常见架构 调试关键:保持 PLL 锁定 → 保证 CDR 稳定采样 先检查参考时钟质量,再排查 CDR 锁定状态,最后看眼图 避坑:锁定 ≠ 稳定,抖动飘移才是真正的敌人

这张图把本章的两条主线串起来了。左边 PLL,右边 CDR。你调试的时候,可以顺着这张图的链条去排查。先看 PLL 是否锁定、带宽是否合理,再看 CDR 的相位跟踪有没有出问题。记住,锁定只是及格线,抖动性能才是优秀的标准。