Xilinx FPGA/SoC电源设计实战:读懂官方PMIC参考设计

发布时间:2026/8/28 9:52:26
Xilinx FPGA/SoC电源设计实战:读懂官方PMIC参考设计 前阵子一块 Zynq UltraScale 平台的新板卡样机回来上电后 PCIe 链路训练始终过不了示波器一抓发现 VCCINT_IO 这路电源纹波在系统跑起来之后接近 80mVpp而 FPGA 数据手册里这路轨的建议纹波上限非常苛刻。后来顺着 Xilinx 官方 PMIC Reference Designs 的思路重新整理了电源树、换掉了反馈采样点、调整了 PMIC 的排序配置问题才彻底解决。这次折腾给我最大的感受是很多做 FPGA 板卡的工程师包括我自己早期都把电源设计理解成凑够电压、凑够电流但实际上 Xilinx FPGAs 和 SoCs 的供电是一套涉及多路电源轨、上电时序、动态调压、纹波和瞬态响应的系统工程而官方 PMIC 参考设计文档恰恰是解决这套问题的最重要拐杖。这篇博文就围绕 PMIC Reference Designs 这个话题把参考设计怎么读、怎么用、怎么落地到自己的板卡以及我在实际项目里踩过的坑一次讲透。1. 先从一次板卡供电翻车聊起FPGA 的电源设计不是“凑够电压就行”1.1 一块 UltraScale 板卡上到底有多少路电源要伺候一个典型的 Zynq UltraScale MPSoC 板卡电源轨数量通常会让第一次接触 FPGA 供电的人头皮发麻。PL 域可编程逻辑里有 VCCINT、VCCINT_IO、VCCBRAM、VCCAUX、VCCAUX_IO还有根据引脚分组的多个 VCCO 电平域。PS 域处理系统里又分 VCC_PSINTLP、VCC_PSINTFP、VCC_PSAUX、VCC_PSDDR_PLL再加上为 DDR 控制器供电的专用轨。如果板卡上还有高速收发器那就多了 MGTRAVCC 和 MGTRAVTT。还没算外围的 PSIO 电压、DDR 的 VDDQ/VTT、各种 PLL 的模拟供电以及启动配置电路用的 VCCO_0 到 VCCO_3。这些电源轨的电压往往不是一个档位能覆盖的。VCCINT 在 UltraScale 上通常是 0.85V 甚至更低VCCBRAM 是 0.9VVCCAUX 是 1.8VMGTRAVCC 看代次可能在 0.9V 到 1.0V 之间MGTRAVTT 常见 1.2V。电压种类多就算了各路电流差异也很大VCCINT 可能轻松到几十安培MGT 轨只有几安培但对噪声极其敏感。多电压、大电流、高敏感如果要完全靠离散的 DC/DC 加 LDO 一个个搭先不说 PCB 面积撑不住光是每一路的上电时序和监测电路就够画原理图画到怀疑人生。这也是 Xilinx 官方大力推广 PMIC Reference Designs 的第一个原因它不是给你一颗芯片的参考电路而是在给你一套经过验证的电源树方案。参考设计会把每路电源轨的电压、供电能力、默认排序、PG 监控方式、甚至 PCB 布局时的去耦电容建议一起给你。1.2 当普通独立DCDC方案遇上FPGA最容易出问题的地方我见过不少团队在 FPGA 板卡上沿用以前单片机或 ARM 板的老方法每路电源用一个独立 DC/DC上电顺序靠 RC 延时或者 EN 引脚串电阻分压来实现。这种方案在低功耗、轨数少的场合确实能跑但在 FPGA 板卡上至少有四个地方非常容易翻车。第一是上电时序。FPGA 对上电顺序的要求不是差不多同时上就行而是有明确的先后要求比如 VCCINT 先于 VCCBRAM、VCCBRAM 先于 VCCOVCCAUX 又往往有自己的要求。用 RC 做延时温漂和电容老化都会让时序变得不可靠尤其是多路电源。样机阶段调好没问题产品量产一段时间后就可能出现不定期的上电失败、DDR 初始化异常。第二是电压监控。Xilinx FPGA 的配置流程里带 Power-on Reset 检测。如果某一路电压在启动过程跌落到阈值以下轻则配置失败重则损伤芯片长期可靠性。独立 DC/DC 方案经常只做输出指示做不到对所有轨做全局监控和故障联动关断。第三是纹波和动态响应。FPGA 是典型的瞬态负载在配置加载、DDR 刷写、收发器训练这些瞬间电流变化速率非常快。一颗稳压器如果动态响应不过关无论电压初始值调多准负载突变时照样跌出允许范围。很多 PCIe 或 GTX/GTH 收发器初始化失败最后追溯原因都是供电瞬态没扛住而不是逻辑代码的问题。第四是调试成本。多路独立电源一旦出问题排查链路极长。PMIC 参考设计里往往通过 I2C 总线暴露了大量寄存器电压、电流、温度、PG 状态都能读出来配合 Xilinx 的 Vivado 或者 SDK 调试工具排查效率高很多。所以PMIC Reference Designs 真正解决的不是能不能少用几颗电感这种面积问题而是把电源从纯粹的功率电路升级成了可监测、可配置、有时序管理的子系统。理解这一点后面读参考设计图纸时才会有正确的思路。2. 官方 PMIC 参考设计到底是什么三种形态与获取渠道2.1 参考设计的三层含义板卡图纸、应用笔记、电源树文档说到PMIC Reference Designs for Xilinx FPGAs and SoCs很多工程师首先想到的是 Xilinx 官网上那些参考板卡的设计文件。这没错但只理解了其中一半。我理解中的官方参考设计其实是三层内容叠加在一起的。第一层是参考板卡的完整原理图和 PCB 设计文件。Xilinx 官方评估板比如 ZCU102、ZCU104、ZCU106、VCU118、VCK190 这些在官网都能下载到原理图 PDF部分板卡还能拿到 Cadence 格式的源工程。这些图里信息量极大电源树拓扑、每颗 PMIC/DC/DC 的型号和外围参数、MOSFET 或负载开关的选型、去耦电容数量与位置、PG 信号的连接方向全部都是经过官方验证的。对做硬件的人来说这就是最权威的参考答案。第二层是电源相关应用手册和电源树说明。Xilinx 的文档站点上有大量与电源相关的文档比如面向 UltraScale 架构的 PCB 设计指南、面向 7 系列 FPGA 的电源要求手册以及各种应用笔记。这些文档会给出每路电源轨的电压和电流范围、上电斜坡时间要求、纹波建议、PG 时序要求。官方还会针对特定器件给出Recommended Power Supply表格里面直接列了符合要求的 PMIC 型号清单。第三层才是严格意义上的 PMIC 厂商参考设计。TI、Renesas、ADI、MPS 这些电源厂商会和 Xilinx 合作针对特定 FPGA 系列推出Xilinx-ready的 PMIC 评估板和参考设计比如针对 UltraScale 的 TPS650864 系列针对 Zynq-7000 的一些多通道 PMIC 方案。这些参考设计文档里会给出非常细的寄存器配置表告诉你哪路输出接 VCCINT、哪路接 VCCAUX、各路上电延时怎么设。你拿到的往往是一整套可以导入到原型板的参考电路。也就是说不要只盯着某一个文档要把这三层结合起来看。板卡原理图解决别人怎么搭的问题电源手册解决芯片需要什么的问题PMIC 厂商参考设计解决PMIC 怎么配置的问题。三份资料对照着读才能在不踩坑的前提下把设计抄对。2.2 电源树该怎么读照抄之前先看这三张图我自己的习惯是拿到一份参考设计或官方板卡原理图先不看具体每颗 PMIC 型号而是先把电源树画出来。电源树不只是一张供电连接图它要包含三张维度完全不同的图。第一张是电压-电流分布图。找到原理图里的电源部分把所有电源轨按电压归类再标注上每路是从哪一颗 DC/DC 或 PMIC 通道出来的、最大能提供多少电流、接到了 FPGA 的哪些引脚组。这张图决定了你板卡的功率预算是否合理。如果某一路的输出能力连 FPGA 规格书里该轨的最大电流都覆盖不了那后面再优化都白搭。第二张是上电时序逻辑图。FPGA 官方手册会给出上电排序的要求参考板卡原理图里会通过 PMIC 的 EN 引脚连接、PG 信号级联、或者控制器的 GPIO 配置来体现这套时序。读图的时候要把每颗 IC 的 EN 来源、PG 去向、以及排序器的配置都理清。很多 PMIC 内部有可编程的时序引擎默认配置和外部上拉电阻决定的电平共同决定了最终的上电行为。第三张是故障响应图。当某一路过压、欠压或过流时系统会怎么反应是这一路独立关断还是通知 PMIC 主控把全部轨关掉PG 信号有没有接到 FPGA 的复位逻辑这直接关系到系统的可靠性。参考设计里好的故障响应设计会做到任何一路电源异常都让系统进入一个确定的、安全的停止状态。把这三张图理清楚参考设计才真正变成了你自己的设计。很多人抄板卡原理图抄得很像最后产品一出问题就无从下手往往就是因为只抄了器件连接没有抄到背后的电源树逻辑。2.3 三种方案的适用场景和取舍逻辑再看官方的多种参考设计你会发现 PMIC 参考设计大体上可以分成三类。第一类是纯 PMIC 方案也就是用一颗多通道 PMIC 同时管理多路电源轨。这类方案最典型的应用场景是 Zynq UltraScale 这种既有 PS 又有 PL 的异构芯片。PMIC 内部集成了多路 DC/DC 转换器和 LDO还带有可编程的上电时序、I2C 配置、电压电流监测甚至支持动态调压。优点是单板面积小、配置灵活、监控功能全。缺点是单一器件集总了主要功率路径如果某一路电流需求特别大比如 VCCINT 需要 40A单颗 PMIC 往往不够。第二类是独立 DC/DC 电源排序器方案。这个组合在很多官方高速板卡上很常见比如用多颗高效大电流 DC/DC 芯片分别承担 VCCINT、VCCAUX 等功率轨再用一颗专门的排序器/监控器去统一控制 EN 顺序、监控 PG。像 TI 的 UCD90120A、UCD90160A 这类器件就是干这个的。这类方案适合功耗很大的高规格 FPGA 板卡比如 Virtex UltraScale、某些 RFSoC 平台各路电流大到没法用单颗 PMIC 覆盖或者设计要求各路电源单独做功率优化和散热布局。第三类是电源模块方案。把 DC/DC 控制器、电感、甚至电容都封装在同一个模块里。这类方案在官方参考设计里也会出现尤其是需要快速验证的场合。优点是布板简单电源完整性设计压力小缺点是成本和体积通常比独立方案高一些。三类方案没有绝对的好坏更多看平台和需求。7 系列 FPGA 的 VCCINT 电流大但电源轨数量相对少用分立 DC/DC 加简单排序就能满足而 UltraScale/MPSoC 这种轨数多、还要 DVFS 的纯 PMIC 方案的性价比就显得很高。后面我专门展开讲讲选型逻辑。3. 选型不只看功耗PMIC 方案与分立方案的边界3.1 7 系列和早期SoC为什么用“DC/DC 排序器”更顺手Xilinx 7 系列 FPGA包括 Artix-7、Kintex-7、Virtex-7以及 Zynq-7000 SoC它们的电源轨数量相比 UltraScale 要少一些。VCCINT、VCCBRAM、VCCAUX、VCCO再加上 MGT 相关轨和 Zynq 的 PS 域大概在六到十路之间。这个数量和电压范围用几颗性能不错的 DC/DC 芯片加上 LDO是完全可以覆盖的。而且 7 系列的 VCCINT 电流常常很大一颗集成 PMIC 的电流能力很难满足高密度器件的需求。这时候如果在官方的 7 系列参考板上看会很惊讶地发现它们大量使用了分立的高效 DC/DC 方案。利用 TI 的 TPS 系列、MPS 的单片同步降压芯片每个通道输出二三十安培再配合电源排序器做多路 EN/PG 管理。这一套组合在 7 系列时代非常成熟很多公版设计甚至在 PCB 布局上都有相对固定的模板。在这个平台选型的时候我一般建议优先看参考板的电源树跟着官方选型逻辑走。不要一上来就找一颗万能 PMIC硬套因为 7 系列的大电流轨意味着 PMIC 里的功率 MOSFET 可能长期处于高负荷散热和可靠性都会受到影响。反而独立的 DC/DC 在热设计上更灵活允许你把发热源分散到 PCB 不同位置避免局部热点。当然如果用的是 Zynq-7000 里偏小型的型号电源轨少、电流小用一颗多通道 PMIC 也是合理的毕竟面积能省不少。关键是参考设计会告诉你哪一档密度选 PMIC 合适哪一档必须走分立方案。3.2 UltraScale/MPSoC/RFSoC 相对 PMIC 的天然亲近到了 UltraScale 架构情况完全不一样。以 Zynq UltraScale MPSoC 为例电源轨数量明显更多除了 PL 域的 VCCINT、VCCINT_IO、VCCBRAM、VCCAUX还多了 PS 域的多路电源VCC_PSINTLP、VCC_PSINTFP、VCC_PSAUX、VCC_PSDDR_PLL以及 DDR 的 VDDQ/VTT。多路电源还要求精确的上电序列常常是 PS 域的几路先起来然后 PL 域按顺序起来。如果全靠外部排序器去搭那 PCB 上到处是 EN 和 PG 的连线布线难度陡增。PMIC 在这种场景下的天然优势正是 Xilinx 官方参考设计力推它的原因。一颗 PMIC 集成多路独立同步降压通道内部自带时序引擎可以通过配置寄存器定义每一路的上电延时从上电先后逻辑到通道间延时全部可调。外加 I2C/PMBus 总线可以实时读取电压、电流、温度还能做动态电压调整。MPSoC 的 CPU 域和 GPU 域往往支持 DVFS动态电压频率调节PMIC 的可编程输出电压就成了刚需。RFSoC 平台更是如此。RFSoC 里集成了采样率极高的 ADC/DAC 和大量的 SerDes 收发器这些模拟前端对供电噪声极其敏感。PMIC 参考设计里会针对 RF 敏感轨提供低噪声 LDO 或专用滤波电路并且在板上布局、去耦电容选择上给出明确建议。照抄这类参考设计能省掉大量噪声从哪来的排查时间。在选型时还有个容易忽略的点PMIC 的开关频率和相移设置。多路降压转换器如果开关频率相近且没有做相移会产生明显的差拍噪声进而耦合到 FPGA 高速收发器的电源轨。官方 PMIC 参考设计里通常会对每一路的相移做明确推荐这是把高速收发器稳定性的问题前置到电源设计阶段的典型思路。3.3 大电流轨的层级扩展PMIC、外部功率级与电源排序器很多人会有个误解既然官方推荐 PMIC那我 VCCINT 需要 40A是不是就得找一颗能出 40A 的 PMIC其实不用。PMIC 参考设计的价值恰恰在于提供了多种层级扩展方式。第一种直接用更强电流能力的型号。比如针对大功耗 FPGATI 的 TPS650864 系列本身就区分了不同的输出电流等级有面向中低功耗和面向高功耗的变体。厂商做参考设计时通常会把同系列不同电流等级对应到不同档位的 FPGA 型号。第二种PMIC 负责控制、外部功率级负责出力。有些 PMIC 输出的控制信号可以驱动外部 MOSFET 或功率级模块。这种情况下PMIC 内部的 DC/DC 通道可以承担传统的小电流轨而 VCCINT 这种大电流轨由外部功率级承担PMIC 负责它的使能、反馈补偿和 PG 监测。这种主从架构在服务器板卡级别很常见。第三种PMIC 与独立排序器混合。如果板卡电流需求极端各路电源都很大就不必强求用 PMIC 提供所有功率路径可以退回到独立 DC/DC 排序器的思路让 PMIC/排序器做时序大脑各路独立电源做功率肌肉。Xilinx 官方参考设计里有时就是这么干的并不是所有板卡都清一色用同一类方案。选型时我的判断标准很简单先数清楚电源轨数量再看每路电流需求最后看有没有动态调压需求。轨数多、电流中等、要 DVFS优先 PMIC轨数少、电流极大、对成本敏感优先分立 DC/DC 加排序器。清楚了这一点再去看官方参考设计就不会被各种方案的宣传带偏。4. 把参考设计落到自己板卡上的完整步骤4.1 上板前先算用 XPE 把每路电流算清楚再抄原理图拿到官方参考设计最忌讳的就是直接照着原理图把 PMIC 电路抄过来自己板卡的 FPGA 型号、逻辑资源利用率、高速收发器数量、DDR 配置跟参考板完全不同电流需求怎么可能一样正确做法是先做功耗评估。Xilinx 官方提供了功耗估算工具 XPEXilinx Power Estimator有 Excel 版本也可以直接在线打开。在建工程的时候把器件型号、逻辑资源利用率、翻转率、时钟频率、IO 标准、SerDes 数量、DDR 配置等信息填进去XPE 会给出每一路电源轨的预估电流还会标出不同置信度下的范围。这一步非常关键。比如 VCCINT 电流在逻辑资源利用率 30% 和 80% 之间可能差出两三倍。如果你抄参考板的时候参考板是低功耗配置而你的设计里塞满了 DSP 和 BRAM那 PMIC 对应通道很可能过流。反过来如果按最高配置预留过多电流PMIC 选型又会偏大成本和面积都不划算。算完电流之后再把参考设计里的 PMIC 或 DC/DC 每一路的电流能力列成一张表和自己板卡的估算电流逐路对齐。注意不是对齐峰值而是对齐峰值 一定裕量。电源输出电流建议留 20% 到 30% 的裕量特别是瞬态大的轨。这一步做完你才会知道自己该用哪一档 PMIC、哪些通道需要并联、哪些通道甚至要外部功率级扩展。4.2 那些容易被抄丢的引脚EN、PG、GPIO、默认寄存器抄原理图的时候大部分工程师会把电源芯片的输入输出电容、电感照抄但最容易漏掉的是控制引脚和配置引脚。EN 引脚。PMIC 的每一路使能未必都是直连前一级 PG。很多 PMIC 的 EN 带有内部上拉或下拉外部还需要 RC 延时。参考设计里给的 RC 数值不是随便来的它决定了该路在上电时序里的具体延迟位置。当你减少或增加了一个通道的 EN 延时后续所有 PG 级联逻辑都会跟着变。照抄时一定要把 EN 的来源、拉电阻和延时电容都抄完整。PG 引脚。PG 通常是一个开漏输出需要外部上拉电阻到正确的电压域而且这个电压域必须是已经稳定的电源。如果上拉电压选错了比如在 VCCO 还没起来的时候 PG 就被拉高下游逻辑会误判电源正常。参考设计里 PG 的连接链路包括 PG 到下一路 EN、PG 到 FPGA 复位引脚、PG 到系统监测都要原样保留或按需重连。GPIO 和 strap 引脚。PMIC 的默认输出电压、上电地址、甚至一部分时序逻辑往往是通过外部电阻拉高拉低来配置的。这些 strap 引脚在原理图上看起来不起眼但你如果漏了一个电阻上电后 PMIC 输出的电压可能完全不对。我遇到过某块板卡 VCCAUX 上电只有 1.5V查了半天才发现是一颗地址配置电阻位置错了PMIC 进入了完全不同的输出配置。寄存器配置。这是最容易抄丢的非实物内容。很多 PMIC 在上电后还要通过 I2C 写入初始化序列才能真正工作在正确状态。参考设计文档里通常会提供寄存器配置表甚至是一段可以直接烧录的配置脚本。如果你在原理图里用了参考设计的 PMIC但固件里没有配上对应的寄存器初始化板卡可能能上电但某些功能比如 DVFS、动态监测、某些通道的时序就是不对。这块建议和软件同事提前对齐把 PMIC 配置脚本纳入板卡初始化流程。4.3 抓时序示波器四通道加一次完整上下电的验证流程新板卡样机回来第一件事不是跑逻辑而是抓电源时序。我自己固定会用示波器四通道加一个逻辑分析仪来做这件事。示波器四通道可以同时抓四路关键电源轨。第一次抓的时候优先抓 VCCINT、VCCBRAM、VCCAUX、VCC_PSINTLP 这四路顺序是先看 PS 域和 PL 域的相对顺序对不对。把探头地线用最短的弹簧接地每路探头都接到 FPGA 电源引脚附近的测试点不要接在电源输出电容两端不然测到的是电容旁路的假象。触发方式上不要用单通道边沿触发建议用 VCCINT 上升沿做触发这样每次上电都能固定一个时间基准各通道之间的先后关系一目了然。示波器采样率不用太高20M 到 50M 足够但要开启足够长的采集时间把完整的上电序列都记录下来。比如从 VCC_PSINTLP 开始上升到 VCCAUX 稳定整个过程可能在几十毫秒要确保时基覆盖。第一轮抓完对照 FPGA 手册里的上电时序要求逐项比对。常见的问题有两个一是某一路比要求晚了几毫秒这通常需要调整 PMIC 对应通道的延时寄存器二是某一路在上电过程中出现明显跌落也就是台阶这说明负载太重或软启动时间不够往往需要增大输出电容或者调整 PMIC 的上电斜坡。验证完上电别急着下结论还要做一次完整的掉电测试。FPGA 对掉电顺序也有要求一般要求跟随着上电顺序的逆序来。PMIC 如果内部有 discharge 功能掉电顺序通常都能满足但如果某些通道有外部负载还在耗电可能会出现某一路掉得特别慢反而违反了掉电要求。掉电测试同样用示波器抓一遍确认没有问题再开始跑软件。5. 参考设计之外最考验人的是纹波与动态响应5.1 纹波测试的第一课不是换示波器是换接地方式电源纹波测量是我见过新手和老手差距最大的一个环节。很多工程师拿示波器探头直接点到电源输出上探头的接地夹子一长条甩在那里结果测出来的纹波轻松超过 100mVpp于是开始怀疑 PMIC 设计有问题。实际上那个 100mVpp 里可能有一半是探头地线这个天线捡到的空间噪声。测量纹波标准做法是用探头自带的短弹簧地或者用同轴线直接焊接在测试点上。探头带宽限制到 20MHz这是电源纹波测量的行业惯例因为大部分 DC/DC 的开关噪声集中在几百 kHz 到几 MHz 范围20MHz 以上的尖峰更多是测量环境和数字电路耦合噪声不代表真实的电源纹波。当然如果你在做高速收发器相关的电源噪声分析可能还需要看更高频段的噪声那就另当别论。参考设计文档里通常会给出去耦电容的布局建议比如在 FPGA 电源引脚附近放多少颗 100nF、多少颗 1µF/10µF这些电容的位置直接影响实际纹波和瞬态表现。如果你做的板子 PCB 面积紧张电容数量打了折扣那测试时就要特别关注纹波是否超标。我曾经在一块板卡上把 VCCINT 附近的大电容从参考设计的 18 颗减到了 8 颗静态纹波测出来没差太多但一跑 PCIe 压力测试就复位后来加回去电容就稳定了。5.2 瞬态响应才是FPGA电源的“致死点”纹波测的是稳态瞬态响应测的才是动态。FPGA 的负载变化有多猛举个例子DDR 控制器从空闲切换到连续读写SerDes 从低速进入高速训练或者 CPU 域从低功耗模式唤醒跑满频率这些瞬间的电流变化速率可以达到几十安培每微秒级别。如果 PMIC 的环路响应不够快输出电压会瞬间跌落哪怕只有几微秒也可能导致 FPGA 内部逻辑出现亚稳态、DDR 读写错误、收发器失锁。瞬态响应测试需要电子负载但用电子负载做恒流阶跃和 FPGA 实际负载行为还是有差别。更贴合实际的做法是在板卡上跑专门的电源压力测试逻辑。比如在 Vivado 里综合一个大量使用 BRAM 和 DSP 的计数器阵列让它们同步翻转把 VCCINT 的电流快速拉高再比如用收发器做高速回环测试观察 MGT 供电轨在锁存/失锁过程中的行为。一边跑负载一边用示波器 DC 耦合看电压跌落幅度和恢复时间。如果发现瞬态跌落超标参考设计文档里给出的补偿网络和输出电容值就是首要怀疑对象。PMIC 的环路补偿参数和输出电容的 ESR/ESL 密切相关你换了不同规格的电容环路稳定性可能就变了。我见过有人把参考设计里的陶瓷电容全部换成钽电容结果环路振荡电源输出出现几十 kHz 的自激板子根本没法正常工作。所以改输出电容之前先确认改动会不会影响环路稳定。5.3 PMIC 的软件面DVFS、PMU固件与裸机供电管理到了 MPSoC 这一代PMIC 参考设计里很大一部分工作其实在软件层面。以 Zynq UltraScale MPSoC 为例芯片内部有一个 Platform Management UnitPMU这是一个独立的电源管理处理器负责上电顺序、复位、时钟管理和电压控制。很多做裸机开发的工程师会问我不用 Linux裸机程序是不是就不需要 PMU 固件了答案是大多数情况下仍然需要。PMU 固件在芯片启动的早期阶段就要运行它负责初始化 PMIC/电源系统、检查电源状态、配置各路电压。即使是裸机应用只要用到了 PS 域PMU 固件通常都是启动流程的一部分。PMIC 参考设计中提供的 I2C 配置脚本很多时候就是配合 PMU 固件运行的。PMU 固件内部定义了上电时要去读哪些 PMIC 寄存器、把电压设置到什么值。如果 PMIC 寄存器和 PMU 固件的预期不匹配轻则某些电源轨不工作重则整个系统卡在启动阶段。在 Linux 系统下PMIC 通常还会有对应的 regulator 驱动。设备树里会描述 PMIC 的通道、默认电压、是否支持动态调压。Xilinx 官方内核里已经包含了针对常见 PMIC 的驱动比如相关平台上的 TI 或 Renesas PMIC。参考设计里给出的设备和寄存器配置基本上可以直接搬到设备树里。软件调压在实际项目里最常用的是 DVFS。比如 CPU 域在满负荷运行时需要 1.0V空闲时降到 0.72V通过 PMIC 的 I2C 动态调节能在保证性能的前提下降低功耗。这部分如果没有参考设计里的寄存器配置说明自己去试会比较痛苦因为调压过程中要保证输出电压斜坡不能太快也不能太慢太快可能触发欠压保护太慢可能导致 CPU 供电不足死机。6. 给同行们的零散经验这些坑我基本都踩过6.1 参考电压采样点决定稳压精度PMIC 和 DC/DC 的输出电压是通过反馈引脚来维持精度的。参考设计里反馈采样点放在哪里常常决定你板卡上实际电压值准不准。很多 PMIC 支持远端采样也就是反馈线连到负载端比如 FPGA 电源引脚附近而不是电源输出电容上。这样做可以补偿 PCB 走线的压降。在 UltraScale 这类大电流低电压场景走线压降非常可观。VCCINT 0.85V如果 PCB 走线电阻有 5 毫欧电流 20A压降就是 0.1V到 FPGA 引脚实际电压可能已经是 0.75V已经低于正常工作范围了。所以参考设计里如果有远端采样务必照做。采样线最好走成差分对形式远离开关节点避免捡到开关噪声。6.2 掉电顺序和上电顺序同样重要上电顺序大家都会测掉电顺序却容易被忽略。FPGA 手册里通常也会对掉电顺序提出要求特别是对某些内部结构有闩锁风险的产品。PMIC 如果内部带输出放电电阻一般能满足要求但如果你在外部还挂了负载电容或者有些模块需要保持供电掉电顺序就可能被破坏。我建议在测试项目里把掉电顺序测试也列成必测项。方法很简单用示波器抓掉电时各路的下降沿顺序观察有没有哪一路掉得明显比其他路慢。如果发现问题可以调整 PMIC 通道的放电电阻配置或者在慢的那路增加一个外部放电电路。6.3 从电源反推的PCIe/SerDes眼图问题最后分享一个排查思路。很多时候 PCIe 链路训练失败、GTY/GTM/GTH 收发器眼图收不拢大家第一反应是去查时钟和 PCB 走线查来查去发现都没问题最后才想到电源。其实电源噪声对 SerDes 的影响非常直接MGT 供电轨上的噪声会直接调制到收发器内部的 PLL进而恶化输出抖动。如果你怀疑电源是 SerDes 问题的根源建议在跑收发器压力测试的同时用示波器监控 MGTRAVCC 和 MGTRAVTT 的噪声。观察噪声是否会随着数据速率的切换或训练序列的进行而大幅变化。如果噪声明显异常优先检查 PMIC 给 MGT 轨供电的通道是不是和数字大电流轨共用了输入级或者滤波网络是不是被简化了。在 Xilinx 文档里针对 MGT 电源轨会有更严格的纹波建议参考设计里也往往会给出一级或二级 LC 滤波电路。这部分千万别为了省成本去删。做高速板卡电源滤波上的投入最后都会体现在眼图上在我在实际项目中验证了很多次这个结论基本不离谱。说了这么多最后还是想强调一点PMIC Reference Designs 不是让你无脑照抄的图库而是一套把厂商多年电源设计经验浓缩成可复用的系统方法。读懂它、用好它、再根据自己板卡的实际情况调整你会发现 FPGA/SoC 的电源设计并没有想象中那么玄乎。把电源树梳理清楚、把时序验证做扎实剩下的就是按部就班的工程化执行了。

相关新闻