延迟、抖动、周期、余量,怎么合成一张能用的设计表?

四个数单独看都对,合起来才是决策:延迟 57.02 µs、抖动 σ 10 ns、T/τ = 0.2、超时概率 3%。给一张四行表,写清每行填什么、怎么得到,以及三条能立刻抓出矛盾的一致性检查。

延迟、抖动、周期、余量是四个不同的问题:多久、多稳、多快、多险。分开写,每份报告都能自洽;放在一起,才可能发现矛盾——比如"占用 70%"和"超时概率 1e-6"同时写在表里,而按模型前者对应的是 3%,差四个数量级。这张表的价值不在填数,在于让矛盾无处可藏。

现象

时序评审最常见的两种失败:

失败形态 具体表现
四份报告各说各的 延迟报告说 50 ns,抖动报告说 37 ns,周期报告说 100 µs,没人能回答"整套稳不稳"
表里数字互相矛盾 占用写 70%,超时概率写 1e-6;或周期写 100 µs,等待项写 5 µs

第二种更危险:每个数都有出处,但它们不属于同一个系统。

原因

四个量不是独立的,存在明确的耦合关系:

周期 T  →  决定采样等待项(≈ T/2,未锁相)
        →  与对象时间常数 τ 一起决定采样够不够快
延迟  →  决定相位裕度,间接影响可用的增益
抖动 + 占用  →  共同决定尾部概率

所以「先定周期,再补延迟」这种顺序会反复返工。正确的顺序是:先算延迟 → 用延迟与 τ 定周期 → 再分配抖动预算 → 最后校核尾部。

怎么做

第一行:延迟账本。 填端到端均值与最坏值,并注明是否锁相。

第二行:抖动账本。 填合成后的 σ,并写清各分量的独立性假设。

第三行:周期账本。 填 T、τ 与两者的比值,以及扫描得到的结论。

第四行:余量账本。 填平均占用率与尾部概率,并写明估算方法与样本量。

四个账本合成一张设计表的四行结构

三条一致性检查,任一条对不上就说明表里至少有一个数是估的:

import math

def p_over(util, sigma, T=100e-6):
    """对数正态模型下,平均占用 util 时的单拍超时概率。"""
    mu = math.log(util * T) - sigma**2 / 2
    z = (math.log(T) - mu) / (sigma * math.sqrt(2))
    return 0.5 * (1 - math.erf(z))

T, sigma = 100e-6, 0.2
print("等待项应为 T/2 = %.2f us" % (T / 2 * 1e6))
for util in (0.7, 0.5, 0.394):
    print("占用 %.1f%% → 模型 P = %.3g" % (util * 100, p_over(util, sigma)))
  • 检查一(延迟):未锁相时,等待项应约等于 T/2。写 T=100 µs 却填等待 5 µs,两者矛盾。
  • 检查二(抖动):三个 ±10 ns 独立源合成 σ=10 ns;若表里写 30 ns,说明按最坏值相加,应改注为"峰值上限"。
  • 检查三(余量):由占用率算出的 P 必须与"实测超时次数 / 样本量"同量级。

验证

一个填好的例子(四篇系列文章的同一组参数):

账本 填的数 判据
延迟 57.02 µs(等待 50) 与 T/2 + 固定段一致
抖动 σ = 10 ns(三项独立) 与实测 σ 同量级
周期 T = 100 µs,T/τ = 0.2 扫描显示全程差 0.3%,够用
余量 占用 70% → P = 3%(1/34) 与实测超时比例一致

再用同一段代码检测一处常见矛盾:

表里写的 模型算出 判定
占用 70%、P = 3% 2.98% 自洽
占用 50%、P = 1.8e-4 1.81e-4 自洽
占用 70%、P = 1e-6 2.98% 矛盾,差 4 个数量级;要达到 1e-6,占用需降到 39.4%

改前四份报告各说各的 → 改后一张表:57.02 µs、σ 10 ns、T/τ 0.2、P 3% 四行同时成立,评审时只需核对一致性。

边界

  • 这张表是骨架,不是答案。每一行的数值都依赖对象、噪声与负载,换系统要重填。
  • 模型假设必须写在表头:对数正态、独立抖动、均匀相位。假设不成立时,结论只作数量级参考。
  • 周期那一行的判据(T/τ 多小算够)来自本文的数值实验,不是通用定理;延迟占比大的系统会更苛刻。
  • 四行之间的一致性检查只能发现"算错",发现不了"测错"——测量方法本身的问题要靠外部仪器与交叉验证。
  • 本文所有数值来自系列的数值实验,不是硬件实测;表格形式可以照用,数字不能照抄。

最后验证于 2026-10-29 · 表格 v1.0 · 数值实验参数:T=100 µs、τ=0.5 s、三项 ±10 ns 独立抖动、对数正态 σ=0.2 · Python 3.13

延迟、抖动、周期、余量,怎么合成一张能用的设计表?

作者 JimmyZ,嵌入式 / 确定性控制方向。GitHub · 掘金