这一篇在干嘛?

PCB(印刷电路板)设计本身有海量专书,本章只讲 FPGA 系统里特别要命的两件事:怎么给 FPGA 供电、怎么算和放去耦电容。电源做不好,故障不可重复、实验室复现不出来——这是最难排查的一类问题。

19.1 电源设计

电源问题看起来”小儿科”,对 FPGA 恰恰不是。去耦(decoupling,在芯片电源引脚附近就地储备瞬时能量、抑制电源轨波动)做得差会大幅降低 FPGA 的可靠性,而且多数问题不可重复、在实验室根本不出现——最坏的故障就是不可复现的故障。

FPGA 功能、I/O、时钟速度的配置千差万别,对应的电源需求也千差万别:

  • 小型低速、屏蔽良好的环境:电源轨几乎不受影响,过度去耦只是浪费成本;
  • 高噪声环境或高速信号产生大量瞬态(transient,电流的短时突变)的应用:电源被严重冲击,算错就可能失效。

忽略电源要求,可能导致现场故障,而这些问题在实验室无法复现。

19.1.1 供电要求清单

现代小工艺 FPGAs 有多路电源和复杂的供电要求,至少要核对以下几项:

  • 单调性(monotonicity)
  • 软启动(soft start)
  • 爬升时间控制:最小/最大爬升时间
  • 峰峰值纹波(ripple)
  • 纹波变化率
  • 时钟管理电路的干净电源
  • 上电顺序与跟随(sequencing and tracking)

逐项来看:

单调性:上电过程中电源轨不得下降,斜率必须始终为正(或零)。下图是违反单调性的曲线:

非单调上电曲线 图19-1 上电过程中电压出现回落,违反单调性要求

单调上电曲线 图19-2 斜率始终非负的单调上电曲线

软启动:限制上电瞬间涌入 FPGA 的浪涌电流(in-rush current)。多数现成电源芯片没有内置软启动,需要在 PCB 上外加电路。典型的软启动电路用一个 pass-transistor(导通管)控制输出:

典型软启动电路 图19-3 通过调节导通管栅极来限制电流上升速率的软启动电路

电路原理:如果电压爬升太快,导通管栅极电压会自适应调整、增大电源输出阻抗,从而放缓上升速率。

最小/最大爬升时间:上电电压爬太快会浪涌(如上所述);爬太慢则会在阈值电压附近徘徊,可能导致复位不正常:

最小和最大爬升时间 图19-4 上电斜坡必须落在最小与最大爬升时间之间

纹波变化率:对时钟控制等敏感模拟电路,不仅纹波幅度有要求,纹波本身的变化率也有要求——即电源输出必须干净到不含某个阈值以上的高频分量:

纹波变化率 图19-5 纹波的高频分量需要被限制在阈值以下

给敏感模拟电路供电的那一轨,通常要上线性稳压(linear regulation),把高频分量尽量滤干净(在线性电源带宽之内)。

上电顺序与跟随:好的设计实践是给电源加上电顺序控制。基本原则是:I/O 不应先于核心(core)上电——驱动输出逻辑状态的是核心,核心没起来之前 I/O 先上电,输出电平就是未知的。包括 FPGA 在内的大多数 IC 都内置了防损坏电路,但实践中这些保护并非万无一失(数据手册说的不算数),按好习惯办事:核心电压先上,I/O 后上

上电顺序 图19-6 核心电压先于 I/O 电压建立的上电顺序

19.1.2 线性稳压的工作原理与局限

线性稳压器靠反馈补偿负载电流的变化:

线性稳压调节 图19-7 线性稳压:运放感知输出压降并调大导通管的栅极电压来补偿

工作过程:负载电流瞬间增大 → 电流流过导通管的串联电阻使输出电压下跌 → 反馈回路中的运放(op-amp)感知到下跌 → 抬高导通管栅极电压 → 串联电阻减小 → 输出电压回升。

关键局限:这个反馈环对低频到亚 MHz 级的波动工作良好,但环路带宽不够快,补偿不了甚高频瞬态。高频能量就得靠下一节的主角——去耦电容。

19.2 去耦电容

去耦电容的作用:电源轨波动时,就地释放少量瞬态能量把电压”托住”。很多工程师只会”每个电源脚旁边放个电容”,但不懂原理导致策略错误——电容放了,效果没拿到。典型错误做法:一种电容值用到底、铺满整块 PCB;或者用了多种容值但配比乱来。

深入研究可参考 Xilinx 应用笔记 XAPP623(电源分配系统 PDS 设计)。下面讲清原理。

19.2.1 核心概念:真实电容不是纯电容

每个真实电容除了电容 C,还有寄生电感 L 和电阻 R——等效成一个 RLC 二阶模型

RLC 电容模型 图19-8 真实电容 = 理想电容 + 串联电感 + 串联电阻

RLC 串联电路的阻抗特性:

  • 低频段:电容主导,频率越低阻抗越大;
  • 高频段:电感主导,频率越高阻抗越大;
  • 中间某点:容性和感性互相抵消,阻抗达到最小值——这个频率就是谐振频率(resonance frequency)

