1. 为什么初学者第一次做LDO,我首推无片外电容这种“地狱模式”
1.1 传统LDO的舒适区:外接大电容把稳定性问题藏了起来
传统低压差线性稳压器(LDO)的标准画法,是输出端挂一个1μF甚至10μF的陶瓷电容。这个电容带来的好处,初学者往往意识不到:它把输出节点的等效阻抗压得极低,输出极点被牢牢钉在几十赫兹到几百赫兹的位置,成为整个环路的主极点。只要你的误差放大器次极点落在带宽之外,相位裕度几乎不用怎么操心。大电容还顺带承担了负载瞬态响应的大部分能量——当负载从1mA瞬间跳到50mA,电容先放电顶着电压,环路再慢慢调整功率管栅极,过冲和下冲都能控制在吓人的水平。
所以传统LDO设计的新手任务,基本就是“套一个反馈网络,调一下EA增益,确认带宽合适”,大部分心思花在压差、静态电流、噪声这些指标上。稳定性问题被那颗电容一遮,很多时候你根本不知道自己在躲避什么。
1.2 无片外电容LDO“逼”你从头理解反馈环路
无片外电容LDO(业内常叫Capless LDO或Output-Capacitorless LDO)的设计语言完全不同:输出端只有寄生电容和可选的少量片上去耦电容,那颗十拿九稳的低频主极点消失了。输出极点变成了一个随负载电流大幅度移动的“游标”,你必须在没有外部电容兜底的情况下,自己把整个零极点图扳正。
我之前带过A同学做这个题目,他前两周还在按传统LDO的思路设计,结果stb跑出来轻载相位裕度只有十几度,直接开始怀疑人生。后来被迫把EA输出阻抗、功率管栅极寄生、buffer等效输出阻抗、输出节点的移动极点全部啃了一遍,才算真正弄明白“环路稳定”这四个字是什么意思。做完之后他自己说,再看其他模拟模块,脑子里会自动开始画零极点,而不是只盯增益那几个数字。
1.3 在实际SoC里,无片外电容LDO是刚需
无片外电容LDO不是实验性质的玩具。现在一颗SoC里面几十路电源轨,每个LDO都外挂一颗大电容,引脚和板级面积都不可接受。所以集成度越高的芯片,越需要能靠片内补偿稳住的LDO,同时还要保证负载阶跃时的电压跌落控制在容差内。130nm工艺虽然不算先进,但它的模型成熟、流片成本低,把无片外电容LDO里最核心的稳定性问题做透之后,再往更小尺寸工艺迁移,方法论是完全通用的。
所以我的建议很直接:如果你是认真想练模拟设计基本功的人,第一颗LDO就这样做,别走传统LDO那条“轻松路”。
2. 稳定性才是最大的坎:为什么去掉大电容后极点会乱跑
2.1 输出极点不再可靠,负载一变它就跑
先看输出节点的极点频率,大概估算为:
fp_out ≈ 1 / (2π × Rout × CL_out)
其中Rout是输出节点等效电阻,约等于负载电阻RL与功率管输出阻抗ro_p的并联;CL_out是输出节点的总电容,包括寄生电容和片上去耦电容。因为功率管输出阻抗通常远大于负载电阻,重载时Rout主要由RL决定。负载电流从0.1mA到50mA变化,RL可能从几千欧掉到几十欧,输出极点的位置可以横跨几个数量级。
传统LDO外挂大电容时,CL_out被外部电容顶到微法量级,fp_out低到几十赫兹,RL怎么变都压不住它,主极点位置几乎不动。无片外电容LDO的CL_out往往只有几十皮法,fp_out就变成一个极不可靠的角色:轻载时它掉进低频,重载时它冲向高频。你无法再用“把它当主极点再用带宽躲开”的简单策略,因为它在重载时会跑到带宽里去。
2.2 功率管栅极是另一个藏雷的地方
功率管栅极节点也是典型的高阻点。EA输出阻抗动辄几百千欧到兆欧级,直接驱动功率管时,栅极寄生电容Ccgs、Cgd等会和这个高阻形成很低的次极点。这个次极点有两个麻烦:第一,它本身位置不好控,栅电容不随负载变化,但EA输出阻抗受偏置电流和corner影响;第二,在轻载时,这个次极点可能落在单位增益带宽之内,直接吃掉相位裕度。
解决这个问题的标准动作是加一级源跟随器buffer。源跟随器的输入阻抗很高,不增加EA的负载;输出阻抗很低,可以快速驱动功率管栅极。栅极节点的等效阻抗被拉低之后,那个原本危险的次极点被推到高频,环路从“双高阻极点”变成“一个可控主极点加一个高频次极点”的结构。这一步几乎是无片外电容LDO的标配,几乎所有能稳定的结构里都会看到它的影子。
2.3 反直觉的结论:轻载往往比满载更危险
我当时做第一版时犯过这个错:所有精力都花在满载50mA的瞬态最优上,结果用1mA负载跑stb,相位裕度直接跌破20度。原因是满载时功率管gm大、环路增益高,同时负载电阻小,输出次极点很高,稳定和响应都容易做好。而轻载时负载电阻极大,输出极点掉到低频,如果环路带宽还保持在同一水平,次极点就会擦着带宽边缘甚至越过去,振荡随之而来。
工程上有两种常见应对。一是给LDO设计一个固定的最小拉载电流,比如在输出节点挂一个常开的片上下拉电流源,让输出电阻不会无限大,把输出极点顶到一个可预测的位置。代价是额外消耗一点静态电流,对大多数低压供电轨完全能接受。二是在补偿网络上下工夫,让主极点的位置随负载变化自适应调整,这就是所谓“自适应频率补偿”的思路。对初学者来说,第一种方法简单可靠,适合先跑通;第二种方法可以等第一版稳定之后再研究。
3. 架构选型:用最朴素的方式搭一个能闭环的LDO
3.1 先给一版适合初学者的设计指标
做设计一定要先定规格,没有spec就无法判断仿真结果对错。用130nm工艺做无片外电容LDO,我给出一组比较合理的入门指标,也是我习惯作为起点的配置:
| 参数 | 符号 | 设计目标 | 备注 |
|---|---|---|---|
| 输入电压 | Vin | 2.7V ~ 3.6V | 3.3V电源域 |
| 输出电压 | Vout | 1.8V | 固定输出 |
| 最大负载电流 | Iload_max | 50mA | 可继续扩展 |
| 最小负载电流 | Iload_min | 0.1mA | 关注轻载稳定性 |
| 静态电流 | Iq | < 40μA | 不含功率管静态电流 |
| 压差电压 | Vdropout | < 300mV @50mA | 决定功率管尺寸 |
| 负载瞬态过冲/下冲 | ΔVout | < 100mV | 20%~80%负载阶跃 |
| 相位裕度 | PM | > 50° | 所有corner和负载条件 |
这个指标做出来的芯片面积不会太大,仿真时间也能接受。如果你想更激进,可以把Iload_max提到100mA,但功率管面积和压差设计都要跟着调整,不建议第一次就压极限。
3.2 结构推荐:EA + 源跟随buffer + PMOS功率管
我推荐初学者先搭一个三层结构:第一级是高增益误差放大器EA,第二级是源跟随器buffer,第三级是PMOS功率管。反馈网络用电阻分压从Vout采样送到EA反相输入端,基准电压Vref接到同相输入端。
EA的作用是提供足够的直流增益,让线性调整率和负载调整率都能做上去。Buffer的作用前面说过,就是降低功率管栅极阻抗,把危险的次极点推走。PMOS功率管的源极接Vin,漏极接Vout,本质上是一个共源放大级,把栅极电压的变化转换成功率管电流的变化。
这个结构最大的好处是每一级的职责非常清晰,调试时出了问题能快速定位——增益不够就去查EA,轻载振荡先看buffer,瞬态过冲太大就回头调带宽和功率管尺寸。对比论文里常见的反转跟随器LDO或者超级源跟随器结构,这种经典三级环路的性能不会最顶尖,但它是正确的学习路线。
3.3 功率管尺寸粗算:先把导通电阻做够
功率管的尺寸直接决定最大负载能力和压差。以50mA最大负载、300mV压差为目标,要求功率管导通电阻大约为:
Ron ≈ Vdropout / Iload_max = 300mV / 50mA = 6Ω
130nm工艺下,PMOS管在低压差工作点通常处于线性区。粗算时可以按μpCox(W/L)约为50μA/V²的量级估,具体数字要查PDK模型,但思路是先用Iload_max和Vdropout定出导通电阻,再反推W/L。以典型参数估算,W/L可能需要几百到上千;如果取L=0.5μm,那么W可能要几百微米到毫米级别。这还不是最夸张的,后续版图里功率管会占去很大一块面积,这是正常现象。
这里有个新手常犯的错误:以为功率管越大越好。管子大了栅电容也大,buffer的驱动压力成倍增加,瞬态时栅极充放电跟不上,反而会拖垮稳定性和恢复时间。所以尺寸计算应该由压差指标驱动,而不是盲目往上堆。
3.4 EA和buffer的偏置考虑
EA的输入对管可以用PMOS差分对,也可以nMOS差分对。电源电压2.7V时,PMOS输入更省心,输入共模范围覆盖Vref附近比较容易。EA的尾电流源给3μA到5μA就可以,增益做到40dB以上;如果想要更高增益,可以用套筒共源共栅结构,但会压摆幅,对初学者可以先不做。
Buffer是源跟随器,NMOS源跟随器比较常见。它需要给功率管栅极提供充放电电流。负载从轻载跳到满载时,功率管栅极要被快速拉低来增大电流,这个电流就来自buffer。如果你发现瞬态仿真里Vout恢复很慢,多半是buffer的静态电流不够,把它的偏置电流加到10μA到20μA会明显改善。当然,静态电流也会跟着涨,这里要做取舍。
反馈分压电阻的取值也放在架构阶段想清楚:流过两个反馈电阻的电流应该远小于静态电流预算,同时又要让节点阻抗不至于太高。常用区间是几十千欧到几百千欧,取电阻分压电流在2μA到5μA即可。
4. 补偿细节:把主极点放对位置,把次极点推出去
4.1 米勒补偿仍然是首选,但要配调零电阻
在我的经验里,无片外电容LDO要稳定,几乎所有拓扑都离不开某种形式的频率补偿。对EA+buffer+PMOS结构来说,最早、也最好用的方案是米勒电容跨接在EA输出端和Vout之间,利用密勒效应把较大的等效电容“搬”到EA输出高阻节点上,在那里形成稳定的主极点。
这里有一个很多资料不会明说的要点:米勒电容的取值不能拍脑袋。取太小,极点分裂效果不足;取太大,带宽被压得过低,瞬态响应变得一塌糊涂。对50mA级别、带宽目标在几百kHz到1MHz的设计,米勒电容从几pF起步,根据stb结果逐步调整。还有一个伴随出现的右半平面零点,这是米勒补偿的天然副作用,由跨接电容和功率管跨导共同产生。这个零点会造成相位提前恶化,如果不去掉,高频相位裕度会被进一步透支。
4.2 调零电阻:把右半平面零点扳回左半平面
常规做法是在米勒电容支路上串联一个电阻Rz,人为把零点移入左半平面,并让它和某个次极点配对抵消。Rz的典型取值可以从几十千欧到几百千欧,具体要看米勒电容和功率管跨导。一个建议的调试顺序是:
- 先把对地补偿电容或多余的杂散电容清干净,只看米勒电容的单极点效果;
- 用stb跑出相位曲线,记下单位增益频率和相位裕度;
- 给米勒电容串上Rz,从较大值开始往下扫,观察相位曲线是否出现“上凸”;
- 把Rz调到相位上凸最明显且稳定性余量最大的位置,再回头微调Cc。
这个顺序可以让你的每次调节都有明确目的,而不是来回乱试。需要注意,Rz太小或太大都会让补偿失效:太小零点还在右半平面附近,太大零点被推到很低频,可能影响低频相位。
4.3 片上小电容:能用还是用一点
无片外电容LDO不代表完全不许有片上电容。在输出节点放几十到几百pF的片上去耦电容,既能帮助压低输出极点的位置,也是提升负载瞬态响应的直接武器。130nm工艺下,MOS电容的密度足够你放几百pF而不会太心疼面积。
但片上去耦电容有两个坑:第一,MOS电容是非线性的,反型电容随电压变化漂移,大信号瞬态下等效容值在变,stb仿真时的小信号AC结果不能完全代表真实行为,所以一定要配合tran验证极端负载跳变。第二,电容放在版图哪里很关键,如果离功率管漏极和输出pad太远,中间的金属电阻和寄生电感会让这个电容在高频下“失效”。谁都希望在输出节点看到的是一个干净的理想电容,但在物理实现时它会带上寄生尾巴。
4.4 最坏情况的组合要心里有数
不同corner、温度和负载的组合下,环路的性能表现差异极大。以SMIC 130nm工艺的经验来说,至少要把下面几组当成必测项:
| 组合 | 典型表现 | 重点关注 |
|---|---|---|
| ss corner、85℃、轻载 | 迁移率低、阈值高,环路增益低,输出极点低频 | 相位裕度、振荡风险 |
| ff corner、-40℃、满载 | 迁移率高,带宽最大,瞬态最激进 | 带宽是否过大、次极点位置 |
| tt corner、25℃、中等负载 | 日常典型状态 | 作为基准调节补偿 |
| 多组负载电流扫描 | 轻载到满载覆盖所有极点位置 | 找出PM最差的工作点 |
初学者最容易犯的错就是只在tt corner和1mA负载下看到PM>60就宣布设计完成,等流片回来才发现ss corner下轻载振荡。后仿和corner矩阵扫描是必须的,这一点后面第五章再展开。
5. 仿真验证:stb只是开始,瞬态和PSR要一起看
5.1 stb testbench的连接姿势:一个tip让结果更可信
我在跑stb时,习惯把反馈采样点放在反馈电阻网络和EA反相输入之间,用Spectre的stb分析直接在断开点插入探针(iprobe)。这个方法的优点是探针位置的直流工作点很容易保持一致,不会因为人为附加偏置源而破坏环路原貌。设置时,先把反馈环路断开,插入iprobe,然后选stb模式,不需要额外加AC激励源,工具会自动带入环路激励。
新手容易犯的错误是stb仿真时忘了把负载条件做齐全。有很多次我看到别人测出来PM很高,结果负载电流只设了一个值。无片外电容LDO恰好在轻载和重载两端都可能出问题,所以必须把Iload从0.1mA到满载扫一遍,看PM曲线包络。最好写个脚本,对每个corner、温度、负载组合都跑一次stb,把相位裕度结果汇总成表格。
5.2 负载瞬态仿真:过冲和恢复时间谁更关键
瞬态仿真的标准做法是在输出端挂一个理想电流源作为负载,从满载的20%跳到80%或从1mA跳50mA,观察Vout的过冲、下冲和恢复时间。这里要给仿真器设一个足够小的maxstep,否则那些几十纳秒的振铃会被直接滤掉,你会误以为环路很稳。
实操中的普遍规律是:环路带宽越宽,负载瞬态过冲越小,但稳定性余量越薄;带宽越窄,越稳,但瞬态恢复拖沓。你需要做的是在给定PM余量前提下,尽可能把带宽顶高。如果仿真里看到输出在下冲之后还跟着一串衰减振荡,说明相位裕度偏低,最好是趁这个时候回头查补偿,而不是用假收敛掩盖问题。
5.3 PSR:无片外电容LDO的天然软肋
电源抑制比(PSR)曲线要单独跑。在Vin上加一个小信号AC,在Vout上看衰减量。低频时PSR主要由环路增益决定,你的EA增益有40dB以上,低频PSR大致能到-40dB甚至更好。高频时环路增益已经掉下去,衰减主要靠功率管输出阻抗和输出电容,而无片外电容LDO没有外部大电容,高频PSR通常只有-10dB到-20dB,甚至更差。
如果这块LDO后面要供给RF或模拟敏感电路,我通常会建议再加一级RC滤波或第二个LDO,而不是指望这一级偷偷把高频纹波压下去。PSR不好是结构决定的,靠换补偿很难有本质改变。
5.4 电源地路径的寄生:别太早加,也别一直不加
初学者很容易在初版仿真时就给Vin串一个大电感、给地串一个大电阻,结果所有指标都难看,还找不到根因。我的做法分两步:裸环设计阶段,尽量不加封装和引脚寄生,只看电路本身能不能闭环稳定;版图基本完成后,再把bonding线电感、封装引脚电容、PCB走线寄生加进去做最终确认。如果裸环在多种corner下已经有足够的PM余量,加上寄生后的表现通常不会有断崖式恶化,这样排查问题也更干净。
6. 版图落地:130nm工艺里那些容易被忽视的动作
6.1 功率管布局:指宽、走线与通孔都是性能的一部分
功率管的W/L数值动辄几百微米比零点几微米,版图上必须做成多指折叠结构。指宽的选择很讲究:通指宽偏大,栅极多晶硅电阻会变大,EM风险高;通指宽偏小,源漏区的边界电容占比上升。对130nm工艺,单指宽度取5μm到10μm是比较稳妥的起点,具体以电流密度规则和EM检查结果为准。
金属走线也必须按电流密度规划。功率管漏极到输出pad之间的金属要走足够宽,孔(via)要成阵列打过,否则大电流下金属会熔断或IR drop太大,直接吃掉你的压差余量。我见过有人在功率管源漏上方只走了一层金属,满载仿真时IR drop超过100mV,整个设计指标直接失效。
6.2 EA和偏置电路的匹配性
差分输入对的失配会转化为输入失调电压,直接影响输出电压精度。130nm工艺下,匹配关系基本遵循经典版图规律:用common centroid结构,周围加dummy管,两边保持对称;有源镜像电流源也尽量放在同一块隔离区内,温度梯度保持一致。偏置电阻如果阻值很大,要注意高阻节点不能长距离走线,否则微弱的漏电电流会在节点上产生不小的电压偏移。
6.3 片上去耦电容的位置:靠近输出主干,别给寄生留机会
前面说过,输出节点放几十到几百pF的片上去耦电容是划算的。摆放原则是:电容的一端尽量贴住Vout金属主干,另一端直接接地或接电源,中间不要穿太多层过孔,也不要让功率管到pad的电流路径被电容接入点“截断”而增加有效电感。我在调试一个仿真模型时发现,同样的200pF电容,摆得离pad近一点和远一点,在20MHz附近PSR能差出6dB,高频相位特性也有可见不同。
6.4 ESD保护结构带来的寄生必须算进去
输出pad上通常要加ESD保护结构,它的寄生电容和漏电流会被直接加到输出节点上。对普通电路来说,几十fF到几百fF的寄生可能无关痛痒,但无片外电容LDO的输出节点本来就是最敏感的区域,ESD管的电容可能和对地杂散电容相当,必须把这部分寄生模型带入后仿。如果不带,你的后仿稳定性和实测可能会有明显出入。
7. 振荡了怎么办:按这套排查思路走,别乱调补偿
7.1 先排除“假振荡”:仿真步长和负载条件
仿真波形如果出现高频振铃,第一件事不是怀疑补偿,而是看这个振铃是不是因为tran的maxstep设得太大,错过了一些真实的转折点。把maxstep改成振荡周期的1/10再跑一次,如果振铃消失且波形平滑,说明之前是数值假象。第二步检查负载电流是否已经出现在stb里扫过的覆盖范围内,很多“仿真里振荡”其实就是某个负载点恰好落在PM谷里。
7.2 stb说稳但瞬态在振的经典原因
我整理过一张自查表,遇到这种矛盾基本可以按下面几项逐一核对:
| 现象 | 可能原因 | 验证手段 |
|---|---|---|
| stb PM不错,但瞬态有长尾振铃 | 补偿电容非线性,AC小信号结果与tran大信号不一致 | 把tran的负载阶跃幅度降低再看 |
| 轻载振荡,重载正常 | 输出极点随负载跑到带宽附近,PM谷在轻载 | 扫Iload的PM曲线,确认谷点 |
| 换corner后突然振荡 | Rz和Cc组合只针对tt corner,ss/cff下极点移动 | 重新扫Rz和Cc的corner敏感性 |
| 带上parasitic后PM骤降 | 功率管栅极或输出节点的额外寄生电容改变极点位置 | 单独逐项加寄生,定位最大贡献者 |
| 高频振铃频率远超带宽 | 多半是buffer或偏置环路局部振荡,不是主反馈环 | 断开主反馈,单独仿真buffer环路 |
7.3 两个实用守则
守则一是所有corner稳定之后,再把带宽“往回压一档”。模型和实际流片之间永远存在偏差,仿真里PM=50勉强糊弄过去,实测很可能只剩40不到。我习惯至少留出10到15度的余量,宁可用带宽换一点稳定性。
守则二是建立扫参脚本,把corner、温度、负载电流、补偿电阻做成矩阵扫描,一次性把PM最差的组合挑出来。手工仿真只会记住你测过的那几种情况,而脚本扫描能告诉你最坏点在哪里。很多“我流片回来发现振荡”的悲剧,根子上就是仿真覆盖不全,这件事值得花半天时间把脚本写好。
无片外电容LDO真正让我受益的不是电路本身,而是它强迫我形成了“先怀疑验证条件,再怀疑电路结构”的排查顺序。模拟设计的大多数振荡问题,最后追到底往往不是某个玄学原因,而是某个corner下极点位置超出了预期。只要仿真矩阵跑得够全,问题基本都是可定位、可修复的。这套经验放到其他模拟模块,一样管用。