ARTICLE DETAIL

资讯详情

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

Xilinx FPGA/SoC电源设计实战:PMIC参考设计核心要点解析

Xilinx FPGA/SoC电源设计实战:PMIC参考设计核心要点解析 不少硬件工程师第一次接触Xilinx FPGA或者SoCZynq、MPSoC、RFSoC这些的时候暗地里其实不是被逻辑代码难倒的而是被电源设计搞到头皮发麻。尤其是拿到一块核心板或者评估板看到密密麻麻的电压轨、几百页的电源树第一反应往往是“这玩意儿到底该怎么供电才对”。我这些年帮人做方案评审、也亲自焊过好几版电源板最深的体会是FPGA/SoC的电源设计绝对不是“电压对上、电流够大就行”上电时序、纹波、瞬态响应、散热每一环都能让你加班到怀疑人生。Xilinx官方其实一直在维护一套叫PMIC Reference Designs for Xilinx FPGAs and SoCs的参考设计合集目的就是帮你把这些焦虑全部解决掉——它给出了经过验证的PMICPower Management IC选型、典型电路、配置方法以及实测数据。这篇文章我想结合自己用过的几套方案把这个参考设计的门道掰开揉碎讲一讲它里面到底有什么、怎么用、哪些坑是文档里没写的以及怎么从一套参考设计变成你自己项目里能用、能量产的东西。1. 为什么FPGA的电源设计比普通处理器苛刻那么多1.1 先看一张典型的FPGA电源树很多习惯做MCU或者通信处理器的工程师第一次审视FPGA板卡的时候会有一种错觉不就是1.0V内核、1.8V IO、2.5V/3.3V辅助供电嘛找个DCDC各自输出不就行了吗真实情况远没有这么简单。以常见的Xilinx 7系列FPGA为例哪怕是一颗中端的Kintex-7电源轨也至少要拆成下面这几路VCCINT内核逻辑供电通常0.9V~1.0V电流随逻辑规模和工作频率变化很大往往是一块板子上电流最大的那一路。VCCBRAMBlock RAM供电电压和VCCINT接近很多设计里会直接并到VCCINT但严格讲参考设计里通常建议独立滤波。VCCAUX辅助供电1.8V左右给HP bank的辅助电路、配置逻辑等使用对纹波敏感程度不低。VCCOIO bank供电不同bank可以不同电压可能是1.2V、1.5V、1.8V、2.5V、3.3V这取决于你对外的接口标准。对于高速串行收发器GTX/GTH/GTY还需要MGTAVCC和MGTAVTT前者是收发器模拟部分供电后者是终端供电对噪声的要求堪称苛刻。这是一张典型的7系列FPGA电源树每一路电压、电流需求都不同电压轨数量轻易就超过5路。到了UltraScale和Versal这个级别电源轨数量会更多而且有些架构还要求特定的上下电顺序。1.2 电压轨之间不是“各自安好”FPGA电源设计最容易被低估的地方在于各电压轨之间存在着严格的时序要求。内核电压VCCINT要先于IO电压VCCO上电或者在IO上电之前完成掉电的时候顺序反过来。如果时序不符合要求最轻的情况是FPGA配置失败严重的话会对器件造成损伤。Xilinx官方文档UG583UltraScale Architecture PCB Design User Guide里面针对不同系列都给出了时序要求但很多工程师并不会去翻这份文档尤其是第一次做FPGA板卡的人。PMIC参考设计存在的价值之一就是它把“哪些通道先开、哪些通道后开间隔多少毫秒”这些时序要求直接用PMIC的可配置上下电时序帮你实现好了。你不需要自己搭一堆分立逻辑去控制几个DCDC的EN引脚只需要看参考设计里的时序配置表把它抄到自己的电路里即可。1.3 动态电流变化比CPU还狂野FPGA还有一个很独特的电学特性静态功耗相对固定但动态电流变化极其剧烈。当一个大型逻辑设计在某个时钟沿同时翻转大量触发器的时候VCCINT上的电流会在几微秒内从几安培跳到几十安培。PMIC和DCDC如果环路响应不够快输出电压就会被拉出几个百分点的跌落FPGA内部的时序余量随之变小偶尔出现莫名其妙的功能错误。这也是为什么很多参考设计里会明确写出“该PMIC的负载瞬态响应是多少”并给出对应的输出电容配置建议。电容数量和容值在这里不是拍脑袋定的是要根据瞬态电流变化率di/dt和允许的电压跌落范围反推出来的。我在下面的实操章节会给出一个具体的估算示例。2. Xilinx PMIC参考设计它到底给你了什么2.1 参考设计的文件构成很多工程师习惯从Xilinx官网下载各种应用笔记App Note和参考设计Reference Design但面对PMIC参考设计这个主题往往会有点困惑它不像FPGA逻辑参考设计那样给一堆HDL代码而是一个以电源解决方案为核心的文档设计文件包。一般来说一套完整的PMIC参考设计会包含以下内容原理图通常是PDF或OrCAD格式明确标注了PMIC型号、外围电感电容选型、反馈电阻取值、TVS和滤波电路。PCB Layout建议或示例包括关键电源层的分割、过孔阵列、散热焊盘设计。这个信息价值极高因为电源Layout做得好不好直接决定最终纹波和EMI表现。BOM清单枚举了主要元器件的型号、封装、厂商料号。参考设计的BOM经过验证器件选型可以直接借鉴省去反复对比Datasheet的时间。PMIC寄存器配置表现代PMIC大多支持I2C接口输出各路电压、上下电时序、软启动斜率、Power Good阈值等都可以通过寄存器配置。参考设计会给出初始化寄存器的数值表甚至直接给出对应的C代码或Linux驱动补丁。测试报告包括不同负载条件下的效率曲线、纹波波形、瞬态响应波形、温升数据。这些数据是你做方案评审时向领导或者客户证明“这方案可行”的有力素材。2.2 在Xilinx官网上怎么找、怎么选Xilinx官方现在叫AMD的电源参考设计散落在几个地方。最直接的是官网上的“Power Solutions”页面和对应的电源架构工具Power Estimator / Power Design Manager但完全针对PMIC参考设计的通常是挂在具体的开发板、评估套件页面下面。比如Xilinx官网的ZCU102、ZCU106、VCU118等评估板页面都会提供完整的“Board Design Files”里面除了FPGA原理图之外还包含电源子卡的原理图和PMIC配置信息。VCK190Versal评估板甚至会有专门的电源管理子系统页面。找参考设计的关键过滤条件有三个目标FPGA/SoC型号对应的电源需求表Xilinx会给每颗器件生成一份“Recommended Power Supply”表格列出各路电压/电流/纹波要求。电源架构是否匹配你的场景是纯硬件固定电压方案还是需要动态调压DVSDynamic Voltage Scaling是需要PMIC做主控还是只要DCDCLDO的组合PMIC厂商的生态支持你更熟悉TI、MPS、ADILinear Tech、Intersil现Renesas还是Infineon的片子不同厂商的PMIC在参考设计里的配置方法和调试工具差异很大。2.3 参考设计不能无脑“抄作业”这里我必须泼一盆冷水参考设计是很好的起点但它不是终点更不能无脑复制。原因主要有三点第一参考设计基于特定工作条件。比如它可能假设环境温度25度、散热条件很好但你的产品外壳是密闭的或者环境温度可能到70度。这时候同一颗PMIC的带载能力、热降额曲线都不一样直接照抄容易在高温测试翻车。第二PMIC型号在选型上已经考虑过一些冗余但不一定匹配你的产品成本目标。参考设计里用得比较多的是集成度高的PMIC比如TI的TPS65023、TPS65400ADI的LTM4644、LTM4650这些芯片性能很好但价格也相对较高。如果你的产品对BOM成本很敏感确实需要换成便宜的分立DCDC方案那参考设计至少给你提供了“最低配置”“时序要求”“滤波方案”这些底层依据你可以在这个基础上换芯片。第三参考设计的Layout是经过专门优化的但它不一定是为你PCB的结构比如层数、板框尺寸、其他敏感信号位置设计的。不同板卡的叠层结构、器件布局密度不一样电源Layout必然需要调整。盲目照抄Layout位置而不理解地平面怎么切割、返回电流怎么走效果往往适得其反。3. 从参考设计到自己方案一套可以复用的实操路径3.1 第一步先把自己项目的电源需求算清楚在做任何选型或者参考设计套用之前先做一件事把你的FPGA功耗估出来。Xilinx提供了官方工具Xilinx Power EstimatorXPE和Vivado里的功耗报告不过在项目立项初期更推荐直接用XPE按逻辑资源占用率、翻转率、IO数量、GT数量填一张表拿到初步的功耗分布。功耗估算结果出来之后再对照FPGA手册的建议电源电压和电流整理出一张自己的电源需求表。以一颗中等规模Artix-7为例大概会长这样电源轨电压V最大电流A纹波要求mVpp说明VCCINT1.0630内核逻辑瞬态大VCCBRAM1.0130可与VCCINT合并但需注意远端滤波VCCAUX1.81.536对噪声敏感VCCO_03.3166DDR/Flash接口VCCO_11.8136普通IOMGTAVCC1.01.215高速收发器模拟供电MGTAVTT1.20.815高速收发器终端电压这张表做好之后再去对比参考设计里面PMIC的通道数、最大输出电流、纹波参数基本一眼就能判断这套方案能不能覆盖你的项目。3.2 第二步关注PMIC手册里真正要命的那几个参数很多人看PMIC Datasheet只看最大输出电流和输出电压范围容易忽视另外几个决定系统成败的参数负载瞬态响应Load Transient Response当负载电流从1A跳到6A再跳回1A输出电压的过冲/跌落是多少恢复时间是多少。这个参数直接决定FPGA核心电压在大量逻辑翻转时稳不稳。环路补偿方式部分PMIC是内部固定补偿有些需要外部配置RC网络。外部补偿的芯片调试自由度更高但也更容易因Layout寄生参数导致环路不稳定需要特别留意参考设计给的补偿参数。开关频率决定了电感和电容的取值也影响EMI。参考设计里一般会给出推荐的电感值和开关频率匹配表照抄就行但要和你的Layout走线宽度、铺铜面积匹配。软启动时间和时序控制PMIC从EN使能到输出电压达到目标值的时间以及各路通道之间的延时设置这决定了你能否满足FPGA的上电时序要求。以TI的TPS65400为例它是一颗四路同步降压DCDC带I2C接口输出0.6V到5.5V可调每路最大3A。在很多Xilinx参考设计里你都能看到它的身影因为它四路独立输出、支持上下电时序编程、还有电源正常Power Good信号正好覆盖Artix-7和Kintex-7的常见电源树。3.3 第三步按参考设计的寄存器配置表做时序闭环拿到参考设计之后最重要的步骤之一就是理解并验证PMIC的寄存器配置而不是直接把配置表复制进去。我见过不少工程师在调试时遇到板子启动不了的问题逐一排查后发现是PMIC的输出电压配置不对或者上电顺序不对但大家第一反应永远是怀疑FPGA配置电路有问题。其实如果Xilinx的参考设计里有提供该PMIC的配置表你先对照它检查一遍I2C寄存器往往能省下大半天时间。举个例子假设参考设计里用的PMIC把VCCINT这路配置为输出电压目标值1.0V寄存器0x10 0x0028软启动时间2.5ms寄存器0x12 0x0003上电延时10ms寄存器0x13 0x0032Power Good阈值0.95V寄存器0x14 0x001F这些值看着很小但每一条都对应FPGA电源要求里的一个数字。如果你有I2C总线分析仪或者逻辑分析仪建议在上电瞬间抓一下PMIC的配置写入过程确认这些寄存器被正确写入尤其是用MCU来配置PMIC的场景代码时序写错会导致PMIC拿到错误数据。3.4 第四步Layout阶段重点盯这三个位置PMIC参考设计里的Layout部分是很多人嫌烦不爱看、但恰恰是最关键的部分。根据我自己踩过的坑重点盯这三个位置输入电容和输出电容的摆放电容必须尽可能靠近PMIC芯片的引脚并且走线要先经过电容再进芯片引脚不能先走一段细线再接电容。高频开关电流路径如果绕了远路纹波和EMI会立刻恶化。反馈采样点位置Voltage Sense线要在输出电容之后、负载之前的位置单独走线采样不能在PMIC输出引脚附近直接开爪更不能在地平面大范围绕圈。采样线和电感耦合输出电压测量值会偏移导致实际电压偏离目标。地平面分割和过孔电源电路的地不要和数字逻辑地强行分割除非参考设计明确要求使用Star Ground。多层板里PMIC的散热焊盘通常需要打过孔阵列连接到内层地平面这些过孔的孔径、间距、数量决定了散热效率也影响电源回路的高频阻抗。关于Layout还有一个容易被忽视的点是电感选型。参考设计里给出的电感除了电感量还标了饱和电流、DCR、屏蔽类型。高频DCDC对电感饱和电流很敏感如果选了一个直流电阻小但饱和电流不够的电感重载时电感先饱和输出电感值骤降轻则纹波变大重则电流失控损坏PMIC。4. 调试与验证实测中碰到的几个典型坑4.1 功耗估算和实测电流差30%以上拿到第一版样机之后第一件事就是测各路电源的电流。很多人发现在满负荷跑FPGA逻辑时VCCINT电流比XPE估算值高出不少甚至超过PMIC设计的最大输出电流板子开始出现热保护或者电压跌落。原因往往不是XPE估算不准而是你的设计里漏了几个大头时钟资源翻倍使用或者全局时钟网络的翻转率比你估算的高BRAM利用率高且频繁读写VCCBRAM的电流在估算时被忽略或低估GT的参考时钟和PLL消耗的模拟电流没有算进去配置电路、DDR终端电阻上的电流没有进电源树清单。解决方案其实很简单设计之初在所有电源轨上都预留至少20%~30%的电流余量同时PMIC选型时就选择电流档位高一档的型号。PMIC的工作效率在额定电流的30%~80%区间通常最高留了余量之后不但系统稳定效率表现也更好。4.2 上电顺序对了但还是偶尔配置失败这是我把一个用PMIC的板卡从原理图到量产调试全过程里印象最深的一个问题。板子启动后10次里有1~2次FPGA配置失败DONE信号拉不高。查了配置电路、时钟、Flash都没问题最后用示波器多通道同时抓PMIC各路输出上电波形才发现VCCINT上电之后VCCO偶尔会比设计要求晚了几十毫秒才完全建立起来而VCCAUX掉电的时候有毛刺。问题出在PMIC软启动和负载电容的搭配上。参考设计里给的软启动时间是针对特定负载电容的如果你在自己的板子上额外加了大容量去耦电容PMIC输出电压爬升变慢时序就会偏。解决办法有两种一是额外调整PMIC的软启动寄存器参数二是重新确认Power Good信号的阈值和滤波电容确保FPGA的POWER_ON_RESET在电源完全稳定后再释放。4.3 动态调压DVS功能没生效多半是反馈电阻的锅MPSoC和Versal这类SoC为了降低功耗支持在运行时根据负载调整核心电压也就是Dynamic Voltage Scaling。PMIC如果支持I2C/PMBus动态调压配合Linux的cpufreq框架可以在轻负载时降低核心电压降低功耗和发热。但经常有人调试这个功能时发现电压怎么都调不下去最后检查反馈电阻网络才发现PMIC的反馈电阻取值和输出电压范围不匹配留给DVS的调节裕量太小甚至PMIC没有配置成外部反馈模式。这点在参考设计里会写得很清楚如果你打算用DVSPMIC的输出反馈网络必须支持目标电压范围且要避开寄存器调节范围的上下限。不要想着“反正最后我通过寄存器调整”如果反馈电阻固定了寄存器能调的范围就锁定在那里了。4.4 纹波超标时先别急着堆电容看到输出电压纹波超标第一反应往往是加电容。我也这么干过结果有次加了4颗大电容纹波反而更差了后来才明白问题出在地回路和环路稳定性上。纹波超标的位置排查顺序应该是先看示波器探头本身的噪声用接地弹簧短针别用长地线鳄鱼夹确认不是假纹波然后看开关节点SW的波形判断是开关纹波还是寄生振荡再检查输入侧是否和输出侧存在共地干扰最后才是调整输出电容和电感。有次我排查一个1.0V电源的纹波问题折腾了好几天最后发现是同一个PMIC的另一路输出给DDR供电DDR在高速读写的时候产生的开关噪声通过PMIC内部耦合到了1.0V这一路。参考设计里其实专门提到过不同通道之间要关注交叉干扰在PCB上要对PMIC输入输出引脚做隔离输入电容不能共用。看参考设计的时候如果仔细研究这部分就能省下这好几天。4.5 常见问题速查表现象可能原因快速排查方法板子上电后PMIC无输出EN引脚电平不对/输入电压不足先量输入电压和EN电平排除简单故障输出电压偏低反馈电阻网络不对/焊错料对照参考设计BOM逐一核对电阻阻值FPGA配置偶尔失败上电时序有偏差/Power Good毛刺多通道示波器抓上电波形对应时序要求某一路电流超标功耗估算遗漏/PMIC配置错误依次断开负载定位问题支路高速收发器误码率高MGTAVCC/MGTAVTT纹波过大用示波器看电源纹波检查磁珠和LC滤波板子温度高PMIC效率低/散热焊盘没有接地查看效率曲线检查散热过孔5. 扩展到Zynq/MPSoC/RFSoC的供电架构5.1 多电源域SoC带来了新的麻烦Zynq-7000是FPGA和ARM硬核的融合一开始只有PL可编程逻辑和PS处理系统两个大电源域。到了Zynq UltraScale MPSoC直接变成四大电源域低功耗域LPD、全功耗域FPD、可编程逻辑域PL、以及电池域Battery Power Domain各自还有不同的电压等级要求。一个常用的MPSoC电源树可能是这样的PS_LPD0.85V或0.9V给RPU、存储控制器等低功耗部分供电PS_FPD0.85V或0.9V给APU、GPU、DDR控制器等高性能部分供电PL_VCCINT0.85V或0.9V给FPGA逻辑供电PL_VCCAUX、VCCO_xxx对应PL的辅助和IO电压DDR等独立供电通常由专门的DDR PMIC方案管理。大量电源轨加上严格的上下电时序靠几个单路DCDC自己协同已经非常困难。这时候带时序控制能力的PMIC比如8通道以上的芯片就显得很有价值它可以通过寄存器配置很精细地上电时间顺序甚至掉电顺序。5.2 Linux驱动和PMIC的“对话”regulator框架在Zynq/MPSoC上做Linux系统PMIC通常会被纳入内核的regulator子系统管理。设备树里会定义各个regulator节点与PMIC通道的对应关系以及最小/最大电压、启动时间等约束。设备树里会有类似这样的一段i2c1 { tps6502348 { compatible ti,tps65023; reg 0x48; regulators { vccint_reg: regulator0 { regulator-name vccint; regulator-min-microvolt 900000; regulator-max-microvolt 1000000; regulator-always-on; }; vccaux_reg: regulator1 { regulator-name vccaux; regulator-min-microvolt 1800000; regulator-max-microvolt 1800000; }; }; }; };内核的regulator框架会在系统启动时按照设备树里的约束对PMIC寄存器做初始化并且在CPU调频时通过regulator API动态调整电压。如果你在调试MPSoC的低功耗特性会发现内核日志里出现和PMIC相关的消息。很多人会想既然SoC里已经有PMUPower Management Unit和相关固件还需要额外配置外部PMIC吗答案是PMU负责SoC内部的电源管理而外部PMIC负责从板级电源输入转换出各个电压轨。ZynqMP的PMU固件会管理内部LDO和电源域开关但板级接什么PMIC、怎么配电压是硬件设计者要定的。所以“PMIC PMU固件”是协同关系不是替代关系。5.3 RFSoC这种特殊场景RFSoC把ADC/DAC直接集成到了SoC里射频模拟电路对电源噪声的敏感度比普通数字电路高一个量级。参考设计里通常会建议RF相关电源轨使用低噪声LDO或者在DCDC输出之后加二级LC滤波。我自己在调试RFSoC板卡的时候最深刻的教训就是千万不要把RF供电的LDO输出和数字逻辑共用一片地否则DAC出来的杂散信号会让你怀疑人生。参考设计对RFSoC的电源分割和布局建议是那些做射频系统设计的人最容易忽略但最值得关注的地方。6. 工具链和流程上的几个建议6.1 用Vivado/Power Design Manager协助做电源验证Xilinx的Power Design ManagerPDM是一款专门做电源树设计的工具它可以导入你的FPGA器件型号、资源占用、功率估算结果并自动推荐合适的电源方案包括PMIC型号和相关参考设计。如果你正在纠结用什么PMIC这个工具能帮你直接从参考设计库里筛选出匹配的方案。Vivado本身在综合实现之后会生成一份详细的功耗报告里面按逻辑、BRAM、DSP、IO、GT分类估算功耗。虽然这个报告是在设计后期才准但早期用XPE粗估之后等RTL写完了、时序收敛了再用Vivado报告复核两边相差不太大的话电源设计基本稳了。6.2 自己的项目也可以学参考设计“留后门”看多了Xilinx的官方参考设计之后会发现他们非常喜欢在板上加电源测试点、I2C调试接口、跳线选择不同的上电顺序。很多自研板卡舍不得在电源网络上加测试点导致调试时没法测电流、没法捕捉纹波出了问题只能盲人摸象。我自己的经验是至少在VCCINT、VCCAUX、VCCO这些核心电源轨上加0欧电阻或者电流采样点在PMIC的I2C总线引出测试焊盘在FPGA电源稳定后加一个状态LED。这些“后门”在实验室阶段能省下的时间远远超过它们占用的PCB面积和成本。参考设计在这方面的思路非常值得借鉴。6.3 PMIC方案的生命周期管理和替代料问题最后一个建议也是不少量产项目踩过的坑PMIC选型时要关注芯片的生命周期。参考设计里的PMIC往往不是最新最热门的型号反而是供货稳定的成熟料但即便如此也要在选型初期就确认供货周期和可能的替代料方案。Xilinx的参考设计对封装、引脚、配置方式相近的PMIC往往都会列出兼容型号或者参考替代方案。你就按照这个思路提前找好一颗和主选PMIC寄存器兼容、引脚兼容的备选万一主料涨价或者缺货可以快速切换。芯片选型的时候把PMIC厂家的长期供货承诺、PCN产品变更通知政策一起纳入评估范围这才是真正把参考设计“吃透”的做法。从整个项目流程来看PMIC参考设计解决的不是“要不要用PMIC集成方案”这么简单的问题它把FPGA电源设计从一门玄学变成了一个可以追溯、可以复现、可以验证的工程流程。无论你是第一次接触FPGA还是已经在做Versal级别的板卡我都强烈建议你先把对应器件的官方PMIC参考设计完整读一遍、把它寄存器配置和Layout笔记吃透再决定你要在多大程度上沿用、多大程度上自研。认真研究过这套参考设计的人再去设计自己的电源树心里是有底的这个底就是“官方已经验证过我只需要解决从参考到量产之间的差异”。
返回列表