
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/DCUVLO阈值可能设在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/(R1R2) 1.2/9 0.1333。关闭的时候输入电压8V经过分压后应该等于1.2V减去迟滞电压。如果迟滞由比较器本身的输入失调或者正反馈产生那分压比的计算就要把迟滞考虑进去。这里有个实操中容易忽略的点分压电阻的阻值不能太大否则比较器的输入偏置电流会在电阻上产生误差也不能太小否则分压网络本身会消耗太多静态电流对于低功耗应用来说是不可接受的。通常R1R2的总阻值在几十kΩ到几百kΩ之间具体要看比较器的输入偏置电流和系统的功耗预算。2.3 迟滞的实现方式正反馈与电流源迟滞的实现方式主要有两种。一种是用正反馈在比较器输出和同相端之间加一个反馈电阻当输出翻转时反馈电阻会把同相端的电压拉高或者拉低一点从而改变比较阈值。这种方式的好处是简单缺点是迟滞量受输出电平的影响精度一般。另一种方式是用电流源在分压节点上注入或者抽取电流。比如当比较器输出为高时一个电流源向分压节点注入电流使得该节点电压升高等效于降低了输入阈值当输出为低时电流源关断阈值恢复。这种方式迟滞量由电流源和分压电阻决定精度更高也更可控。在CMOS工艺里这两种方式都能实现。正反馈方式通常用几个晶体管就能搞定面积小电流源方式需要额外的偏置电路但匹配性更好。具体选哪种要看你的应用对迟滞精度的要求。2.4 UVLO与其他保护机制的关系UVLO不是孤立的。在实际的电源管理芯片里它通常和过压保护、过流保护、过温保护一起构成一个完整的保护体系。UVLO负责输入电压的欠压场景过压保护负责输入或者输出电压过高的场景过流保护负责负载电流过大的场景过温保护负责芯片温度过高的场景。这些保护机制之间有时候会互相影响。比如UVLO触发时功率开关关闭输出电流下降过流保护可能就不会触发反过来过流保护触发时输出电压下降如果输入电压也跟着下降UVLO可能也会触发。所以在设计的时候要确保各个保护机制的优先级和响应顺序是合理的避免出现“保护套保护”导致系统完全锁死的情况。3. 从分立元件到CMOSUVLO的电路实现细节3.1 用分立元件搭一个UVLO电路如果你只是想验证UVLO的概念或者你的项目对成本极其敏感用分立元件搭一个UVLO是完全可行的。我最早学UVLO的时候就是用LM393比较器加TL431基准源搭了一个。具体电路是这样的输入电压经过R1和R2分压后送到LM393的同相端TL431产生的2.5V基准经过另一个分压网络送到反相端。LM393的输出通过一个上拉电阻接到VCC同时通过一个反馈电阻R3接到同相端形成正反馈迟滞。当输入电压升高到开启阈值时同相端电压超过反相端LM393输出翻转为高反馈电阻R3把同相端电压进一步拉高形成迟滞。当输入电压降低到关闭阈值时同相端电压低于反相端输出翻转为低R3把同相端电压拉低完成迟滞。这个电路里R3的取值决定了迟滞量。R3越小正反馈越强迟滞越大。但R3也不能太小否则会影响分压网络的精度。我当时的取值是R1100kΩR220kΩR31MΩ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 Vref1.2 .param R1100k .param R215k .param R31meg 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 gain100k .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放宽一点或者用.methodgear三是把比较器换成行为级模型避免晶体管级的复杂非线性。还有一个常见问题是仿真速度太慢。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%的裕量。比如电路最低工作电压是7VUVLO关闭阈值就设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的工作状态。虽然简单但在排查振荡和阈值漂移问题的时候比看示波器还方便。