ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

斩波运放仿真指南:PSS/PAC/Pnoise/PSTB四步搞定噪声与稳定性

斩波运放仿真指南:PSS/PAC/Pnoise/PSTB四步搞定噪声与稳定性 做斩波运放的人十有八九都经历过这种尴尬在Cadence里搭好完整电路习惯性跑一个“AC Noise STB”三件套结果收到的不是预期曲线而是一堆看起来很合理但跟实测对不上的数字。你甚至能在某次仿真里看到一个完美的相位裕度PM然后高高兴兴去流片回来却发现在某个温度corner下放大器输出整个垮掉或者闭环响应一直在振铃。这事儿我栽过跟头所以后来专门把斩波运放的仿真套路捋清楚了。这篇文章就围绕PSS、PAC、Pnoise和PSTB这四套分析讲讲斩波运放的噪声和稳定性到底怎么仿每一步为什么要这么设以及仿真结果怎么看才不会翻车。适合正在做传感器前端、生物电采集、霍尔/磁传感器接口这类低噪声运放的模拟IC工程师和学生。1. 为什么斩波运放不能照搬常规仿真流程1.1 本质差异LTI的假设从根上就不成立传统运放仿真之所以可以放心跑AC和Noise是因为仿真器默认电路工作在一个直流工作点上。在这个直流点上所有管子处于固定偏置状态小信号通路是线性的而且是时不变的。仿真器围绕这个静态工作点算小信号增益、带宽、噪声谱理论上是严格的。斩波运放完全不同。输入端的斩波开关以固定频率fchop交替翻转把信号进行方波调制再在输出端用同步开关解调回来。这个电路在正常工作时永远没有一个“稳定”的直流工作点每个晶体管的偏置和导通状态都随着斩波时钟周期性变化。严格来说斩波运放属于线性周期时变系统LPTV不是线性时不变系统LTI。你拿LTI工具去分析从数学基础上就不成立后面所有结果都是自欺欺人。我用一个比较粗俗的类比普通运放的噪声分析相当于把风扇定格在某一瞬间去测风量而斩波运放是转起来以后才有风你必须在整个旋转周期上去测。你定格的瞬间再准也算不出风扇转起来的风量。1.2 普通Noise分析到底错在哪里普通Noise分析的计算流程是在直流工作点对每个噪声源求到输出的传递函数然后把各源贡献做平方和。它对斩波运放的错误体现在两个层面。第一工作点持续变化导致噪声源的等效跨导和带宽在整个斩波周期内不断变化。输入对管在开关切换瞬间电流通路被切来切去某些时刻管子甚至处于截止状态这种时变的噪声源特性没法用单一工作点描述。第二也是最容易被忽略的斩波开关本身会引入频率搬移。运放内部的宽带热噪声会被输入开关周期性地调制一部分高频噪声被折叠回基带而晶体管的1/f噪声则会被斩波到斩波频率的奇次谐波附近。普通Noise分析完全没有建模这个搬移和折叠过程所以它给出的输出噪声谱跟实际电路测出来的对不上偏差经常在几倍以上。1.3 STB的相位裕度为什么不可信STB分析同样基于直流工作点。仿真器在固定工作点上断开环路插入测试信号计算环路增益的幅频和相频曲线然后给出0dB处的相位裕度。问题在于斩波运放的环路增益是时变的。周期的开关动作会在环路中引入额外的极点和零点尤其在fchop、2fchop等频率附近会出现特殊的边带效应。这些效应在直流工作点的STB里完全看不到。我遇到过最典型的情况STB给出的相位裕度有72度环路看起来非常稳定但瞬态仿真里一跑闭环阶跃输出有明显的振荡衰减不够快的问题甚至在恶劣corner下直接起振。后来换到PSTB分析才发现环路的边带增益在某些频点发生相位反转而STB完全没反映这部分。2. 第一套拳PSS——先把“周期工作点”求出来2.1 PSS到底在做什么PSSPeriodic Steady State分析的任务是找一个电路的周期稳态解。对斩波运放而言外部时钟是周期激励所以电路最终会进入一个以fchop为基本频率的周期稳态。你可以把PSS理解为“动态的DC工作点”。普通DC工作点是一组常数PSS求出来的是一组周期波形包括每个节点的电压在每个时刻的值。这个结果非常重要它后续是PAC、Pnoise和PSTB的分析基础。Cadence Spectre RF里做PSS时有几个关键参数beat frequencyfundamental frequency必须设成斩波时钟频率fchop这是整个电路的基本周期。tstabtstab瞬态建立时间。PSS会先把电路瞬态跑tstab时长让电路进入稳态然后再开始计算周期解。这个值如果太短PSS会“以为自己找到了稳态”实际上电路根本没建立好。accuracy settings如maxac、maxacc、iteratio精度相关参数对电流镜和差分对多的电路建议不要用默认值适当放大精度。以一个实际的斩波运放为例fchop150kHz闭环带宽100kHz那么tstab至少要覆盖环路建立时间我通常取500到1000个斩波周期也就是约3到7ms。跑完之后看PSS报出的收敛误差如果误差在容差范围内再进行下一步。2.2 怎么判断PSS结果靠不靠谱PSS仿真最大的坑是“看起来收敛了实际没收敛”。我一般用三种方法交叉验证。第一看PSS的输出波形是否真的周期重复。在波形窗口里对比前一个周期和后一个周期如果首尾有肉眼可见的漂移说明tstab不够长。第二检查PSS的误差报告。Cadence会给出harmonic imbalance或者收敛残差如果这些数值明显偏大需要提高精度或延长tstab。第三非常推荐的做法在PSS之后单独跑一小段普通瞬态从PSS的初始条件initial transient开始跑10到20个斩波周期。如果波形很快进入周期性重复说明PSS解是稳定的如果波形缓慢漂移或者出现非预期低频振荡说明PSS结果不可信同时也暗示电路本身可能存在稳定性问题——这本身就是值得警惕的信号。3. 第二套拳PAC——在小信号层面看信号通路和混叠3.1 PAC是沿着时间轨迹做线性化PACPeriodic AC从名字上看像是AC分析的周期版但它的内核思路完全不同。PAC在PSS求得的周期稳态轨迹上对每一个时间点做小信号线性化然后分析一个小信号激励在这个时变系统中如何传播。因为系统是时变的小信号输入与周期性开关作用后输出会包含多个频率分量。数学上输出可以分解成基波响应和边带响应。对应到仿真参数就是sidebands这个概念0阶边带第0个sideband代表输入频率直接传递到输出的分量相当于常规AC响应±1阶边带代表输入信号与斩波频率fchop发生混叠后的分量±2阶及更高次代表了与谐波的混叠再回到斩波运放的实际工作逻辑信号经过输入开关被方波调制频谱上相当于信号与方波相乘因此会在基带信号之外产生以fchop奇次谐波为中心的边带。输出解调开关再把这些边带搬回基带。PAC通过一次扫描就能把所有阶次的边带响应算出来非常直观。3.2 PAC扫频范围和边带设置PAC扫频的起始频率建议从远低于信号频率的地方开始我一般从1Hz或10Hz开始。终止频率要覆盖关心的最高频率对于斩波运放至少要扫到3到5倍fchop如果还要看环路高频行为就需要扫到闭环带宽的5到10倍以上。sidebands参数也很关键。如果只关心基波传递函数设成0就够用但要观察混叠和馈通建议设为±10以上。我通常先设±20扫一遍然后降到±7再跑一次两次结果一致就说明边带阶数足够了。PAC的结果怎么看以信号路径为例输入一个1kHz的小信号输出的基波分量0阶边带应该是正常放大的信号同时你会发现输出端在149kHz和151kHz处也存在分量。这些就是信号与斩波频率的混叠项。在理想斩波运放中这些边带应该被输出开关解调回基带但由于实际电路的开关非理想性和寄生电容输出端会有残留的边带泄漏。PAC可以定量地告诉你这个泄漏有多大这对系统设计极其重要。工程师在系统联调时如果发现后级ADC的频谱里出现fchop附近的杂散回头查一下PAC结果就能知道是不是斩波边带泄漏造成的。4. 第三套拳Pnoise——把折叠噪声算清楚4.1 Pnoise与普通Noise的根本差别普通Noise分析把每个噪声源视为平稳随机过程在整个工作点上做传递函数然后算功率谱密度。PnoisePeriodic Noise则考虑了周期时变条件下的噪声传播它把一个噪声源的贡献分成基带部分和折叠部分再将各边带分量用周期传递函数作用后叠加到输出。这就是斩波运放需要Pnoise分析的核心原因斩波运放内部的大量宽带热噪声会被开关调制不同边带的噪声分量会折叠回基带。如果不考虑这些折叠噪声你算出来的输出噪声会严重偏低从而高估了信噪比。在这个过程里1/f噪声是一个值得单独看的对象。普通运放中1/f噪声直接叠加在信号通路上所以低频段的等效输入噪声谱会随频率下降而升高。在斩波运放中输入对管的1/f噪声经过斩波调制后会被搬移到fchop的奇次谐波附近理论上基带内的1/f噪声大幅降低。Pnoise分析能定量地给出这个降低效果到底是多少以及还有多少残留在基带内。4.2 Pnoise参数设置里容易翻车的几个细节Pnoise的设置比PSS略繁琐最容易搞错的几个点是noise type选samples还是jitter。对运放自身的幅度噪声用samples模式只有当时钟本身的相位抖动才用jitter模式。之前有人在Pnoise里设了jitter跑出来的噪声谱全是时钟边的尖峰彻底没法看。output和reference针对差分输出把output设到正输出端reference设到负输出端。如果这里设错了你看到的输出噪声会是单端噪声而不是差分噪声数值会有3dB以上的偏差。sweep range起始频率要足够低建议从0.1Hz甚至更低开始这样才能看到1/f区域被斩波削弱后剩余的低频噪声结束频率至少覆盖10倍闭环带宽。maxsideband这是Pnoise里最关键的参数。它决定了考虑多少个边带的噪声折叠。斩波运放中建议从15开始然后逐步加大到30和50对比结果变化。如果结果明显变化说明还没收敛继续加大如果结果基本不变说明这个边带阶数够了。我在一个项目里试过maxsideband从7改到30基带内输出噪声密度变化接近一倍。原因是斩波开关动作产生的宽带噪声很多从高阶边带折叠回来只算低阶边带会严重低估总噪声。所以一定不要偷懒用默认值。4.3 输出噪声谱怎么读Pnoise跑完之后输出噪声谱通常长这样在极低频段有一个缓慢上升的尾巴这是剩余的1/f噪声和一部分电荷注入引入的低频噪声往中频段走曲线进入一个水平平台这就是折叠噪声和电路自身白噪声的叠加再往高频走会出现一系列以fchop谐波为中心的峰值。折叠噪声平台的高度是斩波运放设计的核心指标。我在之前的项目中这个平台大概在18nV/√Hz量级其中约40%来自折叠噪声剩余是电路本底白噪声。如果只看普通Noise分析这个值可能只有12nV/√Hz你会误以为自己做了个很好的设计结果流片回来测试直接打脸。想评估等效输入噪声密度可以把输出噪声谱除以闭环增益。Pnoise的结果配合PAC的0阶边带增益就能算这个数通常仿真器也支持直接输出等效输入噪声。5. 第四套拳PSTB——周期稳态下的稳定性分析5.1 PSTB和STB的核心区别PSTBPeriodic Stability分析是专门针对周期时变系统的稳定性分析方法。它在PSS解的基础上向环路注入一个小信号扰动然后求解这个扰动在周期稳态条件下如何传播。与STB固定工作点的本质区别是PSTB考虑的是整个周期内的时变行为它计算出的环路增益包含了开关调制产生的边带效应。你可以把PSTB理解为“对整个周期平均化并叠加边带效应后的环路增益”。在实际工程中PSTB的分析结果通常表现为一组环路增益曲线对应不同的谐波阶数。通常所说的“环路相位裕度”主要看0阶边带的增益和相位但一个严谨的稳定性判断还必须检查高次边带是否存在增益大于1且相位穿越180度的情况。5.2 Probe怎么放PSTB的probe放置方法和STB类似但要特别注意一点斩波运放的环路中有开关probe不能放在会被周期性通断打断的位置。我通常的做法是把probe放在误差放大器的输出端也就是环路里的高阻节点这个点一般不会被斩波开关直接短路。或者用Cadence里的iprobe接入环路中某个支路安全起见可以同时跑两个不同断点的PSTB如果两个断点的环路增益结果一致基本可以确认probe位置没有引入额外的加载误差。仿真器返回的PSTB结果通常包含多个频率bin不同bin对应不同阶次边带。在判断主环稳定性时看零阶边带即可高次边带的增益信息用于排查高频振铃。5.3 用PSTB判断稳定性的实际案例我遇到过的情况是这样一个设计在STB下怎么看都有超过70度的相位裕度但瞬态闭环阶跃响应在边沿位置有明显的振铃持续好几个周期才衰减完。后来用PSTB扫描发现主环路的相位裕度其实只有40度左右而且在fchop附近的边带增益只比0dB低一点点说明环路确实工作在“边缘稳定”的状态。从那之后我判断斩波运放稳定性的流程变成先用PSTB看主环相位裕度要求至少45度以上然后检查所有需要输出的边带中有没有增益超过0dB或接近0dB且相位接近负180度的点如果有就需要调整环路补偿或斩波频率。需要特别提醒的是PSTB也不是万能的。仿真器里所有器件模型全是理想化的实际的开关导通电阻、寄生电容、时钟非交叠时间都会影响稳定性。所以PSTB给出稳定结果之后强烈建议再做一次带真实时钟的闭环瞬态验证在输入端加一个小的阶跃观察输出恢复曲线看有没有明显的振荡拖尾。两个方法互相印证比单看一个结果可靠得多。6. 四套分析配合使用时的参数搭配与避坑经验6.1 一套可直接参考的参数组合很多朋友问我要“一套能直接抄的参数”。我把自己在斩波运放项目中比较常用的一组设置整理成表格电路参数以fchop150kHz、闭环带宽100kHz、差分输出为例分析类型关键设置主要用途需要重点看的结果PSSbeatfchop150kHztstab500/fchop精度设为moderate到conservative建立周期工作点PSS收敛误差稳态波形是否周期重复PAC扫频1Hz~10MHzsidebands±20信号通路和混叠特性0阶边带增益和带宽±1阶边带残留量Pnoisenoise typesamplesoutput/reference按差分输出设置扫频0.1Hz~10MHzmaxsideband30周期噪声分析输出噪声密度曲线折叠噪声平台等效输入噪声PSTBprobe放在环路高阻点扫频100Hz~10MHz输出边带阶数看0~2阶环路稳定性主环相位裕度边带附近增益是否接近0dB这套参数不是固定的但给了一个合理的起点。实际项目里如果斩波频率变了PSS的tstab、PAC和Pnoise的扫频范围都要同步调整。原则是所有分析频率范围至少要覆盖到fchop的10倍以上才能看到足够的谐波和边带信息。6.2 我踩过的坑和现在的固定检查项第一个坑是PSS的tstab设太短仿真不报错但结果完全不对。尤其是环路里有一个很大的片外电容或高阻极点时建立时间非常长PSS可能在电路没建立到稳态时就截断了。现在我的习惯是先估算闭环带宽算出一个时间常数然后tstab至少取20到50倍时间常数对应的斩波周期数再做一个短期瞬态验证。第二个坑是Pnoise的maxsideband没做收敛性测试。刚才提到过同一个电路maxsideband从7加到30能带来接近两倍的噪声变化这种错误会直接误导设计决策。现在我把maxsideband的收敛性测试做成一个固定检查项跑完Pnoise之后一定会做一组对比仿真确认结果不随边带阶数继续改变。第三个坑是PSTB判断过于乐观。现在每当PSTB给出的相位裕度很好我都会额外检查输出波形在开关瞬间有没有高频毛刺或振铃。如果瞬态波形在高频段出现衰减很慢的振荡即便PSTB显示PM超过60度我依然会回到电路层面做更深检查。6.3 仿真与实测的差距从哪里来仿真流程再规范实验室里测出来的噪声和稳定性还是跟仿真会有偏差。以我的经验来看差距主要来自几个地方开关管的电荷注入和时钟馈通会影响实际的折叠噪声大小时钟的非交叠时间如果留得不够会引入额外的直通和瞬态电流电源上的高频噪声在Pnoise里没有被充分建模却能通过斩波开关耦合到信号通路。这些问题往往无法完全靠仿真流程解决但用PSS、PAC、Pnoise和PSTB这四套组合拳至少能把设计本身的噪声和稳定性算到比较准确的程度。剩下的偏差就得靠版图仿真和后期测试数据来校准了。最后分享一个我自己的习惯每次换corner或者改斩波频率之后我都会按PSS、Pnoise、PSTB的顺序全部重跑一遍绝不只改一个参数就默认其他结果还成立。周期时变电路的分析结果对工作点非常敏感这个顺序多花不了几分钟但能避免在错误的假设上继续做优化。
返回列表