误码率(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的关系:
从图上能看出来,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是多少,心里就有数了。
可可精品资料库