1. 环路稳定性仿真到底在解决什么问题
做电源设计或者高带宽运放电路的朋友,大概率都遇到过这种情况:理论计算相位裕度有六十多度,结果板子一上电就振荡,或者带载瞬间输出疯狂振铃。这时候你回头查补偿网络、查寄生参数、查PCB布局,折腾一圈发现根子还是在环路稳定性上。而环路稳定性这件事,绕不开的核心工具就是STB仿真和Middlebrook双注入法。
我自己做电源和运放电路这些年,这两种方法都用过很多轮,踩过的坑也不少。早期用STB仿真觉得方便快捷,后来遇到一些特殊拓扑发现STB给出的结果和实测对不上,才开始认真研究Middlebrook双注入法。再后来发现,这两种方法其实各有各的适用场景,关键是你得知道什么时候该用哪个,以及怎么用才不出错。
这篇文章主要面向已经有一定电路仿真基础、正在做环路稳定性验证的工程师,不管你是做DC-DC变换器、LDO、还是高带宽运放电路,只要涉及到环路增益和相位裕度的仿真验证,这里的内容应该都能帮到你。我会从两种方法的原理讲起,然后给出完整的实操步骤和参数设置,最后重点分享我在实际项目中踩过的坑和排查经验。尤其是那些仿真结果看起来很美但实测翻车的案例,我会详细拆解原因。
2. 两种方法的本质区别与选型逻辑
2.1 STB仿真的工作原理与适用边界
STB仿真,全称Stability Analysis,是Cadence Virtuoso里面集成的一个专门用于环路稳定性分析的仿真工具。它的核心思路是在环路中插入一个理想断点,然后在这个断点上注入小信号激励,通过测量返回信号来计算环路增益和相位。
具体来说,STB仿真会在你指定的断点位置自动执行以下操作:首先断开环路,然后在断开处注入一个交流小信号,测量前向增益和反向增益,最终计算出环路增益T(s)。它内部用的是Middlebrook单注入法的变体,但做了一些工程上的简化和优化,使得操作更加便捷。
STB仿真的优势非常明显:操作简单,只需要在原理图上标注断点位置,设置好频率范围,点一下运行就能出结果。它自动处理了断点阻抗匹配的问题,不需要你手动去计算注入阻抗和负载阻抗的关系。对于大多数常规的电压模控制环路,STB仿真给出的结果都相当准确。
但STB仿真有几个硬性限制你需要知道。第一,它要求环路中必须存在一个单向传输的断点,也就是说信号只能从一端传到另一端,不能有反向通路。如果你的电路里存在前馈通路或者双向传输路径,STB仿真就没法正确处理。第二,STB仿真假设断点处的阻抗满足一定的条件,如果断点阻抗不匹配,结果会有偏差。第三,STB仿真对于电流模控制的环路,有时候给出的结果和实际测量差异较大,因为电流环的断点位置不好选。
2.2 Middlebrook双注入法的核心思想
Middlebrook双注入法,顾名思义,是在环路的同一个断点上同时注入电压激励和电流激励,通过测量两种激励下的响应来精确计算环路增益。这个方法是R.D. Middlebrook在1975年提出的,后来经过不断改进,成为了环路稳定性分析的黄金标准。
它的核心数学表达是这样的:环路增益T(s)可以通过电压注入和电流注入的测量结果组合得到。具体公式为:
T(s) = (Vout/Vin)|电压注入 / (Iout/Iin)|电流注入
更准确地说,双注入法通过测量断点处的电压和电流关系,消除了断点阻抗不匹配带来的误差。它的优势在于:
- 对断点阻抗不敏感,不需要断点满足特定的阻抗条件
- 适用于各种拓扑,包括电流模控制、前馈通路、双向传输路径
- 精度高,和实际测量结果吻合度好
但双注入法的代价是操作复杂。你需要搭建额外的注入网络,设置电压注入和电流注入两种仿真条件,分别测量,然后手动或通过公式计算最终的环路增益。整个过程比STB仿真繁琐得多。
2.3 选型决策:什么时候用哪个
我整理了一个简单的选型对照表,你可以根据自己电路的特点来选:
| 电路特征 | 推荐方法 | 理由 |
|---|---|---|
| 常规电压模控制DC-DC | STB仿真 | 操作简单,精度足够 |
| 电流模控制DC-DC | Middlebrook双注入 | STB在电流模下误差较大 |
| 存在前馈通路的电路 | Middlebrook双注入 | STB无法处理双向传输 |
| LDO线性稳压器 | 两者均可 | 简单拓扑STB就够用 |
| 高带宽运放环路 | Middlebrook双注入 | 寄生参数影响大,需要高精度 |
| 多环路系统 | Middlebrook双注入 | STB只能处理单环路 |
| 快速验证阶段 | STB仿真 | 速度快,适合迭代 |
| 最终签核阶段 | Middlebrook双注入 | 精度高,可信度强 |
我个人的习惯是:设计初期用STB仿真快速迭代补偿参数,等拓扑和参数基本确定后,用Middlebrook双注入法做最终验证。这样既保证了效率,又保证了精度。
3. STB仿真实操全流程与参数设置
3.1 断点选择的核心原则
STB仿真的第一步,也是最关键的一步,是选择断点位置。断点选错了,后面所有结果都是错的。我见过太多人随便找个地方断开,然后对着错误的波特图调了半天补偿,最后实测发现完全不是那么回事。
断点选择的核心原则是:断点必须位于环路中信号单向传输的路径上,且断点处的阻抗不会因为断开而显著改变电路的工作状态。
具体来说,对于电压模控制的Buck变换器,最常见的断点位置是误差放大器的输出到PWM比较器的输入之间。这个位置信号是单向传输的,而且断开后不会影响误差放大器的直流工作点。对于LDO,断点通常选在误差放大器的输出和功率管的栅极之间。
有一个简单的判断方法:你在这个位置断开环路,如果电路的直流工作点基本不变,那这个断点就是合适的。如果断开后直流工作点发生了明显偏移,说明这个位置不适合做断点。
注意:千万不要在反馈分压电阻的中间节点断开,因为那个节点同时连接了反馈网络和误差放大器的输入,断开后会改变输入偏置电流的路径,导致直流工作点偏移。
3.2 仿真设置与参数配置
选好断点后,在Cadence Virtuoso中打开STB仿真设置界面。具体操作步骤如下:
- 在原理图中,在选定的断点位置放置一个
iprobe元件(电流探头),或者直接使用STB仿真专用的断点标记 - 打开ADE L或ADE XL仿真环境,选择
stb分析类型 - 设置扫描频率范围:一般从1Hz到10MHz,对于开关电源,上限频率至少要到开关频率的一半
- 设置扫描类型:对数扫描,每十倍频程至少100个点,保证曲线平滑
- 指定断点位置:在
Probe Component中选择你放置的iprobe元件 - 设置注入信号幅度:一般用1V的交流小信号,确保电路工作在线性区
这里有一个容易被忽略的细节:STB仿真的注入信号幅度不能太大。虽然理论上小信号分析是线性的,但实际电路中总存在非线性,如果注入幅度过大,会导致仿真结果偏离真实的小信号响应。我一般用1V,如果发现结果异常,会降到0.1V再试一次。
另外,STB仿真需要电路先完成直流工作点计算。如果直流工作点不收敛,STB仿真也没法进行。所以运行STB之前,先确认直流仿真能正常收敛。
3.3 结果解读与常见误判
STB仿真跑完后,你会得到一张波特图,横轴是频率,纵轴是增益(dB)和相位(度)。关键指标是相位裕度和增益裕度。
相位裕度的定义是:在环路增益降到0dB(即增益为1)的频率处,相位与-180度之间的差值。一般要求相位裕度大于45度,最好在60度左右。增益裕度的定义是:在相位达到-180度的频率处,增益与0dB之间的差值,一般要求大于10dB。
但这里有几个常见的误判陷阱:
陷阱一:只看相位裕度,不看增益裕度。有些电路相位裕度很漂亮,但增益裕度不够,在大信号扰动下仍然会振荡。两个指标都要看。
陷阱二:忽略低频增益。低频增益决定了系统的稳态误差。如果低频增益不够,即使相位裕度很好,系统的精度也不达标。
陷阱三:把STB的相位曲线直接当成实际相位。STB仿真给出的相位是环路增益的相位,但实际电路中还有额外的相移来自寄生参数、PCB走线等。所以STB给出的相位裕度应该留至少10度的余量。
4. Middlebrook双注入法完整实现
4.1 注入网络的设计与搭建
Middlebrook双注入法的核心是在断点处搭建一个注入网络,能够分别注入电压激励和电流激励。这个注入网络的设计直接决定了测量精度。
标准的注入网络包含以下几个部分:
- 一个电压注入源,串联在断点处
- 一个电流注入源,并联在断点处
- 两个理想变压器或者受控源,用于隔离注入源和被测电路
- 测量用的电压探头和电流探头
在实际仿真中,我们不需要真的搭变压器,可以用压控电压源和压控电流源来等效实现。具体电路结构如下:
在断点处,将环路分为前向通路和反馈通路两部分。前向通路的输出端接一个电压控制电压源(VCVS),反馈通路的输入端接一个电压控制电流源(VCCS)。通过切换VCVS和VCCS的激励,分别实现电压注入和电流注入。
提示:注入网络中的VCVS和VCCS需要设置足够大的增益,以保证注入信号能够有效传递,但增益也不能太大,否则会导致数值计算问题。一般取1000到10000之间。
4.2 电压注入与电流注入的分别测量
搭建好注入网络后,需要分别进行两次仿真:
电压注入仿真:将电压注入源设为1V交流信号,电流注入源设为0。此时测量断点处的电压V1和电流I1,以及反馈通路输出端的电压V2。
电流注入仿真:将电流注入源设为1A交流信号,电压注入源设为0。此时测量断点处的电压V3和电流I3,以及反馈通路输出端的电压V4。
然后通过以下公式计算环路增益:
T(s) = (V2/V1) × (I3/I4) 的某种组合形式
更准确的公式是:
T(s) = [V2(电压注入) × I3(电流注入)] / [V1(电压注入) × I4(电流注入)]
这个公式的推导涉及到二端口网络理论,这里不展开。你只需要知道,通过两次测量,双注入法消除了断点阻抗的影响,得到了真实的环路增益。
4.3 数据处理与波特图绘制
双注入法的原始数据是两次仿真的电压和电流值,需要经过后处理才能得到波特图。在Cadence中,你可以用Calculator工具或者Skill脚本来自动化这个过程。
我一般用Calculator的波形运算功能:先把两次仿真的波形分别导出,然后用公式计算T(s)的幅值和相位,最后绘制波特图。具体操作是:
- 在ADE中运行电压注入仿真,保存V1、I1、V2的波形
- 运行电流注入仿真,保存V3、I3、V4的波形
- 打开Calculator,输入公式计算T(s)
- 对T(s)取dB和相位,绘制波特图
如果你经常做这个分析,建议写一个Skill脚本自动化处理,能省不少时间。我自己的脚本大概五十行左右,跑一次完整分析不到一分钟。
5. 实测对比:两种方法的结果差异分析
5.1 电压模Buck变换器的对比测试
我拿一个典型的电压模Buck变换器做了对比测试。输入12V,输出3.3V,开关频率500kHz,输出电容100μF,电感10μH。补偿网络用的是Type III补偿。
STB仿真结果:相位裕度62度,穿越频率45kHz,增益裕度15dB。
Middlebrook双注入法结果:相位裕度58度,穿越频率43kHz,增益裕度13dB。
差异分析:STB仿真给出的相位裕度偏乐观了4度左右。这个差异主要来自STB仿真对断点阻抗的近似处理。在这个电路中,断点处的输出阻抗不是无穷大也不是零,STB的近似引入了一定误差。双注入法的结果更接近实际测量值。
5.2 电流模控制下的显著差异
换成电流模控制的Buck变换器后,差异就非常明显了。同样的功率级参数,只是控制方式从电压模换成了电流模。
STB仿真结果:相位裕度55度,穿越频率60kHz。
Middlebrook双注入法结果:相位裕度38度,穿越频率55kHz。
这个差异就非常大了。STB给出的55度看起来还行,但双注入法给出的38度已经接近不稳定边缘了。后来实际测板子,果然在负载跳变时出现了明显的振铃,验证了双注入法的结果更准确。
原因在于:电流模控制下,环路的断点处存在电流环和电压环的相互作用,STB仿真无法正确处理这种多环路耦合,导致结果偏乐观。
5.3 差异根源的深入剖析
两种方法结果差异的根源主要有三个:
第一,断点阻抗的处理方式不同。STB仿真假设断点处满足一定的阻抗条件,如果实际阻抗不满足,结果就有偏差。双注入法通过两次测量消除了阻抗影响。
第二,对双向传输的处理能力不同。STB仿真只能处理单向传输,如果电路中存在反向通路(比如前馈电容、寄生耦合等),STB就无能为力。双注入法可以处理双向传输。
第三,对多环路系统的适用性不同。STB仿真本质上是单环路分析工具,对于电流模控制这种存在内环和外环的系统,STB的结果只能反映其中一个环路的特性。双注入法可以同时考虑多个环路的相互作用。
6. 避坑指南:我踩过的那些坑
6.1 断点选择不当导致的错误结果
这是我早期最常犯的错误。有一次做一个LDO的环路仿真,我随手在反馈分压电阻的中间节点断了环,STB跑出来相位裕度70多度,看着很漂亮。结果板子一上电就振荡。
后来仔细分析才发现,反馈分压电阻的中间节点并不是一个合适的断点。这个节点同时连接了反馈网络和误差放大器的输入,断开后改变了输入偏置电流的路径,导致误差放大器的工作点偏移,仿真结果完全不可信。
正确的做法是在误差放大器的输出和功率管的栅极之间断开。这个位置信号单向传输,断开后不影响直流工作点。
避坑要点:断点必须选在信号单向传输的路径上,且断开后电路的直流工作点基本不变。如果不确定,可以先做一次直流仿真,对比断开前后的工作点。
6.2 注入幅度设置不当引发的非线性
STB仿真的注入幅度设置也有讲究。我见过有人用10V的注入幅度,结果仿真出来的波特图完全不对。原因是注入幅度太大,电路进入了非线性区,小信号分析的前提不成立了。
我一般用1V注入幅度,如果发现结果异常,会降到0.1V再试。对于低压电路,比如1.2V输出的LDO,注入幅度要更小,一般用0.01V到0.1V。
双注入法的注入幅度也要注意。电压注入一般用1V,电流注入一般用1A。但如果电路阻抗很高,1A的电流注入可能会导致电压超出电源轨,这时候要适当降低电流注入幅度。
6.3 仿真不收敛的排查思路
环路仿真不收敛是另一个常见问题。尤其是STB仿真,如果直流工作点不收敛,STB根本跑不起来。我总结了一套排查流程:
第一步,先单独跑直流仿真,确认直流工作点能收敛。如果直流都不收敛,先解决直流问题。
第二步,检查断点位置是否合理。有些断点位置会导致电路在断开后进入异常状态,比如输出悬空、输入短路等。
第三步,检查注入源设置。注入源的直流偏置要正确,不能引入额外的直流偏移。
第四步,尝试降低注入幅度,或者增加仿真迭代次数。
第五步,如果还是不行,可以尝试用.options语句调整仿真器的收敛参数,比如reltol、abstol等。
6.4 结果解读中的常见误区
最后说说结果解读的误区。很多人看到相位裕度大于45度就觉得没问题了,其实不然。
首先,相位裕度只是其中一个指标,还要看增益裕度、低频增益、带宽等。其次,仿真结果和实际测量之间总有差异,一般要留10度以上的余量。最后,不同的负载条件下环路特性会变化,要在最恶劣的负载条件下验证。
我一般会在轻载、半载、满载三种条件下分别仿真,取最差的结果作为设计依据。如果最差条件下相位裕度仍然大于45度,那基本就稳了。
7. 我的实操心得与建议
做了这么多年的环路仿真,我最大的体会是:不要迷信任何一种仿真方法,要用多种方法交叉验证。STB仿真快,适合迭代;双注入法准,适合签核。两者结合使用,效率最高。
另外,仿真终究是仿真,最终还是要靠实测验证。我一般会在板子上预留断点测试点,方便用网络分析仪实测环路增益。实测结果和双注入法仿真的吻合度通常很好,和STB仿真的差异则取决于电路拓扑。
还有一点,补偿网络的设计不要只盯着相位裕度。有时候相位裕度很漂亮,但负载跳变响应很差,这是因为带宽不够或者低频增益不足。环路设计是一个多目标优化问题,要综合考虑稳定性、精度、响应速度。
最后分享一个小技巧:在Cadence中做双注入法仿真时,可以把两次仿真的设置保存成两个不同的ADE state,然后用脚本自动切换和运行。这样每次迭代只需要点一下按钮,省去了手动切换的麻烦。我自己的脚本已经用了好几年,稳定性很好,推荐你也试试。