
1. 先认清振铃的真面目SW节点上的“天线”不是噪声是寄生谐振我最早被Buck电路的振铃折磨是在一块12V转3.3V的同步Buck开发板上。上电那一刻示波器探到开关节点SW波形边缘稀里哗啦带了一串衰减振荡像没扎紧口的绳子一样甩出去电压尖峰足足比稳态电平高出来300多毫伏。当时第一反应是“电源板布线太差干扰进来了”后来才发现这正是Buck电路里最经典也最容易被误判的现象——振铃。振铃英文叫ringing本质上不是外部干扰而是电路自己“弹”出来的。你可以把它理解为电路寄生参数组成的LC网络在开关瞬间被激励后发生的阻尼振荡。Buck的开关节点每秒钟开关成千上万次每一次边沿都会触发一次这种高频“啁啾”。它的频率通常落在几十兆赫到几百兆赫之间远比几百kHz的开关频率高得多。如果你在示波器上看到一串正弦衰减波形挂在电压阶跃的边沿上那基本就是振铃无疑。振铃不是单纯的“看着难看”它有实实在在的危害而且在工程中经常被忽略直到温升、EMI或者炸管出了事才回头来找。我这里把振铃的成因、实验方法、测量要点、抑制手段从头到尾拆一遍最后给一个完整的实测复盘方便你在自己的板子上照着操作。适不适合看这篇文章如果你正在调Buck电源、做板级电源完整性、或者被EMI预测试折磨那这篇就是给你准备的。1.1 振铃长什么样以及它的频率特征先看一个典型现象。同步Buck在工作时高边MOSFETHS-FET开通SW节点被拉到Vin高边MOSFET关断、低边MOSFETLS-FET开通SW节点被拉到地。理想情况下SW节点就是一个方波从0V跳变到Vin再从Vin跳变到0V。但实际示波器看到的是这样的上升沿和下降沿不再是笔直的竖线而是带一定斜率的斜坡斜坡末端挂着一串正弦衰减振荡幅度随时间呈指数衰减振荡频率远高于开关频率通常在几十MHz量级振荡的峰值可能比稳态电平高出10%~30%。我们需要关心的不是“振铃存在不存在”而是“振铃的幅度多大、频率多高、持续多久”。幅度决定它会不会打穿功率管的耐压、会不会干扰周围电路频率决定它在EMI频谱上出现在哪个频段持续时间决定它的能量有多大、散热压力有多大。实测中我习惯把振铃的频率和衰减时间常数都记下来。这两个参数配合电路中的寄生电容值能很快反推出寄生电感的大致范围这个后面专门讲。1.2 振铃的三条危害路径过压、EMI、损耗很多刚接触电源的工程师觉得振铃不过是个高频小尾巴不值得小题大做。但也正是这个小尾巴把不少电源板从“能工作”变成“不可靠”。第一条路径是开关管过压。SW节点的过冲峰值如果达到高边MOSFET的漏源耐压Vds_max轻则长期工作后热载流子注入导致参数漂移重则当场雪崩击穿。我在一个48V输入的Buck项目上就见过SW节点过冲到将近70V而那颗MOSFET的额定耐压只有60V结果老化试验跑了两百小时MOSFET直接短路失效。事后一算振铃贡献的电压过冲占了很大一块裕量。第二条路径是EMI辐射。振铃电流流经环路时会产生场的变化频率越高辐射效率越高。开关节点本身就是一个像天线一样的金属焊盘SW节点连着电感引脚、走线、MOSFET引脚整个环路就是一个环形天线。几十MHz到几百MHz的振铃频率正好落在很多电磁兼容标准的传导发射和辐射发射敏感区间不加处理EMI预测试就很容易在某个频点超限。第三条路径是额外损耗。振铃本质上是由寄生电容和寄生电感存储的能量来回振荡如果阻尼不够这部分能量最终大部分变成热耗散在寄生电阻和半导体内部。频率越高趋肤效应和介质损耗越明显MOSFET的结温会比理论估算高出一截。开关损耗、振铃损耗、体二极管反向恢复损耗这三者经常是交织在一起的很难单独剥离。但如果你发现实测温升比仿真高了很多振铃散热往往是“隐形元凶”之一。2. 搭建最小振铃实验台把测试过程中的“伪振铃”先排除掉在开始分析振铃之前我强烈建议先把测量环节打扎实。我跟不少工程师一起调板子的时候发现很多时候被当成振铃的波形其实是测量方法不对造出来的假信号。示波器探头的地线夹一拖几十厘米长探针和地线之间就形成了一个巨大的探头环路这个环路耦合到的磁场噪声在示波器上看起来和振铃很像。想要分析振铃第一步不是“治它”而是“看清它”。测量不过关后面所有分析都是白做。2.1 测试点和探头地线夹是第一批振铃造假来源先做一组对比实验你就明白了。同样的SW节点用标配的地线夹探头去测再用弹簧地针的短地线探头去测两个波形放在一起我能给你找出至少三个不同的地方过冲幅度不同、振铃频率不同、衰减速度不同。地线夹探头测出的振铃幅度可能偏大频率可能偏低原因是探头地线长度带来的附加电感参与了寄生参数的谐振。解决办法很直接测SW节点振铃时探头采用“前端接地法”——探针尖直接搭在SW测试点上探头的接地弹簧针直接接触最近的PGND铜皮让探头环路的面积缩到最小。如果PCB上没有预留测试点可以临时焊一段短铜线到PGND尽量靠近SW节点引脚。还有一点很容易忽略示波器探头本身的输入电容常见值是10pF左右也会改变被测节点的谐振频率。SW节点的等效寄生电容通常在几百pF量级10pF探头电容虽然占比小但也不是完全无影响。要精确测试高频振铃可以使用有源差分探头或者专用的同轴探头带宽足够高且电容负载更低。低频下看不出差别一旦振铃频率上到100MHz以上探头电容的影响就开始显现了。2.2 示波器设置与数据记录带宽、采样率和实测频率判定测试振铃的示波器带宽至少要500MHz最好1GHz。这个要求不是赶时髦而是因为振铃频率如果落在200MHz一台300MHz带宽的示波器本身就会对信号做低通滤波振铃幅度会被削减频率特征也会被模糊。你看到的波形已经失真了还怎么谈分析采样率方面至少要有5倍以上振铃频率的采样率。如果振铃疑似在100MHz示波器采样率至少要500MSa/s保险一点上1GSa/s。很多时候示波器默认开启的“带宽限制”选项也要注意输入通道的带宽限制如果被设成了20MHz那恭喜你高频振铃直接被过滤掉了看到的就是一个光滑的方波什么问题都没有。记录波形时我会打开示波器的“峰值检测”模式并至少采集1000个以上的开关周期观察振铃包络是否有波动。同时用光标cursor功能测量振铃峰峰值、振铃频率和衰减时间记录下来。这里有个小技巧不要只测一个周期要测多个周期取平均因为开关周期的抖动会导致振铃波形在屏幕上重叠成一个模糊的亮带这时候用“平均值”模式或无限余辉模式观察反而能看到包络的稳定形态。2.3 不要接负载就下结论空载和满载下的振铃差别很大这是我踩过的一个比较深的坑。刚拿到板子的时候我习惯先空载空测一下看到SW节点振铃不大以为没问题。后来一加满载振铃幅度和频率都变了EMI测试也出现了一个明显的超标尖刺。原因是负载电流会影响功率管工作在CCM还是DCM也会影响寄生参数激励的强度。满载时流过电感和高边MOSFET的电流更大关断瞬间di/dt更大激励出来的振铃自然更强。异步Buck在轻载DCM模式下电感电流断续续流二极管反向恢复也会在SW节点引起额外的振荡。所以振铃测试一定要在目标负载点尤其是满载和半载分别测试并记录负载条件。另外输入电压也要扫一遍。Buck电路的SW节点电压阶跃高度就是VinVin越高激励越强振铃越明显。很多人只在标称12V下测试实际产品在16V或者8V下工作的时候振铃特性是完全不同的。3. 从波形反推寄生参数一次完整的LC谐振分析看清楚振铃波形之后接下来的问题就变成怎么从一串振荡波形里反推出电路的寄生参数这样你才能对症下药而不是瞎调。很多刚入门的人问为什么不直接仿真签得很好用LTspice做Buck仿真确实能复现振铃形态但前提是寄生参数要在仿真模型里建得足够准确。IC厂家的模型往往不包含PCB布线的寄生参数你必须自己在仿真图上手动加电感和电容而这些值又是从实测波形反推出来的。所以实际上仿真和实测是配合关系不是替代关系。实测给出真实寄生参数的量级仿真辅助验证调整方案。3.1 拆解Buck开关节点的高频谐振回路Buck电路在稳态运行时工作频率是开关频率几百kHz但振铃是MHz级以上高频分量。分析振铃的时候要把它当成一个独立的“高频小信号问题”来处理和低频的功率传输解耦开。振铃的激励源来自哪每一对互补MOSFET在死区时间内都经历了“一个关断、另一个尚未完全开通”的过渡状态。这个状态下电感电流需要通过寄生体二极管续流功率MOSFET的寄生电容在充放电整个开关节点对地之间是一个等效电容网络包括高边MOSFET的Coss、低边MOSFET的Coss、PCB焊盘与铜皮之间的寄生电容。再看电感。任何一段PCB走线都有寄生电感功率回路面积越大寄生电感越大。这个寄生电感L_p与开关节点的等效寄生电容C_p构成了一个串联谐振回路。开关瞬间电压阶跃加在这个LC网络上就产生了正弦振荡频率满足公式f_ring 1 / (2π√(L_p C_p))。很多人会问电感L的感值不小为什么不跟Coss一起共振在低频因为振铃回路里的“L”不只是功率电感L还包括高频路径中的寄生电感L_p而功率电感在几百kHz下感值大但在几十MHz的高频下它的寄生电容和阻抗特性就开始起作用反而表现为高频阻抗很大对振铃电流呈现“开路”状态。所以振铃回路在物理上主要走的是寄生电感L_p和寄生电容C_p这条高频捷径功率电感基本可以不参与分析。3.2 由振铃频率估算寄生电感与寄生电容知道了f_ring以后怎么把L_p和C_p拆出来这需要借助一个独立的已知量C_p大部分来自MOSFET的Coss。Coss这个参数在MOSFET的数据手册里有曲线你可以根据实际Vds电压查到当时对应的Coss典型值。同步Buck的SW节点等效电容可以粗略估算为高边MOSFET的Coss与低边MOSFET的Coss的串联再与PCB寄生电容并联简化处理时可以先把PCB寄生电容忽略直接用Coss做主项。举例我们测到一块Buck板上SW节点振铃频率f_ring80MHz高边MOSFET在30V Vds下的Coss约为200pF低边MOSFET的Coss约为500pF两个Coss串联等效约143pF。代入公式L_p 1 / (4π² f_ring² C_p) 1 / (4π² × (80MHz)² × 143pF)算一下分母 ≈ 4 × 9.87 × 6.4×10^15 × 1.43×10^-10先算f_ring² 6.4×10^15乘C_p 143e-12得到9.15×10^5再乘4π²≈39.5得到约3.62×10^7取倒数得到约2.76×10^-8 H也就是约27.6nH。这个数值对应什么样的布线一条1cm长、1mm宽的PCB走线寄生电感大约在5~10nH所以27.6nH意味着整个功率回路总寄生电感已经偏大了大概率是回路面积太大或者是输入电容离MOSFET太远。这里要说明这个估算值是为了判断数量级和趋势不是精密测量误差在20%~30%完全正常但对工程来说已经够用。同样的方法反过来用如果我知道L_p大约是多少可以通过实测f_ring推C_p判断SW节点电容是否因为吸收电容snubber电容的加入而变大。3.3 Q值与被阻尼程度为什么有的板子振铃就是压不住学过RLC电路的都知道振荡是否衰减得快主要由阻尼比ζ决定。你可以把振铃回路简化成R-L-C串联回路R是回路中的等效电阻包括走线电阻、MOSFET导通电阻Rds_on、电容ESR等。阻尼比可以用公式ζ (R/2) × √(C_p/L_p)来计算或者用品质因数Q (1/R) × √(L_p/C_p)。Q值高意味着每次振荡衰减少振铃拖得很长Q值低说明阻尼强振铃很快消失。既然C_p和L_p已经通过频率测量出来再看波形衰减的速度就能估算等效串联电阻R的量级。我之前遇到过一块怎么都压不住振铃的板子RC吸收电路加了效果也不明显。后来一排查发现问题根本不在SW节点而是高边MOSFET栅极驱动回路的阻抗太低导致驱动信号本身在栅极产生高频振荡栅极电压的反复抖动让MOSFET工作在放大区附近开关波形每次都不干净。这种情况光在SW节点加吸收是没用的必须在栅极回路增加驱动电阻或者在栅源之间加一个小电容把栅极回路也阻尼掉。振铃不是“一个回路”而是“一串回路”排查的时候别局限于单个节点。4. 治振铃的操作手册RC吸收、栅极电阻与Layout修正清楚了振铃的来源和特征以后接下来要做的不是“试”而是按照投入产出比排序来治。我的经验是先改最容易改的也就是在不重画PCB的前提下能通过增加微小元器件解决的如果还不行再考虑pin脚布局和走线优化最后才考虑换用低寄生参数的器件选型。振铃本质上是一个欠阻尼LC回路的自由振荡所有的抑制手段要么是通过增加阻尼电阻来消耗振荡能量要么是减小寄生电感的激励强度要么是缩短寄生回路让谐振频率更高、幅度更小。下面就分别说。4.1 RC吸收电路从理论值到起调点的落地方法RC吸收snubber是我最常用的第一招因为它在不改板子、不动器件的情况下就能验证效果。做法是在SW节点和PGND功率地之间并联一个串联RC网络R通常取1~10ΩC通常取470pF~2.2nF具体值从计算和实测来定。设计思路是这样的C_snubber远大于SW节点的寄生电容C_p这样它就能“接管”谐振回路把谐振频率拉低R_snubber提供一个阻尼通道让每次振荡的能量都通过R_snubber消耗掉。经验上R_snubber的初始值取等于谐振回路的特征阻抗也就是R_snubber ≈ √(L_p / C_p)还用前面那个例子L_p≈27.6nHC_p≈143pF算出√(27.6nH / 143pF)≈√193≈13.9Ω。这个值再结合振铃实测情况调整——如果振铃衰减得太慢、还在大幅振荡说明阻尼不够R可以适当减小一点如果振铃已经没了但边沿变得非常圆滑说明阻尼太大可以略微增大R来减少开关损耗。C_snubber的取值需要注意一个陷阱取小了没用取大了损耗巨大。C_snubber的损耗可以用P_loss ≈ C_snubber × V_{SW_peak}² × f_sw来估算这只是一个粗略数量级。比如C_snubber1nF、V_SW30V、f_sw500kHz算出来P_loss≈1e-9×900×5e50.45W。如果这个损耗都耗在R_snubber上电阻必须用额定功率0.5W以上的贴片电阻而且要注意散热。我之前看到一个工程师贪方便用0402封装的吸收电阻跑了十分钟就发烫冒烟了这就是没算损耗的后果。加RC吸收的过程不能只看SW波形还要测效率。我见过加了吸收以后振铃确实消失了但满载效率掉了三个百分点的案例。振铃虽然难看了点但它的能量不一定全浪费而RC吸收是实打实每周期都在耗能。如果振铃幅度本来就不大或者对EMI没有直接影响不一定要上RC吸收。4.2 栅极电阻调整延缓开关速度换取过冲收敛RC吸收是“事后消耗”栅极电阻调整是“事前减小激励”。原理很简单MOSFET的开关速度决定了di/dtdi/dt越大寄生电感上的感应电压L×di/dt越大SW节点的过冲和振铃就越猛。在栅极驱动回路中串联一个电阻Rg可以延长栅极充电时间让MOSFET开关变慢di/dt下降振铃幅度也随之下降。这个方法在国外团队里叫“slowing down the switch”调整起来也很方便。很多电源IC的驱动引脚本身就预留了外接栅极电阻的位置你直接把几欧姆到几十欧姆的电阻串进去就行。我通常从10Ω开始试看SW波形过冲有没有明显收敛如果幅度减小但开关损耗增加太多就退回5Ω如果没有变化可能是谐振峰根本不是由这个回路主导的要再排查。有个容易搞错的点栅极电阻调大确实能降低SW节点的过冲但也会导致MOSFET在开关过程中更长时间停留在米勒平台区交叉损耗增大严重时温升明显。所以栅极电阻不是越大越好而是在“控制过冲”和“控制在可接受的开关损耗”之间取平衡。正常应用里过冲不超过额定Vds的80%就可以接受不追求把振铃彻底压到看不见。另外栅极回路的振铃也需要单独关注。如果高边MOSFET栅极电压波形本身存在高频振荡SW节点往往也会出现高频振铃而且可能是“栅极先振、SW后振”的因果关系。解决栅极振铃通常是在栅源之间并联一个1~10nF的小电容给高频分量提供一个低阻抗路径同时对栅极驱动信号做阻尼。4.3 PCB布局修正减少功率回路面积才是治本RC吸收和栅极电阻算是“外科手术”能解决大部分问题但如果你希望从根本上解决振铃就得回到PCB布局。这里说的“根本”是指降低寄生电感L_p的值。L_p小了谐振回路的特征阻抗√(L_p/C_p)变小同样的电流变化产生的感应过冲也更小整个振铃的能量都会降下来。功率回路指的是从输入电容正端出发经过高边MOSFET、SW节点、功率电感、输出电容再经过地平面回流到输入电容负端的这条di/dt最大的路径。在同步Buck的Layout里关键是把这几条边尽量收紧输入电容紧贴高边MOSFET的漏极和低边MOSFET的源极放置缩短高频电流路径用多个小容值陶瓷电容并联降低输入电容的等效串联电感ESLSW节点铺铜面积不要贪大够走电流就行越小越好低边MOSFET的源极与输出电容地之间要保持低阻抗接地如果板子是多层板把功率地和信号地在芯片底下用星形连接避免振铃电流耦合进模拟控制部分。很多仿真软件都能快速估算布局的寄生电感但最直接的验证方式是实测。测量方法也不难在样板的不同版本上分别测试SW节点振铃频率频率越高说明寄生电感L_p越小因为f_ring1/(2π√(L_p C_p))C_p基本不变。我改版后发现SW振铃频率从70MHz提高到了120MHz幅度也降了不少这就是布局优化生效的直接证据。5. 实测复盘一次振荡从300mV收敛到可接受范围的完整过程理论讲再多不如完整走一遍实测。我拿最近处理的一个12V转3.3V同步Buck板子来做复盘整个排查流程、参数调整和验证方式都写出来方便你照着自己的板子做对比。这块板子的问题是客户反馈满载时SW节点过冲接近300mVEMI预测试在240MHz附近有一个明显超限尖刺而且高温老化时高边MOSFET管壳温度偏高。我拿到板子之后没有着急改Layout而是先做完整的波形记录和分析。5.1 故障描述与初步排查板子是标准同步Buck高边采用一颗100V/18A的MOSFET低边采用一颗100V/18A的MOSFET开关频率约300kHz输入12V输出3.3V负载电流8A。我把示波器探头用弹簧地针短接法接在SW节点上分别在空载、半载和满载下记录波形。实测数据如下负载情况SW过冲幅度振铃频率振铃持续时间空载约80mV约75MHz约30ns半载4A约180mV约78MHz约80ns满载8A约290mV约80MHz约120ns由满载情况估算C_p取高边和低边Coss串联等效值约130pF查手册在12V偏置条件下f_ring80MHz代入公式算得L_p≈30nH左右这说明功率回路寄生电感偏大是主要的“振铃贡献者”。初步排查优先级先看PCB布局果然发现输入电容位置离高边MOSFET比较远走线绕了一个大圈回流面积很大同时SW节点的铺铜面积也比较大形成了额外的寄生电容和天线效应。这个结果和计算吻合——30nH的功率环路寄生电感在同步Buck板子上确实偏高正常应该控制在5~15nH以内。5.2 调整过程RC吸收→栅极电阻→布局调整的组合拳既然定位到了主要矛盾我开始分层处理。第一步加RC吸收验证阻尼效果。根据R_snubber≈√(L_p/C_p)≈√(30nH/130pF)≈15.2Ω我选取了一个最接近的常见阻值15Ω电容从1nF开始试。在满载条件下SW过冲从290mV降到约110mV振铃在一个周期内就衰减到很小幅度。但此时测效率满载效率下降了约1.8个百分点RC吸收电阻温度约60℃。这个方案能解决问题但代价偏高先留着作为保底方案。第二步调整栅极电阻。高边MOSFET原来的栅极电阻是2.2Ω我换成了10Ω再测满载SW过冲降到约150mV效率损失约0.8个百分点。振铃还是存在但幅度已经明显收敛。这个方案比RC吸收的损耗小一些但是边沿明显变缓开关损耗与dv/dt相关的噪声有一定增加不过总体可接受。第三步还是决定改Layout。把输入电容从原来的位置挪到高边MOSFET漏极正下方VIN走线加宽并减少过孔数量SW节点铺铜缩小1/3。改版后即使把栅极电阻换回2.2Ω满载SW过冲也只有90mV左右振铃频率升到约110MHz说明L_p从30nH压到了约16nH。叠加回RC吸收后过冲进一步压到40mV以内振铃基本消失。这里有个很重要的结论改Layout的效果是“治本”RC吸收和栅极电阻是“治标”。如果条件允许重板优先把寄生电感降下来后面很多妥协都不需要做。5.3 最终波形、温升与EMI验证调整完以后我做了三组验证。第一组是波形验证。满载8A条件下SW节点过冲从290mV降到40mV以下振铃持续时间从120ns缩短到20ns以内示波器截图几乎看不到明显的高频尾巴。峰值电压离MOSFET的100V额定值有充分余量。第二组是温升验证。满载持续跑1小时高边MOSFET表面温度从之前的92℃降到81℃RC吸收电阻温度从60℃降到48℃。这说明振铃能量被有效收敛后器件热压力也同步下降了。第三组是EMI预扫。240MHz附近的超限尖刺下降了10dBμV以上峰值余量大概有6dB测试结果已经比较容易过了。最后总结一句振铃不是玄学它是由可测量的寄生参数决定的只要测准了、算明白了、分层处理了就能控制住。上面这一套“测-算-治”的方法在你自己的Buck板子上也完全适用建议从测试环节开始一步步来。