
1. 为什么 FPGA 和微处理器需要专用电源轨这几年做 FPGA 板卡尤其是涉及到 Zynq、Kintex 或者高端 SoC 处理器的时候最容易被低估的部分反而是一块不起眼的电源电路。很多人觉得电源嘛不就是拉个 LDO 或者找个现成的 DC-DC 模块把电压转换成 1.0V、1.8V、3.3V 就完事了。实际上FPGA 对上电时序和电压追踪的敏感程度远超想象。硬件调试中遇到“上电后 FPGA 不启动”、“JTAG 连不上”、“逻辑偶尔跑飞”这类问题大概率不是逻辑代码的问题而是供电侧埋的雷。标题里的 Synchronous Buck Regulator with Output Tracking and Sequencing 这个方案简单地说就是用一个同步降压转换器把输入电压比如 12V高效地转换成 FPGA 需要的多路低电压并且通过输出追踪和时序控制保证每一路电源在上电和下电过程中都能按照 FPGA 数据手册规定的顺序和电压差进行。这个东西对于整个系统的稳定性来说不是“锦上添花”而是“雪中送炭”。我最初接触这个概念是因为一块板卡在低温环境下反复出现随机重启。逻辑分析仪抓了半天没抓到异常后来在电源上用示波器观察才发现 VCCINT内核电压和 VCCAUX辅助电压的上电顺序在温度变化时发生了错位导致 FPGA 内部的 ESD 保护二极管导通漏电流异常。从那之后我对多电源轨的时序设计就不再敢马虎了。而且同步降压这种拓扑本身在各种 DC-DC 方案里属于效率上限最高的一类适合大电流、低压差的场景比如 FPGA 的内核电压经常在 1.0V 左右电流却可能达到十几安培甚至更高。如果用非同步的降压方案续流二极管的导通压降会导致巨大的损耗发热严重不说整体效率可能只有 80% 左右。同步降压用 MOSFET 代替二极管导通压降可以达到毫伏级效率轻松做到 90% 以上。这个差异在整机功耗和温升表现上就是天壤之别。所以这篇内容不是空谈理论我会从实际项目经历出发把同步降压、输出追踪和时序控制的原理讲清楚再结合具体的设计步骤和调试过程中的坑梳理出一套可以直接落地的实践思路。无论你是刚开始接触 FPGA 电源设计还是已经踩过几个板卡回流的坑这篇应该都能提供一些值得参考的信息。2. 同步降压拓扑与普通 Buck 的差异以及性能优势2.1 同步整流的基本原理用 MOSFET 替代二极管先回到最基础的问题Buck 降压电路是怎么回事。一个最基本的非同步 Buck由开关管高边 MOSFET、续流二极管、电感和输出电容组成。开关管以一定的频率比如 300kHz 到 2MHz导通和关断当开关管导通时输入通过电感向输出充能当开关管关断时电感电流通过二极管续流。因为电感的电流不能突变所以输出端的电压能够保持稳定。非同步方案最大的短板就是那个续流二极管。二极管在导通时有约 0.3V 到 0.7V 的正向压降。如果在 1V 左右的输出电压下二极管的压降占到了输出电压的一半损耗比例是非常恐怖的。而且电流越大二极管的损耗越高因为它本质上是一个“消耗功率”的器件。同步 Buck 的思路就是把续流二极管替换成一颗低导阻的 MOSFET也就是低边开关管。通过控制电路让高边和低边 MOSFET 互补导通避免两个管子同时导通导致直通短路。这样在开关管关断期间电感电流直接通过低边 MOSFET 的沟道续流电压降只有 I×Rds(on)比如 5A 电流流过 5mΩ 的管子压降只有 25mV和二极管相比完全不是一个数量级。2.2 同步 Buck 的效率分析为什么 FPGA 非它不可FPGA 的内核电压的特点是“低压、大电流”。拿一块中高端 Kintek 系列 FPGA 来说VCCINT 电压可能是 1.0V而全速运行时的电流可能到 10A 以上。如果用非同步方案假设续流二极管平均压降 0.4V占空比大约 0.9意味着 90% 的时间里二极管都在参与续流损耗大概在 I×V×(1-D) 10A×0.4V×0.1 0.4W这个算得偏低了实际上非同步 Buck 在低压大电流下的效率衰减非常明显二极管导通损耗经常是好几瓦。如果你把 10A 电流通过一个肖特基二极管它的正向压降差不多 0.5V那就是 5W 的功率变成热量发热量比 FPGA 本身还大散热设计几乎是灾难。同步 Buck 的效率高不仅仅体现在二极管换成 MOSFET 这一点上。低边 MOSFET 的寄生体二极管在死区时间会导通但因为死区时间非常短体二极管的导通时间极小损耗占比可以控制在很小的范围。此外同步 Buck 的开关节点SW在高低边切换时的电压摆幅更干净振铃幅度更小对 EMI 的改善也有帮助。实际测试中我做过对比同样是 12V 输入转 1.0V/10A同步方案能到大约 88% 到 92% 的效率而非同步方案能到 80% 已经不错了。效率差距意味着在同样的散热条件下同步方案可以支持更高的输出电流或者把温升控制在更低的水平。这对 FPGA 板卡来说意义重大因为 FPGA 附近通常已经布满了高速接口、DDR 等发热源电源芯片再发热会让局部热点问题变得更加难以处理。2.3 关键参数电感纹波电流、开关频率、死区时间在设计同步 Buck 时有几个参数一定要重视。开关频率的选择是一个权衡。频率越高电感和电容可以做得越小动态响应越快但开关损耗也随之增大效率下降。频率太低则电感和电容的体积会变大瞬态响应能力变弱。对于 FPGA 这种负载电流动态变化非常大的场景比如逻辑在跑和暂停之间切换电流可能在微秒级别跳变几个安培开关频率通常在 500kHz 到 1MHz 之间比较合适既能兼顾效率又能保持足够的带宽去应对负载突变。电感的纹波电流决定了输出端的电压纹波和电感的物理大小。一般设计时把纹波电流设置为最大负载电流的 20% 到 40%。比如 10A 的负载纹波电流取 2A 到 3A 之间。纹波取得太大输出电压纹波会增加对 FPGA 电源的噪声要求不利取得太小电感量需要很大瞬态响应变慢并且在轻载时可能进入连续模式的问题环路稳定性也会变复杂。再说死区时间。同步 Buck 的高边和低边 MOSFET 绝对不能同时导通否则输入直接短路。理想状态下两个开关管在切换瞬间需要一个极短的“死区时间”也就是两个管子都关闭的间隔让电感电流通过体二极管续流。死区时间长一点更安全但体二极管的导通损耗会增加死区太短有直通风险。现在的控制器芯片大多有自适应的死区时间控制可以根据检测到的开关节点电压来自动调节这一点对设计人员来说是省心的但选型时仍然要去了解芯片有没有自适应死区功能它会影响实际效率和可靠性。3. 输出跟踪与时序控制FPGA 上电下电的生命线3.1 FPGA 和微处理器为什么需要多路电源顺序控制一块典型的 FPGA 或者高性能微处理器下面往往挂着好几路电源轨内核VCCINT、辅助VCCAUX、IOVCCO、DDR 等。不同电压轨之间可能存在内部的 ESD 保护二极管、衬底偏置结构或者 I/O 结构的上拉网络。当各路电压上电时间不一致时某个轨已经升高而另一个轨还处于低电位就会有电流通过芯片内部的寄生二极管从高电位流向低电位导致闩锁效应latch-up或者 ESD 损伤轻测就是上电时序不满足导致工作异常严重点可能会直接烧坏芯片。FPGA 厂商对时序的要求一般会在数据手册里给出。有的要求 VCCINT 先于 VCCAUX 之前上电有的要求 VCCINT、VCCAUX、VCCO 同步上升。但这里有个容易被忽略的点要求不仅仅是“先后顺序”还有“电压差限制”。例如手册可能会要求任意两路电源轨之间的电压差在任何时刻都不超过一定值比如 0.3V 或者 0.5V。这意味着你不仅需要控制时序还需要控制电压上升的斜率让各路电压在上升过程中保持足够小的电压差这就是输出追踪Output Tracking发挥作用的场景。3.2 输出追踪的两种典型模式重合追踪与比例追踪输出追踪通常有两种模式在芯片数据手册里一般叫 Coincident Tracking重合追踪和 Ratiometric Tracking比例追踪。重合追踪的意思就是所有电压轨以相同的斜率从 0V 开始上升比如 12V 输入经过电源转换1.0V 和 1.8V 两路电压同时上升到达各自的目标值后停止。整个过程两条曲线保持几乎相同的电压值相互之间的电压差很小。这种模式适用于要求任意两路电压差始终保持很小的场景。比例追踪则是各路电压按照各自目标电压的比例来上升。比如 1.0V 和 1.8V 两个目标理想比例是 0.556。上升过程中 1.0V 的轨始终是 1.8V 轨的 0.556 倍这样任意时刻两路之间的电压差从 0V 开始逐渐拉开。比例追踪适用于对电压差要求不是极致但要求比例关系的场景实现起来比重合追踪更简单一些但具体选择哪一种还是要看数据手册的要求不能随意拍脑袋。在实现上一般是通过稳压器的跟踪引脚Track Pin配合外部电阻分压网络来设置。将主电源轨的输出电压采样接到从电源轨的跟踪引脚上从电源轨的输出就会试图跟随主轨的电压变化。还可以通过一个简单的 RC 网络来调整斜率实现不同的追踪比例。具体的电路细节在下一节实操部分细说。3.3 时序控制的实现方式专用芯片、使能时序与电源管理总线除了电压追踪时序控制还涉及到“顺序”和“间隔”的控制。常用的方法有几种。第一种用微控制器或者 CPLD 的 GPIO 来控制每一路电源的使能引脚。电源的 EN 引脚拉到不同延时的 RC 网络或者由软件按一定顺序拉高。这种做的优点是灵活但缺点是如果软件跑飞了或者初始化时间不对电源时序就不可靠而且监控能力弱。第二种方式用专用的电源时序控制芯片比如 TI 的 UCD90xxx 系列、LTC 的 LTC2977 等。这些芯片内部有精确的阈值检测和 DAC 比较器可以把各路的输出电压实时监测并控制开关管的导通和断开。比用 GPIO 更可靠且能做到精确到毫秒甚至微秒级别的时序控制还支持欠压、过压监控。对于高可靠性的 FPGA 系统这个方案是最值得推荐的。第三种部分电源管理芯片自带 PMBus/SMBus 接口通过 I2C 通信配置上电时序、跟踪比例、软启动时间等参数。这种方式适合规模化生产时动态调整参数不需要改动硬件。但如果项目量不大或者调试工具链不熟练配置成本偏高。对于大多数中小型项目我的建议是如果你用的电源芯片支持 EN 引脚排序加上输出追踪功能就能覆盖大部分 FPGA 上电需求。非要上电源时序管理芯片时得先确认自己是不是真的有冗余电源轨、多组板上电源需要严格顺序控制的场景否则方案复杂化后反而增加调试难度。4. 电路设计实操从原理图到关键参数计算的完整流程4.1 设计目标与需求拆解举个例子假设现在要设计一个 FPGA 核心板输入电压 12V需要产生三路电压轨VCCINT1.0V / 10A内核供电VCCAUX1.8V / 2A辅助供电VCCO3.3V / 1AIO 供电FPGA 数据手册对上电时序的要求是VCCINT 和 VCCAUX 必须同步上升VCCINT 和 VCCAUX 之间的电压差在任何时刻小于 0.2V如果需要VCCO 可以在 VCCINT 之后任意时刻上电。这要求 VCCINT 和 VCCAUX 采用重合追踪coincident tracking而 VCCO 只需在上电顺序中排在后面即可。那就可以选一颗双路输出的同步 Buck 控制器带跟踪引脚再加一颗普通 Buck 或者 LDO 供应 VCCO。4.2 主电源方案选型为什么选带跟踪引脚的同步 Buck 控制器市面上的同步 Buck 控制器非常多但带跟踪功能Track的这种通常是针对多路电源应用设计的。比如 LTC3812、TPS40305 等都支持外部参考跟踪。选型时重点看几个指标输入电压范围必须包含 12V。输出电压范围最低要能到 0.6V 甚至更低才能输出 1.0V。输出电流能力VCCINT 需要 10A所以控制器需要驱动足够强的低边 MOSFET或者看模块方案MOSFET 的 Rds(on) 要足够小。跟踪引脚是否有 Track 或者 SS/Track 引脚用它可以实现追踪功能。开关频率可调范围建议支持 500kHz 以上。还要看芯片是否有同步输入/输出功能方便多路电源的纹波错相降低输入电容的纹波电流应力。双路交错的话输入电流纹波会被部分抵消可以减少输入电容的数量缩小 PCB 面积。如果不想自己搭 MOSFET 驱动电路也可以选集成了 MOSFET 的同步 Buck 模块比如 TI 的 SWIFT 系列。模块的好处是经过厂家验证布线和元件选型都已经优化过减少了自己设计环路补偿的麻烦。缺点是灵活性低可选的电流档位可能不在最优区间。4.3 电感、电容、反馈电阻的计算过程以 VCCINT 1.0V/10A 为例选定的开关频率 fs 600kHz输入电压 Vin 12V。先算占空比 D Vout / Vin 1 / 12 ≈ 0.083。同步 Buck 在连续导通模式CCM下占空比等于输出电压除以输入电压忽略 MOSFET 的导通压降。纹波电流取负载电流的 30%ΔI 3A。电感的计算公式是L (Vin - Vout) × D / (fs × ΔI)代入数值L (12 - 1) × 0.083 / (600000 × 3) 11 × 0.083 / 1800000 ≈ 0.913 / 1800000 ≈ 0.507µH实际选型取一个标称值通常选 0.56µH 或者 0.68µH。选 0.68µH 的话纹波电流会稍小一点但瞬态响应会慢一点点。我的习惯是纹波取 20% 到 40% 范围内接近 30% 是比较通用的选择这次取 0.56µH 更接近目标。然后看电感的饱和电流峰值电流是 Ipeak Iout ΔI/2 10 1.5 11.5A。所以电感的饱和电流至少要有 12A 到 13A留出余量。输出电容的选取主要看负载瞬态响应要求。FPGA 在导入 bitstream 或者切换逻辑时电流可能瞬间变化几个安培。输出电容提供的电荷决定了电压跌落的大小。假设允许电压跌落 50mV瞬态电流变化 ΔItrans 5A那么需要的输出电容大约是Cout ΔItrans × Δt / ΔV其中 Δt 是环路响应时间假设环路带宽 100kHz响应周期约 10µs。代入Cout 5 × 10µs / 0.05 1000µF这个值听起来很大但现在多层陶瓷电容的容量密度已经很高用几个 100µF 的陶瓷电容并联就可以。要注意陶瓷电容的直流偏压特性大容量电容在额定电压下实际容量会大幅缩水1.0V 输出还好但如果是 3.3V 输出一个 100µF/6.3V 的电容在 3.3V 偏压下可能只剩 50µF 左右。所以在选电容时要看一下容量-电压曲线按实际工作点保证有效容量。反馈电阻的计算则取决于芯片的参考电压 Vref。很多同步 Buck 控制器的 FB 引脚参考电压是 0.6V 或者 0.8V。假设 Vref 0.6V那反馈分压电阻的公式是Vout Vref × (1 R1/R2)如果 R2 取 10kΩ那么 R1 (Vout/Vref - 1) × R2 (1.0/0.6 - 1) × 10kΩ ≈ 6.67kΩ取标称值 6.8kΩ实际输出电压略高于 1.0V再用 1% 精度的电阻进一步微调。4.4 输出追踪电路的连接方式TRACK 引脚与分压网络VCCAUX 供电轨的追踪功能实现通常是把主电源轨的输出电压通过电阻分压适配后接到从电源轨的 TRACK 引脚上。以某颗控制器的 TRACK 引脚为例它内部其实是一个参考缓冲器当 TRACK 引脚的电压低于内部基准时环路的参考电压会跟踪 TRACK 引脚电压当 TRACK 引脚电压高于内部基准则输出将固定到内部基准设定的电压。为了更好地理解可以把 TRACK 引脚理解为一个外部参考输入端。要让 VCCAUX 和 VCCINT 重合追踪需要把 VCCINT 的输出电压通过分压电阻缩放到 VCCAUX 控制器 TRACK 引脚可接受的电压范围再把 TRACK 引脚连接到 VCCAUX 控制器的参考端。举个例子如果 VCCAUX 控制器的基准 Vref2 0.6V目标输出电压 1.8V。要让 VCCAUX 在上升过程中完全等于 VCCINT 的电压那么在 VCCINT 输出 1.0V 时VCCAUX 的 TRACK 引脚分压要能使 VCCAUX 输出也为 1.0V。这个可以通过电阻分压比例计算得到。实际操作中通常将 VCCINT 输出连接到一颗精密分压电阻网络再接到 VCCAUX 的 TRACK 引脚并在 TRACK 引脚加一个小电容来设置软启动斜率。在布线时TRACK 引脚的信号要尽量短避免被开关节点耦合噪声干扰。不要把这个引脚和模拟地分开布要直接接控制器的模拟 GND 引脚并做单点连接。4.5 PCB 布局与关键布线规则地弹、开关节点的处理PCB 布局是整个设计中决定成败的部分。很多仿真都验证通过的电源因为布局不当实际一上电就振荡或者带载能力不足大概率是地回路和功率回路的问题。同步 Buck 的功率回路有一个非常关键的特点高边 MOSFET 导通时电流从输入电容 → 高边 MOSFET → 电感 → 输出电容 → GND 回路。高边关断、低边导通时电流从电感 → 输出电容 → 负载 → 低边 MOSFET 续流。这两个回路都包括“输入电容”以及“输出电容的地”。如果在 PCB 布局上让功率回路面积过大则回路电感会增加开关节点会产生严重的电压振铃轻则 EMI 超标重则击穿 MOSFET。我的经验是尽量把输入电容放在高边 MOSFET 和低边 MOSFET 的漏源极附近并保证输入电容的 GND 和低边 MOSFET 的源极、芯片的 GND 引脚之间的环路面积最小。可以将高边 MOSFET 的漏极、低边 MOSFET 的源极分别和输入电容的 PAD 放在同一层并用铺铜直接连接避免过孔增加寄生电感。电感底下尽量不要铺铜因为电感的磁场会在铜皮上感应涡流造成额外损耗和发热。布局时把反馈取样的走线从输出电容处独立拉出来走线尽量远离开关节点SW和电感。反馈电阻的分压点要从输出端直接取不要经过电感电流的路径更不要经过其他电路否则负载瞬态时会产生额外的误差电压。如果你的板卡是多层板让功率回路和信号反馈回路在垂直方向上有不同的地层做隔离。一般来说第二层做完整地平面是非常有益的做法它可以为功率回路提供参考电流回流路径同时为敏感信号提供屏蔽。5. 调试过程中的常见问题与排查方法5.1 上电后输出没有电压或者电压不准这个是最常见的问题。按照我的经验检查顺序是先看 EN 引脚是否有正确的使能电平再用示波器看开关节点SW 引脚有没有方波然后看反馈引脚FB的电压是不是基准电压。如果 SW 有方波但输出电压偏低最大的嫌疑是反馈分压电阻的取值不对或者输出电感的 DCR 太大导致负载调整率大。还要注意输出电容是否因为偏压效应容量不足特别是用陶瓷电容时。如果 SW 完全没有波形那就重点查芯片的供电、欠压锁定UVLO配置和 EN 引脚。有些芯片的 UVLO 要靠外部电阻分压设定启动电压如果计算错误或者焊接问题导致启动电压一直达不到芯片就不会工作。5.2 输出发生低频振荡比如用示波器看到输出在几百 Hz 或者几 kHz 的幅值波动这种情况通常有两种原因一是环路补偿不合适控制环路带宽太低或者相位裕度不够负载瞬态时恢复不了稳定二是 PCB 布局导致控制回路里耦合了过大噪声形成自激。如果用的是带外部补偿引脚COMP的控制器可以适当增大补偿电容提高相位裕度或者减小补偿电阻增加带宽。如果是模块方案没有外部补偿那多半是布局问题。重点检查反馈采样线是否绕过了电感或靠近了开关节点反馈走线是否和功率地形成了小环天线。5.3 上电顺序正确但 FPGA 仍无法工作的隐喻隐患我遇到过一个案例电源轨的顺序都满足先后要求但 FPGA 在上电后配置失败。排查了很久发现是 VCCINT 和 VCCAUX 虽然是按顺序上电的但是上升斜率差异很大。VCCINT 用了一个很大的软启动电容上升时间有 20msVCCAUX 的软启动更快5ms 就达到目标电压。两个轨在某个时刻电压差值超过了 0.3V 的极限虽然没有立刻损坏芯片但内部的 POR上电复位判断逻辑出现了误触发导致配置失败。这个问题在原理图阶段几乎看不出来因为单纯的“上电顺序”检查并不会考虑到斜率差。所以在设计阶段一定要明确数据手册里要求的是顺序还是斜率还是电压差。如果手册只写了“VCCINT 先于 VCCAUX”但没具体要求斜率差也不能掉以轻心建议把两个轨的软启动时间设计成一致或者直接使用输出追踪功能。这里有个额外提醒FPGA 上电时序和复位时序是两回事。有时候硬件电源完全正常但 FPGA 的 INIT_B 引脚上没有按要求拉高或者加载配置器件的时序不匹配也会导致“看起来像电源问题”的现象。排查时用示波器多通道同时量各路电源和 POR/复位引脚把时序图记录存档尤其在做第一批样板验证时这个习惯特别重要。5.4 实测追踪模式下两路电源的波形观测如果你也选了带 TRACK 引脚的电源方案调试时怎么验证追踪效果呢最好用四通道示波器两个通道分别测 VCCINT 和 VCCAUX 的电压另外两个通道测 EN 信号和输入电源。设置触发条件为 EN 的上升沿然后抓取整个上电过程的波形。观察两条电压曲线的相对高度看是否在整个上升过程中都保持在数据手册的电压差范围内。如果发现两条曲线偏离比较大可以通过调整 TRACK 引脚上的分压电阻或者软启动电容来修正斜率。实测时最理想的情况是两条曲线几乎重叠而且从 0V 到目标值的过程平滑无台阶。如果有台阶说明环路的参考切换过程设计了不恰当的偏置需要重新计算分压网络的直流工作点必要时在 TRACK 引脚加一个小的前馈电容来改善动态响应。下电过程同样要关注。FPGA 对下电时序也有要求如果只是上电时追踪下电时却一落到底也可能造成闩锁。所以如果你用的控制器支持双向追踪Power Down Tracking尽量选支持这种功能的型号并在原理图阶段就设计好下电追踪路径。若芯片本身不支持下电追踪那就要通过控制 EN 引脚的下电顺序来保证安全。6. 经验总结与进一步扩展的思路在实际项目中把同步 Buck 稳压器、输出追踪和时序控制结合起来收益是立竿见影的。对于 FPGA 和微处理器这类多电源轨、低电压、大电流的系统一套可靠的上电时序和斜率控制能够消除很多“莫名其妙”的故障。我在设计第一版带追踪功能的电源时在原理图阶段花了比较长时间去确认不同控制器的 TRACK 引脚内部结构因为部分芯片把 TRACK 引脚同时作为软启动引脚如果不了解内部机制很容易把追踪功能设置成错误的比例导致电压重合点偏差很大。一个值得留意的细节是市面上部分同步 Buck 控制器的追踪引脚内部参考电压的范围并非完整覆盖你预期的所有输出电压范围。比如某芯片的 TRACK 引脚内部参考范围是 0V 到 0.6V如果你的主电源轨输出 1.8V直接接到 TRACK 引脚会超过参考范围芯片可能无法正常追踪。这时候要在中间加一级电阻分压把 1.8V 缩放到 0.6V 以下同时要保证缩放后的电压与内部参考的线性关系保持一致。如果以后要扩展方案比如添加更多电源轨或者对瞬态响应有更高要求可以考虑在反馈环路中加入前馈电容或者在输入输出端增加 Q 值更高的陶瓷电容组合与钽电容并联在频率曲线上形成互补降低输出阻抗。对于更复杂的系统甚至可以采用数字电源管理方案用 PMBus 在系统运行时动态调整各路电压和时序参数而不需要改动硬件。这种灵活性在 FPGA 原型验证阶段非常有价值因为它允许你不重新打板就能微调电源参数缩短调试周期。最后分享一个个人习惯每次做电源设计时我都会在原理图上标注出每一路电源轨的“最大允许电压差上升斜率”等关键参数并且在评审时和硬件工程师逐项核对。这个习惯帮我在早期发现过几个隐患比如某一路电压的负载瞬态电流被低估导致电感和输出电容选择偏小后来通过增大输出电容解决了。硬件的严谨性就是靠这些细节点滴积累出来的。