4、调零电阻(Nulling Resistor):消除右半平面零点,提高相位裕度的实战技巧

各位好,我是老周。今天咱们聊聊调零电阻——这个在两级运放补偿里,我个人觉得最巧妙、也最容易被忽视的技巧。

你想想看,密勒补偿虽然好用,但它会引入一个右半平面(RHP)零点。这个零点很讨厌,它会让相位裕度变差,甚至让运放振荡。我刚开始做运放设计时,就吃过这个亏。有一次流片回来,测试发现运放总在某个负载条件下自激振荡,查了三天,最后发现是RHP零点在作怪。

那怎么解决?加个调零电阻。说白了,就是在密勒电容的路径上串联一个电阻,把那个讨厌的RHP零点推到高频,甚至推到左半平面去。

4.1 RHP零点是怎么来的?

先简单回顾一下。两级运放的密勒补偿结构里,从输入到输出有一条前馈路径——通过密勒电容Cc直接耦合。这条路径在高频时会产生一个零点,位置在:

z1 = +gm2 / Cc

注意这个正号,说明它在右半平面。RHP零点带来的问题有两个:

  • 增益下降变慢:零点会抵消一部分极点的影响,让增益滚降变缓
  • 相位滞后增加:RHP零点贡献的是相位滞后,不是超前。这会让相位裕度雪上加霜

我记得有一次做项目,仿真时相位裕度只有35度,怎么调偏置电流都没用。后来一分析,就是RHP零点在作怪。嗯,从那以后我每次做两级运放,都会先算一下零点位置。

4.2 调零电阻的原理

调零电阻的思路很简单:在密勒电容Cc的路径上串联一个电阻Rz。这样,前馈路径的阻抗变了,零点位置也跟着变。

加上Rz后,新的零点表达式为:

z1 = 1 / [Cc * (1/gm2 - Rz)]

看到了吗?当Rz = 1/gm2时,分母为零,零点被推到无穷远。当Rz > 1/gm2时,零点变成负的——也就是说,它跑到左半平面去了!

关键点:调零电阻可以把RHP零点变成LHP零点,或者直接把它推到高频区域。这样,零点对相位裕度的负面影响就被消除了。

我个人习惯把Rz设置在略大于1/gm2的位置,这样零点变成LHP零点,还能贡献一点相位超前,对稳定性更有利。

4.3 实战:如何选择Rz的值?

选Rz不是拍脑袋的事。我一般按以下步骤来:

  1. 先仿真出gm2:第二级输入管的跨导,这个值随工艺角和温度会变化
  2. 计算1/gm2:得到理论上的临界值
  3. 留余量:取Rz = (1.2 ~ 1.5) / gm2,确保在最差条件下Rz > 1/gm2
  4. 仿真验证:跑AC仿真,看相位裕度是否达标

实战技巧:我建议在Rz两端并联一个可调电阻的测试结构(比如用MOS管做),这样在芯片回来后还能微调。我在一个高速ADC项目中就用过这招,省了一次改版。

4.4 调零电阻的实现方式

实际芯片里,Rz可以用两种方式实现:

实现方式 优点 缺点 适用场景
多晶硅电阻 线性好,温度系数可控 面积大,阻值固定 对精度要求高的设计
MOS管(工作在线性区) 面积小,可调谐 非线性,受工艺角影响大 需要后调校的设计

我个人更倾向于用多晶硅电阻,因为它的线性度好,不会引入额外的失真。但如果你做的是低功耗设计,面积受限,那用MOS管也是可以的,只是要留够裕量。

4.5 调零电阻对极点的影响

加了Rz后,不光零点变了,极点也会受影响。具体来说:

  • 主极点:基本不变,还是由Cc和输出阻抗决定
  • 次极点:会往高频推一点,这是好事
  • 新增一个极点:在Rz和Cc形成的RC网络上,位置大约在1/(Rz*Cc)

所以Rz不能太大。如果Rz太大,新增的极点会落在带宽内,反而坏事。我一般把Rz控制在1/gm2的1.2~2倍之间,这样新增极点远在GBW之外。

注意:Rz不是越大越好!我见过有人把Rz取得很大,结果新增极点掉进了单位增益带宽内,相位裕度反而更差了。记住,调零电阻是"调零"的,不是"调极"的。

4.6 一个完整的调零电阻设计流程

下面是我在实际项目中用的流程,你可以直接套用:

  1. 确定补偿电容Cc:根据负载电容和GBW要求,先定Cc
  2. 仿真得到gm2:在典型工艺角下,跑DC仿真得到第二级跨导
  3. 计算Rz范围:Rz_min = 1/gm2,Rz_max = 2/gm2
  4. 选初始值:取Rz = 1.5/gm2
  5. 跑AC仿真:看相位裕度,如果不够,微调Rz
  6. 跑工艺角仿真:在FF、SS、FS、SF下都验证一遍
  7. 跑温度仿真:-40°C到125°C都要过

我曾经在一个项目里,按这个流程走下来,相位裕度从35度提到了68度。效果很明显。

4.7 调零电阻的局限性

调零电阻不是万能的。它有几个局限:

  • 对工艺角敏感:gm2随工艺角变化,Rz的优化点也在漂
  • 增加噪声:电阻本身会贡献热噪声
  • 高频性能受限:在GHz级别的设计中,Rz的寄生电容会带来新问题

如果你做的是超高速设计,或者对噪声要求极高,那可能需要考虑其他补偿方式,比如前馈补偿或者嵌套密勒补偿。这些我们后面章节会讲到。

4.8 知识体系总览

下面这张图把调零电阻的核心逻辑串起来了:

调零电阻(Nulling Resistor)知识体系 问题:密勒补偿引入RHP零点 核心原理:在Cc路径串联电阻Rz,改变零点位置 零点变化 Rz=1/gm2 → 零点推到无穷远 极点变化 新增极点 1/(Rz·Cc) Rz > 1/gm2 → LHP零点,提升相位裕度 Rz过大 → 新增极点落入带宽,恶化稳定性 结论:Rz取1.2~2倍1/gm2,兼顾零点和极点 实现方式:多晶硅电阻(推荐) / MOS管线性区

这张图把调零电阻的来龙去脉讲清楚了。从问题出发,到原理,再到分支分析,最后落到实现方式。你设计时照着这个逻辑走,基本不会出错。

4.9 避坑指南

最后,分享几个我踩过的坑:

坑1:Rz取太小——我曾经在一个低功耗项目中,为了省面积把Rz取小了,结果RHP零点没推走,相位裕度只有30度。后来老老实实把Rz加上去,问题解决。

坑2:只仿典型工艺角——有一次我只在TT下仿真通过,结果FF下Rz相对1/gm2偏小,零点又跑回RHP了。从那以后,我每次都会跑全工艺角。

坑3:忽略Rz的寄生——在高频设计中,Rz本身的寄生电容会形成低通滤波,影响补偿效果。我建议在版图阶段就把Rz的寄生提取出来,重新仿真一遍。

好了,调零电阻的内容就这些。记住,它是个简单但有效的技巧,用好了能让你的运放稳如泰山。下次做两级运放时,不妨试试看。