从Wi-Fi到蓝牙,手里这两颗芯片的射频前端都离不开一个核心模块——2.4GHz锁相环频率综合器。我做过几款这个频段的收发机,坦白讲,PLL做得好不好直接决定了收发链路的信噪比和杂散表现。用Cadence Virtuoso从零搭一个完整的2.4GHz锁相环,这件事看起来门槛高,拆开看无外乎PFD、CP、VCO这几个模块的设计与联调。这篇就按我实际流片和测试的经验,把整个搭建过程、模块设计思路、仿真陷阱完整走一遍。
这个内容适合三类人看:正在做课设或毕设的学生,刚接手射频PLL设计的新人工程师,以及所有想搞明白“锁相环各模块到底怎么配合”的硬件开发者。我不讲空泛的理论,所有内容都能直接落到Cadence Virtuoso的操作层面,从新建cellview到跑完一次锁定transient仿真,照着走就能复现。
1. 锁相环频率综合器整体架构与指标规划
1.1 2.4GHz频段对频率综合器的核心要求
蓝牙和Wi-Fi都挤在2.4GHz ISM频段,这个频段的PLL频率综合器一般都采用整数N或小数N架构。我这里讲的是整数N结构,因为它的控制逻辑简单,分频器只做固定整数分频,规避了小数杂散问题,非常适合作为入门到流片的第一款PLL。
2.4GHz频率综合器最核心的指标有三个:相位噪声、参考杂散和锁定时间。相位噪声直接影响蓝牙GFSK解调的误码率,Wi-Fi OFDM的高阶QAM调制对相位噪声要求还要更高。参考杂散决定了带外频谱是否满足发射模板,锁定时间则影响跳频速度——蓝牙经典模式跳频率是1600跳每秒,理论上每跳间隔625微秒,但实际留给锁定的时间窗口只有一两百微秒。
先定整体架构。一个标准的电荷泵锁相环由PFD、CP、环路滤波器、VCO和可编程分频器组成。频率综合器的工作逻辑是:TCXO或晶振产生参考频率,PFD比较参考时钟与分频器反馈时钟的相位差,输出UP或DN脉冲,CP根据脉冲方向往环路滤波器充放电,环路滤波器的控制电压再去调VCO的振荡频率,最终让VCO输出频率稳定在N倍参考频率上。
我这边设计目标是:输出频率2.4GHz到2.4835GHz覆盖蓝牙全信道,参考频率12MHz,分频比N从200到207。环路带宽取200kHz左右,这是经典的选择——既保证足够的锁定速度,又能有效压制VCO带内噪声。
1.2 从系统指标到模块指标的拆解
很多人一上来就画电路,忽略了指标拆解这一步。实际上系统指标落到各模块,才能知道自己该在哪个模块花功夫。
相位噪声预算是最重要的一环。带内相位噪声主要由PFD和CP决定,带外则几乎全部由VCO决定。2.4GHz蓝牙系统通常要求100kHz频偏处相位噪声优于-90dBc/Hz,1MHz处优于-110dBc/Hz。我的经验做法是:环路带宽以内PFD/CP贡献的带内噪声做到-95dBc/Hz以上,VCO在1MHz频偏处做到-115dBc/Hz左右,这样系统整体就能留出足够的余量。
CP电流与环路参数是相互绑定的。电荷泵电流Ip决定环路增益,选定环路带宽ωc后,环路滤波器的电容电阻参数由Ip、Kvco和N共同决定。综合稳定性和锁定速度,我把CP电流取为200微安,VCO调谐增益Kvco设计在30MHz/V到50MHz/V之间。
分频器是很多人容易轻视的模块。2.4GHz下用标准数字分频器直接分频肯定不行,常规做法是先用高速CML结构做2分频或4分频预分频,把频率降下来后再用标准CMOS数字逻辑做后面的分频。我这次用了一个双模预分频器加计数器组合,分频比覆盖200到207,具体实现不展开,但PFD和CP仿真时需要给它留一个理想分频器模型跑系统级验证。
1.3 Cadence Virtuoso环境与PDK准备
Cadence Virtuoso里搭PLL,第一步不是画原理图,而是确认PDK和仿真模型齐全。我用的工艺是0.18微米RF CMOS,这个工艺节点做2.4GHz的VCO很成熟,MOS管的fT足够高,电感Q值也能做到15以上。
新建工程的时候注意library设置,analogLib和RF PDK的lib都要建好。VCO里的电感需要PDK提供专门的RF器件模型,普通电感模型在高频下精度不够。变容管也要用PDK里的varactor模型,因为它包含C-V特性和寄生参数,直接影响到VCO的调谐范围。
仿真器选spectre,Cadence里跑PLL这种带振荡器的电路,spectre的harmonic balance和transient都能用,但锁定过程看transient最直观。
2. PFD鉴频鉴相器设计:死区消除与相位噪声影响
2.1 PFD工作原理与三态输出
PFD的功能是同时比较频率和相位。经典三态PFD由两个D触发器加一个与门构成,参考信号ref和分频反馈信号div分别触发两个DFF,当两个DFF均输出高电平时,与门产生复位信号将两个触发器清零。这样输出UP和DOWN的三种状态:Ref超前时UP输出宽度正比于相位差的脉冲,Div超前时DOWN输出脉冲,相位相等时两个输出都是低电平。
三态PFD的一个关键特性是鉴相增益Kpfd = Ip/2π,在锁定状态下即使相位差很小,PFD也会周期性产生窄脉冲,通过这个窄脉冲控制CP充放电来维持锁定。但这里有个致命问题——PFD的复位延迟和DFF的建立时间决定了它存在一个最小可检测相位差,如果相位差小于这个值,PFD来不及响应,环路就失去了纠偏能力,这就是所谓的死区。
死区会直接导致锁定后的控制电压出现周期性纹波,VCO被周期性扰动后产生参考杂散和相位噪声恶化。消除死区有几种方案,最常用的是在复位路径上刻意加入延迟单元,让复位脉冲拉长,保证即使相位差接近零,UP和DOWN都能输出一个最小宽度的脉冲,到CP端去“短接”一下,避免PFD盲区。
2.2 延迟单元设计与死区消除
我用的是反相器链做延迟单元。在复位与门后面接几个反相器,每个反相器的延迟大约在50到100皮秒,要多少延迟就串几个。注意延迟不能太大,延迟太大意味着每次比较周期内PFD输出的无效脉冲变长,虽然消了死区但给CP带来了额外的开关动作和噪声注入。
延迟时间怎么选有个经验公式:延迟需要大于PFD到CP的关断时间和CP电流源开关时间之和。我实际用spectre跑PFD的transient,测出从复位沿到CP开关完全关断大约在1.2纳秒,所以复位延迟我取了2纳秒左右,留足裕量。
PFD的另一个指标是最高工作频率。PFD在工作频率过高时,复位脉宽本身就可能占满一个周期,导致鉴相能力下降。12MHz参考频率下这个指标压力不大,但如果参考频率打算用更高的比如26MHz,PFD的复位逻辑延迟就需要重新调整。
2.3 PFD电路搭建与仿真验证
在Virtuoso里搭建PFD,从analogLib调出D触发器,用标准数字单元库或者自己画交叉耦合的同步置位触发器。数字D触发器在PFD里的关键路径是复位反馈链,所以复位信号驱动的逻辑门尺寸要适当加大。
搭建完成后先跑一个单独的PFD功能仿真。输入给一个固定频率差的ref和div信号,观察UP和DOWN波形是否正确输出,再看复位信号宽度。比如ref是12MHz,div是11.9MHz,PFD应该输出随相位差周期性展宽的脉冲。
功能验证完,再看PFD输入参考杂散相关的问题。PFD在锁定状态下的输出是周期性的窄脉冲串,这个脉冲串的频率就是参考频率。它在CP输出端会被环路滤波器低通滤掉大部分,但剩余的控制电压纹波会调制VCO,产生参考杂散。想压这个杂散,除了PFD本身,还要靠后面的CP和滤波器设计配合。
3. 电荷泵CP设计:电流匹配与电荷注入效应
3.1 上下电流源匹配问题
电荷泵是整个PLL里除了VCO之外最影响性能的模块。它的基本功能是根据PFD输出的UP/DOWN信号,决定向环路滤波器注入还是抽取电流。理想状态下,UP和DOWN的电流大小完全相等,这样锁定后控制电压纹波最小。
但真实的MOS电流源存在失配,P沟管的电流和N沟管的电流很难完全一致。失配会造成一个直接后果:锁定点偏移。锁相环为了维持电荷平衡,会主动把VCO控制电压调整到某个值,让PFD输出的UP和DOWN脉冲宽度不等来补偿CP电流失配,这个补偿的过程会在环路滤波器上产生额外的直流误差和纹波。
改善匹配的标准做法是:电流源MOS管使用足够大的沟道长度,比如取最小长度10倍以上,这能显著降低沟道长度调制效应。同时上下电流源要共用同一组偏置电路,用一个高精度电流镜把参考电流复制到上管和下管。我在设计时把上管的偏置电压通过一个放大器做负反馈钳位,确保该偏置点不受输出电压影响。
CP电流源管的尺寸选择有个技巧:用大栅过驱动电压配合大尺寸,让管子工作在饱和区中部,这样输出摆幅变化对电流的扰动相对较小。沟道长度L取了0.5微米,W根据电流密度和过驱动电压算出来,最终让Vov在200毫伏左右。
3.2 开关位置与电荷共享效应
CP的开关连接位置决定了电荷注入和时钟馈通的表现,这一点新手很容易踩坑。常见的结构是电流源串接在输出端做开关,开关在电流源和输出节点之间,这种结构结构简单,但每次开关动作都会在输出节点注入电荷,导致控制电压毛刺。
更稳妥的做法是使用源极开关结构,让开关管接在电流源的源极方向,工作时开关管的源漏电压基本恒定,注入到输出端的电荷量大幅减小。不过源极开关需要额外的控制电压,电路复杂度高一些。
还有一个经典问题是电荷共享。当UP和DOWN都关断时,输出节点处于高阻态,但电流源管的漏极寄生电容上还存着电荷。下一次开关导通瞬间,这些电荷会重新分配到输出节点,产生一个短暂的控制电压扰动。消除电荷共享的常规方案是在上下电流源管漏极各接一个开关,让它们在不工作时先与其他节点短接来放电,但这会引入更多寄生。
我在实际设计里采用了一种折中方案:输出级加上一个单位增益缓冲放大器,把输出节点和电流源内部节点隔离开。放大器消耗一些功耗,但换来的是控制电压稳定性的显著提升。
3.3 CP电路搭建与瞬态仿真
搭建CP时,从analogLib调出PMOS和NMOS器件,设置好宽长比,然后添加一个运放作为输出级的反馈钳位。我习惯先把CP单独做一个testbench:给UP和DOWN加固定脉宽的脉冲,观察输出节点电流的方向和大小。
仿真设置上,用spectre跑transient,仿真时间看输出稳定情况。CP的仿真重点关注几个点:上下电流绝对值是否差异,输出节点电压在开关瞬间的毛刺幅度(这个直接影响VCO控制电压的纹波),以及电荷泵在输出摆幅范围内的线性度。
CP的充放电电流不平衡会导致环路的参考杂散升高。对于2.4GHz的蓝牙应用,参考杂散要低于-50dBc。如果CP电流匹配精度做到1%以内,配合合理的环路滤波器,这个指标通常能实现。
3.4 环路滤波器参数计算与实现
环路滤波器的参数直接决定环路的稳定性。我用的是经典二阶无源滤波器,结构是串联R再并联C2,C1并联在控制电压节点,形成一个二阶极点加一个零点。三阶版再多加一个RC极点做杂散抑制,但这里按下不表。
计算办法是按上述系统参数代入环路方程。给定了环路带宽200kHz,相位裕度取55度,电荷泵电流200微安,Kvco取40MHz/V,分频比204,则环路滤波器的C1、R和C2由以下三式联解,可以得到我们需要的线性R和C值。实际PDK电容阻值会跟理想值有偏差,所以我直接给出算完的结果供参考。
在PDK里实现时,电容用MIM电容,阻值用高阻多晶电阻。实际值跟理想值有偏差时,只需保证R*C的乘积基本符合即可,因为环路稳定性主要由这个乘积决定。布板时电容要尽量靠近CP输出引脚,地回路要干净,避免数字开关噪声串入控制电压。
4. VCO压控振荡器设计:LC振荡器架构与相位噪声优化
4.1 2.4GHz LC-VCO架构选择
VCO是整个PLL里最有技术含量也最难做的模块。2.4GHz频率下,环形振荡器基本不考虑,因为相位噪声太差;LC振荡器是标准选择。LC振荡器的核心是一个LC谐振腔和一个负阻补偿电路,谐振腔由电感和变容管构成,负阻用交叉耦合MOS对实现。
交叉耦合结构有两种选择:NMOS对和互补CMOS对。NMOS交叉耦合噪声性能好,但需要额外的电流源,电压余量消耗大;互补CMOS对(也就是两个MOS做成反相器形式交叉耦合)的优点是不需要额外电流源就能自己建立直流工作点,同样的电流下可以提供更大的跨导,相位噪声更有优势。我在2.4GHz VCO上选了互补结构,虽然功耗略高,但调节起来简单。
另外一个重要的架构取舍是电流偏置方式。VCO的偏置电流可以用尾电流源强制设定,但尾电流管本身会引入噪声,并且限制了电压摆幅。我在设计中让VCO工作在电流限制区而不是电压限制区,通过优化交叉耦合对管尺寸来保证起振条件,同时把电压摆幅控制在安全范围内,避免进入电压限制区后相位噪声突然恶化。
4.2 电感与变容管设计
2.4GHz的LC谐振腔需要的电感值不大,大约在3纳亨到5纳亨之间。电感设计的关键指标是Q值。理想情况下VCO的相位噪声与电感Q值成反比,Q值越高,相同功耗下的相位噪声越好。PDK里的螺旋电感Q值能到12到15,已经够用。如果流片预算紧张,也可以利用封装键合线电感,但那只能做验证,量产不现实。
电感选型要注意自谐振频率。2.4GHz工作时,电感的自谐振频率必须远高于工作频率,建议至少5GHz以上,否则电感呈现出电容特性,振荡器根本无法谐振。我选的PDK电感自谐振频率大约在7GHz左右,满足要求。
变容管是关键中的关键。在2.4GHz VCO里一般用MOS变容管,工作在积累区,电容随控制电压变化比较陡峭,可以覆盖足够宽的调谐范围。单片变容管的变化范围有限,所以常规做法是并联多个变容管。调谐范围的确定原则是:覆盖目标频率范围的同时留出工艺角余量。2.4GHz到2.4835GHz约3.5%的带宽,加上温度和工艺偏差后,我把调谐范围设计在12%左右。
Kvco不能太大,Kvco和调谐范围之间是矛盾的——调谐范围宽,Kvco自然高,但Kvco过高会把控制电压上的任何微小噪声都放大成大的频率扰动,恶化相位噪声。可变电容阵列切换式调谐(即用数字控制位切换不同容值的电容组)可以有效缓解这个矛盾。我在VCO里加了一个2位的开关电容阵列,用来做频带粗调,变容管只负责细调,这使Kvco从80MHz/V降到了40MHz/V,相位噪声得到了明显改善。
4.3 相位噪声优化与前仿真
相位噪声是VCO最重要的指标。优化的核心思路是:提高谐振腔Q值,保证交叉耦合管的跨导足够且不过量,降低尾电流源的噪声贡献。
在设计时我计算了一下起振判据。负阻需要至少3到4倍于谐振腔等效并联电阻。取电感Q=15,等效并联电阻大约1.8千欧,交叉耦合管的跨导需要约为1.1毫西门子。我留了5倍余量,把每管跨导设计到约5毫西门子,确保所有工艺角都能起振。
跑VCO前仿真时,用spectre的PSS(周期稳态)分析加PNOISE(周期噪声)分析。PSS设置里,快门控信号的基频设为振荡频率,让仿真器自己找稳态周期;PNOISE测VCO输出端1MHz频偏的相位噪声。实测结果,我的VCO在1MHz频偏处实现了约-118dBc/Hz,这比前面的预算值略好一点,给系统留了余量。
起振时间是VCO的一个动态指标,但它在系统级仿真里才会体现。单独仿真时,可以用初始化命令给VCO的谐振腔一个初始电流或电压扰动,否则spectre会因为电路完全对称而无法激励起振荡。这一点非常重要,很多新手跑VCO瞬态仿真发现输出是零,就是忘了加初始条件或激励。
5. 系统级联与整体行为验证
5.1 分频器和整体前仿真的准备
把PFD、CP、环路滤波器和VCO单独仿真通过后,就可以在顶层把它们连起来。分频器在还没有完成高速版设计之前,可以用Virtuoso的functional建模方式,用一个verilog行为模型或者自带的可配置分频器单元来替代。这是工程上很效率的做法,先把顶层锁相环行为验证通过,再去专注优化分频器的数字实现。
顶层仿真我直接用spectre跑transient。仿真时间根据期望锁定时间来定,一般设置到30微秒,步长不能太大,要能分辨出VCO的高频振荡波形——2.4GHz对应周期才0.4167纳秒,步长至少取0.5皮秒。这样30微秒的瞬态仿真理论网格量非常大,实际跑起来非常缓慢。所以工程上通常分两步:第一步把VCO和分频器都拿来做简化等效模型,跑行为级锁定验证;第二步再把真实模块替换进去做小块验证。
5.2 闭环锁定过程的瞬态仿真
在进行第一轮真实电路级联时,我把分频器先用行为模型替代。这样可以规避分频器带来的巨大仿真负担,把焦点集中在验证整个PLL的环路带宽、锁定时间以及PFD/CP/VCO各真实模块协同工作的正确性。
瞬态仿真时观察VCO的控制电压波形。控制电压从初始值出发,逐渐收敛到一个稳定电压,同时VCO输出频率锁定到目标值。锁定后控制电压仍然会有微小纹波,这个纹波的频率等于参考频率,幅度取决于环路滤波器的抑制能力和PFD的延迟配置,经验上纹波控制在几毫伏以内为佳。
锁定时间的判断标准是控制电压进入最终稳定值±1%范围内所需的时间。我的系统设计中锁定时间要求是小于100微秒,实际电路仿真结果锁定时间约为60到80微秒,满足蓝牙跳频的要求。这个指标如果超标,一般是通过增大CP电流或环路带宽来改善,但这同时会带来杂散和噪声问题,需要权衡。
跑完瞬态仿真,最好再跑一次PSS和Pnoise来分析系统的闭环相位噪声。在Virtuoso里对PLL整体做PSS仿真需要选择合适的仿真方式,我用的是beat frequency设为参考频率12MHz的PSS,再测VCO输出端的相位噪声曲线。结果能看到带内相位噪声平台和带外VCO噪声滚降的典型形状。
5.3 参考杂散的仿真预测
参考杂散仿真比相位噪声仿真更麻烦,因为杂散是由周期性的控制电压纹波导致的VCO调频,在频谱上表现为偏离载频整数倍参考频率处的频谱成分。瞬态仿真后可以对VCO输出波形做FFT,用calculator里的dft功能,在频域上查看杂散幅度。
FFT的分辨率受限于仿真时间长度,想分辨12MHz处的杂散,仿真时间至少要覆盖多个12MHz周期,实际建议仿真到至少2到3微秒的锁定后波形。窗口函数选Hann窗减小频谱泄漏。我的仿真结果显示参考杂散约为-52dBc,满足-50dBc的设计指标。
如果杂散超标,排查方向通常是:CP电流失配是否足够小,PFD复位延迟是否合适,环路滤波器是不是可以增加一个极点,还有VCO的Kvco是否过大。
6. 常见问题与调试技巧实录
6.1 锁定失败的排查清单
我做好了以后,第一次上电仿真就遇到了一个锁定失败的情况,VCO控制电压一直在震荡,始终不收敛。经过排查后发现,问题不在模块本身,而是PFD在锁定条件下产生不了足够窄的校正脉冲,环路始终因死区问题无法锁定。加大PFD复位延迟后问题解决。
如果你的环路锁不住,我建议按这个顺序排查:先用理想模型把环路收敛性确认好,再逐个替换真实模型。每替换一个模块都确认该模块接口的直流工作点是否正常。VCO在工作中没有输出振荡信号,多半是起振条件不满足或者初始条件没设置好。CP的充放电方向接反会很直接地让环路正反馈振荡,把UP和DOWN的接线调换即可验证。
6.2 相位噪声指标不合格的调试思路
相位噪声如果带内偏高,问题集中在PFD和CP的噪声贡献上;如果带外偏高,则问题基本都在VCO。带内噪声优化手段:加大CP电流能提高PFD/CP的信噪比,但注意电流加大后控制电压纹波同步上升;降低PFD复位延迟能减少无效脉冲带来的额外噪声注入;确保CP电流源工作在饱和区,不要在临界状态。
带外噪声的优化手段就是我前面说的,提高VCO谐振腔Q值、优化交叉耦合管尺寸和尾电流源。还有一个容易被忽视的点是电源去耦,VCO电源引脚上加一个大的片上去耦电容能有效抑制电源噪声耦合到VCO输出上。
我遇到过一例带内相位噪声始终偏高的情况,排查了半天,最后发现是PFD复位信号和CP开关信号之间的时序搭配不合理,导致CP每次动作都会产生额外的毛刺。修正后噪声大幅改善。这类时序问题单看模块仿真不一定能发现,必须到整体瞬态仿真里去观察。
6.3 版图设计阶段的注意事项
仿真全部通过后进入版图阶段,PLL版图设计有几个地方必须高度重视:关键模拟节点的寄生提取、数字开关噪声的隔离、以及电感附近的金属摆放规则。VCO电感周围的金属走线要净空,或者说要遵守PDK规定的间距要求,任何靠近电感的金属都会改变电感值和Q值。
PFD和CP这种数字和模拟混合的地方要做电源域隔离,数字部分电源和模拟部分电源分开走线,地也要用隔离环围起来。CP的输出节点是高压阻节点,对寄生电容特别敏感,面积不要画太大,周围不要走横穿的信号线。
我一般会做两版版图,第一版做小规模验证版,第二版才做最终量产版。小验证版主要看寄生提取后的控制电压纹波是否还在指标内,如果不行就微调CP输出级和环路滤波器的布局。
6.4 一个容易被忽视的坑:电源上电时序
PLL的电源上电时序会影响锁定后的性能。如果VCO的电源先于CP的电源上电,VCO在环路还没有建立闭环时自由振荡,电荷泵电源慢热会出现电流源偏置建立不到位的情况,导致实际电荷泵电流与设计值差异大,环路带宽随温度漂移。理想上电顺序是VCO电源和CP电源同开,或者CP先开。
在实际测试时也可以通过加一个上电复位电路来解决,让PFD在电源稳定后再开始工作。这个设计细节虽然不直接影响仿真结果,但对流片后的芯片行为有实质性影响,值得重视。
做PLL设计,最快的成长路径就是多跑几次不通过的仿真,多排查几次别人没遇见过的问题。我上面写到的所有经验,都是一个个测试失败和流片回片后记录下来的。按照这个流程走,一款2.4GHz锁相环频率综合器是可以稳定实现的。