3. 误码率(BER)概念与计算

咱们搞通信的,整天跟比特打交道。什么叫系统好?什么叫系统差?不能光凭感觉说“还行”或者“不行”。得有个数字说话。这个数字,就是误码率,英文叫 Bit Error Rate,简称 BER。

说白了,BER 就是发出去的比特里,有多少个被搞错了。我入行带的第一条高速链路,看着眼图挺漂亮,结果一测 BER 才知道差了好几个数量级。从那以后我就记住了一句话:眼图是面子,BER 是里子。

BER 的定义与公式

定义很简单,不绕弯子:

BER = 接收错误的比特数 / 发送的总比特数

通常写成一个科学计数法,比如 10-6,意思是一百万个比特里错一个。

举个例子:你发了 1 亿个比特(108),收的时候发现有 15 个错了。那 BER 就是:

BER = 15 / 100,000,000 = 1.5 × 10<sup>-7</sup>

这个值越小,说明系统越好。光纤通信通常要求 BER ≤ 10-12,无线通信宽松些,10-3 到 10-6 不等。

个人小建议:不要只看 BER 的数字,还要看测试了多少比特。测 1000 个比特一个没错,BER 算出来是 0,这能代表系统可靠吗?当然不能。样本量太少了,统计意义不大。

BER 测试的关键参数

做 BER 测试前,先搞清楚三个参数:

  • 测试码型(Pattern)——用伪随机序列(PRBS)还是固定码型?我习惯用 PRBS,因为它能模拟真实数据。
  • 测试时长——测多久才够?跟目标 BER 和速率有关。
  • 置信度——你有多大的把握认为测出来的 BER 就是真实值?

下表给出了不同目标 BER 下,至少需要测试多少比特才能达到 95% 置信度(假设实际误码率为目标值):

目标 BER 最少测试比特数(95% 置信度) 示例时长(10 Gbps)
10-9 ≈ 3 × 109 约 0.3 秒
10-12 ≈ 3 × 1012 约 5 分钟
10-15 ≈ 3 × 1015 约 3.5 天

嗯,这里要注意:测 10-15 级别的 BER,往往不是靠纯发数据来测的,而是用外推法或者误码计数增强。我曾经傻乎乎地按公式算时间,结果发现要测一个星期,后来换了方法才搞定。

BER 的统计特性

BER 有没有随机性?有,而且很大。你连续测十次,每次的结果可能都不一样。这符合二项分布或者泊松分布。很多工程师只看一次结果就下结论,这是大忌。

我通常的流程是:

  1. 设置好测试参数(速率、码型、时长)。
  2. 连续测 5~10 轮,记录每次的误码数和 BER。
  3. 计算这些 BER 的平均值和标准差。
  4. 如果标准差很大,说明系统不稳定,需要查源头。

避坑指南:我曾经在一个项目中,第一次测得 BER = 10-10,觉得很好。后来批次验证发现很多板子达不到,再回来细查,发现第一次测试时环境温度低,而且只测了一轮。所以一定要多轮次测试,取最差情况。

BER 测试的常用框图

下面这张图是一个标准的端到端 BER 测试结构:

BER 测试基本结构 码型发生器 发射机 信道 (含噪声/损伤) 接收机 误码检测仪 参考时钟 码型发生器发出已知序列 → 经发射机、信道、接收机 → 误码检测仪比对接收序列与发送序列 → 统计差异数

你看,实际测试时,码型发生器和误码检测仪往往放在同一台仪表里(比如误码仪 BERT)。发射机和接收机是被测设备。信道可能是光纤、电缆、或者无线链路。

计算 BER 时的几个陷阱

  • 陷阱一:同步丢失——误码检测仪必须和发送端保持比特对齐。如果失步了,检测出来的“误码”全是假的。我曾经遇到一台仪表,因为时钟抖动偏大,误码率高达 10-3,实际上链路是好的,重新同步后 BER 直接降到 0。
  • 陷阱二:测试码型不合适——比如 PRBS7 适合短距离低速,PRBS31 适合长距离高速。用错码型,测出来的 BER 可能偏大或者根本没误码。
  • 陷阱三:忽略误码分布——BER 是平均指标,但如果误码是突发性的(burst error),单看 BER 会掩盖系统问题。比如你测了一小时 BER=10-9,但所有误码都集中在 1 秒内,那这 1 秒的实时误码率可能高达 10-3,会直接导致业务中断。

我的习惯:除了看 BER,我还会看误码分布直方图、误块率(BLER)和无误码秒(EFS)。这三个指标加在一起,才能把链路质量看清楚。

从 BER 反推所需测试时间

假设你要求系统的 BER 优于 10-12,你打算测 1013 个比特,如果只发现了一个误码,那 BER 就是 10-13,符合要求。但如果发现 10 个误码呢?BER 就是 10-12,刚好卡线。这种情况下,你其实不能明确说它“合格”,因为随机性可能导致下次测试又变成 11 个误码。

解决方法是引入卡方检验或者直接用泊松分布的累积概率。简单做法是查表,找到给定置信度下可接受的最大误码个数。举例:

测试总比特数 95% 置信度下可接受的最大误码数 对应 BER(约)
1012 0 < 10-12
1013 3 < 3 × 10-13
1014 8 < 8 × 10-14

你想想看,如果你只测 1012 个比特,连一个误码都不能有,才能声称 BER < 10-12 且置信度 95%。这要求对被测系统退避余量要求很高。我个人碰到过客户要求“零误码测试一小时”,对于 25 Gbps 的链路,一小时就是 9 × 1013 个比特,如果出现一个误码都不行——这其实是非常严苛的“零容忍”标准,通常只在核心骨干网使用。

注意:不要用“零误码” 来放松对测试时长的要求。如果你只测了 10 秒就说系统零误码,那下结论还太早。至少要测够 3 × (1 / 目标 BER) / 速率 这么长时间,才有统计意义。

一个完整的 BER 计算示例

假设你测试一条 10 Gbps 的链路,目标 BER 是 10-12。你决定测 5 分钟(300 秒)。

发送总比特数 = 10 Gbps × 300 秒 = 3 × 10<sup>12</sup> 个比特
如果在此过程中发现 0 个误码:
  BER = 0 / 3×10<sup>12</sup> = 0
  但实际 BER 的上限(95% 置信度) ≈ 3 / 3×10<sup>12</sup> = 1×10<sup>-12</sup>
  即:系统 BER 有 95% 的把握 ≤ 10<sup>-12</sup>

如果发现 2 个误码:
  BER = 2 / 3×10<sup>12</sup> ≈ 6.7×10<sup>-13</sup>
  但 95% 置信度下,真实 BER 的上限 ≈ 6 / 3×10<sup>12</sup> = 2×10<sup>-12</sup>
  即:不能确定它优于 10<sup>-12</sup>,需要延长测试或改进链路。

所以你看,只看实测 BER 还不够,得结合置信度算一个上限值,这个上限值才是你对外承诺的“最差情况”。


嗯,关于 BER 的概念和计算,今天就先聊这么多。核心就三条:定义简单但含义深、测试要讲统计、注意陷阱和置信度。下次碰到别人拿着一个“零误码”的报告就来跟你说系统没问题,你知道该怎么怼回去了吧?