第二章节 误码率测试原理
做误码率测试很多人上来就接仪表、跑脚本、等结果。但如果不清楚背后在算什么,测出来的数字很可能只是自我安慰。
我早年跟一个供应商谈方案时,对方拍着胸脯说"我们模块 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 误码率测试的整体逻辑
我把上面这些关系画成一张流程图,帮你脑子里先搭个框架:
画完这个流程,回头看你就会发现:误码率测试不是单纯"跑一下",而是一个从目标设定到结果回判的闭环。码型选错、时间不够、置信度没算,都会导致误判。
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 数值时,就知道它到底可信不可信了。