误码率(BER)定义:数学定义、与信噪比的关系、测试标准

各位工程师朋友,咱们今天聊聊误码率。这玩意儿,说白了就是衡量SerDes链路质量最直接的指标。我做了这么多年SerDes调试,每次板子调不通,第一件事就是看误码率。它就像人的体温,高了低了都说明有问题。

一、误码率的数学定义

误码率的数学定义其实很简单。你发了一堆bit,收回来发现有些错了。错的bit数除以总bit数,就是误码率。

公式: BER = (错误比特数) / (总传输比特数)

举个例子。你发了10^12个bit,发现有1个错了。那BER就是10^-12。嗯,这个数字在SerDes领域很常见。

这里有个坑,我提醒一下。误码率是个统计量,不是精确值。你测10秒和测10小时,结果可能不一样。为什么?因为误码是随机事件,跟噪声分布有关。我个人习惯,测试时间至少要保证捕获到10个以上的错误,这样统计才有意义。

我曾经遇到一个项目,客户说他们的链路BER是10^-15。我一看测试时间,才跑了30秒。30秒能测出10^-15?开玩笑呢。按25Gbps的速率算,30秒才测了7.5×10^11个bit,一个错都没抓到,你怎么知道是10^-15?

经验法则: 要验证BER=10^-12,至少需要传输10^13个bit,且不能有错误。按25Gbps算,大概需要400秒。想测10^-15?那得跑好几天。

二、误码率与信噪比的关系

误码率和信噪比(SNR)的关系,是SerDes设计的核心。你想想看,信号在信道里传,噪声会叠加。噪声大了,信号就容易被误判。0变成1,1变成0。

对于不归零码(NRZ),理论误码率公式是:

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

其中erfc是互补误差函数。这个公式看着复杂,但本质就一句话:SNR越高,BER越低。

我画了一张图,展示BER和SNR的关系:

BER与SNR关系曲线(NRZ调制) SNR (dB) 6 8 10 12 14 16 10⁻³ 10⁻⁶ 10⁻⁹ 10⁻¹² 10⁻¹⁵ BER=10⁻⁹ @ SNR≈10.5dB BER=10⁻¹² @ SNR≈12.5dB 实际系统工作区 NRZ理论曲线

从图上能看出来,SNR从10dB提升到12dB,BER从10^-9降到了10^-12。差了三个数量级!这就是为什么SerDes设计里,大家都在拼命优化信噪比。

我记得有一次调试一个28Gbps的链路,眼图看着还行,但BER就是下不去。后来发现是电源噪声耦合进来了,SNR差了2个dB。把电源滤波做好之后,BER直接从10^-9降到了10^-12。所以说,眼图好不一定BER就好,但BER好眼图一定好。

三、误码率测试标准

不同应用场景对BER的要求不一样。我整理了一个表格,大家看看:

应用场景 典型速率 BER要求 说明
数据中心内部 25Gbps - 112Gbps 10⁻¹² IEEE 802.3标准
电信骨干网 100Gbps - 400Gbps 10⁻¹⁵ ITU-T标准,带FEC
消费电子(USB/HDMI) 5Gbps - 48Gbps 10⁻⁹ 带重传机制
汽车以太网 1Gbps - 10Gbps 10⁻¹⁰ 考虑EMC环境
航天/军工 1Gbps - 10Gbps 10⁻¹⁵ 冗余设计

这里有个关键点,我特别想强调。很多工程师看到BER要求是10^-12,就觉得测到10^-12就够了。其实不是。你测到10^-12,只能说明链路在测试条件下达到了这个水平。实际工作中温度、电压、老化都会影响。

注意: 测试BER时,一定要留余量。比如要求10⁻¹²,你至少要测到10⁻¹³甚至10⁻¹⁴。我一般会要求比规格好一个数量级。这样量产时才有信心。

另外,测试码型也很重要。PRBS7、PRBS15、PRBS31,不同码型测出来的BER不一样。PRBS31更接近真实数据,但测试时间更长。PRBS7跑得快,但可能掩盖一些低频问题。

我曾经吃过这个亏。一个项目用PRBS7测,BER很好。结果一上真实业务数据,BER就飙上来了。后来发现是低频抖动的问题,PRBS7的低频分量不够,没测出来。从那以后,我习惯先用PRBS7快速排查,再用PRBS31做最终验证。

四、FEC对BER的影响

说到BER,不能不提FEC(前向纠错)。FEC能在一定程度上容忍误码。比如RS-FEC,可以纠正一定数量的错误符号。

FEC前后的BER关系是这样的:

BER_after_FEC ≈ (BER_before)^(t+1) × C

其中t是FEC的纠错能力,C是常数。你看,如果FEC能纠8个错误,那BER_after ≈ (BER_before)^9。效果非常显著。

举个例子。链路原始BER是10^-6,用了RS(544,514) FEC之后,BER可以降到10^-15以下。这就是为什么现在高速SerDes都离不开FEC。

实战建议: 测试时一定要区分FEC前和FEC后的BER。FEC前的BER反映链路质量,FEC后的BER才是最终用户体验。我一般两个都测,FEC前BER超过10⁻⁴就要警惕了。

好了,关于误码率的定义、与SNR的关系、测试标准,就聊这么多。这些是SerDes调试的基础,也是判断链路好坏的标尺。下次你拿到一块板子,先别急着调均衡,看看BER是多少,心里就有数了。

可可精品资料库