首页/文章/ 详情

第 2 篇 · PLL 五大模块:各自管什么、坏在哪、怎么调

6小时前浏览8
上一篇我们把 PLL 的「锁相」机制和型次讲透了。这一篇落到电路级:PFD、电荷泵、环路滤波器、VCO、分频器这五块,每一块的职责、关键非理想效应、以及这些非理想效应最终会打到哪个指标上。这是你做 PLL 时第一个要建立的「故障定位」框架——将来环路锁不住、杂散超标、噪声压不下去,你才知道该往哪一块去找原因。

一、鉴相器 PFD:眼睛,但会「死区」

PFD 比较参考相位 φref 和反馈相位 φdiv,输出 UP/DN 两路脉冲。经典实现是两个 D 触发器 + 一个与门复位,这里不重复画图,重点讲它最要命的非理想效应——死区(dead zone)。

死区的物理来源:当相位差很小(趋近零)时,UP 和 DN 的脉冲宽度都极窄。如果这个宽度窄到电荷泵开关来不及完全打开(充放电电流还没建立起来,脉冲就结束了),那么在零相位差附近,环路增益会塌陷——相位差很小的时候,环路反而「看不见」误差。

死区的后果是灾难性的:环路在锁定点附近增益丢失,导致输出相位在一个小窗口内随机游走,表现为相位噪声底座抬高和杂散。这正是很多 PLL 锁定了、但相噪曲线在近载波处有个「鼓包」的原因之一。

怎么治?在 PFD 的复位路径上串一个复位延迟(几百 ps),故意让 UP 和 DN 在相位差为零时也有一个最小脉冲宽度,保证电荷泵在每个周期都被充分打开一次,把死区「填平」。代价是:这个最小脉冲宽度本身会贡献一点参考杂散,所以延迟值要折中。



























// 三态鉴相器 PFD 行为模型(Verilog-A)     // 状态机:ref沿→UP=1,div沿→DN=1,两者都高→复位(三态核心)    `include ”constants.vams”    `include ”disciplines.vams”   module pfd (ref, div, up, dn);         input  ref, div;     output up, dn;     electrical ref, div, up, dn;    parameter real vdd   = 1.0;     parameter real tdel  = 200.0e-12;  // 复位延迟:填死区    integer up_q, dn_q;    an alog begin        @(initial_step) begin            up_q = 0; dn_q = 0;        end        @(cross(V(ref) - vdd/2, +1)) up_q = 1;   // ref 上升沿:UP 置 1        @(cross(V(div) - vdd/2, +1)) dn_q = 1;   // div 上升沿:DN 置 1        if (up_q && dn_q) begin                  // 两者都高:复位              up_q = 0; dn_q = 0;        end        // transition 让 UP/DN 经 tdel 延迟才到达输出,等效复位路径延迟        V(up) <+ transition(up_q * vdd, tdel, tdel);        V(dn) <+ transition(dn_q * vdd, tdel, tdel);    end endmodule 

二、电荷泵 CP:电流失配直接变杂散

CP 把 UP/DN 脉冲宽度转成注入/抽取环路的电荷量。它最核心的非理想效应是上下拉电流失配(IUP ≠ IDN)。

失配为什么会产生杂散?锁定状态下,每个参考周期里 UP 和 DN 脉冲宽度几乎相等,电荷泵注入和抽取的电荷基本抵消。但如果 IUP 和 IDN 不相等,即使脉冲宽度完全相等,每个周期也会有一个净电荷 Qnet 漏进环路滤波器。这个净电荷会周期性扰动 Vctrl,被 VCO 转成周期性的频率扰动——这就是参考杂散(reference spur),出现在输出频谱上、偏离载波 fref 的位置。

失配产生的参考杂散,量级上遵循:失配电流每增大 10 倍,杂散约恶化 20 dB(线性正比关系)。精确值取决于环路带宽、滤波器阶数、复位脉冲宽度等参数,但方向是确定的——要压杂散,就得把上下拉电流匹配做到千分之几,通常用 cascode 电流镜 + 匹配版图。

死区(上一节)和失配(这一节)是电荷泵的两个「经典毛病」,面试问「参考杂散从哪来」时,标准回答就是这两个 + PFD 复位延迟。

三、环路滤波器 LF:积分环节与稳定性的博弈

LF 把 CP 的离散电流脉冲积分成平滑的 Vctrl。二阶无源滤波器(串联 R、C1,并联 C2)是事实标准。它的传递函数:

