4. 时钟与数据恢复(CDR)原理

时钟与数据恢复,英文缩写 CDR,是 SerDes 接收端最核心的模块之一。说人话就是:发送端只甩过来一串串比特流,没有单独的时钟线。接收端得自己从这坨数据里「抠」出时钟,再用这个时钟去正确采样数据。

我记得刚接触 SerDes 那会儿,总觉着 CDR 是个玄学。后来做了一次芯片回来眼图全闭,才明白这玩意儿有多关键。今天咱们就把它拆开揉碎了讲清楚。

4.1 为什么需要 CDR?

高速串行链路为了节省引脚和降低功耗,通常只传数据线,不传时钟。接收端必须从数据边沿中提取出时钟信息。这里有几个核心挑战:

  • 数据没有固定周期——数据是随机的,可能出现连续多个相同的 bit(比如 000000),导致长时间没有跳变沿。
  • 频率偏差——发送端和接收端的参考时钟不可能完全一样,ppm 级的偏差会在长时间后累积出相位误差。
  • 抖动——通道噪声、串扰、电源噪声都会让数据边沿的位置随机摆动。

说白了,CDR 必须在没有独立时钟的情况下,既恢复出干净的时钟,又用这个时钟在数据眼图的最佳位置采样。我当年调的第一个 CDR 环路,就因为环路带宽设得太宽,把高频噪声全收进来了,搞得频偏锁不住。后来把带宽压到系统波特率的 1/1000 左右才稳定。

4.2 CDR 的核心架构

现代 SerDes 中主流用的是基于 PLL 的反馈型 CDR,结构像一个锁相环,但多了一个鉴频过程。下图是我整理的一个典型 CDR 结构框图,你可以对着看:

典型 CDR 结构(PLL 型)
时钟与数据恢复(CDR)典型结构 串行数据输入 边沿检测 / Bang-Bang鉴相器 电荷泵 + 环路滤波器 VCO 数据采样器 恢复时钟 恢复数据 时钟反馈 数据直通 数据先进入鉴相器, 同时送到采样器。 VCO 输出时钟给鉴相器和采样器。

图中蓝色箭头是数据通路,灰色箭头是时钟反馈。核心环路是:鉴相器 → 电荷泵/环路滤波器 → VCO → 分频?这里为了简化没画分频器,实际 SerDes 中 VCO 的频率往往是数据率的整数倍,还需要一个分频器。

4.3 鉴相器类型

CDR 用的鉴相器跟普通 PLL 不一样。普通 PLL 可以用鉴频鉴相器(PFD),但 CDR 输入是随机数据,没有参考时钟,所以得用专门设计。常见的有两种:

类型 原理 优缺点
Bang-Bang 鉴相器 比较数据边沿与时钟边沿的先后顺序,输出早/晚 1 比特信号 电路简单、功耗低;但存在极限环抖动,低频抖动抑制差
线性鉴相器 检测相位误差的模拟量,输出与误差成比例的电流或电压 噪声性能好,抖动小;但设计复杂、功耗高
Alexander 鉴相器 双采样结构(早时钟、中时钟、晚时钟),用于判断相位 兼顾线性与 Bang-Bang,应用广泛;对时钟占空比有要求

我个人习惯在高速率(>20Gbps)场景下优先用 Bang-Bang 鉴相器。为什么?因为速率一高,模拟电路的线性度很难做,Bang-Bang 这种「只比大小」的电路反而更可靠。不过代价就是抖动会大一些,需要配合高 Q 值的环路滤波器来压低。

避坑提示: 曾经我有个项目,数据率 28Gbps,用了线性鉴相器,结果版图寄生导致鉴相器增益波动,锁定时相位抖动超标。后来换成 Bang-Bang 结构,虽然抖动略微增大,但环路稳定性好太多,眼图余量反而更大了。

4.4 环路带宽与锁定时间

