3. CDR 系统架构概述:PLL-based vs. DLL-based

做 CDR 设计,第一步就是选架构。选错了,后面调带宽、调锁定时间都白搭。我个人习惯先把两种主流方案搞清楚:PLL-based 和 DLL-based。它们看起来都能恢复时钟,但内部机理和适用场景差得挺远。

说白了,PLL 是用压控振荡器(VCO)去“追”输入数据的边沿,锁频锁相一把抓;DLL 呢,它没有振荡器,是靠延迟线把参考时钟的相位一点点挪到数据眼图的正中间。你想想看,一个自己产生时钟,一个只搬移相位,这本质差别决定了后面一大串设计取舍。

3.1 PLL-based CDR:经典方案,灵活但小心噪声

PLL-based CDR 是业界用得最多的架构。我在好几个 10Gbps 以上的项目中都用过它。基本构成大家都知道:鉴频鉴相器(PFD)、电荷泵(CP)、环路滤波器(LF)和 VCO。但 CDR 里有个特殊点——PFD 要处理数据而不是参考时钟,所以常换成 Hogge 鉴相器或 Alexander 鉴相器。

关键点:PLL-based CDR 的锁定过程是频率牵引 + 相位锁定两步走。频率差大时先靠频率检测把 VCO 拉到数据速率附近,再精细锁相。这个“两步走”决定了锁定时间不可能太快,但换来的是极宽的捕获范围。

嗯,这里要注意:VCO 是个噪声放大器。低频的电源噪声、衬底噪声都会调制 VCO 频率,变成输出抖动。我曾经在一个 28nm 项目里,VCO 相位噪声超标 6 dB,折腾了两周才发现是数字模块的开关噪声通过电源网络耦合进来了。后来加了 LDO 和隔离阱才搞定。

PLL-based CDR 典型参数

参数典型范围我的建议
捕获范围几百 ppm ~ 数万 ppm(取决于频率检测器)数据率越高,捕获范围越紧,注意 VCO 频率覆盖
锁定时间几微秒 ~ 几百微秒对突发模式?别用 PLL,太慢
输出抖动0.01 UI ~ 0.1 UI(取决于环路带宽和 VCO 噪声)带宽选在 1/20 ~ 1/10 数据速率,噪声最低

3.2 DLL-based CDR:快速锁定,但频率捕捉是短板

DLL-based CDR 没有 VCO,它用电压控制延迟线(VCDL)来调整相位。参考时钟从外面给进来,延迟线把它分成多相,再选一个离数据边沿最近的相位去采样。优点是锁定超级快——差不多一个参考时钟周期就能搞定。

避坑指南:我曾经在一个光模块项目中用 DLL 做 CDR,结果发现锁定倒是快了,但参考时钟必须和数据速率严格成整数倍关系。如果参考时钟不是数据速率的整数分频,延迟线根本没法生成正确相位。后来换了 PLL 才解决问题。

DLL 另一个痛点是它对输入数据中的长连 0/1 很敏感。连串相同位会导致延迟线失去相位更新指令,环路基 drift。解决办法是加时钟数据恢复前的 8B/10B 编码,或者在 DLL 旁边放个独立的频率校准环路。我之前在 40nm 的一个 SerDes 里就是这么干的——DLL 做主相位锁定,一个小型 PLL 做频率辅助,两者配合工作。

DLL vs. PLL 核心差异

对比项PLL-basedDLL-based
时钟源内部 VCO,自己产生时钟外部参考时钟,延迟线搬移相位
锁定时间几微秒 ~ 毫秒级纳秒 ~ 微秒级(一个参考周期)
频率捕获能力天生具备,频率检测器可扩展范围必须外部提供精确频率的参考时钟
抖动传递低通特性,带内噪声被抑制高通特性,参考时钟抖动直接传递到输出
稳定性二阶/三阶环路,设计复杂,容易自激一阶环路,天生稳定,不需补偿

3.3 架构选择的原则:看应用场景

选 PLL 还是 DLL?我的经验是问三个问题:

  1. 数据速率是固定的吗?如果是,且你有一个整数倍关系的干净参考时钟,DLL 更合适——快、稳、简单。
  2. 需要应对大频率偏差吗?比如芯片工作在不同数据率之间切换,那必须上 PLL,它的频率牵引能力不可替代。
  3. 抖动预算有多宽裕?DLL 的抖动主要由参考时钟和延迟线噪声决定,比 PLL 的 VCO 噪声小一个量级。如果你做的是超低抖动应用(比如 112Gbps PAM4),DLL 往往是更好的起点。

我个人习惯把两种架构放在同一个项目里做个“架构评审表”,把数据率、参考时钟、锁定时间、抖动预算、面积、功耗列出来打分,最后选综合最优的。别只看一两个指标。

3.4 混合架构:PLL+DLL 取长补短

近几年的高速 CDR 越来越多用混合方案。比如用 PLL 做频率锁定、产生多相时钟,再用 DLL 做精细相位对齐。这样做的好处是:PLL 处理频率捕捉和抖动滤除,DLL 负责快速跟踪数据边沿。

注意:混合结构会带来两个环路的耦合问题。我之前在一个 56Gbps 项目中用 PLL+DLL 级联,结果两个环路的带宽重叠,出现互调振荡。后来通过设计让 PLL 带宽显著窄于 DLL 带宽(至少 5 倍差距),才解耦成功。

还有一种方案叫“半数字 CDR”,它把 PLL 或 DLL 的模拟环路用数字滤波器替代。比如用数字鉴相器、数字环路滤波器和 DCO(数字控制振荡器)。这种结构更灵活,可以用软件调整带宽,在深亚微米工艺下面积和功耗也更友好。嗯,这部分后面会展开讲,这里先提一嘴。

3.5 一张图看懂两种架构

下面这张图对比了 PLL-based 和 DLL-based CDR 的核心结构、锁定路径以及关键差异。我建议你把它打印出来贴工位上。

CDR 架构对比:PLL-based vs. DLL-based PLL-based CDR 输入数据 + 参考时钟 PFD + 电荷泵 环路滤波器 (低通) VCO (压控振荡器) 输出恢复时钟 DLL-based CDR 参考时钟 (外部) 鉴相器 (PD) 简单环路滤波器 (一阶) VCDL (电压控制延迟线) 输出多相时钟 关 键 区 别

从上面这张图能清楚看到:PLL 有反馈路径把输出时钟拉回输入端,形成闭环;DLL 没有振荡器,它只是延迟参考时钟,并不产生新频率。很多新手没注意到这个区别,做仿真时只关心相位锁定,结果流片出来发现频率都对不上。

3.6 我的架构选择备忘录

  • 突发模式通信(比如无源光网络):必须用 DLL 或门控振荡器方案,锁定时间要小于 10 ns。PLL 根本来不及。
  • 连续模式高频 SerDes(比如 28Gbps+):PLL 是主流,搭配高 Q 值的 LC-VCO。注意电源纯净度。
  • 多通道 CDR 阵列:共享一个 PLL 做频率基准,每个通道用 DLL 做独立相位调整,能省大量面积。
  • 超低抖动预算(<0.03 UI):DLL 是更好选择,但要确保参考时钟源的低噪声。
  • 宽温度/电压范围:PLL 的 VCO 增益随工艺角变化大,需要校准;DLL 的延迟线也随工艺变化,但一阶环路更容易补偿。