YAOTU INSIGHTS

PLL电荷泵电流失配:影响、经典架构与仿真验证

PLL电荷泵电流失配:影响、经典架构与仿真验证
写这篇分享之前先交代一句我习惯保持匿名写作这样既能把话讲得直白也方便分享一些项目里踩过的真实细节。技术分享这件事署名不署名没那么重要重要的是把原理和坑讲透。做PLL锁相环的工程师几乎都被同一个问题折磨过环路明明锁定了输出频谱上却冒出一堆不该有的参考杂散或者抖动指标死活压不下去。你从头到尾检查VCO、检查环路滤波器、检查分频器都没毛病最后拿探针去点电荷泵的输出才发现充放电电流差了那么百分之几。别小看这百分之几——在电荷泵PLL里电流失配就是那个藏在暗处、一点点啃掉性能的慢性毒药。这篇文章想把三件事讲清楚电荷泵电流失配到底怎么影响PLL性能为什么传统的“尽量匹配”思路在深亚微米工艺下越来越不管用以及Jae-Shin Lee那篇经典方案是怎么从架构层面把失配问题绕过去的。最后我会结合自己的仿真和流片经验整理一套可以直接落地的排查与设计流程。无论你是刚开始做PLL的在校学生还是被杂散问题困扰的芯片工程师这篇文章都值得读完。1. 电荷泵电流失配藏在锁相环里的“慢性毒药”1.1 从一次抓狂的排查说起几年前我负责一颗SerDes芯片里的时钟PLL参考频率100MHz环路带宽设计在1MHz左右。前仿真一切正常锁定时间、相位噪声都挺漂亮。等芯片回来一测输出频谱在100MHz频偏处冒出一个明显的杂散大概-48dBc直接把系统的误码率指标打穿了。排查过程很折磨人。先是怀疑VCO电源上的开关噪声加了LDO、优化了电源走线没改善。又怀疑分频器回灌噪声把分频器电源单独隔离还是没改善。最后没办法把片内电荷泵的输出节点引到测试焊盘上用高阻探针测控制电压纹波发现Vctrl在参考频率处有一个大约几毫伏的周期性纹波。顺着这个纹波往回查终于锁定了根因电荷泵的上拉电流和下拉电流在输出电压大约0.6V的位置差了2%左右。这个案例很典型。很多人一说PLL性能差第一反应就是VCO相位噪声不行但VCO对控制电压的扰动极其敏感。电荷泵那点电流失配经过环路滤波器变成Vctrl上的纹波再经过VCO的增益放大成相位调制最后体现在输出频谱上就是参考杂散和抖动恶化。整个过程就像温水煮青蛙平时看不见等系统指标卡死了才意识到问题的严重性。1.2 失配带来的三类典型性能问题电荷泵电流失配的影响归纳下来主要落在三个维度每个维度对应一种不同的性能指标恶化。第一是参考杂散。这是最直观的影响。电荷泵在锁定状态下每个参考周期都会因为PFD输出的窄脉冲产生一次电荷注入。如果充放电电流完全匹配理论上注入LPF的净电荷为零。一旦失配每个周期都会残留下一点点净电荷在Vctrl上形成与参考频率同步的纹波。这个纹波经过VCO调频就在输出频谱的参考频率偏移处形成杂散。参考杂散的危害不只是频谱不干净在收发机系统里还会导致接收频段内的干扰信号混叠直接影响灵敏度。第二是稳态相位误差和确定性抖动。失配会让锁定点的PFD输出不再是理想的零相位差而是存在一个固定的偏置。这个偏置会导致输出时钟的占空比畸变或相位偏差进而产生数据相关的确定性抖动。对高速SerDes来说这类抖动无法靠均衡器消除是上限频率的硬约束之一。而且失配越大稳态相位误差越大锁相环跟踪输入参考时的动态表现也会变差。第三是环路动态行为异常。失配较大时PFD的死区补偿策略会失效环路可能出现周期滑步或锁定点游走。某些情况下失配甚至会让电荷泵在锁定点附近出现“净电流方向不一致”的现象导致控制电压出现次谐波振荡表现为锁定后Vctrl上出现严重的低频纹波。性能维度失配影响最直接的观测点参考杂散参考频率处的输出频谱杂散Spectrum测量Spur大小抖动稳态相位误差引入确定性抖动眼图、TJ/DJ分解环路稳定性锁定点漂移、次谐波振荡Vctrl波形、相位裕度需要特别说明的是失配的影响和电荷泵电流绝对值、LPF电容大小、参考频率都有关系。同样的1%失配在低参考频率、大LPF电容的窄带PLL里可能完全不是事但在宽带PLL里就会直接打爆杂散指标。所以不能只看失配百分比要结合整个环路的传输函数来评估。2. 锁定状态下的窄脉冲难题失配为什么防不胜防2.1 电荷泵为什么会失配从电路层面看电荷泵失配的根源无非两件事器件本身的工艺偏差和管子工作点随输出电压的变化。第一类是系统性的工艺偏差。CMOS工艺里PMOS和NMOS的阈值电压、迁移率、栅氧化层厚度都有各自独立的波动。PMOS电流源和NMOS电流源想要做到“绝对值相等”本身就要依赖电流镜的镜像精度和设计者的精心推敲。即便版图做到完美对称跨工艺角下PMOS和NMOS的电流密度变化趋势也是不一致的。最典型的就是FF corner下NMOS电流暴涨、PMOS电流跟不上结果充放电电流失配跑到3%以上。第二类是沟道长度调制效应。这是失配里最容易被忽略、也最难消除的部分。理想电流源的输出电流应该与漏源电压无关但实际MOS管在饱和区工作时沟道长度调制效应会让电流随VDS变化。电荷泵输出节点电压就是VCO控制电压它在锁定过程中会在一定范围内摆动。输出节点电压变了充电电流源和放电电流源的VDS变化方向是相反的一个变大一个变小电流失配自然跟着变。更麻烦的是Vctrl在工作时受环路控制会持续微调失配也跟着动态变化完全不是一个静态值能概括的。还有一个工程上常被忽视的因素开关管本身的电荷注入和时钟馈通。每次PFD脉冲到来开关管栅极电压跳变沟道中的电荷会通过寄生电容耦合到输出节点。这部分电荷量在充电路径和放电路径上不对称也会表现为等效的电流失配。尤其在做低功耗设计时为了省电流把充放电电流压到几十微安开关管的寄生注入占比就会更加突出。2.2 死区、失配与参考杂散的三角关系要理解Jae-Shin Lee方案的精妙之处必须先搞清楚一个概念PLL锁定时电荷泵控制信号的真实波形到底是什么样的。锁相环进入锁定状态后PFD的两个输出并不会完全静默而是会输出一对宽度极窄的脉冲。这对窄脉冲的作用是让电荷泵开关“真正打开”一下避免因为死区导致环路在锁定点失去调节能力。如果没有这对脉冲PFD对几百飞秒级别的相位误差完全不敏感环路等于处于一种“假锁定”状态相位噪声和长期漂移都会恶化。但有了这对脉冲电荷泵每个参考周期都要做一次充放电动作只要充放电电流有一点失配就会留下净电荷。死区消除脉冲越宽电荷泵开关越能充分开启死区问题越小但每个周期的净电荷误差也越大。脉冲越窄失配注入的净电荷越少但开关来不及完全导通电流建立时间不足死区问题又会抬头。所以传统电荷泵设计里死区补偿宽度、电荷泵电流建立时间、电流失配三者是相互牵制的。你压住了一个另外两个就冒出来。这就是Jae-Shin Lee方案最让人拍案叫绝的地方。它没有去跟这三者硬碰硬而是直接改变电荷泵的工作方式让电流源管子根本不需要“开启-关闭”的转换过程而是始终处于导通状态PFD信号只是切换电流的流向。这样一来死区消除和电流失配这两个问题就被解耦了窄脉冲带来的瞬态失配几乎被抹平。3. Jae-Shin Lee经典方案解剖从“减小失配”到“消灭失配”3.1 那篇论文到底解决了什么Jae-Shin Lee的论文《Charge pump with perfect current matching characteristics in phase-locked loops》在2000年前后发表虽然时间有点久但直到今天依然是电荷泵设计绕不开的参考文献。它的核心贡献不是把电流失配做到了多小的百分比而是提出了一种架构让充电电流和放电电流在原理上就精确相等而不是靠版图匹配或者校准电路去“尽量接近”。在传统电荷泵里设计目标是让Iup尽量等于Idn。工程师会画匹配版图、加cascode管、加校准DAC但所有这些手段都是在跟工艺失配和沟道长度调制搏斗永远只是“逼近”不是“相等”。Jae-Shin Lee的思路是既然充放电电流源本身难以做到一致那我让每一条电流支路的电流都保持恒定不再依赖PMOS电流源和NMOS电流源在数值上的匹配。电流源管子始终导通PFD信号只负责决定电流往哪条路走。充放电的差值只取决于开关切换的电荷注入差而这个注入差可以通过结构对称性大幅抵消。这种思路相当于把连续域里“两路电流相等”的老大难问题转化成离散域里“电流方向切换”的对称性问题。后者的匹配难度比前者低一个数量级。这个思想后来的很多高精度电荷泵论文里都有影子比如采用运放钳位的结构、采用电流导引开关的结构追根溯源都能看到Jae-Shin Lee的影子。3.2 双电荷泵与差分开关的核心架构我按照论文的原始思想和你讲一下这个架构的工作方式。完整的晶体管级原理图建议直接找原论文看这里重点讲透结构逻辑。这个方案用了两套电荷泵。主电荷泵负责给环路滤波器充放电辅助电荷泵的作用是提供一个参考电流通路。关键在于主电荷泵的充电电流源和放电电流源采用差分开关对而不是传统的单管开关。每一路电流源都同时接了两个开关管一个接到输出节点一个接到辅助节点。PFD送来UP信号时充电电流源的电流被切向输出节点送来DOWN信号时充电电流源切回辅助节点。放电电流源的操作正好相反。这样设计的效果是无论PFD怎么切换充电电流源和放电电流源都处于导通状态电流大小始终是Icp不会出现电流源管子开启瞬态的问题。输出节点得到的净电流是充电支路和放电支路的差值而这个差值不是靠两个电流源“数值相减”得到的而是靠开关切换“逻辑互斥”实现的。充电通路和放电通路在任意时刻都是二选一不存在两路同时微弱导通导致失配的情况。辅助电荷泵还有一个关键作用它和主电荷泵的电流源通过运放构成反馈环路强制主电荷泵输出节点的共模电压和辅助节点的电压相等。这样一来无论Vctrl是接近电源轨还是接近地充电电流源和放电电流源的VDS都被稳定在相同的偏置条件附近沟道长度调制效应从根上被压住了。你不需要担心Vctrl变化导致Iup和Idn一个变大一个变小因为运放把能让它们变得不一致的那个自由度给钳死了。3.3 为什么敢叫“perfect current matching”叫“perfect current matching”当然有点夸张但对理想器件而言这个结构在数学上确实能做到Iup严格等于Idn。原因有三层。第一层开关切换不改变电流源的静态工作点。传统电荷泵开关管关断时电流源VDS会飘到电源轨或地重新开启时又要经历一个较长的建立过程。这个建立过程的非线性决定了窄脉冲下的瞬态电流根本不稳定。Jae-Shin Lee方案里电流源始终在线没有模态切换自然没有建立过程瞬态电流就是静态电流。第二层充放电电流在原理上由同一个参考电流决定。因为主电荷泵和辅助电荷泵共用同一套偏置充电支路和放电支路的电流基准是一致的。充放电路径里出现的任何PVT变化都是对称地出现在两个支路里的而不是像传统结构里PMOS和NMOS各自独立漂移。第三层运放钳位消除了输出电压对电流的扰动。这是对付沟道长度调制效应的杀招。结合两层cascode管子理论上输出节点电压在接近满摆幅的范围内变化时电流失配都可以控制在极小范围内。当然工程上没有免费的午餐。这个方案的代价是功耗增加、电路复杂度上升、运放本身要消耗额外的电流和面积而且运放的噪声和偏置电压也会直接耦合到输出电流上。所以它更适合对杂散和抖动要求高的高性能PLL在超低功耗场景里就显得有点奢侈。4. 仿真验证与版图设计让方案落到实处4.1 三步仿真法把失配“照”出来读完论文只是一个开始真正要把这套方案用到自己的PLL里靠的是严格的前仿真验证。我总结了一套三步走的仿真流程每一步都能暴露出不同层面的问题。第一步DC扫描看静态失配。搭一个最简单的testbench电荷泵输出节点接一个理想电压源从0扫描到VDD分别在UP和DOWN模式下读取输出电流画出Iup和Idn对Vout的曲线。两条曲线之间的差值就是静态电流失配。重点关注的是输出电压在你实际工作范围的区间内的失配量而不是全摆幅的平均值。如果你的方案里有运放钳位结构这一步会直接反映运放增益够不够。我一般要求Vout在0.2V到VDD-0.2V范围内失配小于0.1%。第二步瞬态仿真看动态失配。在输出节点挂一个电容建议选和最终LPF电容同数量级的值给PFD输入一个极小的相位误差信号让PFD输出一对参考频率的窄脉冲观察Vctrl在一个周期内的净变化量。这个变化量如果除以电容就是每个周期的净电荷注入。这一步能捕捉到开关电荷注入、时钟馈通、电流建立时间等动态因素造成的失配。静态很好、动态一塌糊涂的情况非常常见尤其是开关管尺寸没调好时。第三步PLL顶层跑锁定仿真提取参考杂散。把电荷泵放进完整的PLL环路里跑瞬态到稳定然后对Vctrl做FFT看参考频率处的纹波分量。如果条件允许把VCO输出也做一次frequency-domain分析估算参考杂散的幅度。这个结果能直接对应到指标上方便你决定要不要对电荷泵继续花力气优化。4.2 版图匹配与隔离的关键细节再好的电路架构版图画得随意也是白搭。Jae-Shin Lee方案的匹配优势来自完全对称的结构版图必须把这个对称性贯彻到底。电流源管一定要画成交叉指结构的common-centroid布局让工艺梯度对PMOS和NMOS电流源的影响尽量相等。差分开关管的匹配同样关键因为开关切换时注入的电荷量如果不一致就会直接变成输出节点的毛刺。开关管的dummy管务必补齐特别是对输出节点寄生电容敏感的设计dummy管能显著降低电荷注入的不对称性。电源和地线的处理上主电荷泵和辅助电荷泵的电源走线要尽量短、尽量宽避免IR drop造成两路电流源的电源电压不一致。运放是比较敏感的模块它周围要加隔离环离VCO的控制电压走线远一点防止运放时钟馈通污染Vctrl。还有一个容易踩的坑输出节点到LPF的走线。这条线上任何一点寄生电容都会参与电荷分配改变有效充电电荷量。走线过长还会引入额外的寄生电阻和LPF构成额外极点。我一般把LPF的第一级电容尽量靠近电荷泵输出焊盘摆放走线控制在几十微米以内。5. 工程经验总结几个我踩过的坑和一条设计流程5.1 五个容易翻车的认知误区做电荷泵设计这几年我自己踩过不少坑也看过团队里的年轻工程师反复掉进同样的陷阱。这里列出来希望你能绕开。误区一只盯着静态失配不关心动态失配。不少人仿真时只做DC扫描看到Iup和Idn几乎重合就以为万事大吉。实际上电荷泵在锁定状态工作在一个极窄的脉冲模式下动态切换造成的失配远比静态失配严重。你必须在接近实际工作条件的脉冲激励下验证净电荷注入。误区二死区消除脉冲调得太宽。死区消除脉冲太窄PFD增益下降、相位噪声恶化太宽电荷泵失配的净电荷注入变大、参考杂散变差。这里面有个最优工作点。我以前会把死区脉冲宽度直接取经验值后来发现必须结合电荷泵电流建立时间和PFD分辨率一起仿真调整。常见范围是几百皮秒到几纳秒具体以你的参考频率和CP电流而定。误区三把电流失配和电荷失配混为一谈。有时候Iup和Idn的静态电流完全一样但参考杂散还是很大问题出在开关切换时UP脉冲和DOWN脉冲的有效宽度不一致。PFD输出的上升沿和下降沿传播延迟有差异导致即使电流相等充放电时间也不等。这种情况从电流上完全看不出来要查PFD和CP配合起来的时序匹配。所以我在版图上会让UP和DOWN信号走线长度和负载保持一致必要时加dummy负担。误区四运放钳位结构里运放的带宽不够。Jae-Shin Lee方案的运放如果带宽不足在开关瞬态时钳位电压来不及恢复充放电支路的VDS会出现短暂的失配窗口。这个窗口虽然短但在高速PLL里可能会贡献不可忽略的相位误差。我一般要求运放的单位增益带宽做到参考频率的十倍以上并且要检查开关瞬态时运放输出是否出现明显的过冲。误区五仿真corner选得太宽松。失配在不同工艺角下的表现差异非常大尤其是FF corner和SS corner。我遇到过实际芯片在FF corner下杂散指标完全失效的情况而前仿真只在TT corner下验证过。建议每个关键corner都跑一遍DC和瞬态失配至少覆盖TT、FF、SS三个角加上-40度到125度的温度范围。5.2 一套可复用的电荷泵电流失配设计流程最后分享一个我目前在设计新PLL时都在用的流程它不是一个教条式的步骤清单而是一套帮你在架构选择和细节优化上做决策的骨架。第一步从系统指标反推电荷泵允许的失配上限。先根据参考杂散或抖动指标估算Vctrl上允许的最大纹波再结合LPF电容和参考频率反推每个周期的净电荷注入上限。有了这个上限再换算成电流失配的百分比你就知道自己需要做到多小的失配以及该选传统结构还是选Jae-Shin Lee方案这类高复杂度架构。第二步架构选型和晶体管级初步设计。如果失配上限在2%以上常规cascode电荷泵完全够用如果在1%到2%之间可以考虑用运放钳位结构的传统方案如果要求在0.5%以下建议直接上Jae-Shin Lee式双电荷泵结构。这个决策点越早做越好临时换架构的代价非常大。第三步前仿真验证把静态失配、动态失配、顶层杂散三个层次都跑一遍。动态失配和顶层杂散的仿真结果如果能同时通过再进入版图设计。这一步也是调整死区宽度、开关管尺寸、运放带宽的最佳时机等版图画完再改设计代价就大了。第四步版图设计阶段把匹配和隔离做到位。然后做提取后仿真重点看寄生导致的不对称性特别是开关管的寄生电容和时钟馈通。提取后仿真如果失配劣化得厉害优先回头调整版图不要先怀疑电路方案。我之前吃过亏一看到提取后失配变大就去调电路最后发现只是版图上开关管位置不对称导致的。第五步流片后的测试验证。芯片回来后第一时间搭测试环境测量Vctrl纹波和输出频谱参考杂散把实测数据和前仿真、提取后仿真的结果做对比。如果差异明显多半是PFD开关时序或者运放带宽的问题这时候再回过来分析也来得及。这个流程帮我避开了至少三次“流片回来才发现杂散超标”的灾难。做模拟设计很多时候拼的不是灵光一现的巧思而是能不能在一开始就想清楚约束在设计过程中用系统化的方法把风险逐一消灭在仿真阶段。电荷泵电流失配这件事恰恰就是检验这套流程是否靠谱的最好试金石。