PLL 和 DLL 有什么区别?
更新时间:2026-09-21。问题驱动短答页。PLL 基础见 数字 PLL、小数 N 分频与展频,DLL 见 DLL 延迟锁定,片上时钟见 时钟单元 CGU。
一句话回答
PLL(锁相环)内部有一个压控振荡器 VCO,通过“鉴相器→环路滤波→VCO→反馈分频”闭环,生成一个频率可以倍频/分频、相位锁定到参考时钟的全新时钟,擅长频率合成(用几十 MHz 晶振得到 GHz 核心时钟)和时钟整形,但 VCO 会产生/累积相位抖动、需要锁定时间;DLL(延迟锁定环)没有振荡器,而是调节一条压控延迟线,让输出成为输入时钟精确延迟后的副本,它只调相位、不创造新频率,因为不在振荡环里所以抖动不累积、通常锁定更快。芯片里主频综合、展频用 PLL,DDR/高速接口里把时钟或 DQS 精确移相对齐常用 DLL/PI。
对照
| 维度 | PLL | DLL |
|---|---|---|
| 核心 | 压控振荡器 VCO + 反馈 | 压控延迟线 VCDL |
| 能否变频率 | 能(倍频/分频/分数 N) | 不能,只移相位 |
| 输出 | 新生成时钟 | 输入的延迟副本 |
| 抖动 | VCO 会引入/累积抖动 | 不累积抖动(无振荡环) |
| 锁定时间 | 较长 | 通常较短 |
| 典型用途 | 主频合成、展频、去抖 | DDR/接口相位对齐、时钟去斜 |
工作直觉
- PLL:比较参考和反馈沿的相位差,调 VCO 频率直到二者对齐;改反馈分频比 N 就得到 f_out = N·f_ref。环路带宽决定它跟随/滤除抖动的方式。
- DLL:比较输入和延迟后输出的沿,调延迟线抽头使延迟恰好等于一个周期(或所需相位),输出边沿与输入严格对齐到目标相位。
数字芯片里的用途
- 启动/时钟控制器:外部低频晶振经 PLL 倍频出 CPU/总线/DDR 等多个频率,见 片上时钟单元。
- 展频时钟(SSC):用小数 N PLL 轻微调频降低 EMI 峰值,见 展频 PLL。
- DDR PHY:用 DLL/相位插值把 DQS/时钟移到数据眼中央,与 DDR 训练配合。
- 高速 SerDes 用 PLL 产生低抖动线速率参考时钟,见 SerDes/CDR。
常见坑
- 复位后没等 PLL
locked就使用时钟,逻辑在未稳定频率上跑飞。 - 用 DLL 去做频率合成——它不能产生不同频率。
- 忽略 PLL 抖动(jitter,见 jitter vs skew)对高速时序预算的影响。
- 切换参考/频率时不重配或不等待重新锁定。
总结
PLL 靠 VCO 在反馈闭环里合成可倍频分频、相位锁定的新时钟,适合主频生成、展频和去抖,但会引入抖动且需锁定时间;DLL 靠压控延迟线输出输入时钟的相位对齐副本,不产生新频率、不累积抖动、锁定快,适合 DDR/高速接口的精确移相与去斜;前者回答“造一个什么频率”,后者回答“把这个沿挪到哪个相位”。