
1. 电源树形图到底在解决什么问题1.1 从一个真实的翻车案例说起前两年帮朋友看一块STM32F4加4G模组的板子功能验证阶段一切正常小批量试产的时候大概有百分之十几的板子会在4G模组发射瞬间复位。他一开始怀疑是软件看门狗误触发查了半个月固件没结果后来把示波器探头往3.3V轨上一挂发现模组发射时电源轨上有一个接近400mV的跌落持续时间大概几十微秒MCU的BOR直接把它摁在复位状态了。这个问题的根子不在固件也不在模组本身而在于他画原理图的时候3.3V这一路是“一棵树上的同一根主干”——MCU、4G模组、传感器、LED指示灯全部挂在同一个LDO输出上LDO的电流余量只留了20%输出电容也只放了一颗10uF。模组瞬时电流从几十毫安跳到2ALDO根本来不及响应整条3.3V轨被拉垮MCU跟着遭殃。如果他在设计初期画过一张电源树形图把每一路电源的来源、去向、电流预算、上电时序、滤波配置全部摊在一张图上这个问题在画原理图之前就能被发现。这就是电源树形图的价值——它不是一张好看的框图而是嵌入式PCB设计中电源完整性的第一道防线。1.2 电源树形图是什么和普通框图有什么区别很多人会把电源树形图和“系统框图”混为一谈。系统框图是功能视角的画的是“MCU连传感器、传感器连射频”电源树形图是能量视角的画的是“电从哪来、经过谁、到哪去、每一站消耗多少、每一站需要什么条件”。一张合格的电源树形图至少包含这几类信息电源入口USB 5V、DC 12V、锂电池3.7V、PoE 48V等等标注输入范围、最大电流、是否有反接保护。一级变换DCDC、LDO、充电管理IC标注型号、输入输出范围、效率曲线拐点、最大输出电流。二级变换从3.3V再分出1.8V、1.2V、0.9V等标注每一级的负载类型。负载节点每一路电源供给了哪些器件标注典型电流、峰值电流、峰值持续时间。时序关系哪些电源必须先上、哪些必须后上、哪些需要同时上标注EN引脚的控制来源。滤波与去耦每一级输出放了多少电容、什么类型、什么封装、放在板的哪个区域。它和系统框图最大的区别是系统框图回答“系统能干什么”电源树形图回答“系统能不能稳定地干”。前者是功能设计后者是可靠性设计。1.3 谁最需要认真画这张图我的经验是下面这几类项目电源树形图必须画而且要在画原理图之前画多电压域系统比如SoC需要0.9V核心、1.8V DDR、3.3V IO、5V外设四路以上电源。含射频或大功率脉冲负载4G、WiFi、电机、电磁阀、大功率LED这些负载的峰值电流往往是平均电流的5到20倍。电池供电的低功耗设备每一微安都要算电源树形图直接决定续航。需要严格上电时序的器件FPGA、部分ADC、部分DDR上电顺序错了可能直接锁死或者损伤器件。车规、工规、医疗类产品可靠性要求高电源设计必须可追溯、可评审。反过来说如果只是一块STM32最小系统加几个LED电源树形图画不画影响不大。但只要系统复杂度上来了这张图就是你和“玄学复位”“随机死机”“EMC过不了”之间的一道墙。2. 画图之前必须搞清楚的几个核心概念2.1 电源完整性和信号完整性不是一回事很多刚入行的朋友会把电源完整性和信号完整性混着说。简单区分信号完整性关心的是“信号波形在传输线上有没有变形”电源完整性关心的是“供电电压在负载变化时有没有塌陷”。两者会互相影响但设计手段不一样。电源完整性要盯住三个指标直流压降从电源输出到负载引脚铜箔和过孔上的电阻会造成压降。1A电流走1盎司铜、20mil宽、2英寸长的走线压降大概在30mV量级看起来不大但如果负载要求3.3V±3%留给你的余量只有99mV压降就吃掉三分之一。交流纹波DCDC开关纹波、LDO噪声、负载跳变引起的瞬态跌落这些是交流层面的问题。瞬态响应负载电流突变时电源环路和去耦网络能不能在负载允许的时间内把电压拉回来。电源树形图主要解决的是第一层和第二层的规划问题——把电流预算算清楚、把每一路的滤波和去耦规划清楚瞬态响应的细节再交给布局布线和仿真去打磨。2.2 电流预算不是“加起来乘个系数”那么简单我见过太多人做电流预算的方式是把每一路负载的datasheet典型电流加起来乘个1.5然后选个电源芯片。这种做法在简单系统里能凑合在复杂系统里迟早出事。正确的做法是分三层算第一层平均电流。每个器件的典型工作电流这个从datasheet拿。第二层峰值电流。每个器件的最大瞬时电流以及这个峰值的持续时间。比如4G模组发射时2A持续几百微秒WiFi发射时500mA持续几毫秒电机启动时3A持续几十毫秒。第三层同时性系数。不是所有负载的峰值都会同时出现。比如WiFi和4G通常不会同时满功率发射电机和射频通常也不会同时工作。这个系数要靠系统架构师给不能拍脑袋。最终选电源芯片的时候要看的是“平均电流最大同时峰值电流”而不是简单相加。同时还要看电源芯片的瞬态响应能力——有些DCDC标称3A但负载从0跳到3A时输出电压跌落300mV这种就不适合给射频供电。2.3 LDO和DCDC的选择逻辑电源树形图上每一级用LDO还是DCDC是有明确逻辑的不是“LDO便宜就用LDO”。维度LDODCDC效率低压差越大效率越低高通常85%以上噪声低PSRR好的能做到60dB以上高开关噪声需要滤波瞬态响应快带宽高慢受环路带宽限制外围元件少通常两个电容多电感、电容、二极管成本低高发热压差大时严重小我的经验规则是压差小于0.5V、电流小于500mA优先LDO。压差大于1V、电流大于500mA优先DCDC。给射频、ADC、PLL供电如果电流不大优先LDO因为噪声低。给数字核心、电机、LED供电优先DCDC因为效率高。如果DCDC后面接LDO做二级滤波要注意LDO的PSRR在DCDC开关频率处的衰减很多LDO在1MHz处PSRR只有20dB等于没滤。2.4 上电时序为什么能决定生死有些器件对上电顺序有硬性要求。典型的有FPGA核心电压先上IO电压后上否则IO上的电压会通过内部ESD二极管倒灌到核心导致闩锁。部分ADC模拟电源和数字电源的顺序有要求反了会导致内部基准异常。DDRVDD先上VDDQ后上VREF最后顺序错了可能初始化失败。带EN引脚的DCDC如果EN直接接到输入电压上电时输入电压缓慢上升会导致DCDC反复启停。电源树形图上必须把每一路的EN来源标清楚是直接接输入、还是接MCU的GPIO、还是接电源监控芯片的PG信号。如果有时序要求还要标注延时时间比如“3.3V建立后10ms再拉高1.8V的EN”。3. 手把手画一张能用的电源树形图3.1 工具选择别一上来就开Altium画电源树形图不需要EDA工具用什么都行关键是信息完整。我常用的组合是初稿纸和笔或者白板。这个阶段是头脑风暴快速迭代。正式稿draw.io、Visio、甚至Excel。draw.io免费、跨平台、导出方便我用了好几年。评审稿导出PDF打印出来在评审会上用红笔改。电子版改十遍不如打印出来改一遍。归档最终版放进项目文档和原理图、PCB放在一起版本号对齐。不建议一上来就用Altium或者Cadence画因为那些工具的画图逻辑是给PCB服务的画电源树形图反而别扭。等电源树形图定稿了再照着它去画原理图效率更高。3.2 从电源入口开始一层一层往下画画图的顺序很重要我的习惯是从左到右、从上到下第一步确定所有电源入口。把板子上所有能从外部进来的电都列出来USB 5V、DC插座12V、电池、PoE、调试接口的3.3V等等。每个入口标注输入范围、最大电流、保护器件。第二步画一级变换。每个入口后面接什么充电IC、理想二极管、DCDC、LDO。标注型号、输入输出、最大电流、效率。第三步画二级变换。从一级输出再分出去的电源比如3.3V再分1.8V、1.2V。同样标注型号和参数。第四步挂负载。每一路电源后面挂哪些器件用方框或者文字标注。每个负载标注典型电流、峰值电流、峰值持续时间。第五步标时序。用箭头或者编号标注上电顺序标注EN来源和延时。第六步标滤波。每一级输出标电容配置每一路负载标去耦配置。3.3 一个实际项目的电源树形图拆解拿一个典型的“STM324GWiFi传感器锂电池”的物联网终端举例电源树形图大概长这样入口锂电池3.7V3.0V到4.2VUSB 5V用于充电和调试。一级变换充电管理IC输入USB 5V输出给电池充电同时给系统供电。标注最大充电电流1A系统供电能力2A。升压DCDC电池3.0V到4.2V升到5V给4G模组和USB外设供电。标注最大输出2A效率90%。降压DCDC电池或5V降到3.3V给MCU、WiFi、传感器供电。标注最大输出3A效率92%。二级变换3.3V降到1.8V LDO给WiFi模组的IO和部分传感器供电。标注最大输出300mAPSRR在1MHz处40dB。3.3V降到1.2V DCDC给MCU核心供电。标注最大输出1A。负载分配5V轨4G模组典型200mA峰值2A持续500us、USB外设最大500mA。3.3V轨MCU IO典型50mA峰值100mA、WiFi模组典型150mA峰值500mA持续2ms、传感器典型20mA。1.8V轨WiFi IO典型30mA、传感器典型10mA。1.2V轨MCU核心典型80mA峰值150mA。时序3.3V先上延时10ms后1.8V上再延时5ms后1.2V上。4G模组的EN由MCU GPIO控制系统初始化完成后再拉高。滤波5V轨DCDC输出放22uF陶瓷100uF钽电容4G模组输入端放100uF10uF1uF0.1uF。3.3V轨DCDC输出放22uF陶瓷47uF钽电容每个负载引脚放0.1uF。1.8V轨LDO输出放10uF陶瓷每个负载引脚放0.1uF。1.2V轨DCDC输出放22uF陶瓷MCU核心引脚放0.1uF1uF。这张图画出来一眼就能看出5V轨的峰值电流是2.5A而升压DCDC只有2A余量不够要么换更大电流的DCDC要么把USB外设的供电挪到别的轨上。这就是电源树形图在原理图之前发现问题的作用。3.4 参数计算把每一个数字都算出来电源树形图上的数字不能拍脑袋要算。举几个关键计算DCDC输出电容计算。负载跳变时输出电容要在DCDC环路响应之前提供电荷。公式是C I_trans × t_response / V_droop假设4G模组峰值2A持续时间500usDCDC环路响应时间100us允许跌落100mV那么C 2 × 100e-6 / 0.1 2000uF。这个数字很大实际会用多个电容并联同时选环路响应更快的DCDC。如果DCDC响应时间能做到20usC 2 × 20e-6 / 0.1 400uF就现实多了。LDO功耗计算。LDO的功耗是输入电压-输出电压×输出电流。假设3.3V降到1.8V输出300mA功耗是3.3-1.8×0.3 0.45W。SOT-23封装的热阻大概250°C/W温升112°C环境温度25°C时结温137°C超过很多LDO的125°C上限。这种就要换DCDC或者更大封装。走线压降计算。铜的电阻率是1.7e-8 Ω·m1盎司铜厚35um走线宽度wmil长度Linch电阻大概是R 0.5 × L / w 单位mΩ1A电流走20mil宽、2英寸长电阻是0.5 × 2 / 20 0.05Ω压降50mV。如果负载要求3.3V±3%99mV余量压降就吃掉一半。这种就要加宽走线或者加厚铜。这些计算不用很精确但要有数量级的概念。电源树形图上标注了这些数字布局布线的时候才知道哪里要加宽、哪里要加电容。4. 从电源树形图到PCB布局的落地策略4.1 电源分区把噪声源和敏感负载分开电源树形图定稿后PCB布局的第一件事是分区。我的习惯是把板子分成几个区域电源区所有DCDC、LDO、充电IC集中放电感、输入输出电容紧贴芯片。数字区MCU、DDR、Flash远离电源区的电感。射频区WiFi、4G模组单独屏蔽罩电源走线从电源区直接拉过来不经过数字区。模拟区ADC、传感器单独LDO供电地和数字地单点连接。接口区USB、DC插座、调试接口ESD保护器件紧贴接口。分区的依据就是电源树形图上的负载分配。同一路电源供的负载尽量放在一起不同路电源的负载尽量分开。这样电源走线短、回路小、干扰少。4.2 去耦电容的摆放不是越多越好是越近越好去耦电容的作用是给高频电流提供一个低阻抗回路。它的有效性取决于两个因素电容到负载引脚的距离以及电容到地的回路面积。我的经验规则0.1uF电容放在负载引脚旁边距离不超过2mm过孔直接打到地平面。1uF电容放在负载集群的中间距离不超过5mm。10uF以上电容放在电源输出端或者负载区域的入口距离不超过10mm。过孔每个电容至少两个过孔到地过孔尽量靠近焊盘。回路面积电容的正极到负载引脚、负载引脚到地、地到电容负极这个回路面积越小越好。很多人喜欢在电源轨上放一排电容从0.1uF到100uF排成一列但离负载很远。这种放法对低频有效对高频基本没用因为高频电流走的是最近的回路远处的电容根本来不及响应。4.3 地平面处理电源完整性的另一半电源完整性从来不只是电源走线的事地平面同样关键。我的做法是四层板顶层信号、第二层地、第三层电源、底层信号。地和电源平面完整不走信号线。六层板顶层信号、第二层地、第三层信号、第四层电源、第五层地、底层信号。两个地平面电源平面夹在中间。地平面分割数字地和模拟地单点连接连接点选在ADC或者电源芯片的地引脚附近。射频地单独一块通过多个过孔和主地连接。过孔 stitching地平面边缘每隔5mm放一个地过孔减少边缘辐射。电源树形图上标注的每一路电源在地平面上都要有对应的回流路径。如果电源走线在顶层地回流在第二层那第二层对应位置不能有沟槽或者分割否则回流路径被切断电源完整性直接崩掉。4.4 大电流路径的处理加宽、加厚、加过孔电源树形图上标注了电流的路径PCB上就要对应处理走线宽度1A电流至少20mil宽1盎司铜2A至少40mil3A至少60mil。如果空间不够用2盎司铜宽度可以减半。过孔数量一个0.3mm孔径的过孔大概能过1A电流2A就要两个过孔3A就要三个。过孔要分散开不要挤在一起。铜皮大电流路径可以用铜皮代替走线但要注意铜皮的形状避免尖角尖角会导致电流集中。散热DCDC和LDO的散热焊盘要足够大下面放散热过孔连接到地平面或者专门的散热铜皮。我见过一块板子3.3V走线只有10mil宽过孔只有一个结果满载时走线发热压降超过200mVMCU随机复位。后来把走线加宽到40mil过孔加到三个问题解决。这种问题在电源树形图上如果标注了电流布局时就不会犯。5. 常见问题与排查技巧实录5.1 上电复位、随机死机、射频发射时重启这三个现象是电源完整性问题最常见的表现。排查思路第一步确认是不是电源问题。用示波器交流耦合探头接地弹簧不要用长地线测MCU的VDD引脚。触发方式设成下降沿触发电平设成VDD的90%。如果抓到跌落就是电源问题。第二步定位是哪一路电源。同时测多路电源看哪一路先跌落。如果是3.3V先跌就往3.3V的上游查。第三步定位是哪个负载引起的。用电流探头或者串联采样电阻测各个负载的电流波形。看哪个负载的电流跳变和电压跌落同时发生。第四步算电容够不够。根据负载峰值电流和持续时间算需要的电容值和实际放的电容对比。第五步看布局。电容离负载远不远过孔够不够走线宽不宽地平面完不完整5.2 常见问题速查表现象可能原因排查方法解决措施MCU随机复位3.3V瞬态跌落示波器测VDD触发下降沿加去耦电容加宽走线换更大电流DCDC射频发射时重启射频峰值电流拉垮电源测射频供电轨同步测射频电流射频单独供电加储能电容加LC滤波上电时反复启停DCDC的EN上升太慢测EN引脚波形加RC延时或者用PG信号控制ENLDO发热严重压差大、电流大算功耗测温度换DCDC或者加大封装加散热铜皮ADC采样噪声大模拟电源不干净测模拟电源纹波模拟单独LDO加LC滤波地单点连接EMC辐射超标电源回路面积大近场探头扫描缩小回路加屏蔽加共模电感电池续航短电源效率低测各段电流算效率换高效率DCDC降低静态电流关断无用电源5.3 几个容易踩的坑坑一DCDC输出电容用钽电容。钽电容的ESR比较高对高频纹波抑制不好而且失效模式是短路容易起火。我现在的做法是陶瓷电容为主钽电容只在需要大容量且空间受限时用而且选带保险丝的。坑二LDO的PSRR在开关频率处很差。很多LDO的PSRR曲线在100Hz到10kHz很好到1MHz就只剩20dB。如果前面是1MHz开关频率的DCDCLDO基本滤不掉。这种要么选高PSRR的LDO要么在LDO前面加LC滤波。坑三上电时序靠RC延时不可靠。RC延时的精度受电容容差、温度、电压影响批量生产时一致性差。可靠的做法是用电源监控芯片或者MCU的GPIO控制EN。坑四地平面分割不当。有些人喜欢把地分成数字地、模拟地、射频地、电源地分得很细但连接点没选好导致回流路径被切断。我的做法是能不分就不分必须分的时候单点连接连接点选在噪声源和敏感负载之间。坑五忽略走线压降。小电流时走线压降可以忽略大电流时不能忽略。1A电流走20mil宽、2英寸长压降50mV如果负载要求3.3V±3%这就吃掉一半余量。布局时要把大电流路径加宽或者把电源芯片放得离负载近一点。5.4 一个实用的评审清单每次电源树形图定稿后我都会用这个清单过一遍每一路电源的输入范围、输出范围、最大电流是否标注每一路电源的效率曲线是否看过最坏情况下的功耗是否算过每一个负载的典型电流、峰值电流、峰值持续时间是否标注同时性系数是否和系统架构师确认过上电时序是否明确EN来源是否明确延时是否算过每一路电源的输出电容是否算过去耦电容是否规划大电流路径的走线宽度、过孔数量是否算过电源分区是否合理噪声源和敏感负载是否分开地平面是否完整回流路径是否连续是否有测试点每一路电源是否预留了测量点这个清单过一遍大部分电源问题在原理图阶段就能发现。等到PCB打样回来再改成本就高了。6. 电源树形图的进阶玩法6.1 用仿真验证电源树形图电源树形图定稿后可以用仿真工具验证一下。我常用的方法是直流仿真用LTspice或者Simplis把电源树形图上的每一级变换和负载建模仿真看直流工作点、效率、功耗。瞬态仿真给负载加电流阶跃看电源轨的瞬态响应验证电容配置是否足够。热仿真用ANSYS Icepak或者Flotherm把功耗代入看PCB温度分布验证散热是否足够。仿真不用很精确但能发现数量级的问题。比如仿真发现3.3V轨在负载跳变时跌落500mV那实际肯定好不了就要回去改设计。6.2 把电源树形图变成自动化检查如果项目多可以把电源树形图的信息结构化用脚本做自动化检查。比如用YAML或者JSON描述电源树形图每一路电源、每一个负载、每一个参数都结构化。写Python脚本检查电流余量是否足够、电容是否足够、时序是否冲突、走线宽度是否足够。和原理图网表对比检查电源树形图上的连接和原理图是否一致。这种做法在大型项目或者系列化产品里很有用能避免人为疏忽。小项目手工检查就够了。6.3 电源树形图和EMC的关系电源树形图上的每一个DCDC都是一个潜在的EMC噪声源每一个射频负载都是一个潜在的敏感设备。画图的时候就要考虑DCDC的开关频率选多少避开射频接收频段。DCDC的电感选屏蔽电感还是非屏蔽屏蔽电感辐射小但贵。输入输出是否需要共模电感长线缆供电时通常需要。射频负载的电源是否需要LC滤波通常需要而且滤波器的截止频率要低于射频频率。电源走线是否靠近射频走线尽量远离或者垂直交叉。这些考虑在电源树形图上标注出来布局布线的时候就有依据。6.4 低功耗设计的电源树形图电池供电的设备电源树形图还要考虑低功耗每一路电源的静态电流是多少LDO的静态电流通常比DCDC小。哪些电源可以关断用负载开关或者DCDC的EN引脚控制。关断时的漏电流是多少有些负载开关关断时仍有微安级漏电。休眠时的电源配置是什么哪些电源保持、哪些关断。唤醒时的上电时序是什么唤醒时间是否满足系统要求。我做过一个低功耗项目休眠电流目标10uA结果实测50uA。查了半天发现是某个传感器的电源没关断漏了40uA。如果电源树形图上标注了每一路的关断控制这个问题在设计阶段就能避免。7. 我个人的一些经验体会画电源树形图这件事我坚持了大概七八年从最开始的手绘到后来的结构化文档最大的体会是它逼着你在动手之前把问题想清楚。很多电源问题不是技术难题而是疏忽。疏忽的根源是信息没有摊开。原理图上电源走线是分散的你看不出3.3V这一路总共供了多少负载、总电流是多少、峰值是多少。电源树形图把这些信息集中到一张图上疏忽就无处藏身。另一个体会是电源树形图要和原理图、PCB同步更新。我见过太多项目电源树形图是设计初期画的后来改板改了电源方案树形图没更新结果评审的时候拿的是旧图问题没发现。我的做法是把电源树形图放进版本控制和原理图、PCB一起走ECO流程改一处就改三处。最后一个体会是电源树形图不是画给自己看的是画给团队看的。硬件工程师、Layout工程师、软件工程师、测试工程师每个人关心的点不一样。硬件关心选型和余量Layout关心分区和走线软件关心时序和控制测试关心测量点。一张好的电源树形图能让每个人快速找到自己关心的信息减少沟通成本。如果你还没画过电源树形图下一个项目可以试试。不用很复杂一张A4纸、一支笔把电源的来龙去脉画清楚你会发现很多之前没注意到的问题。画完再画原理图心里踏实很多。