1. PLL概述:什么是锁相环?
锁相环,英文叫 Phase-Locked Loop,简称 PLL。
说白了,它是一个能产生稳定高频时钟的电路模块。你给它一个参考时钟,比如 50MHz 的晶振输入,它能给你输出一个 1GHz 甚至更高的时钟信号。而且这个输出时钟的频率和相位,会一直“锁定”在输入参考时钟上。
我刚开始接触 PLL 时,觉得这东西挺神奇的。一个电路怎么就能把频率倍上去,还能保持稳定?后来做项目多了,慢慢就理解了它的工作原理。
PLL 在芯片中的作用
在数字芯片里,时钟就像人的心跳。没有稳定的时钟,芯片就没法正常工作。但问题是,外部晶振的频率通常不高,几十 MHz 到几百 MHz 而已。而芯片内部的核心逻辑、高速接口,往往需要 GHz 级别的时钟。
这时候 PLL 就派上用场了。它的主要作用有这几个:
- 频率合成:把低频参考时钟倍频到高频。比如从 100MHz 生成 2.5GHz
- 时钟去抖:滤除输入时钟上的抖动,输出更干净的时钟
- 相位对齐:让多个时钟域之间的相位关系可控
- 时钟分频:通过内部的分频器,还能产生多个不同频率的时钟输出
重要:PLL 输出的时钟质量,直接决定了芯片能不能正常工作。我见过一个项目,因为 PLL 的抖动超标,导致高速 SerDes 接口误码率居高不下。后来换了 PLL 的环路带宽,问题才解决。
PLL 的基本架构
一个典型的 PLL 由五个核心模块组成。我画了一张图,方便你理解它们之间的关系:
这张图展示了 PLL 的闭环结构。输入参考时钟进入后,经过 PFD、CP、LF、VCO,最后输出。同时输出信号通过分频器反馈回 PFD,形成一个负反馈环路。
下面我逐个模块给你讲清楚。
1. 鉴频鉴相器(PFD)
PFD 的作用是检测输入参考时钟和反馈时钟之间的频率差和相位差。它输出两个信号:UP 和 DOWN。
- 如果反馈时钟慢了,PFD 输出 UP 脉冲
- 如果反馈时钟快了,PFD 输出 DOWN 脉冲
- 如果两者完全同步,UP 和 DOWN 都保持低电平
小技巧:PFD 的死区问题要注意。当相位差很小时,PFD 可能检测不到。我习惯在 PFD 后面加一个最小脉冲宽度,避免死区导致的相位噪声恶化。
2. 电荷泵(CP)
电荷泵把 PFD 输出的 UP/DOWN 数字信号,转换成模拟电流信号。UP 脉冲让电荷泵向环路滤波器注入电流,DOWN 脉冲则从环路滤波器抽取电流。
电荷泵的设计关键点在于:
- 电流源的匹配精度
- 开关速度
- 漏电流控制
我曾经在一个 28nm 项目中,因为电荷泵的漏电流太大,导致 PLL 锁定后频率有几十 kHz 的偏移。后来加了 cascode 结构才解决。
3. 环路滤波器(LF)
环路滤波器通常是一个低通滤波器,由电阻和电容组成。它的作用是把电荷泵输出的脉冲电流,平滑成一个稳定的控制电压。
环路滤波器的参数直接决定了 PLL 的性能:
- 环路带宽:决定了 PLL 的锁定速度和抖动性能
- 相位裕度:影响环路的稳定性
- 电容大小:影响芯片面积和噪声
注意:环路滤波器的电容在芯片上占的面积很大。我建议你在设计初期就评估好电容大小,别等到布局布线时才发现放不下。
4. 压控振荡器(VCO)
VCO 是 PLL 的核心。它根据控制电压的大小,产生不同频率的振荡信号。控制电压越高,输出频率越高。
VCO 的主要指标:
| 指标 | 说明 | 典型值 |
|---|---|---|
| 调谐范围 | VCO 能覆盖的频率范围 | ±10% ~ ±30% |
| 增益(Kvco) | 控制电压变化引起的频率变化量 | 100 MHz/V ~ 1 GHz/V |
| 相位噪声 | VCO 自身的噪声特性 | -100 dBc/Hz @ 1MHz offset |
嗯,这里要注意。VCO 的相位噪声是 PLL 输出抖动的主要来源之一。我做过一个 10GHz 的 PLL,VCO 的相位噪声直接决定了整个芯片的误码率性能。
5. 分频器(Divider)
分频器把 VCO 的高频输出,分频到与参考时钟相近的频率,然后反馈给 PFD 进行比较。
分频比 N 决定了 PLL 的输出频率:
Fout = N × Fref
比如参考时钟是 100MHz,分频比 N=20,那么输出频率就是 2GHz。
分频器有几种常见类型:
- 整数分频器:分频比是整数,结构简单
- 小数分频器:可以实现非整数分频比,但会有小数杂散
- 多模分频器:分频比可编程,灵活性高
避坑指南:我曾经在一个项目中,分频器的高速路径没做好时序约束,导致分频结果偶尔出错。PLL 锁定后频率会突然跳变,查了好久才发现是分频器的 D 触发器 setup time 不够。从那以后,我对分频器的时序检查格外仔细。
小结
PLL 的基本架构就是这五个模块组成的负反馈环路。输入参考时钟和反馈时钟在 PFD 中比较,误差信号经过 CP 和 LF 转换成控制电压,控制 VCO 产生目标频率,再通过分频器反馈回来。
这个环路一旦锁定,输出频率就稳定在 N 倍参考频率上。你想想看,一个 50MHz 的晶振,通过 PLL 就能变成 2.5GHz 的高速时钟,是不是很巧妙?
实际项目中,PLL 的设计远不止这些。还有电源噪声抑制、版图布局、温度补偿等等。但这些是后面章节的内容了。