三个 10 ns 的抖动加起来,是 30 ns 还是 17 ns?
三个互不相关的 ±10 ns 抖动:线性相加得 30 ns,峰值平方和开根得 17.3 ns,真实标准差只有 10 ns。三个数都对,取决于问的是最坏值、峰值包络还是 σ——混用会让预算差三倍。
同一个系统,三个 ±10 ns 的独立抖动源,能算出三个不同的合计数:最坏情况 30 ns、峰值 RSS 17.3 ns、标准差 10 ns。 它们不是互相矛盾的答案,而是三个不同的问题。麻烦在于,大部分抖动预算表没有写清楚自己在回答哪一个。
现象
两份看起来都很专业的抖动预算,对同一套硬件给出相差三倍的结论:
| 做法 | 结果 | 常见出处 |
|---|---|---|
| 各环节峰值直接相加 | 30 ns | "保守起见,全加起来" |
| 各环节峰值平方和开根 | 17.3 ns | "误差合成公式" |
| 按方差合成(得到合成的 σ) | 10 ns | 统计口径 |
如果最后要用"峰峰值不超过 X ns"去验收,用第三个数就会翻车;如果用第二个数去算丢拍概率,又会算错——因为它既不是 σ,也不是严格的最坏值。
原因
关键在于区分两件事:随机量能不能相加,以及你报的是哪个统计量。
① 方差可加,幅度不可加。 对独立随机量:
Var(X1 + X2 + X3) = Var(X1) + Var(X2) + Var(X3)
所以合成后的标准差是 √(σ₁² + σ₂² + σ₃²),不是 σ₁+σ₂+σ₃。
② 均匀分布的最坏值与 σ 的关系是固定的。 单个 ±a 的均匀分布,σ = a/√3:
单个 ±10 ns:σ = 10/√3 ≈ 5.77 ns,最坏 10 ns(= √3·σ)
三个独立: σ = √(3 × 5.77²) = 10 ns,最坏 30 ns(= 3σ)
这就解释了为什么"线性相加 30 ns"和"σ 合成 10 ns"能在同一个系统里同时成立:30 ns 恰好是 3σ。
③ 相关时不能平方和开根。 如果三个环节的抖动来自同一个时钟(同一晶振、同一 PLL),它们会同向变化,方差不能按独立处理,必须按线性相加。用 RSS 去算同源抖动,会得到过于乐观的数。
怎么做
第一步:给每个源贴两个标签——是否同源、量级多少。
| 源 | 同源? | 峰值 |
|---|---|---|
| 晶振周期偏差 | 基准 | 由 ppm 决定 |
| PLL 锁定抖动 | 与晶振同源 | 与上一条相关 |
| 中断响应 | 独立(与总线/流水线有关) | 实测 |
| 总线仲裁 | 部分相关(共享总线) | 实测 |
第二步:按标签选合成方式。
import math
# 三个 ±10ns 的独立均匀源
a = 10.0
sigma_one = a / math.sqrt(3) # 单源 σ ≈ 5.77 ns
worst_linear = 3 * a # 最坏:线性相加
peak_rss = math.sqrt(3 * a * a) # 峰值 RSS(把峰值当分量)
sigma_sum = math.sqrt(3) * sigma_one # σ 合成(方差可加)
print("线性最坏 %.1f ns / 峰值RSS %.1f ns / σ %.1f ns"
% (worst_linear, peak_rss, sigma_sum))
print("3σ = %.1f ns(与线性最坏一致)" % (3 * sigma_sum))
第三步:在预算表里写清口径。 一行三列:峰值、σ、以及"这一行是否与上一行同源"。验收用峰值,概率估算用 σ,两者不能互换。
验证
数值实验:独立抽样三个均匀分布(各 ±10 ns)共 40 万次,与解析值对照:
| 指标 | 解析 | 仿真 |
|---|---|---|
| 合成 σ | 10.00 ns | 9.98 ns |
| 最大绝对值 | 30.00 ns | 29.64 ns |
| 线性相加(最坏) | 30.00 ns | — |
| 峰值 RSS | 17.32 ns | — |
两点读法:仿真最大值 29.64 ns 逼近但不超过 30 ns,说明"最坏 = 3σ"在这个分布下是硬上界;而 17.3 ns 这个数既不是 σ 也不是上界,它是把峰值当分量做平方和的结果,只适合"多项峰值同时出现的概率很低"这种经验假设。

改前线性相加 30 ns → 改后方差合成 σ=10 ns:同一批数据,只是换了个问题——这就是为什么预算表必须写口径。
边界
- 平方和开根只在各分量统计独立(或至少不相关)时成立。同源时钟、共享总线、共用电源的抖动必须按相关处理,否则结果偏乐观。
- 均匀分布下"最坏 = 3σ"是个方便的关系,但不是普遍规律:高斯分布的最坏值无上界,只能给分位数;双峰分布的最坏值与 σ 没有固定比例。
- "峰值 RSS" 不是概率意义上的 σ,也不保证是上界。它能成立,依赖"各分量峰值不会同时出现"这个假设,而这需要证据。
- 系统性偏差(固定延迟、恒定偏移)不是抖动,不能进方差合成——它会整体平移,应该单独加。
- 本文数值是数值实验,用来演示合成规则;实际系统的分量要实测,且要检查它们之间是否真的独立。
最后验证于 2026-10-29 · 数值实验(Python 3.13,40 万次抽样)· 三个独立均匀分布 U(−10, +10) ns · 模型 v1.0