误码率测试原理:比特误码率、块误码率、测试信号模式

讲完误码率测试的整体框架,咱们得钻进去看看它到底怎么算的。说实话,我刚入行那会儿,以为误码率就是“出错的比特数除以总比特数”,简单得很。后来被项目虐过几次才明白,这里面的门道比你想象得多。

比特误码率(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 合规测试,模拟最坏情况。
  • 用户自定义序列——比如你想复现某个设备特定的干扰场景。

误码率测试的完整流程

说了这么多,其实步骤不复杂:

  1. 选码型:根据速率和标准选 PRBS7、PRBS15 或 PRBS31。我建议先跑低阶的确认链路通。
  2. 发送端:码型发生器输出到待测连接器。
  3. 接收端:误码仪接收,内部用相同种子生成本地 PRBS,逐比特比较。
  4. 统计:累计错误比特数,除以总比特数,得到 BER。
  5. 判断:如果 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:误码率测试原理知识结构图

下面这张图把核心概念串起来,方便你对照理解。

误码率测试原理知识结构 误码率测试 测试信号模式 PRBS7 PRBS15 PRBS31 误码率指标 BER BLER 置信度 & 测试时长 核心逻辑:发送已知码型 → 接收对比 → 统计错误 → 计算 BER/BLER PRBS 模拟真实数据,不同阶数对应不同压力;BER 和 BLER 分别适用于不同观测粒度

从这张图你能看到,误码率测试是一个闭环:选好码型 → 发出去 → 收回来对比 → 算出 BER/BLER → 还要考虑测试时长够不够。不要只看数字,背后的统计意义更重要。

我的经验: 连接器选型时,建议 PRBS31 + 1E-12 门槛 + 至少跑 1 分钟。如果时间允许,跑 10 分钟。省下的时间将来可能花在排查上,不值当。