4、电源完整性基础:电源分配网络(PDN)、目标阻抗、去耦电容设计

各位同学,咱们今天聊聊电源完整性。说实话,很多做FPGA设计的工程师,一开始都不太重视电源。觉得只要电压对、电流够,板子就能跑。我当年也这么想,直到有一次项目,板子调了整整两周,逻辑怎么都对,结果发现是电源纹波把DLL给干扰了。从那以后,我再也不敢小看PDN了。

4.1 什么是电源分配网络(PDN)?

电源分配网络,英文叫Power Distribution Network,简称PDN。说白了,就是从电源模块到芯片管脚之间,所有跟供电相关的路径。包括VRM(电压调节模块)、PCB走线、平面层、过孔、去耦电容,一直到芯片内部的封装和die。

你想想看,芯片在工作时,电流是动态变化的。尤其是FPGA,内部逻辑翻转时,瞬间电流可能从1A跳到5A。如果PDN设计不好,电压就会掉下去,或者产生很大的纹波。芯片一旦欠压,逻辑就乱套了。

核心观点:PDN的目标就是——在芯片管脚处,提供一个低阻抗、低纹波的稳定电压。不管负载电流怎么变,电压波动都要控制在允许范围内。

4.2 目标阻抗:PDN设计的“金标准”

那怎么衡量PDN好不好呢?业界有个概念叫目标阻抗(Target Impedance)。

公式很简单:

Z_target = (VDD × Ripple%) / ΔI

其中:

  • VDD:核心电压,比如1.0V、1.2V
  • Ripple%:允许的纹波百分比,通常取3%~5%
  • ΔI:瞬态电流变化量,比如从1A跳到5A,ΔI就是4A

举个例子。VDD=1.0V,纹波要求5%,ΔI=4A。那么:

Z_target = (1.0 × 0.05) / 4 = 0.0125Ω = 12.5mΩ

嗯,12.5毫欧。这个阻抗要从DC一直保持到几百MHz。听起来不难?其实挺难的。

我的经验:我在做一款高端FPGA板卡时,目标阻抗算出来只有8mΩ。一开始觉得随便铺个铜皮就够了,结果仿真一看,10MHz附近阻抗飙到了30mΩ。后来加了四层去耦电容才压下来。所以,别凭感觉,一定要算。

4.3 PDN的阻抗特性:三个频段

PDN的阻抗曲线,通常分三个频段来看:

频段 主导元件 特点
低频(DC ~ 1MHz) VRM + 大容量电解电容 阻抗主要由VRM的反馈环路决定,大电容负责储能
中频(1MHz ~ 100MHz) MLCC陶瓷电容 这是去耦电容的主要工作频段,注意电容的ESR和ESL
高频(100MHz ~ GHz) PCB平面电容 + 芯片封装电容 靠电源/地平面之间的寄生电容,以及芯片内部的去耦

为什么会这样?因为不同频段下,寄生参数的影响不一样。低频时,电容的ESR和ESL可以忽略;到了高频,电容本身会自谐振,过了谐振点就变成感性了。

4.4 去耦电容设计:不是越多越好

很多新手喜欢在板子上密密麻麻地放电容。我见过一块板子,放了200多颗0402电容,结果阻抗曲线反而更差了。为什么?因为电容之间会产生反谐振。

去耦电容的设计原则,我总结了几条:

  1. 选对容值:不同容值的电容,自谐振频率不同。比如1μF的MLCC,谐振点大概在几MHz;100nF的,谐振点在十几MHz;10nF的,谐振点能到几十MHz。
  2. 控制ESL:电容的等效串联电感(ESL)越小越好。0402封装的ESL通常比0603小。我习惯用0402,甚至0201。
  3. 并联策略:同一容值的电容并联,可以降低ESR,但要注意反谐振。不同容值的电容并联,要拉开数量级差距,比如10μF、1μF、100nF、10nF这样搭配。
  4. 靠近管脚:电容离芯片管脚越近,回路电感越小。我一般把高频小电容放在芯片背面,正对着电源管脚。

避坑指南:我曾经在一个项目里,为了追求低阻抗,把10μF和1μF的电容各放了20颗。结果仿真发现,在2MHz和8MHz附近出现了两个很大的阻抗尖峰。后来改成10μF放10颗、1μF放5颗、100nF放10颗,阻抗曲线才平滑下来。记住,电容不是越多越好,要讲究搭配。

4.5 实际设计步骤

好了,理论讲完了。咱们说说实际怎么做。我个人习惯按以下步骤来:

  1. 确定目标阻抗:根据芯片手册的电流变化率和纹波要求,算出Z_target。
  2. 估算VRM贡献:VRM在低频段能提供一定阻抗,通常几mΩ到几十mΩ。查一下VRM的datasheet。
  3. 设计去耦电容网络:用仿真工具(比如Cadence Sigrity、Ansys SIwave)或者手算,确定电容的容值、数量和位置。
  4. 考虑PCB平面电容:电源层和地层之间的间距越小,平面电容越大。我一般用4mil的介质厚度,能提供几十pF/inch²的电容。
  5. 仿真验证:跑一下PDN阻抗曲线,确保全频段都低于Z_target。
  6. 留有余量:实际设计时,我会把目标阻抗再降低20%~30%。因为仿真和实测总有偏差。

4.6 一个简单的计算示例

假设我们要给一个FPGA核心供电,VDD=1.0V,最大电流5A,纹波要求3%。瞬态电流变化ΔI=3A(从2A到5A)。

目标阻抗:

Z_target = (1.0 × 0.03) / 3 = 0.01Ω = 10mΩ

VRM在1MHz以下能提供约5mΩ的阻抗。那么剩下的5mΩ需要由电容来提供。

假设我们选用100nF的MLCC,ESR=5mΩ,ESL=0.5nH。单颗电容的自谐振频率:

f_res = 1 / (2π × √(0.5nH × 100nF)) ≈ 22.5MHz

在22.5MHz附近,单颗电容的阻抗约5mΩ。但我们需要全频段都低于10mΩ。所以需要多颗并联,并搭配不同容值。

我通常会这样搭配:

  • 10μF × 4颗(覆盖1MHz~5MHz)
  • 1μF × 4颗(覆盖5MHz~15MHz)
  • 100nF × 8颗(覆盖15MHz~50MHz)
  • 10nF × 4颗(覆盖50MHz~100MHz)

这样基本能把阻抗压在10mΩ以下。当然,具体还要看PCB布局和过孔电感。

小技巧:如果你没有仿真工具,可以用Excel简单估算。把每个频点的阻抗算出来,然后取并联值。虽然不精确,但能看出趋势。我早期做项目时就是这么干的,至少能避免明显的坑。

4.7 总结

电源完整性,说白了就是让芯片“吃”到干净的电源。PDN设计的关键在于:

  • 算清楚目标阻抗
  • 选对电容,搭配合理
  • 布局要紧凑,回路要短
  • 一定要仿真验证

嗯,今天就讲到这里。下一章咱们聊聊同步开关噪声(SSN),这是FPGA设计中另一个让人头疼的问题。到时候我会分享一个我踩过的坑——因为SSN导致DDR接口误码率飙升,查了三天才找到原因。敬请期待。