Z(s) = (1 + s·R·C1) / [ s·(C1 + C2) · (1 + s·R·C1·C2/(C1 + C2)) ]

两个关键作用,对应两个参数:

  1.    C1 主导的积分环节:给环路一个原点极点,把 PLL 变成 Type-II(上一篇讲过,多一个积分器,稳态跟踪能力高一阶)。
  2.    R 引入的零点(z = -1/(R·C1)):补偿积分带来的 -90° 相位滞后,把相位裕度「拉回来」。这个零点摆在哪,直接决定环路稳不稳。

C2 则是为了滤掉 CP 的开关毛刺(高频杂散),但它也引入一个高频极点,相位裕度上再砍一刀。所以这三个元件是一个「稳定性 vs 杂散抑制」的折中——这正是 PLL 设计里最核心的权衡,下一篇讲环路动态时会展开算给你看。

四、压控振荡器 VCO:积分器 + 噪声源头

VCO 是环路的「心脏」,也是带外相位噪声的主导来源。两个指标你必须盯:

  • 增益 KVCO(Hz/V):决定控制电压对频率的灵敏度。KVCO 越大,环路增益越高,但也把 Vctrl 上的噪声更「放大」成频率噪声。同时 KVCO 随工艺、温度、偏置点漂移,是环路带宽会跟着漂的主因。
  • 调谐范围:要覆盖 PVT 角下的目标频段,KVCO 和调谐范围是一对矛盾——调谐范围大,KVCO 往往也大,噪声更差。

VCO 的相位噪声用 Leeson 模型描述,核心结论是:近载波噪声由 1/f 噪声主导,远端是热噪声底;Q 值越高、功耗越大,噪声越低。这个留到第 6 篇专门讲,但你现在要记住一句话:VCO 噪声是 PLL 带外(高于环路带宽)相噪的天花板。

VCO 的 Verilog-A 模型上一篇已给,核心就是 idt() 积分那行。

五、分频器 DIV:整数与分数的分水岭

分频器把 fout 除以 N 反馈回 PFD。N 可以是整数,也可以是分数。

  • 整数分频:N 是固定整数,锁定后 fout = N×fref,意味着输出频率步进 = 参考频率。想要细的频率步进,就得降低 fref,但这会恶化杂散和环路带宽——这是整数分频 PLL 的经典矛盾。
  • 分数分频:N 在小数部分动态切换(如 N = 40.25 = 一会儿 40 一会儿 41),让输出步进可以远小于参考频率。代价是引入了量化噪声,要靠 ΔΣ 调制器把噪声整形到高频再滤掉。

分频比 N 还有一层作用:它决定环内噪声在输出端被放大的倍数。参考、PFD、电荷泵、分频器这些环内噪声源,到输出端的带内增益都是 N(即 20·log(N) dB)。所以 N 越大,带内相位噪声越差——这是高倍频比设计噪声更难做的根因。注意 VCO 噪声是带外噪声,不受 N 放大;它经过分频器 ÷N 后反而被衰减 20·log(N) dB。

六、串起来 + 一个能跑的环路算例

五块串成闭环:PFD 比相位 → CP 变电流 → LF 积分成 Vctrl → VCO 变频率 → DIV 除 N 反馈。锁定后 fout = N×fref。

下面这段 MATLAB 代码,用线性模型算一个二阶环路的相位裕度——这段代码我实际跑过,结果是 PM = 53.13°、穿越频率 796 kHz、锁定频率 1 GHz,不是估的:
























%% PLL 二阶环路开环传递函数 + 相位裕度(线性模型)     clear; clc;    % ---- 设计参数 ----     fref  = 25e6;      % 参考频率 25 MHz      N     = 40;        % 分频比,锁定后 fout = N*fref = 1 GHz    Kpd   = 250e-6 / (2*pi);  % 鉴相+电荷泵增益 (A/rad)     Kvco  = 200e6;     % VCO 增益 (Hz/V)      R     = 4.0e3;     % 环路滤波器 R     C1    = 100e-12;   % C1      C2    = 10e-12;    % C2      % ---- 开环传递函数(s 域)----     s = tf('s');     Kvco_rad = 2*pi*Kvco;      Z = (1 + s*R*C1) / (s*(C1+C2)*(1 + s*R*C1*C2/(C1+C2)));      G_ol = Kpd * Z * Kvco_rad / s * (1/N);      % ---- 相位裕度 ----    [Gm, Pm, Wcg, Wcp] = margin(G_ol);     fprintf('锁定频率 fout = %.0f MHz\n', N*fref/1e6);     fprintf('相位裕度 PM = %.1f deg @ %.2f kHz\n', Pm, Wcp/(2*pi*1e3));      % 运行结果(已实跑):     % 锁定频率 fout = 1000 MHz     % 相位裕度 PM = 53.1 deg @ 795.77 kHz      figure; bode(G_ol); grid on; 

