尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FPGA多电源轨供电设计:同步Buck输出跟踪与上电时序控制全解析

FPGA多电源轨供电设计:同步Buck输出跟踪与上电时序控制全解析 在做FPGA和嵌入式系统设计时电源树往往是最后才被认真对待的环节。很多工程师把精力全放在逻辑、DDR3、高速串行、图像处理这些功能上结果板子一上电就各种诡异问题——FPGA配置失败、SD卡偶尔读不出来、复位信号像抽风一样跳变、PCB局部莫名烫手。查来查去最后八成是电源的上电时序和输出跟踪没做好。这类问题恰恰是“Synchronous Buck Regulator with Output Tracking and Sequencing”这个方案要解决的用同步降压稳压器给FPGA和微处理器供电并且通过输出跟踪Output Tracking与上电时序控制Sequencing保证多路电压轨按正确顺序、正确斜率爬起来从源头上避免芯片损坏和系统不稳定。这篇文章我想结合自己实际做过的电源树设计把同步Buck的原理、输出跟踪和时序控制的实现方式、参数计算、常见坑位一次讲清楚。内容偏向工程落地适合正在做FPGA板卡、嵌入式主板、或者给DDR供电系统的工程师参考也适合刚接触电源设计的同学建立一套完整的“电源轨设计思维”。我会把公式、选型思路、典型接线全部给出来你完全可以拿着去套自己的项目。1. 供电需求拆解FPGA和微处理器到底需要怎样的电源1.1 从一颗FPGA的供电轨说起以常见的Xilinx 7系列或者Intel Cyclone系列FPGA为例一颗芯片上至少有三五路电压轨。内核电压VCCINT通常在0.85V到1.0V电流随逻辑规模不同可以从几安培到几十安培辅助电压VCCAUX一般是1.8V给内部专用电路供电I/O电压VCCO根据bank配置也许是1.2V、1.5V、1.8V或者3.3V如果芯片带高速收发器还会有MGT收发器专用电压轨。微处理器这边也一样比如DDR3/DDR4供电VDDQ和VTT之间存在严格的跟随关系。多电压轨带来的第一个麻烦就是上电顺序。FPGA和微处理器内部的I/O结构、ESD保护二极管、衬底寄生结构都决定了“先给哪个轨供电”是有讲究的。大部分主流FPGA要求内核电压先于或者同时于IO电压如果VCCO先起来而VCCINT还没起来I/O引脚上的ESD二极管可能把电流倒灌进核心逻辑供电网络造成闩锁效应latch-up或者长期可靠性下降。这类问题在规格书里通常叫“Power Supply Sequencing Requirement”。单路供电设计相对简单只要满足负载电流和纹波要求就行。多路供电则要同时考虑每一路自己的指标以及它们之间的相对关系。这就是Output Tracking和Sequencing存在的意义。1.2 同步Buck在电源轨方案里的角色FPGA的功耗大内核电压低比如0.9V输出、10A电流如果用线性稳压器输入12V输出0.9V在10A电流下的损耗是(12-0.9)*10111W发热量完全不可接受。所以必须用开关电源。Buck降压拓扑是绝对主流而同步BuckSynchronous Buck在这个场景里几乎是唯一选择。同步Buck和非同步Buck的区别在于非同步Buck的低边开关是二极管同步Buck的低边也换成了MOSFET。好处是低边导通压降从0.3V~0.5V降到毫欧级导通电阻带来的几十毫伏压降在低压大电流场合效率差距特别明显。一个12V转0.9V/10A的轨非同步方案效率可能只有80%左右同步方案可以做到90%甚至更高发热量相差一倍以上。电源方案里转换效率不只是一个数字它直接决定散热设计、系统可靠性、整机功耗。FPGA板卡的散热本来就紧张如果电源再浪费几十瓦热量整个系统就要加更大散热器、更高转速风扇代价很大。同步Buck在低电压大电流场景里的优势正是FPGA和微处理器供电如此依赖它的根本原因。2. 同步Buck的核心原理与参数设计2.1 同步整流相比二极管整流为什么省Buck电路的基本原理是高边开关导通时输入给电感和负载供电电感储能高边关断时电感电流通过低边开关续流。非同步BUCK低边用二极管续流二极管正向压降VF按0.4V算在输出3.3V、负载5A时低边续流期间的损耗是0.4V5A占空比整体效率会被显著拉低。而同步BUCK低边用MOSFET导通电阻比如10mΩ同样5A电流损耗是550.010.25W比二极管的2W小一个数量级。效率提升的关键还在于占空比。输出电压越低高边导通时间越短低边续流时间越长低边器件的损耗占比就越大。所以输出1.8V以下时非同步BUCK几乎没法用同步整流是刚需。同步BUCK的另一个好处是支持强制连续导通模式FCCM电感电流可以在轻载时反向保证输出电压纹波和瞬态特性更好。FPGA的电流经常在待机和满负载之间剧烈跳变FCCM模式下响应更平稳。代价是轻载效率不如二极管模式但这个取舍在FPGA系统里是值得的。2.2 开关频率、电感、电容三个关键参数怎么定同步Buck设计里最核心的三个参数是开关频率fsw、电感L、输出电容Cout三者的选择互相牵制。开关频率要从多方面权衡。频率高电感和电容可以选小板面积减小但高边和低边MOSFET的开关损耗增加效率下降对布局布线要求更高。频率低效率好但动态响应慢电感大。对FPGA应用500kHz到1MHz是常见区间功率级和输出滤波体积比较均衡。电感值由纹波电流决定。通常取满载电流的20%到40%作为允许的电感纹波电流峰峰值ΔIL公式是L (Vin - Vout) * Vout / (Vin * fsw * ΔIL)我来算一个实际例子。输入12V输出0.9V负载10A开关频率500kHz取ΔIL3A30%负载电流。L (12-0.9)0.9 / (12500000*3) 9.99 / 18000000 ≈ 0.56μH取标称值0.56μH或者0.68μH。电流纹波大小直接影响输出纹波和电感发热选小了电感体积大选大了一方面纹波超标另一方面电感峰值电流大可能饱和反而不稳。输出电容则按瞬态响应的需求来算。FPGA负载电流从1A瞬间跳到10A输出电容要支撑住电压跌落。按工程经验公式估算Cout ≈ ΔI_step / (2π * fBW * ΔVout)fBW是环路带宽取50kHzΔVout允许50mVΔI_step9ACout ≈ 9 / (23.1450000*0.05) ≈ 573μF。实际还要考虑电容的ESR、ESL和DC偏压特性陶瓷电容在0.9V输出时容量会打折所以一般会再并联几个大容量电解电容或者聚合物电容。2.3 环路稳定与瞬态容易被低估的指标很多人在电源选型时只看输出电流和电压精度把环路补偿忽略了。现有稳压器芯片部分有内部补偿部分需要外部补偿。FPGA这种负载突变频繁的应用环路带宽直接影响电压跌落幅度。环路带宽高输出电压恢复快但太高又容易产生不稳定和噪声问题。一般把交越频率设在开关频率的1/10到1/5比如500kHz开关频率环路带宽50kHz到100kHz。相位裕度最好在45度到60度之间工程上至少要有45度否则负载阶跃时会产生振铃甚至震荡。实测经验做电源板的第一个调试动作就是加电子负载观察负载阶跃波形。如果从1A跳到10A电压跌落了100mV但很快回到目标值且没有振铃环路基本合格。如果有振铃就要减少补偿电容容值或者调整零点位置。这个调试过程在后面的问题章节我还会详细说。3. 输出跟踪Output Tracking原理与电路实现3.1 两种跟踪模式Ratiometric与Coincidental输出跟踪解决的是多路电源轨之间的电压上升“相对关系”问题。常见要求有两类。Ratiometric tracking比例跟踪指的是从轨电压按固定比例跟随主轨电压爬升。典型例子是DDR供电中的VTT跟踪VDDQ。DDR3/4规格里VTTVDDQ/2VDDQ上电时VTT必须一直保持大约二分之一的关系如果VTT先冲上去或者滞后太多数据总线的信号参考就不对可能引发启动失败或者数据完整性下降。Coincidental tracking重合跟踪指的是从轨和主轨同时到达各自最终电压但中间斜率可以不同。这个适用于FPGA的多个电源轨希望同时完成上电的场景。比如内核0.9V和辅助1.8V要求一起升起、大约同时到位就可以配置成重合跟踪。看一个实际需求项目要求1.8V轨和0.9V轨同时爬升但最终电压不同。这时如果把1.8V作为主轨0.9V作为从轨就要让从轨以0.5倍的比例跟踪主轨0.9/1.80.5这既不是严格的Ratiometric也不是Coincidental实际上是“Ratiometric tracking”的变体。这类需求很常见所以很多带跟踪功能的稳压器都支持任意比例的跟踪只要TRACK引脚上接一个分压电阻网络。3.2 TRACK引脚与分压网络的计算方法带跟踪功能的同步Buck控制器通常有一个TRACK/SS引脚通过输入电压或参考电压来控制软启动斜坡。如果要实现比例跟踪就把主轨的输出电压经过电阻分压后送到从轨的TRACK引脚。具体计算如下。假设主轨电压V11.8V从轨目标V20.9V需要从轨按比例跟随。分压网络的输出V_TRACK是主轨电压按R2/(R1R2)进行分压。分压比要等于V2/V1即0.5。所以R1R2典型取值R1100kΩR2100kΩ。如果主轨3.3V从轨1.2V比例是1.2/3.3≈0.364分压电阻比值R2/(R1R2)0.364可以取R1180kΩR2100kΩ实际分压比是100/(180100)0.357偏差在2%左右可以通过微调电阻做到更精确。这里要注意TRACK引脚输入阻抗通常都是MΩ级别分压网络选用kΩ级别不会影响精度但也不能太小导致功耗增加。有些芯片的TRACK引脚内部接了一个电流源此时不能用简单的分压比例来算而是要按“TRACK引脚内部电流源 * 外部电阻”来确定电压斜率。这种情况必须去看芯片规格书的“Startup and Tracking”一节里面会有公式和典型接线。后面实操章节我会用两种典型配置做例子。3.3 什么时候必须用输出跟踪输出跟踪不是所有项目都需要以下场景我觉得是硬需求。第一DDR系列的VTT供电。VTT必须跟踪VDDQ的二分之一否则DDR训练不过或者工作时信号质量差。这是最典型的必须用跟踪的场合。第二FPGA多电源轨要求“一起上电”的场景。有的FPGA可以让多个轨同时爬升、同时到达但要求上升过程中电压差不能超过某个值否则内部电路可能进入未知状态。用独立软启动虽然也能近似实现同时上电但输出电压不同的轨道很难保证斜率一致用跟踪则能精确控制相对关系。第三热插拔或者系统热切换场景。某些应用要求板卡在运行中插拔所有电源轨要同步进行软启动防止冲击电流和电压突变。跟踪功能可以帮助平滑过渡。从硬件成本看带跟踪功能的同步Buck控制器比普通Buck控制器贵不了太多PCB上多几个电阻电容而已。在FPGA和微处理器系统里多花这几毛钱买可靠性我是强烈推荐的。4. 时序控制Sequencing前因后果与四种实现方案4.1 上电顺序到底保护的是什么输出跟踪管“相对斜率”时序控制管“先后顺序”两者是两回事。时序控制的目的很简单按指定顺序开启各路电压轨。为什么顺序不对会伤芯片看FPGA内部结构。I/O引脚上的ESD保护二极管一端连着VCCO另一端连着内部电路。如果VCCO先上电而VCCINT还没上电I/O引脚上的外部电压就可能通过ESD二极管向未上电的内部网络灌电流导致内部节点被异常偏置。这种情况轻则芯片启动异常重则造成latch-up芯片过热烧毁。微处理器也会有类似问题。典型顺序是内核电压→辅助电压→I/O电压。但具体顺序因芯片型号而异一定要查对应型号的手册。比如Xilinx 7系列FPGA要求VCCINT和VCCBRAM先上电然后VCCAUX最后VCCOIntel的Cyclone V则要求VCC和VCCIO之间有一定约束。不要凭经验照搬每个项目都要拿规格书核对。4.2 RC延时便宜但有隐患最简单的时序控制是RC延时。在电源芯片的EN脚上接一个电阻和电容利用RC充电延时控制使能信号的到达时间。优点是用料少、成本低。缺点也明显延时精度差普通电容误差20%很常见温度变化也会影响RC常数上电延时只能做“延迟开启”做不到精确的时序关系。而且如果系统里有多路电源RC延时的累加误差会让时序窗口变得不可控。我试过用RC延时做简单系统单板调试问题不大但批量生产时同一批次板卡之间上电时序差异很大。后来遇到两台机器有一台偶尔启动异常最后定位发现就是RC延时不精确导致VCCO和VCCINT的时序窗口刚好落在危险区。从那以后FPGA项目里我再也不推荐RC延时时序了。4.3 使能级联与专用时序控制器比RC可靠一些的是使能级联前一路电源的PGOOD信号去控制后一路的EN。这种方案利用每一路电源自己的“输出电压达到阈值”的信号作为下一路的启动条件时序精度取决于芯片内部PGOOD检测精度比RC延时高很多而且不依赖RC绝对精度。使能级联需要特别注意的是PGOOD信号和EN引脚的电压匹配。3.3V的PGOOD直接接5V EN可能不兼容需要分压或者电平转换。还要防止PGOOD信号被干扰产生误触发一般建议加一个小电容滤波。专用时序控制器是更省心的方案。像LM3880这类三通道时序器内部有数字状态机通过引脚配置每通道的延时精度在微秒到毫秒级一旦配置好上电顺序稳定可重复量产一致性好。这类芯片成本不高对FPGA多轨系统来说性价比很高。另一种方向是数字电源管理芯片比如带PMBus接口的控制器可以通过I2C/PMBus总线配置时序、监测电压电流调试方便但成本和技术门槛更高。4.4 带跟踪的时序控制推荐的组合实际项目中最稳的组合是“同步Buck跟踪时序控制”一起做。具体策略是先用输出跟踪把需要一起爬升的轨绑定比如内核和辅助轨按比例同时上升然后用使能级联或专用时序器控制“第二个阶段”的启动比如IO轨等第一组轨稳定后再上电。我记得之前做过一个项目0.9V内核轨和1.8V辅助轨要求同时爬升3.3V I/O轨要求等两组都稳定后延时5ms再开启。实现方式是0.9V和1.8V两个同步Buck控制器的TRACK引脚并联接同一个软启动信号保证两个轨同时起来3.3V轨的EN由1.8V轨的PGOOD经一个RC微调延时后控制。调试时只要用示波器同时观察三路电压波形确认没有交叉、没有异常斜率就基本达标了。5. 完整项目实操12V输入到三路输出带跟踪时序的电源轨设计5.1 需求规格确认我来复现一个实际项目规格。假设要给一块Kintex-7级别FPGA板卡设计电源树输入是12V稳压源需求如下VCCINT0.9V/10AVCCAUX1.8V/3AVCCO3.3V/2A其中0.9V和1.8V要求同时爬升3.3V等前两路稳定后延时约5ms上电输入电压纹波控制在±5%以内输出纹波不超过±10mV对0.9V轨。这种需求在FPGA板卡里非常典型。第一步是查FPGA规格书确认时序要求不同批次不同型号要求可能不一样我按“内核辅助同时IO后上”的常见要求来设计。第二步是决定拓扑三路都选同步Buck控制器其中前两路要带跟踪功能第三路也要支持外部软启动和使能控制。5.2 方案选型与通道分配三路输出有两个选择用三片单通道同步Buck控制器或者用一片多通道控制器。多通道的优点是器件少、通信简单但通道间功率特别是0.9V/10A大电流轨的散热和布局会和1.8V、3.3V的通道互相影响布局受牵制。我倾向于0.9V/10A这种大电流轨用单通道专用控制器方便针对大电流优化布局和散热。1.8V和3.3V这种中等电流轨可以合用多通道控制器或者也各自用单通道看采购和库存情况。选型时要关注控制器是否支持外部软启动、是否带TRACK引脚、是否支持外部时钟同步、有没有PGOOD输出。这几项直接决定跟踪和时序好不好搭。具体到器件可以找各家的“Synchronous Buck Controller with Track and Sequence”类别。比如TI的TPS40322是双通道支持输出跟踪ADI/LTC的LTC3608是8A单通道也带跟踪功能。选用时可以拉一个简单对比表把Vin范围、输出电流、开关频率、是否带跟踪/时序支持、封装列出逐项过一遍。5.3 详细参数计算电感、电容、软启动、时序电阻现在进入实际计算。三路输出都用同步Buck拓扑输入电压Vin12V。第一路是0.9V/10A。开关频率选500kHz这兼顾效率和体积。按2.2节公式电感L(12-0.9)0.9/(12500000*3)0.56μH取标称0.56μH饱和电流按峰值电流考虑满载10A加一半纹波1.5A峰值11.5A选电感饱和电流至少15ADCR尽量小于3mΩ。输出电容按瞬态算9A负载阶跃、压降50mV、环路带宽50kHz需要约573μF实际选4颗100μF/1210/6.3V陶瓷电容加2颗220μF聚合物电容并联后总容量约840μF留有余量。第二路是1.8V/3A。ΔIL取0.9A30%L(12-1.8)1.8/(125000000.9)3.4μH取3.3μH峰值电流3.45A选5A饱和电流电感。输出电容按2A阶跃、50mV跌落、50kHz带宽C≈2/(2π50000*0.05)127μF选2颗100μF陶瓷并联留裕量后可用3颗。第三路3.3V/2A。ΔIL取0.6AL(12-3.3)3.3/(12500000*0.6)7.98μH取8.2μH。输出电容按1.5A阶跃、50mV跌落、50kHz带宽C≈95μF选2颗100μF陶瓷足够。跟踪电阻计算。0.9V轨和1.8V轨要按比例同时爬升选择1.8V作为主轨0.9V作为从轨分压比0.5。R1和R2都取100kΩ接到0.9V控制器的TRACK引脚。时序控制电阻。3.3V轨的EN受1.8V PGOOD控制原本可以直接接但要求延时5ms。可以在EN到地之间加一个RC延时网络但如前所说精度差所以这里采用一个简单可靠的数字延时1.8V PGOOD经过一个RC给一个小逻辑门或电平转换芯片输出再控制3.3V ENRC只负责粗调。实际RC取值R100kΩ、C100nF时间常数10ms但阈值触发生效约0.69*RC≈6.9ms基本接近5ms之后再微调。要更精确就用专用时序控制器这里为了演示用了RC逻辑门的方案。5.4 PCB布局与调试要点电源布局在FPGA项目里特别容易踩坑。同步Buck的功率回路包括输入电容、高边MOSFET、低边MOSFET、电感、输出电容环路面积要尽量小否则寄生电感会在开关节点产生高压振铃轻则EMI超标重则击穿功率管。0.9V/10A这一轨的输入电容要尽量靠近高边MOSFET漏极并用多个小封装电容并联降低ESL。反馈走线要单独引线采用Kelvin连接直接从输出电容正端取样千万不要从滤波电感和功率路径上拉反馈否则负载电流在铜箔上的压降会被反馈环路“校正”成输出误差。反馈路径要远离开关节点和电感防止噪声耦合。散热方面0.9V/10A这一轨即使效率90%以上损耗也有1W左右控制器和电感要留足够覆铜散热必要时加散热过孔。电感选型时DCR和饱和电流比体积更重要DCR每增加1mΩ10A电流下就多0.1W损耗。调试顺序也很重要。先把三路独立调通用电子负载验证满载纹波和瞬态确认每路输出都正常再接跟踪电阻。示波器同时测1.8V和0.9V波形看上升过程是否满足比例关系如果不满足就调分压电阻。最后测3.3V时序看它是否在1.8V稳定之后约5ms才启动。6. 常见问题排查与踩坑实录6.1 FPGA配置失败先查电源时序遇到过很多次FPGA加载固件失败代码检查没问题JTAG连接也正常最后发现是VCCO比VCCINT更早到达稳定。解决方法是把VCCO的使能从VCCINT或者VCCAUX的PGOOD控制并确认延时时间满足规格书要求。排查方法简单粗暴示波器4通道同时抓所有电压轨的上电波形对比每个轨达到90%标称值的时间点一眼就能看出顺序对不对。6.2 启动过冲和电压跌落一个常见现象是电源软启动结束时输出电压冲高超过设定值几十毫伏严重时引起后级芯片过压保护。原因多半是软启动时间设置过短环路来不及稳定。调整方法是把软启动电容适当加大把启动时间从1ms改到3~5ms过冲通常会明显改善。另一个常见问题是瞬态跌落超标。负载电流阶跃时电压跌得厉害超过100mV。优先加大输出电容注意看陶瓷电容的DC Bias特性0.9V输出时选6.3V额定电压的电容实际有效容量可能有额定的60%~70%。其次检查环路补偿带宽太窄恢复慢适当提高带宽。6.3 环路自激和噪声干扰环路自激的典型表现是空载或轻载时输出电压出现等幅振铃。这个时候优先检查COMP引脚的补偿网络是否按规格书建议取值并查看SW节点波形是否有异常的占空比跳动。如果SW波形出现低频振荡大多不是环路参数问题而是布局引来的噪声重点检查反馈走线是否和SW节点靠得太近。还有一种情况是输出电压纹波很大但SW节点波形正常。这种往往是输出电容等效ESR过高或者示波器探头地线太长引入了噪声。用短地簧测量纹波是基本功长地线夹子在开关电源上测出来的纹波数据基本都是骗人的。6.4 跟踪不上轨和时序乱套输出跟踪不工作最常见的原因是TRACK引脚电压被钳位或者分压电阻阻值太小把主轨拉低了。我用过100kΩ分压电阻效果稳定。有些芯片TRACK引脚内部有电流源外部电阻过大可能导致启动失败这时候要去对照规格书的TRACK电流参数调整。时序乱套的另一个隐蔽原因是使能信号太弱。PGOOD输出是开漏结构外部必须接上拉电阻而且上拉电压要和受控芯片的EN逻辑电平兼容。如果PGOOD直接接EN但电平不匹配可能出现随机误触发表现为某路电源偶尔比预期早或者晚启动。加一个缓冲器或者电平转换是最稳妥的做法。最后再说一个小技巧做电源调试时先把所有保护功能打开比如过流保护、过压保护、欠压锁定并且在电源输出端并联一个大电解电容这样即使上电异常也不会瞬间损坏FPGA。等波形全部正常了再把这个调试电容去掉做最终验证。这条路我走过不少弯路这些细节是真的能帮你省下至少一个星期的调试时间。
返回列表