这一篇在干嘛?
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 二阶模型:
图19-8 真实电容 = 理想电容 + 串联电感 + 串联电阻
RLC 串联电路的阻抗特性:
- 低频段:电容主导,频率越低阻抗越大;
- 高频段:电感主导,频率越高阻抗越大;
- 中间某点:容性和感性互相抵消,阻抗达到最小值——这个频率就是谐振频率(resonance frequency):
图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.0 | 1 | |
| 0.0100 – 0.0470 | 1 | |
| 0.0010 – 0.0047 | 2 | |
| Vccaux(合计 8 个) | ||
| 470.0 – 1000.0 | 1 | |
| 0.0470 – 0.2200 | 1 | |
| 0.0100 – 0.0470 | 2 | |
| 0.0010 – 0.0047 | 4 | |
| Vcco25(合计 8 个) | ||
| 470.0 – 1000.0 | 1 | |
| 0.0470 – 0.2200 | 1 | |
| 0.0100 – 0.0470 | 2 | |
| 0.0010 – 0.0047 | 4 |
观察这张表可以验证前面的规律:小容值档的数量是大容值档的 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 布局中按”高频近、低频远、每电容独占过孔”的规则摆放去耦电容。
自测:为什么上电顺序要求核心电压先于 I/O 电压?
输出引脚的逻辑状态由核心驱动,核心未上电时 I/O 先上电会使输出电平未知。虽然多数 IC 内置了防护电路,但实践中并非万无一失,按”核心先上、I/O 后上”的好习惯设计更稳妥。
自测:真实电容为什么只在谐振频率附近去耦效果好?
真实电容等效为 RLC 串联电路:低频段容抗主导(频率越低阻抗越大),高频段感抗主导(频率越高阻抗越大),只有在容性与感性互相抵消的谐振频率处阻抗最小、去耦最有效。
自测:为什么小容值电容的数量要配得比大容值多?
小电容存储的电荷少、能提供的瞬态能量少。要在它负责的高频段达到与大电容在低频段相同的衰减水平,就必须用数量弥补单个能量不足——经验法则是容值每降一个数量级,数量翻倍。
自测:为什么频率高的电容必须最靠近 FPGA 电源引脚?
走线和过孔的寄生电感会叠加到电容的等效电感上,而高频段恰好是感抗主导的区域,附加电感会直接抬高阻抗、缩窄衰减带宽。所以高频小电容要最短路径贴脚摆放;bulk 大电容只响应慢瞬态,位置可以随便。
自测:线性稳压器能对付多高的频率?高频部分谁来补?
线性稳压的反馈环路带宽只覆盖低频到亚 MHz 的负载波动;甚高频瞬态的补偿环路跟不上,必须靠放置在芯片电源引脚附近的去耦电容就地提供瞬时能量。