1. 从一个不起眼却要命的电路模块说起
搞电源设计或者做芯片级电路的朋友,对UVLO这个词应该不陌生。UVLO,全称Under Voltage Lockout,中文叫欠压锁定。它不是什么高深莫测的算法,也不是什么前沿工艺,但如果你在设计DC/DC转换器、CMOS电源管理模块或者任何需要稳定供电的电路时忽略了它,轻则系统反复重启,重则烧管子、炸电容,甚至把后级负载一起带走。
我第一次真正重视UVLO,是在做一个12V转3.3V的DC/DC降压模块的时候。当时样机在实验室里跑得好好的,一拿到现场,上电瞬间输出就乱跳,负载端的MCU反复复位。查了半天,最后发现是输入电源在启动阶段有个缓慢爬升的过程,而我的转换芯片在输入电压还没达到稳定工作值的时候就开始尝试开关,结果占空比失控,电感电流直接冲到限流点。这个问题,本质上就是UVLO没处理好。
所以这篇内容,我想把UVLO这个东西从头到尾讲清楚。不管你是刚接触电源设计的新手,还是已经在做CMOS集成电路的老手,只要你的电路里有“供电”这个环节,UVLO就跟你有关。我会从它的基本原理讲起,然后拆解几种典型的UVLO电路实现方式,包括用分立元件搭的、用CMOS工艺做的、以及在HSPICE里怎么仿真验证。最后还会分享一些我在实际项目中踩过的坑和调试技巧。
这篇文章适合谁看?如果你是电子工程专业的学生,正在学模电或者电源管理,UVLO是一个非常好的切入点,能帮你把比较器、基准源、迟滞这些基础概念串起来。如果你是从业工程师,正在选型或者调试DC/DC芯片,那UVLO的阈值、迟滞、响应时间这些参数你一定绕不开。如果你在做CMOS集成电路设计,UVLO模块通常是你电源管理IP里的标配,理解它的晶体管级实现对你做低功耗设计很有帮助。
2. UVLO到底在锁什么:核心原理与设计逻辑拆解
2.1 为什么需要欠压锁定
要理解UVLO,先得理解一个基本事实:绝大多数电子电路都有一个“最低工作电压”。低于这个电压,电路的行为就不再受控了。比如一个CMOS反相器,当VDD低到接近阈值电压的时候,NMOS和PMOS可能同时导通,产生巨大的贯穿电流。再比如一个DC/DC控制器,当输入电压低于它的最低工作电压时,内部基准源可能还没建立,误差放大器输出不确定,PWM比较器的状态也是随机的,这时候如果还让开关管工作,那就是在赌博。
UVLO的核心任务就一个:在输入电压低于某个安全阈值时,强制关闭功率开关或者让电路进入休眠状态;只有当输入电压回升到安全阈值以上时,才允许电路正常启动。这听起来很简单,但实际设计中有几个关键问题需要想清楚。
第一个问题是阈值怎么定。阈值定得太高,输入电源稍微波动一下就触发保护,系统可用范围变窄;阈值定得太低,电路在危险区域工作的时间变长,可靠性下降。通常的做法是参考芯片内部基准电压和核心电路的最低工作电压,留出足够的裕量。比如一个标称12V输入的DC/DC,UVLO阈值可能设在8V到9V之间,这样即使输入有±20%的波动也不会误触发。
第二个问题是迟滞怎么设。如果UVLO只有一个固定阈值,那当输入电压在阈值附近来回波动的时候,电路就会反复开启和关闭,这叫“振荡”或者“打嗝”。解决方法是引入迟滞,也就是开启阈值和关闭阈值不一样。比如开启阈值是9V,关闭阈值是8V,这样输入电压从9V掉到8V以下才会关闭,从8V升到9V以上才会开启,中间有1V的缓冲带。
第三个问题是响应速度。UVLO不能太慢,否则输入电压已经掉到危险区域了,电路还在工作;也不能太快,否则对输入端的正常纹波和噪声过于敏感。通常UVLO的响应时间在微秒到毫秒级别,具体取决于应用场景。
2.2 UVLO的典型架构:比较器加基准源
最经典的UVLO实现方式,是用一个比较器加一个基准电压源。输入电压经过分压网络后送到比较器的同相端或者反相端,基准电压送到另一端,比较器的输出经过一些逻辑处理后去控制功率开关或者使能信号。
这个架构里,分压网络的设计很关键。假设我们要做一个开启阈值9V、关闭阈值8V的UVLO,用电阻分压的话,需要两个电阻R1和R2。比较器的参考电压假设是1.2V。那么开启的时候,输入电压9V经过分压后应该等于1.2V,也就是R2/(R1+R2) = 1.2/9 = 0.1333。关闭的时候,输入电压8V经过分压后应该等于1.2V减去迟滞电压。如果迟滞由比较器本身的输入失调或者正反馈产生,那分压比的计算就要把迟滞考虑进去。
这里有个实操中容易忽略的点:分压电阻的阻值不能太大,否则比较器的输入偏置电流会在电阻上产生误差;也不能太小,否则分压网络本身会消耗太多静态电流,对于低功耗应用来说是不可接受的。通常R1+R2的总阻值在几十kΩ到几百kΩ之间,具体要看比较器的输入偏置电流和系统的功耗预算。
2.3 迟滞的实现方式:正反馈与电流源
迟滞的实现方式主要有两种。一种是用正反馈,在比较器输出和同相端之间加一个反馈电阻,当输出翻转时,反馈电阻会把同相端的电压拉高或者拉低一点,从而改变比较阈值。这种方式的好处是简单,缺点是迟滞量受输出电平的影响,精度一般。
另一种方式是用电流源在分压节点上注入或者抽取电流。比如当比较器输出为高时,一个电流源向分压节点注入电流,使得该节点电压升高,等效于降低了输入阈值;当输出为低时,电流源关断,阈值恢复。这种方式迟滞量由电流源和分压电阻决定,精度更高,也更可控。
在CMOS工艺里,这两种方式都能实现。正反馈方式通常用几个晶体管就能搞定,面积小;电流源方式需要额外的偏置电路,但匹配性更好。具体选哪种,要看你的应用对迟滞精度的要求。
2.4 UVLO与其他保护机制的关系
UVLO不是孤立的。在实际的电源管理芯片里,它通常和过压保护、过流保护、过温保护一起构成一个完整的保护体系。UVLO负责输入电压的欠压场景,过压保护负责输入或者输出电压过高的场景,过流保护负责负载电流过大的场景,过温保护负责芯片温度过高的场景。
这些保护机制之间有时候会互相影响。比如UVLO触发时,功率开关关闭,输出电流下降,过流保护可能就不会触发;反过来,过流保护触发时,输出电压下降,如果输入电压也跟着下降,UVLO可能也会触发。所以在设计的时候,要确保各个保护机制的优先级和响应顺序是合理的,避免出现“保护套保护”导致系统完全锁死的情况。
3. 从分立元件到CMOS:UVLO的电路实现细节
3.1 用分立元件搭一个UVLO电路
如果你只是想验证UVLO的概念,或者你的项目对成本极其敏感,用分立元件搭一个UVLO是完全可行的。我最早学UVLO的时候,就是用LM393比较器加TL431基准源搭了一个。
具体电路是这样的:输入电压经过R1和R2分压后送到LM393的同相端,TL431产生的2.5V基准经过另一个分压网络送到反相端。LM393的输出通过一个上拉电阻接到VCC,同时通过一个反馈电阻R3接到同相端,形成正反馈迟滞。当输入电压升高到开启阈值时,同相端电压超过反相端,LM393输出翻转为高,反馈电阻R3把同相端电压进一步拉高,形成迟滞。当输入电压降低到关闭阈值时,同相端电压低于反相端,输出翻转为低,R3把同相端电压拉低,完成迟滞。
这个电路里,R3的取值决定了迟滞量。R3越小,正反馈越强,迟滞越大。但R3也不能太小,否则会影响分压网络的精度。我当时的取值是R1=100kΩ,R2=20kΩ,R3=1MΩ,TL431的基准分压电阻是10kΩ和10kΩ,得到的开启阈值大约是9.2V,关闭阈值大约是8.1V,迟滞1.1V,实测下来很稳。
注意:用分立元件搭UVLO的时候,比较器的输入共模范围一定要覆盖你的分压节点电压。比如LM393的输入共模范围是0到VCC-1.5V,如果你的分压节点电压接近VCC,比较器就可能工作不正常。
3.2 CMOS工艺下的UVLO实现
在CMOS集成电路里,UVLO通常是作为一个IP模块存在的。它的实现方式和分立元件版本在原理上是一样的,但具体电路要复杂得多,因为要考虑工艺偏差、温度漂移、功耗和面积。
一个典型的CMOS UVLO电路包含以下几个部分:基准电压源、分压网络、比较器、迟滞控制逻辑和输出驱动。基准电压源通常用带隙基准或者MOS管阈值电压基准,前者精度高但面积大,后者精度差但面积小。分压网络用高阻值多晶硅电阻实现,总阻值通常在几百kΩ到几MΩ之间,以降低静态功耗。比较器通常是两级或者三级结构,第一级是差分输入级,第二级是增益级,第三级是输出缓冲。迟滞控制逻辑用几个逻辑门和反馈晶体管实现。
在CMOS工艺里做UVLO,最头疼的问题是电阻的工艺偏差。多晶硅电阻的绝对值偏差可能达到±20%,这会导致UVLO阈值也跟着偏。解决方法是尽量让阈值由基准电压和电阻的比值决定,而不是电阻的绝对值。比如用两个相同类型的电阻做分压,它们的比值偏差就会小很多,因为同类型的电阻在同一个芯片上的匹配性通常很好,比值偏差可以控制在±1%以内。
另一个问题是比较器的失调电压。CMOS比较器的失调电压通常在几mV到几十mV之间,经过分压网络折算到输入端,可能会让UVLO阈值产生几十mV的误差。对于精度要求高的应用,需要用失调消除技术,比如自动调零或者斩波稳定。
3.3 UVLO在DC/DC转换器中的具体应用
DC/DC转换器是UVLO最常见的应用场景之一。不管是降压、升压还是升降压,输入电压的范围都是有限的,低于某个值就不能正常工作。UVLO的作用就是确保转换器只在安全的输入电压范围内工作。
以一个典型的降压转换器为例,芯片内部通常会有一个UVLO比较器,监测VIN引脚电压。当VIN低于UVLO阈值时,芯片进入关断模式,所有内部电路停止工作,静态电流降到微安级别。当VIN升高到开启阈值以上时,芯片开始软启动,输出电压逐渐建立。
这里有个细节值得注意:UVLO阈值和软启动时间是两个独立的参数,但它们之间有配合关系。如果UVLO阈值设得太低,而软启动时间又太短,输入电源在上电过程中可能还没稳定,转换器就已经开始满负荷工作了,这会导致输入电压被拉低,可能触发UVLO关闭,然后输入电压回升,又开启,形成振荡。解决方法是适当提高UVLO阈值,或者延长软启动时间,让输入电源有足够的时间稳定。
3.4 UVLO与CMOS逻辑门的交互
在数字电路里,UVLO通常和CMOS逻辑门配合使用,用来产生复位信号或者使能信号。比如一个MCU的电源管理单元,当输入电压低于UVLO阈值时,UVLO输出低电平,经过一个CMOS反相器后变成高电平,去复位MCU。当输入电压恢复正常时,UVLO输出高电平,反相器输出低电平,MCU开始正常工作。
这里需要注意的是CMOS逻辑门的阈值电压。如果UVLO的输出电平不够干净,或者上升下降时间太长,CMOS逻辑门可能会在阈值附近振荡,产生毛刺。解决方法是在UVLO输出和逻辑门之间加一个施密特触发器,或者用迟滞比较器直接产生干净的逻辑电平。
4. 用HSPICE仿真验证UVLO:从网表到波形
4.1 HSPICE中UVLO仿真的基本设置
HSPICE是电路仿真的老牌工具,虽然现在很多人在用Spectre或者LTspice,但HSPICE在电源管理芯片仿真方面依然很强大。用HSPICE仿真UVLO,你需要准备以下几样东西:工艺库文件、UVLO电路的网表、激励源和仿真控制语句。
工艺库文件通常由代工厂提供,里面定义了各个器件的模型参数。如果你只是做行为级仿真,可以用理想器件模型,比如理想比较器、理想电阻和理想电压源。如果你要做晶体管级仿真,那就需要真实的CMOS工艺模型。
网表里,UVLO电路的分压网络用电阻实现,比较器用几个MOS管搭一个差分放大器,基准电压用理想电压源代替。激励源用一个PWL或者PULSE源,模拟输入电压的缓慢上升和下降。
仿真控制语句里,最常用的是.tran,做瞬态仿真,观察UVLO的开启和关闭过程。你也可以用.dc,做直流扫描,观察UVLO的阈值和迟滞。我一般先用.dc扫描快速确定阈值,然后用.tran验证动态响应。
4.2 一个简单的UVLO网表示例
下面是一个用理想器件搭的UVLO网表,你可以直接复制到HSPICE里跑。这个网表模拟了一个开启阈值9V、关闭阈值8V的UVLO。
* UVLO Simulation Testbench .param Vref=1.2 .param R1=100k .param R2=15k .param R3=1meg Vdd vdd 0 PWL(0 0 1m 0 2m 12 3m 12 4m 0) Vref ref 0 DC 1.2 R1 vdd n1 100k R2 n1 0 15k R3 n1 comp_out 1meg Ecomp comp_out 0 n1 ref 100k .model Ecomp VCVS gain=100k .tran 1u 5m .probe v(vdd) v(n1) v(comp_out) .end这个网表里,Ecomp是一个电压控制电压源,用来模拟比较器。它的增益设得很大,这样当n1电压略高于ref时,输出就饱和到正电源轨;略低于ref时,输出就饱和到负电源轨。R3是正反馈电阻,用来产生迟滞。
跑完这个仿真,你可以看到v(n1)的波形在vdd上升和下降时,翻转点不一样,这就是迟滞。具体阈值你可以通过.probe或者.measure语句来测量。
4.3 仿真结果分析与参数调整
仿真跑完之后,你需要关注几个关键指标:开启阈值、关闭阈值、迟滞量、响应时间。
开启阈值是vdd上升过程中comp_out从低翻高时的vdd值。关闭阈值是vdd下降过程中comp_out从高翻低时的vdd值。迟滞量就是两者之差。响应时间是comp_out从翻转开始到稳定到新状态的时间。
如果仿真结果和你的设计目标有偏差,你需要调整参数。比如开启阈值偏低,你可以增大R1或者减小R2;迟滞量不够,你可以减小R3;响应时间太慢,你可以增大比较器的增益或者减小寄生电容。
我一般会跑一个参数扫描,比如把R3从100k扫到10meg,看看迟滞量怎么变。HSPICE的.sweep语句可以很方便地做这件事。
4.4 仿真中常见的收敛问题与解决方法
HSPICE仿真UVLO的时候,最常见的报错是“convergence failure”。这通常是因为电路里有正反馈或者开关行为,导致迭代不收敛。解决方法有几个:一是加初始条件,用.ic语句设定关键节点的初始电压;二是调整仿真选项,比如把.reltol放宽一点,或者用.method=gear;三是把比较器换成行为级模型,避免晶体管级的复杂非线性。
还有一个常见问题是仿真速度太慢。UVLO的瞬态仿真通常需要跑几毫秒甚至几十毫秒,如果时间步长设得太小,仿真时间会很长。你可以先用较大的步长跑一遍,看看大致波形,然后再用较小的步长跑关键时间段。
5. 调试UVLO时踩过的坑与排查技巧
5.1 阈值漂移:仿真和实测对不上
这是最常见的问题。仿真的时候阈值是9V,实测变成8.5V或者9.5V。原因通常有几个:一是电阻的工艺偏差,仿真用的典型值,实际芯片上可能偏了20%;二是比较器的失调电压,仿真用的理想比较器,实际有几十mV的失调;三是温度漂移,仿真在27度,实际可能在-40度到125度之间。
解决方法是:在仿真的时候做蒙特卡洛分析,把电阻和比较器的偏差考虑进去;在测试的时候,多测几个样品,取统计值;在设计的时候,留足够的裕量,比如阈值精度要求±5%,你设计的时候就按±10%来留余量。
5.2 振荡:输入电压在阈值附近时输出打嗝
这个问题我遇到过好几次。输入电源的内阻比较大,UVLO触发时,负载电流下降,输入电压回升,UVLO又开启,负载电流上升,输入电压又下降,如此反复。示波器上看,输出电压像打嗝一样一跳一跳的。
解决方法是增大迟滞量,让开启阈值和关闭阈值之间的差距足够大,这样输入电压的波动不会轻易跨越两个阈值。另外,在输入电源上加一个大电容,也能缓解这个问题,因为电容可以吸收负载电流变化引起的电压波动。
5.3 响应太慢:输入电压已经掉下去了,输出还在工作
UVLO的响应时间如果太长,输入电压已经掉到危险区域了,功率开关还在工作,这可能会损坏电路。响应时间主要取决于比较器的带宽和输出驱动能力。如果比较器带宽不够,翻转就慢;如果输出驱动能力不够,后级逻辑门的输入电容充电就慢。
解决方法是提高比较器的偏置电流,增加带宽;或者在比较器后面加一级缓冲,提高驱动能力。但要注意,提高偏置电流会增加功耗,对于低功耗应用来说需要权衡。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 阈值偏高或偏低 | 电阻偏差、比较器失调 | 测量分压节点电压,对比仿真值 | 调整电阻值,或增加失调消除 |
| 输出振荡 | 迟滞不足、输入电源内阻大 | 观察输入电压和输出电压波形 | 增大迟滞,加输入电容 |
| 响应太慢 | 比较器带宽不足、驱动能力弱 | 测量输出翻转时间 | 增大偏置电流,加缓冲级 |
| 仿真不收敛 | 正反馈、开关行为 | 查看报错信息,检查节点电压 | 加初始条件,放宽收敛条件 |
| 温度漂移大 | 基准源温漂、电阻温漂 | 做温度扫描仿真 | 用低温度系数的基准和电阻 |
5.5 几个实操心得
第一个心得:UVLO的阈值不要设得太接近电路的最低工作电压。我一般会留20%的裕量。比如电路最低工作电压是7V,UVLO关闭阈值就设8V左右。这样即使有温度漂移和工艺偏差,也不会让电路在危险区域工作。
第二个心得:迟滞量不是越大越好。迟滞太大,输入电压的正常波动可能会触发UVLO,影响系统稳定性。我一般把迟滞设在开启阈值的5%到10%之间。比如开启阈值9V,迟滞就设0.5V到0.9V。
第三个心得:仿真的时候一定要跑蒙特卡洛。UVLO的阈值精度直接影响系统的可靠性,而蒙特卡洛分析能帮你评估最坏情况下的阈值范围。如果最坏情况下阈值仍然在安全范围内,那这个设计就是可靠的。
第四个心得:测试的时候要用真实的输入电源,不要用实验室的直流源。实验室的直流源内阻小,响应快,很多在实际电源上会出现的问题,在直流源上根本复现不出来。我一般会用电子负载模拟实际负载,用可编程电源模拟输入电压的缓慢上升和下降。
6. UVLO的扩展应用与设计趋势
6.1 多阈值UVLO:适应不同工作模式
在一些复杂的电源系统里,UVLO不是只有一个阈值,而是有多个。比如一个系统有正常工作和低功耗两种模式,正常工作模式的UVLO阈值是9V,低功耗模式的UVLO阈值是6V。当输入电压在6V到9V之间时,系统进入低功耗模式,关闭部分功能,只保留必要的监测电路。当输入电压低于6V时,系统完全关闭。
这种多阈值UVLO的实现方式,通常是在比较器后面加一些逻辑控制,根据系统的工作模式切换不同的参考电压或者分压比。设计的时候要注意模式切换的过渡过程,避免在切换瞬间产生毛刺或者误触发。
6.2 数字UVLO:用ADC和MCU实现
随着数字电源的兴起,越来越多的设计开始用ADC采样输入电压,用MCU或者DSP做UVLO判断。这种方式的好处是阈值和迟滞都可以用软件配置,非常灵活。缺点是响应速度受ADC采样率和MCU处理速度的限制,通常比模拟UVLO慢。
数字UVLO的设计要点是:ADC的采样率要足够高,至少是输入电压变化速率的10倍以上;软件滤波要做好,避免噪声导致误触发;阈值和迟滞要有掉电保存功能,避免每次上电都要重新配置。
6.3 UVLO在低功耗设计中的挑战
对于电池供电的设备,UVLO的静态功耗是一个关键指标。传统的电阻分压网络会持续消耗电流,比如一个100kΩ加15kΩ的分压网络,在12V输入下消耗大约100微安的电流。对于一颗纽扣电池来说,这个电流可能几天就把电耗光了。
低功耗UVLO的解决方法是:用MOS管开关控制分压网络的通断,只在需要监测的时候才接通;或者用纳安级别的基准源和比较器;或者用采样保持的方式,周期性监测输入电压,而不是持续监测。
6.4 UVLO与系统级可靠性的关系
UVLO虽然只是一个小小的保护功能,但它对系统级可靠性的影响是巨大的。一个设计良好的UVLO,可以防止系统在电源不稳定的时候误动作,可以延长电池寿命,可以避免因为电源问题导致的器件损坏。一个设计不良的UVLO,可能会成为系统中最薄弱的环节,让整个系统的可靠性大打折扣。
我在实际项目中总结的经验是:UVLO的设计要尽早介入,不要等到系统调试的时候才发现问题。在方案阶段就要确定UVLO的阈值、迟滞、响应时间和功耗预算,在仿真阶段就要做蒙特卡洛和温度扫描,在测试阶段就要用真实的电源和负载验证。只有这样,UVLO才能真正起到保护作用,而不是成为新的问题源。
最后分享一个我在调试UVLO时常用的小技巧:在UVLO比较器的输出端接一个LED指示灯,通过观察LED的亮灭,可以直观地判断UVLO的工作状态。虽然简单,但在排查振荡和阈值漂移问题的时候,比看示波器还方便。