PLL 基本原理:锁相环的组成与锁定过程
锁相环(PLL)这东西,做时钟恢复的人绕不开。我第一次接触 PLL 是在一个 10Gbps 的 SerDes 项目里,当时看到那堆反馈、分频、相位比较的框图,说实话一头雾水。但等真正调通一个环路,看到 VCO 被“锁住”的那一刻……嗯,那种感觉就像第一次稳稳骑上自行车。
这一章我们就拆开 PLL 看看。它为什么能锁?锁的时候发生了什么?还有那个大家总挂在嘴边但未必真懂的相位噪声,到底是个什么鬼。
三大核心模块:鉴相器、环路滤波器、VCO
一个经典的电荷泵 PLL,核心就是三个模块,外加一个反馈分频器。我习惯把它们比作一个“追踪—修正—执行”的闭环系统:
- 鉴相器(PD/PFD):比较参考时钟和反馈时钟的相位差,输出一个与差值成比例(或极性)的信号。
- 环路滤波器(LPF):把鉴相器输出的高频分量和噪声滤掉,留下一个平稳的控制电压。
- 压控振荡器(VCO):根据控制电压改变输出频率,完成频率的“执行”。
这三个模块缺一不可。我见过一个团队在原型验证时以为环路滤波器只是“一个电容加个电阻”,结果噪声大得 VCO 像在发抖——那是血的教训。
| 模块 | 核心功能 | 输出信号 |
|---|---|---|
| 鉴相器(PFD) | 检测参考与反馈的相位/频率差 | 上下脉冲(UP/DN) |
| 环路滤波器(LPF) | 平滑脉冲,抑制高频噪声 | 模拟控制电压 Vctrl |
| 压控振荡器(VCO) | 将电压转换成频率 | 占空比 50% 的时钟信号 |
| 反馈分频器(÷N) | 将 VCO 输出分频后送回 PD | 低频反馈时钟 |
说回我自己:刚做 SerDes 时,总以为鉴相器只是一个“减法器”,后来才发现三态 PFD 的死区和盲区才是真正的陷阱。你想想看,如果 UP 和 DN 脉冲宽度太窄,电荷泵根本来不及充放电,锁定就会失败。所以项目里我习惯加一个最小脉冲宽度保障逻辑。
锁定过程:从自由震荡到同步
当一个 PLL 上电时,VCO 处于自由震荡频率——它可能离目标频率很远。然后环路开始“拉”:
- 频率捕获:PFD 发现参考频率和反馈频率差距大,输出较宽的 UP/DN 脉冲,快速改变 VCO 控制电压,把频率往目标拉。
- 相位锁定:频率接近后,PFD 检测到相位差,输出窄脉冲,控制电压进入微调状态。
- 锁定状态:相位差稳定在一个很小的范围内(通常几度到几十度),环路进入稳态。这时 VCO 输出的平均频率等于参考频率乘以分频比。
我曾经在一个 56Gbps PAM4 接收机项目中,发现锁定时间比 spec 长了 3 倍。排查了很久,最后发现是环路滤波器的零点位置设得太低,导致频率捕获时过阻尼。改小那个电阻,锁定时间从 50μs 降到了 12μs。你看,细节决定成败。
LOCK 标志(相位差持续低于门限)和 VCO 控制电压的纹波幅度。纹波小于 VCO 增益 Kv 的 1% 时基本可以认为锁住了。
相位噪声——你测不测它,它都在那里
相位噪声,简单说就是 VCO 输出在频域上的“抖”。时域上表现为时钟边沿的不确定性——说白了就是 jitter 在频域的投影。
为什么关心它?因为 PLL 输出时钟的相位噪声直接决定了接收机的误码率。我做过一个 25Gbps 的 NRZ 接收机,输入参考时钟抖动只有 100fs RMS,但 PLL 自带的相位噪声却贡献了 400fs。最后换了一个低噪声 VCO,整个链路才跑通。
相位噪声通常用 dBc/Hz 表示,指在距离载波一定偏移频率处,1Hz 带宽内的噪声功率与载波功率之比。一个典型的 VCO 相噪曲线会在带内平坦(受 PLL 带宽内环路影响),带外则以 -20dB/dec 或 -40dB/dec 滚降。
我在一个多速率项目中吃过亏,以为 1MHz 带宽能通用所有速率,结果 10Gbps 下锁住了,但到 25Gbps 就出现高误码——因为带外相噪太大,让 CDR 的 bang-bang 鉴相器频繁反向。后来改成带宽随速率自适应才解决。
一张图看懂 PLL 结构
下面这张图是我习惯在脑子里画的 PLL 反馈模型。注意反馈分频器虽然不在“三大核心”里,但它是闭环的必要元件。
实战中我常碰到的几个坑
光讲原理容易飘,我把自己踩过的坑列出来,希望你能绕开:
- 环路滤波器元件寄生:电容的 ESL 和 ESR 会影响极点位置,尤其在高频 PLL(> 5GHz)里。我曾经用一种 X7R 电容做滤波器,结果自谐振频率正好落在环路带宽内,VCO 控制电压上多了一个尖峰。后来换成了 NP0/C0G 才解决。
- 电荷泵不匹配:UP 和 DN 电流不一致,会导致静态相位偏移。测量时你会发现输出时钟永远超前或滞后一个固定值——这在 CDR 环路里会让锁定点偏移,严重时导致误码。需要加校准。
- VCO 电源噪声耦合:VCO 对电源纹波极其敏感。我不止一次看到数字模块的开关噪声通过电源网络串入 VCO,把相位噪声抬高了好几个 dB。解决办法:在 VCO 电源引脚加 LC 滤波器,或者用 LDO 单独供电。
相位噪声概念我们再说一句——它和时间域上的 RMS jitter 可以互相转换,但转换公式附带了误差带(取决于相噪谱的形状)。项目中我习惯两个都看:频域看相噪曲线确认拐点,时域用眼图看总抖动。只有两个同时达标,我才敢说 PLL 没问题。
好了,这一章我们把 PLL 的骨架搭完了。下个章节会拿着这份骨架,去分析它如何被用到真正的 Clock Recovery 里——特别是在 CDR 环路里,PLL 的每个模块都在扮演什么角色。