CDR 的环路带宽是个很微妙的东西。你想想看,带宽设太宽:环路能快速跟踪数据边沿的抖动,但也会把高频噪声引进来,输出时钟相位噪声变差。带宽设太窄:抖动抑制好,但锁定时间太长,而且频率偏差大的话可能锁不住。

工程上一般怎么定?我总结几条经验:

  1. 环路带宽 ≤ 数据率的 1/1000——对于 10Gbps,带宽 10 MHz 左右比较合理。
  2. 带宽 ≥ 10 倍基准频率偏差——比如系统允许 ±200 ppm 的频率偏差,对应 10Gbps 就是 ±2 MHz 偏差,环路带宽至少要 20 MHz 才能正常捕获。
  3. 阻尼因子 ξ 取 0.7~1.0——过阻尼响应慢,欠阻尼过冲大。
特别注意: CDR 的锁定时间不等于 PLL 的锁定时间。因为数据跳变密度可能很低(比如长串 0),鉴相器有效更新速率会下降。实际测试中,锁定时长可能比公式计算值大 3~5 倍。建议在仿真中加入 PRBS31 序列,留足裕量。

4.5 频率捕获与锁定过程

CDR 启动时,VCO 的频率可能离目标很远。如果只靠鉴相器,可能锁到谐波上去。所以大多数 CDR 开始会先进行频率捕获:

  • 频率引导——利用接收数据的平均过零率,大致估算出频率,把 VCO 拉到附近。
  • 锁频环(FLL)辅助——用额外的频率检测器,比较 VCO 频率与数据率的差值,输出粗调电压。
  • 切换至锁相模式——频率拉到 ± 0.5% 以内后,鉴相器接管,进入精细相位锁定。

我做过一个 56Gbps PAM4 的 SerDes,频率捕获阶段啃了很久。数据跳变密度在 PAM4 下更稀,传统 FLL 容易误判。后来改成基于统计的过零计数法,每 1μs 统计一次边沿数量,才稳定捕获。

4.6 CDR 的性能指标

衡量 CDR 好坏的常用指标,我列个表:

指标 定义 典型值(10Gbps)
锁定时间 从复位到数据正确采样的时间 < 5 μs
抖动传递函数带宽 CDR 对输入抖动的跟踪能力,-3dB 频率 ~ 10 MHz
抖动容限 CDR 能容忍的输入抖动最大幅度 0.1 UI ~ 0.3 UI
鉴相器增益 误差电压/相位差,决定环路噪声 取决于具体结构

有个很容易忽视的点:抖动容限不光看幅度,还看频率。低频抖动(如 100 kHz)容限通常很高,接近 1 UI。高频抖动(如 100 MHz)容限会快速下降。测的时候记得扫频。

实用经验: 我在项目中验证 CDR 性能时,习惯先用 PRBS7 短序列(边沿多)做快速功能验证,再用 PRBS31 长序列(边沿稀)做极限抖动容限测试。很多问题只在长序列下才暴露。

4.7 常见 CDR 架构变种

除了上面讲的标准 PLL 型,还有几种变体值得了解:

  • 全数字 CDR——鉴相器输出数字信号,环路滤波器用数字滤波器,VCO 换成数控振荡器(DCO)。优点是工艺迁移方便,缺点是高分辨率 DCO 功耗较大。
  • 相位插值器(PI)型 CDR——不调 VCO 频率,而是用多相位时钟+插值器微调采样相位。适合多通道 SerDes,可以共享 PLL。但我遇到的问题是 PI 的线性度很难做,相位步进太大时会引入固定模式抖动。
  • 前馈型 CDR——直接从数据边沿预测最佳采样点,没有反馈环。速度快但抗噪声差,只在极低抖动场景可用。

好了,CDR 的原理就讲这些。核心就三句话:从数据中抽时钟、用反馈环路锁定相位、带宽和鉴相器类型决定性能。做设计的同学最好把 Bang-Bang 结构先吃透,再往其他变体扩展——毕竟它基础、高频、好上手。