电源完整性基础:PDN阻抗、去耦电容、电压波动分析

电源完整性,说白了就是保证芯片在任何时刻都能拿到它想要的电流。电压不能掉太多,也不能过冲。我早年做第一块高速板时,以为电源铺层够厚就行,结果一上电,FPGA内部逻辑到处报错。后来拆开一看,PDN阻抗在某个频率上飙到了10Ω——目标阻抗才0.1Ω。那一次我就记住了:PDN不是铜皮,是电阻、电感、电容串并联出来的网络。

PDN阻抗——你躲不开的频域曲线

PDN阻抗是从电源模块输出到芯片管脚看进去的等效阻抗。为什么关心它?因为芯片电流是变化的,每变化一次,PDN上就会产生压降:ΔV = Z(f) × ΔI(f)。Z越大,电压波动越大。

目标阻抗通常这样定:Ztarget = (VDD × 允许纹波%) / Imax。举个例子,1.2V电源允许3%纹波,最大电流10A,那Ztarget = 1.2×0.03/10 = 3.6mΩ。这就是那条红线——整个频域内阻抗都不能超过它。

关键点:PDN阻抗曲线有三个特征区——低频段由VRM的反馈环决定,中频段由去耦电容网络决定,高频段由芯片封装和片上电容决定。最头疼的往往是中频段的并联谐振峰。

表1:PDN各频段阻抗贡献来源

频段主要贡献元件典型频率范围
低频 (<200kHz)VRM反馈环路、输出电容DC ~ 200kHz
中频 (200kHz ~ 100MHz)体电容、陶瓷电容、PCB平面200kHz ~ 100MHz
高频 (>100MHz)封装电容、片上电容、裸片PDN100MHz ~ 几GHz

去耦电容——PDN里的主力选手

去耦电容的本质就是个能量仓库。芯片突然要电流时,电容先顶上,等着电源环路慢慢补。但电容不是理想的,它有ESR和ESL。ESR给阻抗曲线加了个底,ESL把电容在高频变成电感。

我习惯把去耦电容分成三个梯队:

  • 第一梯队:大电解 / 钽电容,10~100μF,负责低频段(<1MHz)。ESR较高,但ESL大,谐振频率低。
  • 第二梯队:X7R/X5R陶瓷电容,0.1~10μF,覆盖1~50MHz。性价比最高,用得最多。
  • 第三梯队:NP0/C0G陶瓷电容,100pF~0.1μF,怼到百MHz以上。ESR极低。

我曾经在一个DDR4项目中,体电容用了100μF×4,中频电容用了1μF×20,高频电容用了0.1μF×10。结果仿真发现2MHz附近有个大谐振峰,差点没压住。后来调整了电容值比例,把1μF换成4.7μF和0.47μF混搭,峰就削下去了。你想想看,不同电容的自谐振频率如果能错开,并联后的阻抗会更平坦。

一个实用口诀:去耦电容值按10倍步进选择(比如10μF、1μF、0.1μF、10nF),每个值用2~3个不同封装ESL的品种交错放置。这样并联后的叠加峰最少。

表2:常见去耦电容参数(典型值)

类型容值范围ESRESL自谐振频率
电解电容10~1000μF几十mΩ~几百mΩ~10nH几十~几百kHz
钽电容1~100μF几十mΩ~百mΩ~5nH几百kHz~几MHz
X7R陶瓷(0805)1~10μF几mΩ~十几mΩ~1nH几~十几MHz
NP0/C0G(0402)1~100nF几mΩ~0.5nH几十~几百MHz

电压波动分析——从频域到时域

PDN阻抗曲线做完了,就知道时域里电压会怎么跳。理论上,时域电压波动 = IFFT(PDN阻抗 × 电流频谱)。实际项目中,我更习惯用SIwave跑个瞬态仿真,直接看波形。

一个常见场景:芯片工作频率从低频切换到高频,或者突然使能大电流模块。这相当于给PDN一个阶跃电流。如果PDN阻抗在某个频率上有谐振峰,时域上就会表现为振铃,幅度可能超过允许纹波。

我调过一块GPU供电板,2.2MHz处阻抗超标1.8倍。仿真时域波形:电压跌了120mV,而设计要求只允许50mV。后来在谐振频率附近增加了两个不同位置的4.7μF电容,阻抗压下来了,波形也就稳了。嗯,验证没问题才发的板。

警告:去耦电容不要一股脑全放同一位置。把高频小电容尽量靠近芯片管脚,体电容可以放在板边或模块入口。否则环路电感会吃掉电容的高频表现,仿真好看但实测翻车——我翻过,所以提醒你。
PDN阻抗-频率曲线与去耦电容作用 DC 1MHz 10MHz 100MHz 1GHz 频率 → 10mΩ 100mΩ 1Ω 阻抗 → 目标阻抗 (Ztarget) 谐振峰1 谐振峰2 谐振峰3 电解/钽电容 X7R/X5R陶瓷 NP0/C0G/片上 VRM PCB平面 封装+芯片 PDN阻抗曲线 谐振峰

上图中,蓝色曲线是典型的PDN阻抗走势——低频低、中频抬升形成几个谐振峰、高频又靠封装电容压住。目标阻抗线(虚线)划定了底线。三个彩色区间分别代表三类去耦电容的“主场”:电解/钽管低频段,X7R/X5R管中频段,NP0/片上电容管高频段。

你做仿真时,重点关注峰值有没有超过目标阻抗。如果超过了,就在那个频率附近加合适的电容去压低。单个电容加完还可能产生新的反谐振,所以通常要一组一组迭代。我在CST里习惯先跑个“PDN阻抗扫描”,找到超标的频点,再到SIwave里加电容试,反复几次就稳了。