4. 时钟与数据恢复(CDR)原理
时钟与数据恢复,英文缩写 CDR,是 SerDes 接收端最核心的模块之一。说人话就是:发送端只甩过来一串串比特流,没有单独的时钟线。接收端得自己从这坨数据里「抠」出时钟,再用这个时钟去正确采样数据。
我记得刚接触 SerDes 那会儿,总觉着 CDR 是个玄学。后来做了一次芯片回来眼图全闭,才明白这玩意儿有多关键。今天咱们就把它拆开揉碎了讲清楚。
4.1 为什么需要 CDR?
高速串行链路为了节省引脚和降低功耗,通常只传数据线,不传时钟。接收端必须从数据边沿中提取出时钟信息。这里有几个核心挑战:
- 数据没有固定周期——数据是随机的,可能出现连续多个相同的 bit(比如 000000),导致长时间没有跳变沿。
- 频率偏差——发送端和接收端的参考时钟不可能完全一样,ppm 级的偏差会在长时间后累积出相位误差。
- 抖动——通道噪声、串扰、电源噪声都会让数据边沿的位置随机摆动。
说白了,CDR 必须在没有独立时钟的情况下,既恢复出干净的时钟,又用这个时钟在数据眼图的最佳位置采样。我当年调的第一个 CDR 环路,就因为环路带宽设得太宽,把高频噪声全收进来了,搞得频偏锁不住。后来把带宽压到系统波特率的 1/1000 左右才稳定。
4.2 CDR 的核心架构
现代 SerDes 中主流用的是基于 PLL 的反馈型 CDR,结构像一个锁相环,但多了一个鉴频过程。下图是我整理的一个典型 CDR 结构框图,你可以对着看:
图中蓝色箭头是数据通路,灰色箭头是时钟反馈。核心环路是:鉴相器 → 电荷泵/环路滤波器 → VCO → 分频?这里为了简化没画分频器,实际 SerDes 中 VCO 的频率往往是数据率的整数倍,还需要一个分频器。
4.3 鉴相器类型
CDR 用的鉴相器跟普通 PLL 不一样。普通 PLL 可以用鉴频鉴相器(PFD),但 CDR 输入是随机数据,没有参考时钟,所以得用专门设计。常见的有两种:
| 类型 | 原理 | 优缺点 |
|---|---|---|
| Bang-Bang 鉴相器 | 比较数据边沿与时钟边沿的先后顺序,输出早/晚 1 比特信号 | 电路简单、功耗低;但存在极限环抖动,低频抖动抑制差 |
| 线性鉴相器 | 检测相位误差的模拟量,输出与误差成比例的电流或电压 | 噪声性能好,抖动小;但设计复杂、功耗高 |
| Alexander 鉴相器 | 双采样结构(早时钟、中时钟、晚时钟),用于判断相位 | 兼顾线性与 Bang-Bang,应用广泛;对时钟占空比有要求 |
我个人习惯在高速率(>20Gbps)场景下优先用 Bang-Bang 鉴相器。为什么?因为速率一高,模拟电路的线性度很难做,Bang-Bang 这种「只比大小」的电路反而更可靠。不过代价就是抖动会大一些,需要配合高 Q 值的环路滤波器来压低。
4.4 环路带宽与锁定时间
CDR 的环路带宽是个很微妙的东西。你想想看,带宽设太宽:环路能快速跟踪数据边沿的抖动,但也会把高频噪声引进来,输出时钟相位噪声变差。带宽设太窄:抖动抑制好,但锁定时间太长,而且频率偏差大的话可能锁不住。
工程上一般怎么定?我总结几条经验:
- 环路带宽 ≤ 数据率的 1/1000——对于 10Gbps,带宽 10 MHz 左右比较合理。
- 带宽 ≥ 10 倍基准频率偏差——比如系统允许 ±200 ppm 的频率偏差,对应 10Gbps 就是 ±2 MHz 偏差,环路带宽至少要 20 MHz 才能正常捕获。
- 阻尼因子 ξ 取 0.7~1.0——过阻尼响应慢,欠阻尼过冲大。
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)容限会快速下降。测的时候记得扫频。
4.7 常见 CDR 架构变种
除了上面讲的标准 PLL 型,还有几种变体值得了解:
- 全数字 CDR——鉴相器输出数字信号,环路滤波器用数字滤波器,VCO 换成数控振荡器(DCO)。优点是工艺迁移方便,缺点是高分辨率 DCO 功耗较大。
- 相位插值器(PI)型 CDR——不调 VCO 频率,而是用多相位时钟+插值器微调采样相位。适合多通道 SerDes,可以共享 PLL。但我遇到的问题是 PI 的线性度很难做,相位步进太大时会引入固定模式抖动。
- 前馈型 CDR——直接从数据边沿预测最佳采样点,没有反馈环。速度快但抗噪声差,只在极低抖动场景可用。
好了,CDR 的原理就讲这些。核心就三句话:从数据中抽时钟、用反馈环路锁定相位、带宽和鉴相器类型决定性能。做设计的同学最好把 Bang-Bang 结构先吃透,再往其他变体扩展——毕竟它基础、高频、好上手。