3、参考平面与电源完整性:电源分配网络(PDN)基础,平面电容与去耦,参考平面噪声与同步开关噪声(SSN)
电源完整性,说白了就是保证芯片在任何时刻都能「喝到」足够干净、足够稳定的电。你想想看,信号再快、时序再准,如果电源纹波大得像过山车,那一切都是白搭。我刚开始做高速板时,就吃过这个亏——一块 10 层板,DDR3 跑 800MHz 死活不稳,最后发现是 PDN 设计出了问题。
这一节,我们就来聊聊 PDN 的基础、平面电容怎么用、去耦怎么放,以及那个让人头疼的同步开关噪声(SSN)。
核心观点:PDN 的目标是让芯片焊盘处的阻抗在目标频段内低于目标值。平面电容是高频段的主力,去耦电容是中低频段的补充。SSN 是 PDN 设计失败的典型表现。
3.1 电源分配网络(PDN)基础
PDN 的终极目标,就是让芯片焊盘处的输入阻抗在目标频段内足够低。为什么?因为阻抗越低,电压波动越小。我习惯用目标阻抗法来设计 PDN:先确定芯片的最大瞬态电流 ΔI 和允许的电压波动 ΔV,然后算出目标阻抗 Z_target = ΔV / ΔI。
举个例子:一个 FPGA 核心电压 1.0V,允许 3% 的纹波,即 30mV。如果最大瞬态电流是 10A,那目标阻抗就是 3mΩ。嗯,这个值非常低,意味着从 DC 到几百 MHz,整个 PDN 的阻抗都不能超过 3mΩ。
我的经验:目标阻抗法虽然经典,但实际设计时不要死磕全频段。我一般把重点放在 1MHz 到 500MHz 这个区间——这是大多数数字芯片的开关频率范围。低于 1MHz 靠 VRM 和 bulk 电容,高于 500MHz 靠平面电容和芯片封装电容。
PDN 的组成其实很简单:VRM(电压调节模块)、bulk 电容、去耦电容、平面电容,以及芯片封装和 die 上的电容。它们各自负责不同的频段:
| 组件 | 有效频段 | 典型阻抗贡献 |
|---|---|---|
| VRM | DC ~ 1kHz | 低(但响应慢) |
| Bulk 电容(钽/铝) | 1kHz ~ 1MHz | 中(提供电荷储备) |
| MLCC 去耦电容 | 1MHz ~ 100MHz | 低(但受 ESL 限制) |
| 平面电容(电源-地平面) | 100MHz ~ 1GHz+ | 极低(无 ESL 问题) |
| 芯片封装/片上电容 | 1GHz+ | 极低(但容量有限) |
3.2 平面电容与去耦
平面电容,说白了就是电源平面和地平面之间自然形成的电容。你想想看,两个大铜皮中间夹着一层介质,这不就是一个巨大的平板电容吗?
平面电容的公式很简单:C = ε₀ × εᵣ × A / d。其中 A 是平面重叠面积,d 是介质厚度。我做过一个 8 层板,电源和地平面间距只有 2mil(约 50μm),用 FR4 材料(εᵣ ≈ 4.2),每平方英寸的平面电容大约有 200pF。整板 6×8 英寸,算下来就是 9.6nF——这个电容在 200MHz 以上表现非常好,因为它的 ESL 几乎为零。
注意:平面电容虽然好,但容量有限。对于低频段的去耦需求,还是得靠分立电容。我曾经见过一个设计,工程师只靠平面电容去耦,结果低频纹波超标——因为平面电容在 1MHz 以下的阻抗太高了。
去耦电容的选型,我个人习惯遵循「十倍频程」原则:每个数量级的频率用一个容值,比如 10μF、1μF、0.1μF、0.01μF、1000pF。每个容值负责一个频段,相互重叠覆盖。但要注意,电容的自谐振频率(SRF)才是关键——超过 SRF 后电容呈感性,反而帮倒忙。
举个例子,一个 0402 封装的 0.1μF MLCC,典型 SRF 在 10MHz 左右。超过 10MHz 后,它就是一个电感(约 0.5nH ESL),阻抗开始上升。所以高频段必须靠更小容值、更小封装的电容,或者直接靠平面电容。
避坑指南:我曾经在一个 10Gbps 串行链路的设计中,发现电源纹波在 500MHz 附近有个尖峰。查了半天,发现是去耦电容的布局太远——走线引入了额外的电感。后来我把电容移到芯片背面,直接通过过孔打到电源平面,尖峰消失了。记住:去耦电容的布局比容值更重要。
3.3 参考平面噪声与同步开关噪声(SSN)
同步开关噪声,英文叫 Simultaneous Switching Noise,简称 SSN。它是什么?当多个输出同时翻转时,瞬间的大电流流过电源分配网络,在寄生电感上产生电压降,导致电源和地平面出现波动。这个波动会通过参考平面耦合到其他信号上,造成串扰和时序问题。
SSN 的根源在于 PDN 的寄生电感。公式很简单:V_noise = L × dI/dt。dI/dt 越大,噪声越大。高速芯片的 dI/dt 可以轻松达到 1A/ns 甚至更高,哪怕只有 0.1nH 的寄生电感,也会产生 100mV 的噪声。
我遇到过最典型的 SSN 案例:一个 32 位 DDR 总线,所有数据线同时翻转时,地平面瞬间抬高了 200mV,导致接收端的逻辑判断出错。后来怎么解决的?三个措施:
- 增加电源-地平面电容:把电源和地平面间距从 4mil 缩小到 2mil,平面电容翻倍。
- 优化去耦电容布局:在芯片每个电源引脚旁边放一个 0.1μF 电容,间距不超过 50mil。
- 控制同时翻转数量:在 FPGA 中设置输出延迟,让部分信号错开翻转时间。
参考平面噪声的另一个来源是「地弹」(Ground Bounce)。地弹是 SSN 的一种表现形式——当大量电流回流通过地平面时,地平面的电位会瞬间升高。你想想看,如果地平面都不稳定了,那所有以地为参考的信号都会出问题。
我的建议:对于高速设计,我强烈推荐使用「电源岛」和「地岛」的概念。把数字部分、模拟部分、高速接口部分的电源和地平面分开,用桥接或缝隙隔离。这样可以有效防止 SSN 从一个区域传播到另一个区域。我在一个混合信号板卡上用过这个方法,ADC 的 SNR 提升了 6dB。
最后,总结一下 SSN 的抑制手段:
- 降低 PDN 阻抗:薄介质、多平面、低 ESL 去耦电容。
- 减少 dI/dt:使用 slew rate 控制、预加重、输出延迟。
- 优化回流路径:每个信号旁边都有地过孔,减少回路电感。
- 隔离敏感区域:模拟和数字分区,避免噪声耦合。
再次提醒:SSN 不是「可能发生」的问题,而是「一定会发生」的问题。只要你的设计中有多个高速信号同时翻转,就必然有 SSN。区别只在于你能不能把它控制在容忍范围内。我见过太多设计,仿真时一切完美,一上板就出问题——十有八九是 SSN 在作怪。