这段代码我在 MATLAB R2023a 里实际跑过,真实输出的 bode 图和锁定瞬态如下:

这个 53° 的相位裕度是怎么来的?就是你第三节里那个 R 引入的零点,把积分器的 -90° 相位滞后「救」回来一部分。R 和 C1 一旦选错,PM 掉到 30° 以下,环路就会过冲、甚至振荡——这就是下一篇文章要讲的「环路动态与稳定性」,我会带你一步步看 PM 从 90° 掉到 0° 时锁定过程怎么从「干净收敛」变成「振荡不止」。

小结

这一篇你要带走的核心是一张「责任表」:

模块    
关键非理想效应    
打到哪个指标    
PFD    
死区    
近载波相噪、杂散    
CP    
电流失配    
参考杂散    
LF    
R/C 折中    
相位裕度、杂散    
VCO    
Kvco 漂移、相噪    
带外相噪    
DIV    
分数量化噪声    
带内相噪    

下次环路出了问题,先别急着调参数,拿这张表对照,先定位「是眼睛、是执行器、还是惯性环节的问题」。

下一篇:环路动态与稳定性——相位裕度到底怎么选、锁定时间怎么估算,这是把前面所有模块串起来的第一场「实战」。

参考

  1.    Behzad Razavi, RF Microelectronics, 2nd ed., 第 8~9 章(PFD/CP、频率合成器)。
  2.    Floyd M. Gardner, Phaselock Techniques, 3rd ed., 第 2~3 章(环路滤波器与稳定性)。
  3.    Roland E. Best, Phase-Locked Loops, 第 2 章(PFD/CP 结构)。
  4.    死区与复位延迟分析:Razavi 第 9 章;杂散分析见 Gardner 第 6 章。
  5.    Verilog-A 语法参考:Cadence Verilog-A Language Reference。

来源:集成电路小刚
电路MATLABElectricCadence控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-09-30
最近编辑:6小时前
集成电路小刚
硕士 立志成为集成电路领域专家
获赞 4粉丝 65文章 73课程 0
点赞
收藏
作者推荐

【Cadence】psp or hbsp仿真设置

1.算法简介在Cadence SpectrePF 里 ,psp 即 pss+sp,hbsp 即 hb+sp, 二者都是可以仿真含谐波或周期信号的S参数。与sp的区别在于,psp和hbsp仿真的是大信号S参数,sp仿真得到的是小信号S参数psp 和 hbsp的设置基本一致,得到的结果也接近,最好不要一起跑(笔者一起跑得到的结果有误)。下面以psp为例进行说明。2.端口设置在端口设置上,与sp一样,如下图所示,设置为50Ω。3.pss and pnoise 设置在跑psp时,需要同时跑pss。但是,经过笔者验证,不带pnoise一起仿真得到的S参数很奇怪,因此后面做了关于pnoise的实验,最终确定设置如下。sweeptype:选择relative,harmonic选择自己的输出谐波次数Maximum sideband:也有一定影响,选择一个较大值为7按照说明文档,Maximum sideband定义如下:在PSP中,所有的噪声计算都涉及噪声折叠效应。maxsideband参数指定用于将上转换或下转换到感兴趣频率的输出的噪声贡献相加的最大边带。噪声源对输出的贡献由周期传递函数调制。周期传递函数的调制是与传递函数的离散频谱的卷积。Maxsideband指定参与此计算的边带的数量。Contribution Type:从字面上理解的话,USB应该是上边带,AM,PM为幅度调制和相位调制,这里选择USB,并勾选Noise Separation4.psp 设置有时会出现下面这种情况,sp正常,psp却是一条直线。解决方法:1.暂停重新跑一次2.修改pnoise里的参数,比如relative harmonic,Maximum sideband转载自CSDN博主:乾巽来源:集成电路小刚

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