2、BER基础:误码率定义、BER与信噪比关系、BER测试原理与设备

做高速电路设计,我最常被问的一个问题就是:「这个链路的误码率到底是多少?」

说实在的,BER(Bit Error Ratio,误码率)是所有抖动分析、链路预算的最终落脚点。你前面折腾半天抖动、眼图,最后客户只看一个东西:能不能跑到 10⁻¹²?

我自己的习惯是,在正式开始链路设计之前,先把BER这杆秤立起来。因为整个抖动分配都是围绕BER目标倒推的。所以这一章,咱们就把BER的基础掰开揉碎讲清楚。


2.1 误码率定义

误码率,字面意思就是传错的比特数占总传比特数的比例。

公式很简单:

BER = (接收端错误比特数) / (发送端总比特数)

举个例子:你发了 10¹² 个比特,错了 1 个,BER 就是 10⁻¹²。很多高速串行标准(比如 PCIe Gen6、以太网 400GE)都把目标定在这个量级。

但这里有个误区:BER 不是固定值,它是统计量。你测 1 秒钟可能没发现错误,测 1 小时发现一个。所以 BER 背后隐含了置信度要求。我个人做测试时,会先算好测试时长——要验证 10⁻¹² 的 BER,至少得发送 10¹³ 个比特,才勉强有点统计意义。

小贴士: 很多工程师误把「零错误」等同于 BER=0。不对。BER 只能趋于 0,不可能为 0。你想想看,高斯噪声的尾巴有多长?总会有一个极低概率的错误。

现实中,我们常用「误码率拐点」概念——在高信噪比下,BER 随信噪比提升会快速下降,曲线会变陡。我在调试 25Gbps 链路时就遇到过:调整了一丁点均衡器参数,眼图从闭合到张开,BER 直接从 10⁻⁵ 跳到 10⁻¹² 以下,那个拐点非常锐利。

2.2 BER与信噪比关系

BER 不是凭空来的。它和信号质量直接挂钩,最核心的关系就是信噪比(SNR)。对于最简单的二进制不归零码(NRZ),在加性高斯白噪声信道下,理论公式是:

BER = ½ · erfc( √(SNR/2) )

其中 erfc 是互补误差函数。这个公式是数学推导出来的,但实际工程中我们很少直接用——因为真正的信道还有抖动、ISI、非线性失真。但这个公式给出了一个非常重要的直觉:

SNR(线性倍) 对应的理论 BER(NRZ) 我的评价
12 dB ~10⁻¹⁰ 勉强能用,但不够稳
14 dB ~10⁻¹⁴ 很安全,大部分标准都够
16 dB ~10⁻¹⁸ 一般链路不需要这么高
20 dB ~10⁻²⁶ 这基本是太空通信的级别了

从表格可以看出,SNR 每提升 2 dB,BER 可以改善约 3 个数量级。曲线非常陡。

但要注意——这是纯热噪声的情况。一旦加入抖动,实际 BER 会比这个理论值差很多。我做过一个对比:理想信道下,14 dB SNR 对应 BER 10⁻¹⁴ 左右;但当抖动引入后(比如 0.3 UI 的随机抖动),同样的 SNR 下实测 BER 可能只有 10⁻⁹。所以直接套公式会踩坑。

避坑指南: 我曾经在一个 28Gbps 背板项目中,按照理论公式算了个 13 dB SNR 就能达标,结果样品打出来后死活过不了 10⁻¹²。后来发现是通道损耗+串扰把有效 SNR 降低了将近 3 dB。从那以后,我定 SNR 裕量至少留 3 dB。

2.3 BER测试原理与设备

理论说完了,怎么测呢?BER 测试的核心思路很简单:发一段已知的伪随机码(通常是 PRBS,伪随机二进制序列),然后在接收端对比收到的序列和本地生成的理想序列,统计不一致的比特数。

经典的 BER 测试系统长这样:

BER测试系统框图 PRBS发生器 信道 DUT (待测链路) CDR 误码检测 计数 说明: ① PRBS发生器发送已知伪随机序列(如PRBS7、PRBS31) ② 经过DUT(信道+收发器),CDR恢复时钟并重采样 ③ 误码检测对比接收序列与本地理想序列,统计错误比特数

主要设备包括:

  • 误码分析仪(BERT):集成了PRBS发生器、误码检测器、CDR、时钟源。高端BERT内部自带误码注入、抖动注入等功能。
  • 高速示波器:配合BERT做眼图测试,能快速定位问题。
  • 时钟源:要求极低抖动,通常用锁相环合成器或铷钟。

这里我特别想说一下PRBS序列的选择。我调试10Gbps以上链路时,常用PRBS7(序列长度127)来快速看个大概趋势;但做最终合规测试一定要用PRBS31(2³¹-1),因为它更贴近真实数据流的频域特征。曾经有个合作方只用PRBS7测试,结果到我这边用PRBS31一跑就翻车,原来是低频抖动把长连0/1序列的时钟恢复给拖垮了。

关键测试参数:

  • 比特率(Gbps)
  • PRBS阶数(7/15/31)
  • 测试时长(通常按BER目标+置信度计算,例如95%置信度下测10⁻¹²需至少10¹³ bits)
  • 眼图模板(Mask)
  • 抖动注入量(Sj/Rj)

还有一种常见场景是「压力眼测试」——人为注入特定类型的抖动,模拟系统在极限环境下的表现。我经手过的一个25Gbps背板项目,标准要求用0.2 UI的周期性抖动+0.15 UI的随机抖动做压力测试,BERT正好能完成这个功能。

最后说一句,BER测试的置信度很容易被忽略。你测了1秒没出错,不等于BER就是0。真实工程中,我会按「泊松分布」来估算需要的测试时间。比如要求BER<10⁻¹²且置信度95%,按公式:测试比特数至少 ≈ -ln(1-0.95)/10⁻¹² ≈ 3×10¹² bits。对25Gbps链路来说,大概需要120秒。所以大部份测试仪会自动跑个几分钟。

好了,这一章咱们把BER的定义、与SNR的理论关系、以及测试方法都过了一遍。我个人认为,理解BER的核心就在于「统计」二字——它不是精确值,而是概率描述。后面的抖动预算分配,其实就是在控制这个概率。