ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

同步Buck死区时间设计:从直通防护到效率与EMI优化

同步Buck死区时间设计:从直通防护到效率与EMI优化 做同步Buck电源设计这几年有一个参数总被新人忽略但Debug时又总是最先被怀疑——死区时间。电感纹波、环路补偿、MOSFET选型这些话题在论坛和文档里被翻来覆去地讲唯独死区时间很多人默认“芯片内部都处理好了”。这句话在低压小功率场景下勉强成立可一旦项目变成48V转12V、电流上到10A、开关频率拉高、EMI还有余量要求死区时间就会从幕后走到台前直接决定你是顺利量产还是反复打样。这篇文章围绕同步Buck电路的死区时间设计展开把它的存在原因、计算边界、典型失效模式、控制器实现方式以及一个完整的实测调优案例一次讲透希望能帮正在调Buck的同行少走几步弯路。1. 死区时间到底在管什么同步Buck的上下管“交战窗口”1.1 直通的成因两个管子的开关延迟叠加同步Buck的拓扑结构里高边MOSFETHS和低边MOSFETLS串联在输入电源和地之间中间引出开关节点SW经电感后接输出。正常工作时HS和LS交替导通交替断开。理想情况下HS关断的瞬间LS正好开通中间没有任何交叠。现实中这是不可能的MOSFET从栅极驱动信号变化到漏源真正完成开关动作中间隔着开通延迟时间td(on)、关断延迟时间td(off)以及漏源电压的上升/下降时间。驱动器的输入输出之间也有传输延迟而且不同通道、不同批次、不同温度下这些延迟都会漂移。如果LS的开通信号到达时HS的关断过程还没有彻底完成两个管子就会同时处于导通状态输入电源经HS和LS直接短路到地。这就是所谓的直通Shoot-Through。直通最严重的后果当然是炸管但在炸管之前它首先表现为巨大的di/dt尖峰、输入电压被瞬间拉低、效率剧烈下降。很多项目里“空载正常一加负载就保护重启”的诡异现象查到最后往往就是死区时间短了几个ns。1.2 死区时间内开关节点在做什么从电压转换到体二极管续流死区时间Dead Time的定义并不复杂在HS和LS的驱动信号之间刻意插入一段两个管子都关断的时间。但很多人对这个“什么都不做”的时间窗口理解得太简单。实际上死区时间里开关节点正在经历一次完整的电压转换。以HS关断、LS即将开通的这个死区为例。HS关断后电感电流不能突变必须继续从SW节点抽取电流。SW节点的电压被电感电流往下拉变化速率基本由dv/dt I_L / C_sw决定其中C_sw是HS输出电容、LS输出电容以及PCB寄生电容的总和。当SW电压被拉低到大约-0.7V或更低取决于体二极管的VF时LS的体二极管正向导通把SW钳位在负压电感电流暂时从体二极管续流。等到LS真正开通电流才从体二极管转移到MOSFET沟道SW电压上升到-I_L × Rds(on)接近0V。所以死区时间并不是简单的“安全缓冲”它实际上定义了开关节点电压转换、体二极管续流和沟道接管这三个阶段各自占多长时间。死区设多长直接决定了电压转换是否完成、体二极管导通多久、以及LS开通时SW电压在什么位置——这些最终都会转变成损耗、应力和EMI频谱上的差异。2. 死区设置不当的三种典型翻车现场2.1 死区过短直通电流尖峰与效率塌方死区太短最直接的风险就是直通。但工程里的情况通常是不是所有批次、所有温度下都直通而是偶尔直通、轻度直通。很多集成控制器内部有固定的死区时间默认值在几十ns量级。如果你的HS和LS都是慢管驱动器的传输延迟又比较大那在冷启动、输入电压变化、负载瞬态这些时刻驱动时序可能发生微小偏移死区窗口被压缩到0直通尖峰就出现了。有一个很典型的案例某款12V输入、1.2V输出的集成同步Buck默认死区60ns常温满载测试效率正常。但放到高温箱里老化时输入电流开始缓慢爬升效率掉了接近2个百分点。用示波器抓HS门极和LS门极波形发现高温下驱动器延迟漂移死区被压缩到只有25nsHS的关断拖尾和LS的开通前沿开始交叠每次开关都产生一个几十A的窄尖峰。这种尖峰平均功率看似不大但热量集中在两个管子的沟道上长时间运行就会让MOSFET结温异常升高进而触发热保护甚至烧毁。所以死区过短的问题往往不是立刻爆炸而是“温水煮青蛙”式的可靠性下降。2.2 死区过长体二极管反向恢复与开关节点振铃死区太长的后果不像直通那么吓人但对效率和EMI的伤害同样不小。死区期间电感电流不是从低边MOSFET的沟道走而是从二极管走。体二极管的正向压降按0.7V算低边MOSFET沟道导通压降按Rds(on) × I_L算比如5mΩ × 10A 50mV两者相差超过一个数量级。所以同样导通10A电流走体二极管30ns的损耗可能抵得上走沟道300ns甚至更久。更麻烦的是反向恢复。LS开通瞬间之前一直导通的体二极管需要从正向导通切换为反向阻断这个过程会抽取一个较大的反向恢复电流电流尖峰通过LS沟道、SW节点和HS输出电容形成高频振铃。振铃频率通常落在几十MHz到上百MHz正好是传导EMI测试的敏感频段。很多板子在150MHz附近超标拿近场探头一扫源头就是死区过长导致的体二极管反向恢复振铃稍微把死区缩短一点频谱立即改善。这一点很多人会误判成PCB布局问题花了大量精力去改地回路、加磁珠结果方向全错。2.3 死区不对称占空比失真、纹波异常与次谐波风险不少人以为死区时间在HS关断和LS关断两个边沿上是一样的但实际电路里两个边沿的死区往往不对称。原因有很多驱动器的上拉和下拉驱动能力不同、HS和LS的栅极电阻不同、甚至控制逻辑对上升沿和下降沿的延迟处理不同。死区不对称的直接后果是开关节点波形在一个周期内高电平和低电平的实际持续时间偏离理想占空比。这种占空比失真在闭环系统里会转变成输出电压的纹波分量。尤其在电流模式控制的Buck里死区不对称等效于在每个周期注入一个小的扰动如果电感电流斜率比较低、斜率补偿又不足这个扰动会被逐周期放大最终表现为次谐波振荡。表现形态是SW波形的占空比周期性地忽大忽小输出纹波呈现低频的“鼓包”。排查这类问题如果只盯着环路补偿调了半天相位裕度都正常却忘了死区不对称这个源头就会陷入死循环。经验是先用示波器把两个边沿的死区时间分别测出来如果不对称超过20%优先把它拉对称再看纹波是否恢复。3. 死区时间的理论计算边界从时序余量到ZVS窗口3.1 下限按最坏时序余量估算光靠“感觉”会翻车死区下限的工程定义是在任何工作条件下都不能让HS和LS的驱动信号发生交叠。要做到这一点不能只看典型值必须看最坏情况。需要考虑的时序项包括HS的关断传播延迟td_off(HS)、LS的开通传播延迟td_on(LS)、驱动器两个通道之间的传输延迟失配tPD_mismatch以及栅极驱动信号上升沿/下降沿带来的附加时间。最简化的一组约束可以写成td_min td_off(HS)_max - td_on(LS)_min tPD_mismatch_max t_jitter举个例子。假设某颗MOSFET的关断延迟最大是35ns最低边MOSFET的开通延迟最小是15ns驱动器通道失配最大10ns控制芯片的抖动约5ns那么td_min 35 - 15 10 5 35ns。这看起来很小但如果芯片手册只给典型值没给最大值你又没有实测那实际温度下关断延迟可能涨到60nstd_min就要重新算成65ns。所以工程上一般会在计算值上乘1.5到2倍的安全系数再取整到5ns或10ns的整数倍。这里有一个常见的误区总想着把死区压得越短越好理由是缩短死区能减少体二极管导通损耗。但死区下限首先是个可靠性约束不是效率优化参数。你省下的那几十ns体二极管损耗可能只有几十毫瓦而一旦因为时序余量不足出现直通轻则效率下降重则烧管得不偿失。3.2 输出电容充放电时间性能优化的真正参考点如果说死区下限是“安全线”那死区时间的性能优化参考点就要看开关节点电压转换需要多久。回到1.2节的公式SW节点电压从VIN降到0所需的时间约为t_trans C_sw × VIN / I_L其中C_sw是HS和LS输出电容以及寄生电容的等效值I_L是死区起始时电感电流的瞬时值。这里关键点在于电感电流是负载的函数重载时电感电流大电压转换快t_trans可能只有十几ns轻载时电感电流小电压转换慢t_trans可能拉长到几百ns。这个公式解释了为什么固定死区的方案总是“两头不讨好”。假设你把死区固定为100ns重载时t_trans只有15ns那么死区里多余的85ns时间里体二极管一直在导通白白浪费损耗轻载时t_trans可能达到200ns那么100ns死区结束时SW还没降到0LS开通时就是一个硬开关产生开通损耗。所以性能最优的死区应该随负载变化轻载时适当拉长重载时尽量压缩。有人问那在重载时为啥不直接把死区设成15ns这就回到3.1节的下限约束了。时序安全要求死区至少要几十ns远大于重载时的电压转换时间。所以重载时实现真正的ZVS零电压开通在普通Buck里很难死区里必然存在一段体二极管导通时间。真正能借着死区窗口做ZVS优化的场景是轻载和高压差这时候t_trans较长死区设置得当可以显著降低开关损耗。3.3 上限体二极管损耗预算决定了死区能拉多长死区上限没有一个绝对公式它由“你能接受多少体二极管损耗”决定。每个开关周期死区里体二极管导通造成的损耗可以近似写成P_body VF × I_L × td × fsw其中VF是体二极管正向压降I_L是死区期间的电感电流fsw是开关频率。注意这是非常保守的估算实际死区里电流有变化而且死区结束后的反向恢复损耗也会额外叠加。用具体数字感受一下。一个12V输入、1.2V输出、开关频率500kHz、负载10A的同步BuckVF按0.7V算死区时间 td体二极管估算损耗60ns0.21W100ns0.35W200ns0.70W400ns1.40W这块板子的输出功率只有12W1.2V × 10A400ns死区的体二极管损耗是60ns死区的近7倍对12W输出的系统来说光这一项就能造成超过1个百分点的效率差。更何况体二极管损耗还会随温度升高而变大VF负温度系数形成恶性循环。所以工程上通常的做法是先根据效率目标倒推允许的体二极管损耗再用上面的公式反算td的上限然后与3.1节的下限比较看中间有没有窗口。如果下限比上限还大说明要么MOSFET选择不合适开关速度太慢要么开关频率选高了要么驱动器能力不足这时就应该回过去调整更基础的设计参数而不是在一个注定不可行的时间窗口里硬凑。3.4 死区在功率级传递函数里的隐性角色死区时间不仅在时域里表现为电压转换和续流过程在频域里它还扮演着一个小延迟的角色。从控制环路的视角看死区时间相当于在功率级传递函数中串联了一个纯延迟环节。它的影响主要集中在高频段在环路带宽fc附近死区造成的相位滞后约为φ_dead ≈ fc × td × 360°举个例子如果环路带宽是50kHz死区是100ns相位滞后只有1.8度完全可以忽略但如果带宽拉到200kHz、死区又偏大到300ns滞后就会达到21.6度这对60度相位裕度来说是不可忽视的损失。这就是为什么一些人在仿真里设计好的补偿环路实测相位裕度却总比仿真低几度甚至稳定裕度不足、带载啸叫。很多时候不是补偿参数不对而是建模时把死区延迟当成零处理了。我在实际项目中的习惯是环路设计阶段就把死区时间按最坏情况加进功率级模型用一个小延迟块近似再看相位裕度是否还够。这样虽然会增加几分钟仿真时间但能避免后期在实验室里面对“相位裕度莫名其妙少10度”的尴尬。4. Buck控制芯片里的死区实现方式4.1 固定死区集成控制器里最省事的方案市面上绝大多数集成同步Buck控制器内部都通过延迟链或逻辑状态机生成固定死区。这种方式的好处是成本低、行为可预测用户不用额外配置特别适合中小功率、对成本敏感的消费类电源。固定死区的值通常由内部电路决定一般对应某个典型工况下的折中值比如100ns到300ns。但固定死区的短板也很明显它对实际使用的MOSFET不敏感。控制器的延迟链按某一类驱动器参数设计可你的板上用的是另一款MOSFET栅极电荷、延迟特性都不一样再加上温度和输入电压变化固定死区在有些工况下偏长、在另一些工况下偏短。很多FAE遇到用户抱怨效率比参考设计低第一个怀疑的就是这个。如果你的应用场景负载变化不大、温度范围也不宽固定死区完全够用如果工况复杂就要考虑支持可配置死区的控制器。4.2 可编程死区RT电阻、寄存器与数字电源调节可编程死区是固定死区的自然升级。一类实现方式是通过外部电阻接到某个引脚上电阻值决定死区时间比如加一颗RT电阻或者通过引脚上拉/下拉电平来选档。这种方式调节直观量产时也方便用不同阻值微调。另一类实现方式是数字电源的寄存器配置。现在很多带PMBus/I2C接口的Buck控制器都把死区时间做成寄存器字段可以通过固件在线修改。相比电阻方案寄存器方案最大的好处是可以在不同的工作点比如重载和轻载采用不同的死区值甚至做成一张查找表。坏处是每颗芯片都需要初始化配置一旦固件写错死区就可能被设成0或一个过大的值所以数字电源的代码评审里死区配置一定是要重点检查的项。另外要注意寄存器的可调范围通常有步进比如每档5ns或10ns调节时不要只看写入值最好用示波器实测确认。4.3 自适应/动态死区让死区始终贴近最优值既然固定死区“两头不讨好”那理想方案就是让死区自己跟着工况变。自适应死区控制的基本思路是控制器实时检测SW节点的电压状态一旦确认电压转换已经完成比如SW已经降到接近0V就立刻打开对应管子从而把死区压缩到“刚好够用”的水平反之如果电压转换还没完成就继续等待防止硬开关。听起来很美好实际应用中也有许多成熟产品在用。这种方案对SW电压检测的精度和抗噪能力要求很高因为SW节点在死区里本来就在快速跳变噪声一大检测器可能提前或滞后触发。另外自适应死区控制虽然在效率优化上表现优秀但它会把死区时间变成一个随负载变化的动态量这在分析EMI时会更复杂因为每次开关的dv/dt和续流时间都在变。所以不要一上来就迷信“动态死区一定最好”如果控制器支持自适应模式实验时要把开关节点波形和EMI频谱一起抓出来对比确认它的行为在你的系统里确实是优化方向。5. 死区时间对系统性能的量化影响5.1 效率死区与损耗之间的U形曲线把死区时间从很小到很大逐步扫描系统的效率会呈现一条U形曲线。死区太短的一侧直通损耗和硬开关损耗占主导效率急速下滑死区太长的一侧体二极管导通损耗和反向恢复损耗占主导效率平缓下滑中间存在一个明显的损耗最低点。这个最优点的位置随负载变化。重载时最优死区往往偏向较短侧因为重载时电感电流大电压转换速度快体二极管一旦多导通几十ns就损失不小轻载时最优死区会向长侧移动因为轻载电流小体二极管损耗本来就低而延长死区可以等到SW电压更接近0V再开通减少开关损耗。如果你的控制器支持死区调节建议在轻载、半载、满载三个典型工作点各测一次效率曲线把调节档位找出来再决定是取固定折中值还是启用动态调节。5.2 EMI振铃频率与死区长短的耦合死区对EMI的影响主要通过两个途径。第一死区过长导致体二极管反向恢复产生几十MHz到上百MHz的振铃第二死区过短导致SW节点电压转换过快dv/dt过大在开关瞬间产生宽带噪声。这两个途径的频谱特征不同前者往往在某一个或几个频点出现尖峰后者则是整体噪声本底抬升。实测中判断死区对EMI的贡献可以用一个简单方法保持其他条件不变单独把死区时间往两个方向各调一档分别扫描传导EMI频谱。如果高频尖峰跟着死区时间明显移动或改变幅度说明死区是主因之一如果频谱几乎不动那问题可能出在布局、电感或输入滤波环节。我在多个项目里就是用这个方法快速锁定EMI超标的真凶比盲目换磁珠、改LC滤波参数要高效得多。5.3 输出纹波与瞬态响应被多数人忽略的次生效应死区时间对输出的影响不只体现在效率上。死区期间SW电压为负压体二极管导通时的-VF这会改变电感两端的实际伏秒积使得电感电流纹波不再是理想的三角波而是在每个开关周期的某个位置多出一小段斜率变化。死区越长这种畸变越明显最终在输出电压纹波上叠加一个额外的分量。死区对称性问题也会在纹波里体现。如果两个边沿的死区不对称占空比发生失真输出电压会产生周期性脉动。前面提到的次谐波振荡也是死区不对称参与的结果之一。此外死区在环路上表现为延迟相当于多了一个相位滞后这会让相位裕度降低、瞬态响应变差负载阶跃时电压过冲更大、恢复时间更长。把这些效应叠加起来就能理解为什么有人说“死区时间是一个贯通时域和频域的参数”。6. 一个48V转12V项目的死区调优全过程6.1 现象满载效率偏低EMI在80MHz超标去年做一个48V输入、12V输出、10A负载的同步Buck模块开关频率400kHz控制器有一颗支持RT电阻调死区的芯片。初版打样回来满载效率实测94.2%比仿真低了1.8个百分点同时传导EMI测试在80MHz频点超标6dB。输入纹波、输出电压精度都在规格内所以一开始团队内部有两种判断一种认为是电感饱和余量不够另一种认为是输入滤波参数不足。我当时跟同事说先别急着改参数把开关节点波形和上、下管驱动波形一起测出来看看。6.2 精确测量死区时间的示波器操作死区时间的测量没有太难但有几个细节不注意就会测错。我用两路同型号的电压探头分别接HS的栅极驱动和LS的栅极驱动先做一次通道间deskew校准消除探头之间的延迟差。这一步很多人会省但两路探头延迟差可能达到几ns到十几ns在测几十ns级别的死区时足以造成误判。然后是触发设置。把示波器触发在HS降低沿用一个足够长的捕获窗口把HS下降沿到LS上升沿的时间用光标量出来再触发LS下降沿量出LS下降沿到HS上升沿的时间。这两个方向的死区要分别记录因为它们往往不一样。我在这个项目里测出的结果是HS关断到LS开通的死区约210nsLS关断到HS开通的死区约190ns两个方向差了20ns不对称问题确实存在。测量时还要注意探头接地方式。直接用长接地夹线测高速开关节点地环路电感会引入明显振铃波形看着像振铃超标其实是测量假象。正确做法是用尽可能短的接地弹簧或者专用SMA探头把测得的结果和SW电压波形互相印证。如果SW电压在死区里被拉到-0.7V左右且停留了一段时间说明这段时间体二极管确实在续流死区过长基本坐实。6.3 逐档调整死区并对比实测数据这款控制器的死区通过RT电阻调节默认档位对应约200ns。我把死区从200ns逐步往下调每档都记录满载效率、SW节点振铃峰峰值和80MHz频点的EMI余量得到这样一组数据死区设置满载效率SW振铃峰峰值80MHz EMI余量200ns初始94.2%800mV超标6dB140ns94.8%600mV余量1dB100ns95.1%500mV余量2.5dB60ns94.6%700mV超标2dB测试结果里有几个信息量比较大的地方。首先死区从200ns降到100ns效率反而上升了0.9个百分点这说明初始死区确实太长体二极管损耗拖了后腿。其次继续从100ns降到60ns效率不升反降同时SW振铃峰峰值明显变大用示波器抓驱动波形能看到上下管驱动在个别周期已经出现轻微交叠这就是直通尖峰的前兆说明60ns已经越过时序安全线。最终把死区定格在100ns满载效率提升到95.1%80MHz频点余量2.5dB整个模块的温升也降了约8℃。有人会问为什么不试试70ns、80ns这些中间值我在这个项目里试过80ns效率和100ns基本持平但EMI余量只有1.5dB考虑到量产时元器件参数会有分散性最终选择留有余量的100ns。这种取舍在工程上很常见不追求单点最优而是追求批量生产的鲁棒性。6.4 复盘死区调优的前置条件和后续动作这个项目的调优过程看起来很简单但它能顺利推进有几个前置条件。第一确认了电感没有饱和工作时间没有异常发热排除了电感参数对效率的影响第二确认了输入输出电容、布局没有明显缺陷SW振铃不是来自于地回路问题第三用示波器完整记录了死区调整前后的驱动波形确保效率变化不是由其他变量引起的。调完死区之后还需要做几件事一是把温度循环跑一遍确认高温和低温下死区的实际变化范围。延迟电路和驱动器的延迟都随温度漂移100ns的标称值在低温下可能变成110ns在高温下可能变成85ns只要还在安全范围内就不用额外补偿。二是小批量验证因为不同批次的MOSFET和驱动器的延迟参数有分散性要确保100ns这个档位在整批物料下都能通过时序余量测试。三是重新测一遍负载瞬态因为死区变化会引起相位裕度轻微改变我在这个项目里就发现100ns档位的瞬态过冲比200ns档位小了一些也算是额外收获。最后再分享一个建议如果你的控制器支持动态/自适应死区可以在固定死区调通之后把动态死区打开做对比测试。我在车载电源项目里把固定死区换成自适应死区后全负载范围效率又提升0.3到0.6个百分点尤其在轻载区效果最明显。但这种方案要求SW电压检测足够可靠PCB布局不好时容易误判所以先把基础波形测干净再决定要不要启用不要一上来就用自动方案掩盖布局问题。
返回列表