4. 电源系统设计
嵌入式Linux载板通常需要从单一输入电源(如12V适配器或5V USB-C)派生出十余路不同电压:SoC核心0.8~1.1V大电流、DDR 1.1V/1.8V、IO 3.3V、外设5V、模拟1.8V/3.3V等。电源系统设计的目标不是"把电压变出来",而是在效率、纹波、时序、成本、面积五个维度上取得平衡。本章围绕DC-DC与LDO选型、上下电时序、电源树规划以及纹波与效率优化展开。
一、DC-DC与LDO的核心差异与选型逻辑
DC-DC(Buck/Boost)通过电感储能与开关斩波实现高效变换,效率通常85%~95%,但开关噪声大、外围元件多、纹波在mV~数十mV量级。LDO通过调整管线性稳压,输出纹波可低至几十μV、无开关噪声、外围仅需输入输出电容,但效率近似等于Vout/Vin,压差大时发热严重。
选型的第一原则是先看压差与电流:当输入输出压差小(<0.5V)或负载电流小(<300mA)时优先LDO;当压差大、电流大(>1A)时必须用DC-DC,否则LDO功耗P=(Vin−Vout)×Iout会迅速超过封装热阻允许值。第二原则是看噪声敏感度:PLL、ADC基准、射频、音频Codec等模拟/时钟域优先LDO或DC-DC后级LDO。第三原则是看动态响应:SoC核心电流跳变可达数A/μs,需关注DC-DC的环路带宽与输出电容ESR配置。
二、电源树规划:从输入到负载的层级分配
电源树是电源系统的骨架,它决定了电压层级、上电顺序、电流路径与故障传播关系。规划时先列出所有负载的电压/电流/纹波/时序需求,再按"高压大电流在前、低压小电流在后、噪声敏感单独分支"的原则分层。典型三层结构:第一层12V→5V/3.3V主Buck;第二层5V→1.8V/1.1V/0.9V多路Buck;第三层LDO为模拟域、PLL、RTC提供干净电源。
电源树还需标注使能信号(EN)来源与Power Good(PG)反馈,这两者是实现上下电时序的硬件基础。下图给出一个典型嵌入式Linux载板的电源树与上下电时序关系示意。
三、上下电时序:为什么顺序错了会烧芯片
SoC与DDR、外设之间存在体二极管、ESD二极管、IO钳位等寄生通路。若3.3V IO先于1.8V DDR上电,电流会经IO钳位二极管倒灌进1.8V域,轻则漏电、重则闩锁。因此必须遵循"先核心后IO、先数字后模拟、先低压后高压"的通用原则,具体顺序以SoC数据手册的Power Sequencing章节为准。
实现方式有三种:一是利用DC-DC的PG引脚级联EN,形成菊花链;二是用专用时序控制器(如TPS650系列)配置延时;三是用CPLD/GPIO在Bootloader前控制。下电顺序通常与上电相反,且要求RESET先拉低,避免IO悬空。
四、纹波与效率优化方法
纹波优化从三个层面入手:器件层——选择低ESR陶瓷电容、合适电感(饱和电流≥1.3×Iout、DCR小)、低ESR输出电容并联;布局层——输入电容紧贴芯片VIN与GND、SW节点铜箔面积最小化、反馈走线远离SW与电感、模拟地单点连接;参数层——提高开关频率可减小纹波但降低效率,增大输出电容可减小纹波但影响环路相位裕度。
效率优化则关注:降低开关损耗(选低Qg MOSFET)、降低导通损耗(低Rds(on)或低DCR电感)、减少死区时间、在轻载时切换至PFM/Burst模式。下表给出典型选型与优化对照。
| 负载域 | 推荐方案 | 关键参数 | 纹波目标 | 效率目标 |
|---|---|---|---|---|
| SoC 核心 0.9V/5A | 多相Buck或大电流单相Buck | Fsw 500kHz~1MHz,低DCR电感 | <20mV | >88% |
| DDR 1.1V/2A | 同步Buck | 低ESR陶瓷输出电容 | <15mV | >90% |
| 3.3V IO/1A | Buck | PFM轻载模式 | <30mV | >85% |
| PLL/ADC 1.8V/200mA | LDO(前级Buck预降) | PSRR>60dB@1MHz | <100μV | — |
| RTC/待机 3.3V/10mA | 低静态电流LDO | Iq<10μA | <1mV | — |
五、案例与复盘:一次DDR初始化失败
某载板使用SoC + LPDDR4,样机启动偶发失败,串口打印DDR训练错误。排查发现:1.1V DDR电源与1.8V IO电源由同一颗Buck的PG级联,但1.8V Buck的软启动时间比1.1V长,导致1.1V先建立、1.8V后建立,违反DDR上电顺序。将1.8V的EN改为由12V直接使能、1.1V由1.8V的PG使能后,问题消失。
复盘要点:时序设计不能只看原理图,必须实测。建议在PCB上为每路电源预留测试点,用四通道示波器抓取上电波形,并记录软启动时间、PG释放阈值、RESET释放时刻。对于多路电源,可编写脚本自动比对时序窗口。
# 示例:用示波器抓取四路电源上电时序(伪代码)
scope.ch1 = "5V_MAIN"
scope.ch2 = "1.8V_DDR_IO"
scope.ch3 = "1.1V_DDR_VDD"
scope.ch4 = "SOC_RESET"
scope.trigger(ch1, rising, 4.5V)
scope.capture()
assert ch2.rise_time < ch3.rise_time # 1.8V 应先于 1.1V
assert ch4.rise_time > ch3.rise_time # RESET 最后释放
电源系统是载板可靠性的地基。选型决定效率与噪声上限,电源树决定架构清晰度,时序决定芯片能否安全启动,而纹波与效率优化则贯穿布局、器件与参数三个层面。只有把这几件事在原理图阶段就规划清楚,后续调试才不会陷入"改一路、动全身"的被动局面。