第二章节 误码率测试原理

做误码率测试很多人上来就接仪表、跑脚本、等结果。但如果不清楚背后在算什么,测出来的数字很可能只是自我安慰。

我早年跟一个供应商谈方案时,对方拍着胸脯说"我们模块 BER 低于 1e-12",结果我拿标准 PRBS31 一跑,半小时就报错了。后来发现他测试条件里码型、时间、门限全打在临界点上,根本不是真实性能。所以这一章,咱们把基础砸实。

2.1 误码率的数学定义

误码率(BER,Bit Error Ratio)定义为:

BER = 错误比特数 / 总传输比特数

它是个统计量。你想想看,真实信道里每比特是否出错是随机的,所以我们只能通过样本去估计整体概率。理论上,当样本数趋于无穷大时,BER 无限接近信道误码概率。但实际测试不可能等无穷久,这就需要搞明白两个事:测试时长和可信度。

关键点:BER 不是"精确值",而是"置信区间内的估计值"。

我见过有人测了 10 个 GbE 帧就敢报 BER < 1e-12,这明显是没搞懂统计意义。样本太少,置信度几乎为零。

工程上常用的简化公式是:如果测了 N 个比特且观察到 0 个错误,则在 95% 置信度下,实际 BER ≤ 3 / N。这就是“零差错测试”的置信上限计算方法。

2.2 测试码型的选择

码型选择直接影响测试的严酷程度。不是随便给一串 0101 就能模拟真实信号的。

I. 固定码型(如全 0、全 1、交替 01):

  • 优点:简单、眼图测量时常用。
  • 缺点:没有转换密度,长连 0 连 1 会暴露 DC 漂移,但无法检验高频损耗和码间串扰。

II. 伪随机二进制序列(PRBS):

  • 这是误码率测试的标准信源。
  • PRBS 序列由线性反馈移位寄存器(LFSR)生成,有确定性的周期,但统计特性接近白噪声。
  • 不同阶数的 PRBS 对应不同的最长连续相同比特数(最大游程长度):
PRBS 阶数 序列长度 (bits) 最大游程 (bits) 典型应用
PRBS7 2⁷ - 1 = 127 7 低速背板、SATA
PRBS15 2¹⁵ - 1 = 32,767 15 PCIe Gen2/3、10GE
PRBS23 2²³ - 1 ≈ 8.4M 23 OC-192、高速背板
PRBS31 2³¹ - 1 ≈ 2.1G 31 25G/100G/400G 以太网、CEI

避坑指南:我曾经在 28Gbps 链路测试时选用了 PRBS7,结果 BER 一直很好。换上 PRBS31 后立马出现大量误码——因为 PRBS7 的游程太短,根本激发不出信道中的低频截止效应。后来我养成了习惯:低速链路(< 10G)用 PRBS7 或 PRBS15,高速链路(≥ 25G)至少用 PRBS23,最好用 PRBS31。

III. 其他码型:

  • SSPR(带脉冲抑制的伪随机序列):用于抑制低频能量,避免接收机直流恢复电路饱和。我一般在测试含有 AC 耦合电容的链路时优先用它。
  • SQPR(方波伪随机序列):含更丰富的高频分量,对 HF 衰减更敏感,适合做压力测试。
  • 自定义码型:比如 8B10B 或 64B66B 编码后的实际业务码流。虽然不如 PRBS 严格,但能暴露特定编解码交织问题。

2.3 测试时间与置信度的工程计算

如何确定测多久?直接回答:取决于你期望的 BER 门限和可接受的错误概率。

假设我们要求:

  • 待验证的 BER 门限:B₀(例如 1e-12)
  • 误码次数上限(通常设为 0 或 1)
  • 置信度:C(例如 95% 或 99%)

则需要传输的总比特数 N 满足:

N ≥ -ln(1 - C) / B₀  (当允许 0 个误码时)

例如:要验证 BER < 1e-12 且置信度 95%:

N ≥ -ln(0.05) / 1e-12 ≈ 2.996 × 10¹² bits

如果链路速率是 10 Gbps,则所需测试时间:

T = N / 10e9 ≈ 299.6 秒 ≈ 5 分钟

但别忘了:这是完全零误码的假设。如果测试期间出现一个错误,就需要重新评估。

个人经验:我一般按 10 倍于理论最小值来预留测试时间。为什么?因为测试设备自身的时钟恢复、同步建立、码型同步都会消耗前面几百万比特,这些比特不能当成有效样本。另外设备温度波动也会在测试过程中引入瞬态误码,留够余量才能拿到真实结果。

下面是常见门限与测试时间的参考速查表(假设链路速率 10 Gbps,零误码,95% 置信度):

BER 门限 所需比特数 测试时间(10 Gbps) 建议实际预留
1e-9 3.0e9 0.3 s 3 s
1e-10 3.0e10 3 s 30 s
1e-11 3.0e11 30 s 5 min
1e-12 3.0e12 5 min 1 hour
1e-13 3.0e13 50 min 8 hour (过夜测)
1e-14 3.0e14 8.3 hour 24 hour

看到没?BER 门限每提高一个数量级,时间就扩大 10 倍。所以很多人喊 1e-15,实际操作基本不可能用满统计样本——只能靠外推和经验公式。这一点后面测试方法章节会细讲。

2.4 误码率测试的整体逻辑

我把上面这些关系画成一张流程图,帮你脑子里先搭个框架:

误码率测试决策流程 ① 确定 BER 门限与置信度 ② 选择测试码型:PRBS7/15/23/31 或其他专用码型(SSPR / 自定义) ③ 计算所需比特数 N N ≥ -ln(1-C) / B₀ ,再换算时长 ④ 发送码流,接收端同步 是否有误码? 记录误码数 通过(Pass) ⑤ 根据误码数重新评估:继续测 / 调整门限 / 判定失败

画完这个流程,回头看你就会发现:误码率测试不是单纯"跑一下",而是一个从目标设定到结果回判的闭环。码型选错、时间不够、置信度没算,都会导致误判。

2.5 工程中的常见"坑"

  • 以为 PRBS7 就够了:低阶 PRBS 游程短,不足以暴露信道低频截止效应。我专门有一次在 25G 背板上被 PRBS7 "骗"了一周,换了 PRBS31 才发现链路中有一个 100nF 耦合电容异常。
  • 测试时间不足还宣称达标:用几分钟测出 < 1e-12 看上去很美,但置信度可能只有 50%。行业惯例是至少测够理论值的 2~3 倍。
  • 忽略同步时间:每次开始测试时,仪表和 DUT 之间需要比特同步和码型同步。这段时间产生的比特数要丢弃,不要计入有效统计。

小结一下:

  • BER = 错误比特数 / 总比特数,是个统计估计值。
  • 码型选 PRBS23 或 PRBS31 作为起点,高速链路务必用 PRBS31。
  • 测试时间 = f(BER 门限, 置信度)。95% 置信度下,时间 ≈ -ln(0.05) / (速率 × BER 门限)。
  • 实际测试要加余量,并且留意同步阶段。

这一套搞懂后,接下来的章节我们才敢放心地动手拆仪表、搭链路。你心里有了这些底,看到屏幕上报出来的 BER 数值时,就知道它到底可信不可信了。