4. 目标阻抗计算公式:从时域到频域推导

4.1 时域视角:瞬态电流与电压波动

做PDN设计,第一步要搞清楚一个问题:我们到底在对抗什么?

说白了,芯片在工作时不是一直安安稳稳吃电流的。它在不同时钟周期、不同指令下,电流会突然变大或变小。这种瞬态变化,就会让供电电压产生波动。

时域里,电压波动 ΔV 和电流变化 ΔI 之间是什么关系?

简单粗暴地写:ΔV ≈ Z × ΔI。这里的 Z 不是纯电阻,它是从芯片管脚往回看PDN的瞬态阻抗。但注意,这个 Z 不是常数,它跟时间、频率都有关系。

我在项目里试过直接用时域仿真去估电压跌落,结果发现波形又复杂又难看懂。后来我换了个思路——转到频域去看,反而清晰多了。

核心思想:时域的电流瞬态,经过傅里叶变换后变成频域的频谱。每个频率点上的电流分量,乘以对应频率的PDN阻抗,就是那个频率下的电压波动。把所有频率的波动叠加回来,就得到时域的真实电压波形。

4.2 频域视角:为什么非要用阻抗?

你想想看,时域里 ΔV = Z × ΔI 中的 Z 如果是个常数(比如纯电阻),那很简单。但PDN里全是寄生电感、去耦电容、平面电容……这些东西的阻抗随频率剧烈变化。

所以,用频域阻抗曲线 Z(f) 来描述PDN的电气特性,才是最自然的方式。每个频率点上的阻抗,决定了那个频率分量电流所引起的电压波动幅度。

我个人的习惯是:把芯片的电流需求看作一个

  • 直流分量(平均功耗)
  • 交流分量(瞬态变化,包含多个频率成分)

直流分量不产生电压波动(纯电阻才产生压降,但那是另一回事)。真正影响电压波动的,是交流分量。

4.3 目标阻抗公式的推导

现在我们来做推导——从时域到频域,一步步来。

步骤1:定义电压波动约束

芯片允许的电压波动范围,通常用电源电压的百分比表示:

ΔV_max = Vdd × ripple_tolerance(比如5%)

例如 Vdd=1.0V,ripple_tolerance=5%,则 ΔV_max=50mV。

步骤2:定义最坏情况电流变化

芯片在某个时刻从低功耗切到高功耗,电流变化量 ΔI_max。这个值怎么来?

  • 要么从芯片功耗模型得到(LDO/DC-DC输出电流跳变)
  • 要么用最大负载电流减去最小负载电流
  • 工程上常见:ΔI_max = I_max - I_min(比如0A到10A)

我记得有一次做服务器CPU的PDN,客户只给了总功耗,我说不行,必须给瞬态电流变化率,不然没法算目标阻抗。后来他们专门做了IR drop仿真,才拿到ΔI_max。所以,这个参数非常关键。

步骤3:从时域要求过渡到频域约束

最严格的约束是什么?

把 ΔI_max 看作一个理想阶跃电流,它的频谱覆盖从DC到很高频率。每个频率点上的电流幅度是 |I(f)|。但为了工程简化,我们采用最坏情况单频点近似:

|I(f)| ≈ ΔI_max × (某个因子,根据频谱形状)

更常用的做法是直接假设:在关键频率范围内,电流变化主要能量集中在某个频带,我们取等效电流为 ΔI_max。

于是,目标阻抗就是:

Z_target = ΔV_max / ΔI_max

这已经是工程界通用的目标阻抗计算公式了。

经验之谈:这个公式看着很简单,但它背后的物理意义远不止除法。它要求在整个芯片工作频率范围内(从kHz到GHz),PDN的输入阻抗都要小于这个Z_target。否则,某个频率上的阻抗共振可能放大电压波动。

步骤4:考虑多频率成分(进阶)

