CDR 系统架构:PLL 与 DLL 在 CDR 中的对比

好,咱们直接进入正题。很多入门工程师拿到 CDR 设计任务,第一反应就是:用 PLL 还是 DLL?其实这两个家伙都能从数据里恢复时钟,但骨子里的脾气完全不同。我个人习惯先看应用场景再做选择——你想想看,5Gbps 和 25Gbps 的要求能一样吗?

PLL 型 CDR:经典但挑剔

锁相环大家都熟,一个典型的电荷泵 PLL 由鉴频鉴相器(PFD)、电荷泵(CP)、环路滤波器(LF)和压控振荡器(VCO)构成。在 CDR 里,PFD 换成 Hogge 鉴相器或 Alexander 鉴相器,专门检测数据边沿与本地时钟的相位差。

核心优势:

  • 内置 VCO 能直接产生高频时钟,不需要外部时钟源倍频
  • 锁定后输出时钟的抖动经环路滤波,高频噪声被抑制得不错
  • 适用于连续数据流(如 8B/10B 编码后的数据)

但 PLL 有个坑——环路带宽选择。我记得早期做 10Gbps 项目时,总想把环路带宽做宽来加快锁定,结果抖动容忍度(Jitter Tolerance)死活不过标。后来发现带宽太宽会把数据里的高频抖动传到 VCO 控制电压上,输出时钟反而更差。

避坑指南:我曾经在 28nm 工艺下设计一款 25Gbps CDR,PLL 带宽选到 10MHz,锁定时钟到 align 阶段老是丢锁。最后把带宽降到 2MHz,锁定时间虽然慢了 2μs,但抖动容忍度从 0.15UI 提升到 0.45UI。记住,CDR 不是越快越好,而是要在锁定时间和抖动容忍度之间找平衡。

DLL 型 CDR:简单但受限

延迟锁定环的结构更简单——它只有 鉴相器(PD)、环路滤波器和压控延迟线(VCDL),没有 VCO。DLL 不产生时钟,它只对输入的参考时钟或数据边沿做相位调整。什么意思呢?“它把输入时钟延迟若干个 Tap,然后拼出一个与数据边沿对齐的采样时钟。”

对比维度 PLL 型 CDR DLL 型 CDR
时钟源 内部 VCO 产生 依靠外部时钟或数据自身边沿
锁定范围 宽(可跟踪频率漂移) 窄(只移相位,不调频)
抖动累积 环路滤波可抑制高频抖动 无累积,但输入抖动直接传递到输出
面积与功耗 大(VCO + 大量电容) 小(延迟链更省面积)
锁定时间 长(需频率锁定 + 相位锁定) 短(仅相位锁定)

DLL 最大的好处是无相位噪声累积。你想想,VCO 会把自己的相位噪声叠加上去,而 DLL 的延迟链只是把输入信号延迟,不产生新的噪声。但代价就是,它没法补偿频率偏移。一旦发送端和接收端的参考时钟有 200ppm 的偏差,DLL 就抓瞎了——它最多只能移一个周期内的相位,频率差累积起来它根本兜不住。

一个实用场景:如果你用源同步时钟(比如 DDR 内存接口),发送端同时传数据和时钟,双方频率完全一致,只有相位差需要调整——这种情况 DDL 是绝配。我做过一款 16Gbps 的源同步 SerDes,DLL 只用了 5 个门延时,锁定时间小于 1μs,而且功耗才 PLL 方案的三分之一。

什么时候必须用 PLL?

说白了,只要数据不是和时钟一起送过来的(比如以太网、光纤通信),就必须用 PLL。为什么?因为接收端根本没有时钟源,只能从数据里恢复出时钟频率,再对相位进行锁定。PLL 的 VCO 可以“猜测”出频率,然后通过反馈不断修正这个猜测。

另外,抖动容忍度这个东西,PLL 天生占优。DLL 对输入抖动的传递函数几乎是全通,而 PLL 是一个低通特性。高频抖动被环路滤掉,不会影响采样时钟。当然,低频抖动还是得过——那就是 CDR 的带宽设计问题了。

混合架构:两全其美的思路

现在很多高速 CDR 采用 PLL + DLL 混合架构。先用 PLL 做频率锁定(粗调),再用 DLL 做精细的相位对齐(细调)。这样既利用了 PLL 的频率跟踪能力,又利用了 DLL 的快速相位调整和低噪声特性。

PLL 与 DLL 在 CDR 架构中的分工对比 PLL 频率粗锁定 鉴频鉴相器 VCO 压控振荡器 粗调完成 DLL 相位细调 鉴相器 (Bang-Bang) 延迟链 VCDL 采样时钟输出 数据输入(带抖动) PLL 特点: • 频率跟踪范围宽(±500ppm) • 锁定时间较长(约 10μs) • 输出时钟有 VCO 相位噪声 DLL 特点: • 无频率跟踪能力 • 锁定极快(<100ns) • 不产生额外相位噪声 混合方案:PLL 粗调 + DLL 细调 = 高性能 CDR

设计选型清单(我常用的判断步骤)

  1. 先看有无参考时钟:有参考时钟且频率固定 → 可以考虑纯 DLL;无参考时钟 → 必须 PLL。
  2. 再看数据速率和协议:PCIe Gen4/5 要求 ±300ppm 频率容差,只能用 PLL;而 JESD204B 的确定性延迟需求,往往需要 DLL 辅助。
  3. 然后评估面积预算:芯片面积吃紧时,DLL 比 PLL 省 40% 以上。我记得在 7nm 方案中,一个 28Gbps 的 DLL CDR 核心面积只有 0.012mm²。
  4. 最后算抖动预算:如果系统总抖动预算 < 0.2UI,我会优先推荐 PLL,因为它的高频噪声抑制更好。DLL 虽然无噪声累积,但输入抖动会直接跑到采样时钟上。

一个小技巧:当你不确定选哪个时,可以先用行为级仿真跑一下极端情况。我习惯在 Verilog-A 里搭一个简单的 PLL 模型和一个 DLL 模型,看看在 1MHz 正弦抖动注入下,哪种架构的 BER 更低。往往仿真十分钟就能帮你省下几个月的改版时间。

嗯,到这里你应该对两种架构有个清晰的判断了。PLL 和 DLL 不是谁替代谁的关系,而是各有所长。做 CDR 设计这么多年,我最大的体会就是:不要为了“省面积”而强行用 DLL,也不要为了“性能好”而无脑上 PLL。结合你的协议需求、面积预算和抖动指标,再做决定。