误码率测试原理:比特误码率、块误码率、测试信号模式
讲完误码率测试的整体框架,咱们得钻进去看看它到底怎么算的。说实话,我刚入行那会儿,以为误码率就是“出错的比特数除以总比特数”,简单得很。后来被项目虐过几次才明白,这里面的门道比你想象得多。
比特误码率(BER)——最底层的“错”
比特误码率,英文叫 Bit Error Rate,缩写 BER。定义很直白:发送的总比特数里,有多少个比特收错了。
BER = 错误比特数 / 发送总比特数
通常用科学计数法表示,比如 1E-12,意思是每 10¹² 个比特里错 1 个。
你可能会问:为什么不直接数错多少?因为实际链路里,总比特数太大,我们只能抽样测。我在一个 25Gbps 的项目里,想测到 1E-12 的置信度,得跑好几分钟。时间就是成本啊。
注意一点:BER 测试必须知道发送的是什么。所以我们要用 已知的测试码型,在接收端跟预期对比。这就是后面 PRBS 登场的原因。
块误码率(BLER)——更贴近业务的视角
有些场景不关心单个比特,比如数据传输是按“块”来的(以太网帧、USB 包)。这时候我们用块误码率(BLER)。
BLER = 错误块数 / 总发送块数
一个块里哪怕只错 1 个比特,整个块就算错。
我记得有个客户抱怨连接器误码率“合格”,但业务总丢包。查了半天发现,他们测的是 BER,可实际数据包长度 1500 字节。BER 1E-12 换算过来,每 10¹² 个比特错一个,但一包 12000 比特,算下来每个包出错的概率反而不可忽略。说白了,BLER 更能反映真实体验。
| 指标 | 粒度 | 典型应用场景 | 测试耗时(1E-12 置信度) |
|---|---|---|---|
| BER | 比特 | 高速串行链路、光模块 | 分钟级 |
| BLER | 数据块 | USB、以太网、PCIe | 秒级(块数少) |
测试信号模式——为什么非要用 PRBS?
你可能觉得,发个全 0 或者全 1 的码型多省事。嗯,我以前也这么想过。后来发现,实际数据根本不是稳定的。全 0 会让接收端的时钟恢复电路因为没有跳变而失锁,测试结果反而“太好”——因为根本收不到数据,也就统计不到错误。
伪随机二进制序列(PRBS) 就是为了模拟真实数据的随机性而设计的。它看起来随机,但其实是确定的,接收端能复现,从而逐比特对比。
常用 PRBS 类型:
- PRBS7(2⁷-1 = 127 位重复周期)——用于低速、短距,比如 1Gbps 以下。最大连 0 或连 1 长度仅 6 位。
- PRBS15(2¹⁵-1 = 32767 位)——10Gbps 以下常见,连 0 长度可达 15 位。
- PRBS31(2³¹-1,约 21 亿位)——25Gbps 以上标准,最长连 0 可达 31 位。压力大,能暴露通道劣化。
我曾经在 28Gbps 连接器测试时,用 PRBS7 全过,换成 PRBS31 就报错。原因很简单:PRBS31 的长连 0 让接收端 CDR(时钟数据恢复)追不上相位漂移。你想想看,连 0 时没有跳变,锁相环只能靠惯性。通道损耗越大,这个惯性漂移越明显。
注意: PRBS 的阶数越高,测试时间越长。PRBS31 循环一次要 21 亿位,但测试仪器通常只跑一小段。不过要测到 1E-15,仪器会内部重复发送 PRBS31,你需要确保测试时长覆盖足够的周期。
除了 PRBS,还有几种常见模式:
- K28.5——8b/10b 编码的逗号序列,用于同步。
- CRPAT(Compliance Pattern)——用于 Ethernet 合规测试,模拟最坏情况。
- 用户自定义序列——比如你想复现某个设备特定的干扰场景。
误码率测试的完整流程
说了这么多,其实步骤不复杂:
- 选码型:根据速率和标准选 PRBS7、PRBS15 或 PRBS31。我建议先跑低阶的确认链路通。
- 发送端:码型发生器输出到待测连接器。
- 接收端:误码仪接收,内部用相同种子生成本地 PRBS,逐比特比较。
- 统计:累计错误比特数,除以总比特数,得到 BER。
- 判断:如果 BER 低于阈值,通常认为连接器符合要求。
注意:有些仪器可以直接输出 BLER,你只需要设定“块长度”即可。比如以太网帧长 1518 字节,仪器会按这个长度切分统计。
// 伪代码示意:误码仪内部逻辑
expected = prbs_generate(seed, length);
for each bit:
if received_bit != expected_bit:
error_count++;
bit_total++;
BER = error_count / bit_total;
别忘了“置信度”
一个常见误区:测 10 秒没有错误,就认为 BER 是 0。错!你可能只是没碰到错误而已。统计学上,你需要知道 置信区间。比如要宣称 BER < 1E-12,在 95% 置信度下,至少需要测到 3E12 个比特没有错误(约 300 秒 @10Gbps)。
我一般用 无错误时间 来估算:想测到 1E-12,至少跑 10 分钟没错误才敢下结论。别偷懒,尤其连接器是物理层,可靠性要求高。
SVG:误码率测试原理知识结构图
下面这张图把核心概念串起来,方便你对照理解。
从这张图你能看到,误码率测试是一个闭环:选好码型 → 发出去 → 收回来对比 → 算出 BER/BLER → 还要考虑测试时长够不够。不要只看数字,背后的统计意义更重要。
我的经验: 连接器选型时,建议 PRBS31 + 1E-12 门槛 + 至少跑 1 分钟。如果时间允许,跑 10 分钟。省下的时间将来可能花在排查上,不值当。