4. 双极点系统
双极点系统,说白了就是运放里最常见的“麻烦精”。你想想看,一个运放内部少说也有两三级增益级,每一级贡献一个极点,两个极点凑在一起,相位就很容易掉到 -180° 附近。这时候如果不做补偿,反馈一加上去,振荡几乎是必然的。
我刚开始做运放设计那会儿,就吃过这个亏。一个两级 Miller 补偿的运放,layout 回来测试,发现输出端在 1MHz 附近有个小尖峰——嗯,相位裕度不够了。后来老老实实算了一遍,才发现自己当初偷懒没仔细算相位裕度。
4.1 双极点系统的传递函数
一个典型的双极点系统,开环传递函数可以写成:
H(s) = A₀ / [(1 + s/ωp₁)(1 + s/ωp₂)]
其中:
- A₀ —— 直流开环增益
- ωp₁ —— 主极点(频率较低的那个)
- ωp₂ —— 次极点(频率较高的那个)
如果两个极点离得很远(比如 ωp₂ > 10·ωp₁),那系统近似为单极点,相位裕度还不错。但如果两个极点靠得近,相位下降就会变得很陡。
关键点:双极点系统的相位在 ωp₁ 处开始下降,到 ωp₂ 处已经掉了 -90°,过了 ωp₂ 继续掉到 -180°。单位增益带宽(GBW)附近的相位裕度,直接决定了系统是否稳定。
4.2 相位裕度怎么算?
相位裕度(Phase Margin, PM)的定义很简单:
PM = 180° + ∠H(jω₀)
其中 ω₀ 是开环增益降到 0dB 时的频率(即单位增益带宽)。
对于双极点系统,在 ω₀ 处的相位可以近似为:
∠H(jω₀) ≈ -arctan(ω₀/ωp₁) - arctan(ω₀/ωp₂)
如果 ω₀ 远大于 ωp₁(通常是这样),第一个 arctan 接近 90°,所以:
PM ≈ 90° - arctan(ω₀/ωp₂)
举个例子:假设 ωp₂ = 2·ω₀,那么 PM ≈ 90° - arctan(0.5) ≈ 63.4°。这个值还算安全。但如果 ωp₂ = ω₀,PM ≈ 90° - 45° = 45°,已经有点危险了。
| ω₀ / ωp₂ | 相位裕度(近似) | 稳定性评价 |
|---|---|---|
| 0.1 | 84.3° | 非常稳定 |
| 0.5 | 63.4° | 良好 |
| 1.0 | 45.0° | 临界,需谨慎 |
| 2.0 | 26.6° | 不稳定,必须补偿 |
| 5.0 | 11.3° | 几乎肯定振荡 |
我的经验:设计时我习惯把相位裕度做到 60° 以上。低于 45° 的电路,在工艺角、温度变化下很容易翻车。曾经有一个项目,室温下 PM=50°,到 -40°C 时直接掉到 30°,输出波形开始振铃——那次之后我学乖了,留够余量。
4.3 为什么需要补偿?
不补偿的双极点系统,在闭环使用时会出现什么问题?我列几个常见的:
- 输出振荡 —— 相位裕度接近 0° 时,负反馈变成正反馈,电路自激。
- 阶跃响应过冲大 —— PM 在 30°~45° 时,虽然不振荡,但过冲可能超过 30%,对 ADC 驱动等应用不可接受。
- 带宽受限 —— 为了稳定,你可能被迫降低闭环增益,牺牲速度。
补偿的本质,就是人为地改变极点位置,让相位裕度回到安全区。最常见的做法是 Miller 补偿——在主极点处加一个电容,把主极点往低频推,同时把次极点往高频推(极点分裂效应)。
注意:补偿不是万能的。补偿电容加得太大,虽然相位裕度上去了,但压摆率(SR)和带宽都会下降。这是一个 trade-off,需要根据应用场景来平衡。
4.4 双极点系统的频率响应可视化
下面这张图展示了双极点系统在补偿前后的幅频和相频变化。你可以直观地看到,补偿后主极点左移,次极点右移,单位增益带宽处的相位裕度明显改善。
4.5 补偿的常见方法
针对双极点系统,我常用的补偿手段有这几种:
- Miller 补偿(电容跨接) —— 在两级运放的高阻节点之间加电容,利用 Miller 效应把主极点压低。这是最经典的方法。
- 零点抵消 —— 在 Miller 电容路径上串联一个电阻(Rz),引入一个左半平面零点,用来抵消次极点的相位影响。我习惯把零点设置在 1.2~1.5 倍 GBW 位置。
- 负载电容补偿 —— 如果负载本身是容性的,可以利用它来压低输出极点。但要注意负载变化范围。
- 嵌套 Miller 补偿(NMC) —— 三级或更多级运放中常用,通过多层 Miller 电容实现稳定。
避坑指南:我曾经在一个项目中用了 Miller 补偿,但忘记考虑 Miller 电容引入的右半平面零点。结果仿真时相位裕度看起来不错,实际测试却在高频处出现了一个小尖峰。后来加了调零电阻才解决。所以,用 Miller 补偿时一定要检查零点的位置。
4.6 仿真验证相位裕度
在 Cadence 或 HSPICE 中验证相位裕度,步骤很简单:
- 断开反馈环路,在断开点插入一个交流激励源(通常用
iprobe或vprobe)。 - 跑 AC 仿真,扫描频率从 1Hz 到 10 倍 GBW。
- 查看开环增益曲线和相位曲线,找到增益为 0dB 的频率点,读取该点的相位值。
- 用 180° 减去该相位值,就是相位裕度。
下面是一个简单的 Spectre 网表示例:
// 双极点运放开环AC仿真
simulator lang=spectre
ahdl_include "opamp_subckts.scs"
I1 (vdd gnd) isource dc=10u
// 断开反馈,插入iprobe
Xop (vin vout vdd gnd) opamp_two_stage
iprobe (vout fb) iprobe
// 交流激励
VAC (fb gnd) vsource dc=0 type=ac mag=1
// AC分析
ac dec 100 1 100MEG
plot gaindB(vout) phaseDeg(vout)
跑完仿真,在波形窗口里用计算器读出 0dB 处的相位,比如 -115°,那么 PM = 180 - 115 = 65°。这个值很理想。
注意:仿真时一定要包含寄生参数。我记得有一次只做了前仿,PM=70°,后仿提取寄生后 PM 掉到了 40°。所以,后仿真的相位裕度才是真正需要关注的。
4.7 小结
双极点系统的相位裕度计算,说白了就是看次极点离单位增益带宽有多远。距离越远,PM 越大,系统越稳定。补偿的核心思路就是拉开两个极点的距离,让主极点更低、次极点更高。
我个人习惯在设计初期先用公式估算 PM,再用仿真验证,最后留出 10°~15° 的余量应对工艺角变化。这样流片回来的芯片,基本不会在稳定性上出问题。