真实电容的 RLC 谐振 图19-9 阻抗在谐振频率处最小,两侧(极低频与极高频)都升高

所以:每个电容只在自身谐振频率附近的频段内去耦效果最好。要覆盖很宽的频率范围,就必须组合使用多种谐振频率的电容:

多电容宽带衰减 图19-10 多种容值组合实现对宽频率范围的衰减

还有一个规律:小电容存的电荷少、能提供的能量少,要在高频段(小电容负责的频段)达到同样的衰减水平,小电容的数量要多于大电容

选型启发式规则:寄生参数因工艺而异,但一般而言,同等容值下封装越小、寄生电感越小。所以给定容值时应选能买到的最小封装,以减小寄生电感、拓宽有效频带。

覆盖宽频率范围需要宽范围的去耦电容。

19.2.2 计算电容值

配比怎么定?经验法则:容值按数量级覆盖以下几档:

电容档位数量级
大容量(bulk)100 ~ 1000 μF
中容量1 ~ 10 μF
常用去耦0.1 μF
高频0.01 μF
甚高频0.001 μF

**配比法则:容值每降一个数量级,该档电容的数量大约翻倍。**例如用了 2 个 0.1 μF,就应配 4 个 0.01 μF,才能在高频段达到同等衰减水平。电容总数由整体功耗需求和噪声特性决定。

工具可以代劳:Xilinx 的 XPower 工具能根据 FPGA 的静态特性和动态功耗自动推荐去耦方案。书中示例:某设计向量集下 XPower 算出内核动态功耗 7 mW,给出如下推荐——

去耦网络汇总(XPower 输出)

电源轨容值范围(μF)数量
Vccint(合计 4 个)
470.0 – 1000.01
0.0100 – 0.04701
0.0010 – 0.00472
Vccaux(合计 8 个)
470.0 – 1000.01
0.0470 – 0.22001
0.0100 – 0.04702
0.0010 – 0.00474
Vcco25(合计 8 个)
470.0 – 1000.01
0.0470 – 0.22001
0.0100 – 0.04702
0.0010 – 0.00474

观察这张表可以验证前面的规律:小容值档的数量是大容值档的 2~4 倍——低数量级、多数量的金字塔结构。

底线要求:每个电源引脚旁边至少放一个电容。

19.2.3 电容摆放

容值对了,位置不对照样白搭。细长走线(trace)本身有可观的感性分量,会叠加到电容的等效电感上:

去耦电容摆放 图19-11 细长的走线和过孔会附加寄生电感,削弱去耦效果

附加电感在 RLC 模型的高频段是主导项,因此:

频率越高的电容,必须放得离 FPGA 电源引脚越近。

实际 PCB 上电源脚旁边永远不够空间,权衡原则就是”小的近、大的远”:小电容(高频)紧贴电源引脚,大电容依次退后。而 bulk 电容(100~1000 μF)只响应慢瞬态,放 PCB 上几乎任何位置都可以

另一个常见诱惑:几个电容共用过孔(via)或走线——这会增加电感、让多加的电容形同虚设:

糟糕设计:共用过孔 图19-12 多个电容共享一个过孔,等效电感叠加

正确做法:每个电容焊盘独占一个过孔,走线长度最短化。

寄生电感一加,衰减带宽会显著缩水:

附加电感导致带宽缩水 图19-13 附加电感使谐振点衰减量下降、有效频带变窄

想系统学习 PCB 设计,可参考 Howard Johnson 和 Martin Graham 的《High-Speed Digital Design》。

要点小结

  • 忽略 FPGA 供电要求,可能导致实验室无法复现的现场故障。
  • 供电要核对:单调性、软启动、爬升时间、纹波、纹波变化率、模拟轨干净度、上电顺序;核心先于 I/O 上电。
  • 线性稳压的反馈环路只覆盖低频,高频瞬态靠去耦电容。
  • 真实电容是 RLC 电路,只在谐振频率附近有效;宽频去耦必须多容值组合。
  • 容值每降一个数量级,数量翻倍;小电容要更靠近电源引脚。
  • 每个电容独占过孔、走线最短。

常见坑

最常见的翻车:整板铺同一容值(比如清一色 0.1 μF)以为万事大吉。结果高频段(几十~几百 MHz 的瞬态)完全没有覆盖,故障表现为”偶发死机、实验室不复现”——因为异常只在高噪声、高温或特定负载突变时冒头。另一个隐形杀手是共用过孔:原理图画得再漂亮,一个过孔串三个电容,高频去耦等于没做。

通关标准:

学完本篇你应该能做到:① 逐条核对 FPGA 供电要求(单调性、软启动、爬升时间、上电顺序等);② 用”容值每降一个数量级数量翻倍”的法则设计去耦网络,或用 XPower 生成推荐配置;③ 在 PCB 布局中按”高频近、低频远、每电容独占过孔”的规则摆放去耦电容。