你可能会问:ΔI_max 只在某个频率点出现吗?不是的。实际电流波形可能包含了多个频率的冲击。这时,我们需要保证:

Z(f) × |I(f)| ≤ ΔV_max ,对于所有关心的f

换句话说,目标阻抗曲线是一条水平线(Z_target 恒定),或者更精细地说,是一条包络线:

Z_target(f) = ΔV_max / |I(f)|

但工程上,为了简单,我们仍然用一个常数值 Z_target。

4.4 常见公式形式与对比

我在不同供应商、不同文献里看到过几种变体,本质相同但写法有差异。我列个表格给你参考:

来源 公式 说明
经典教科书写法 Z_target = (Vdd × ripple%) / ΔI ripple% 常用3~10%
Intel早期应用笔记 Z_target = (Vdd × 0.05) / I_max 假设ripple=5%,且ΔI ≈ I_max
IBIS/IEC标准推荐 Z_target ≤ ΔV_noise / I_step ΔV_noise来自噪声预算
实际项目最常见 Z_target = (Vdd × tol) / ΔI_peak tol通常取3%~5%,ΔI_peak由功耗场景给出

重点不在于背公式,而在于理解每个参数怎么定。我曾经见过一个团队直接拿芯片最大电流代入ΔI,算出来Z_target只有1mΩ,结果板子做出来成本极高。实际上,最大电流变化量往往只有最大电流的一半左右,要结合具体功耗序列去分析。

4.5 注意事项与工程经验

避坑指南:我曾经在某个高速FPGA项目中,按照手册给的ΔI_max=8A算出来Z_target=6mΩ。板子做出来后,在某个频率下电压跌落超标。后来发现,芯片实际工作时的电流变化速度(di/dt)远快于手册给的均值,这会导致频谱中的高频分量能量更大,而高频段PDN阻抗很难压到位。所以,ΔI_max 不仅要看幅度,还要看变化速率,最好用瞬态仿真确认。

另外,公式中的ΔV_max不是简单的Vdd×5%。你还要考虑:

  • DC IR drop占了多少裕量
  • 片上电压调节器(VRM)的纹波噪声
  • 温度老化带来的电压漂移

所有这些都要从总的电压预算里扣掉,剩下的才是允许PDN产生的瞬态波动。

总结推导逻辑:
时域约束条件 → 最坏情况电流变化 → 等效频域激励 → 阻抗约束公式
一句话:目标阻抗,就是允许的电压波动除以可能的最大电流变化。

下面这张图概括了从时域到频域推导目标阻抗的核心流程,你可以对照着看:

从时域到频域的目标阻抗推导流程 芯片功耗模型 时域电流波形 i(t) 时域电压约束 ΔV_max = Vdd × 纹波% 傅里叶变换 I(f) = F{i(t)} 频域电流频谱 |I(f)| 在不同频率 目标阻抗公式 Z_target = ΔV / ΔI_max 频域阻抗曲线 Z(f) ≤ Z_target (全频段) 关键思想 时域无法直接约束 阻抗,因为Z随 频率变化。 转到频域后,每个 频率点独立约束。

这张图把推导的七步走清楚了:先有时域电流变化和电压约束,通过傅里叶变换转到频域,再结合两点约束得到目标阻抗公式,最后用这个常数去约束全频段的PDN阻抗曲线。

4.6 最后再啰嗦两句

我见过不少新手拿到公式就直接套数字,但忽略了“ΔI_max”到底是多少。其实,这个 ΔI 最好通过芯片的功耗场景分析得到,而不是简单看最大电流。比如,一个核心从空闲切到满载,电流从1A跳到10A,ΔI=9A。但如果它从半载切到满载,ΔI可能只有3A。所以,要挑最恶劣的场景。

另外,公式里的ΔV也需要留点裕量。我习惯把总电压波动的50%分配给PDN瞬态,剩下的交给片上VRM纹波和温度漂移。这样做出来的设计才不容易翻车。