4. 误码率(BER)基础

各位工程师朋友,咱们今天聊点基础但不能含糊的东西——误码率。

很多人觉得BER就是数数错了多少个bit,然后除一下完事。我也曾经这么想。直到在一次UCIe链路调试中,一块板子跑1000 Gb数据只错了1个bit,按公式算BER刚好10⁻¹²,看起来完美。但那个bit偏偏丢在了关键的控制序列里,直接导致整个链路重启了三次。嗯,从那以后我明白了,只看数字是不够的,你得理解BER背后那些细节。

4.1 误码率的定义

误码率(Bit Error Rate, BER),定义很简单:

BER = (接收到的错误bit数) / (发送的总bit数)

举个例子:你发了10¹²个bit,只有1个bit错了,BER就是10⁻¹²。单看公式确实简单。但我个人习惯在做工程测算时,把公式写成带时间维度的样子:

BER = 错误bit数 / (数据速率 × 测试时间)

为什么这么写?因为你做一致性测试或者眼图扫描时,总时间是有上限的。知道速率,就能反推出要测多少秒才能验证目标BER。

我建议所有做PHY测试的同事,随身记住一个比例关系:测BER=10⁻¹²,至少需要发送10¹²个bit;测BER=10⁻¹⁵,至少需要10¹⁵个bit。速率96 GT/s时,那就是至少6分钟——你不算这个就去进场测,很容易白干一天。

4.2 测量单位与常用量级

BER本身是无量纲比例。但它太小了,所以我们用科学记数法。下面是UCIe场景下最常用的几个量级:

BER量级 典型场景 工程含义
10⁻⁶ ~ 10⁻⁹ 无FEC的原始链路 链路质量较差,FEC必须介入
10⁻¹² UCIe PCIe模式典型值 有FEC时,大部分链路的目标
10⁻¹⁵ UCIe RAW模式无FEC 信号质量极好,但实现代价极高
10⁻¹⁸ 内部BIST精度极限 实验室级别验证,量产几乎不追求

你可以这么理解:10⁻¹²是一个典型的“头发丝”分界线。低于它,FEC能轻松兜住;高于它,你就要开始怀疑信号完整性设计是不是出问题了。

4.3 BER与信噪比的关系

BER和信噪比(SNR)之间的关系,几乎是所有高速链路设计的“第一性原理”。

对于NRZ调制(UCIe目前主要用的),简化理论关系是:

BER ≈ 0.5 × erfc(√(SNR / 2))

其中erfc是互补误差函数。这个公式看着头疼?没关系,我用实际经验给你翻译一下:

  • SNR每提升1 dB,BER大约可以下降一个量级——具体要看链路噪声底色。
  • 当你发现BER从10⁻¹²跳到10⁻⁹,别急着换芯片,先去查一下接收端眼图的高度是不是降了20 mV。
  • SNR在6 dB以下时,不管你什么FEC都会很吃力。我曾经在某个早期UCIe样片上看到BER跑到10⁻⁴,查到最后是VCO的相位噪声超标了6 dB。

注意:上面的公式只适用于理想加性高斯白噪声(AWGN)信道。UCIe链路里,串扰、反射、电源纹波造成的误码,并不严格服从这个公式。你的眼图可能看起来还很“胖”,但BER已经爆炸了——这类情况我遇过不下三次,后来养成了“看眼图之前,先看PRBS的BER”的习惯。

4.4 误码类型

只懂一个BER总数是远远不够的。你得知道背后的误码长什么样。这三种我在调试中遇到最多:

4.4.1 单bit误码

单个bit发生反转。通常由加性噪声或很弱的串扰随机引发。特点:

  • 误码之间独立,没有相关性
  • UCIe的RS-FEC对这种误码修复能力最强(代码里的t=15就是为这个设计的)
  • 要是你发现FEC纠错计数器里单bit误码一直往上涨,链路可能要降速了

4.4.2 多bit误码

同一个码字或同一个数据包内出现多个bit错误。原因通常是突发噪声或短时间内的信号塌陷。特点:

  • 如果多bit数超出FEC纠错能力(比如RS里超过15个符号错),FEC会报Uncorrectable
  • 我调试过一个案例:PCIe链路报Uncorrectable,扫了四版PCB没发现问题。最后用实时示波器抓到——电源模块的纹波在HBM训练期间产生了800 ps的塌陷,直接带乱了12个bit。多bit往往不是“多个独立噪声”,而是“一个事件塌了一片”

4.4.3 突发误码

连续多个bit甚至多个符号连续出错。特征更明显:

  • 典型成因:ESD事件、电源瞬态跌落、时钟抖动突变、通道反射引入的码间干扰
  • UCIe RS-FEC对突发误码有专门的交织保护——这是个非常巧妙的设计,后面我们会专门讲
  • 你在调试软件里看到“Burst Error Detected”标志时,基本可以判定链路物理层有大问题。这时候不要去分析随机噪声,直接查电源域和通道阻抗

一个实用经验:当FEC纠错计数器里单bit和突发同时增加时,我优先去查发送端的TX EQ。因为TX EQ调不好,既会引入码间干扰(导致突发),又会在高频段放大噪声(导致单bit)。这个现象我在两款不同的UCIe控制器上都验证过。

BER 基础知识体系 误码率(BER)定义 测量单位与量级 BER与SNR关系 三种误码类型 AWGN理论公式 实际信道修正 10⁻¹² ~ 10⁻¹⁵ 速算测试时长 单bit、多bit、突发 纠错vs不可纠错 出发调试前,先搞清楚链路在哪个象限 再选择对应的分析手段

这张图把BER基础拆成了三个分支。你拿到一根UCIe链路时,先去问自己三个问题:我的目标BER是多少量级?眼图处的SNR能不能支撑到这个量级?现在看到的误码属于哪一种类型?三个问题都答清楚了,再去开调试流程。