3、参考平面与电源完整性:电源分配网络(PDN)基础,平面电容与去耦,参考平面噪声与同步开关噪声(SSN)

电源完整性,说白了就是保证芯片在任何时刻都能「喝到」足够干净、足够稳定的电。你想想看,信号再快、时序再准,如果电源纹波大得像过山车,那一切都是白搭。我刚开始做高速板时,就吃过这个亏——一块 10 层板,DDR3 跑 800MHz 死活不稳,最后发现是 PDN 设计出了问题。

这一节,我们就来聊聊 PDN 的基础、平面电容怎么用、去耦怎么放,以及那个让人头疼的同步开关噪声(SSN)。

核心观点:PDN 的目标是让芯片焊盘处的阻抗在目标频段内低于目标值。平面电容是高频段的主力,去耦电容是中低频段的补充。SSN 是 PDN 设计失败的典型表现。

参考平面与电源完整性知识体系 PDN 设计目标 平面电容 去耦电容网络 SSN 噪声 高频去耦(>100MHz) 介质厚度决定电容密度 中低频去耦(<100MHz) MLCC 选型与布局 同时翻转输出(SSO) 地弹与参考平面塌陷 目标:芯片焊盘处阻抗 |Z| ≤ 目标值(如 0.1Ω @ 1MHz-1GHz)

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 的抑制手段:

  1. 降低 PDN 阻抗:薄介质、多平面、低 ESL 去耦电容。
  2. 减少 dI/dt:使用 slew rate 控制、预加重、输出延迟。
  3. 优化回流路径:每个信号旁边都有地过孔,减少回路电感。
  4. 隔离敏感区域:模拟和数字分区,避免噪声耦合。

再次提醒:SSN 不是「可能发生」的问题,而是「一定会发生」的问题。只要你的设计中有多个高速信号同时翻转,就必然有 SSN。区别只在于你能不能把它控制在容忍范围内。我见过太多设计,仿真时一切完美,一上板就出问题——十有八九是 SSN 在作怪。