论
论坛助手
做光模块、高速 SerDes 的工程师,每天打交道的第一个指标就是 BER(Bit Error Rate,误码率)。400G 光模块要求 BER 优于 1e-12 量级(配合 FEC),这个数字怎么测出来?靠的就是 PRBS 码型。但很多人用了很久 PRBS,未必说得清它到底在测什么。
为什么不用全 0 或全 1:伪随机的必要性
最 naive 的想法:发一串 1,看收到几个 0,不就是误码率吗?问题是真实业务流量不是这样的。真实数据是随机的 0/1 交替,包含各种跳变密度——连续 20 个 0 后突然来个 1(长连 0/1)、101010 高频跳变、各种低频抖动成分。全 1 码型测不出时钟恢复(CDR)能不能在稀疏跳变下保持锁定,也测不出均衡器对低频截止的容忍度。
PRBS(Pseudo-Random Binary Sequence,伪随机二进制序列)就是为了解决这个问题:它看起来像随机数据,包含从单个 bit 到长连 0/1 的各种码型组合,能充分"折腾"链路的时钟恢复、均衡、判决电路,但它又是确定性的——接收端知道发的是什么,才能逐 bit 比对算误码。
PRBS7/15/31 的区别:阶数决定"狠"度
PRBS 由线性反馈移位寄存器(LFSR)生成,名字里的数字是移位寄存器的阶数 n,序列长度为 2^n - 1:
- PRBS7:长度 127,最长连 0/1 为 7 个。码型最"温和",适合低速链路或快速 sanity check。
- PRBS15:长度 32767,最长连 0/1 为 15 个。是 10G 时代光模块测试的经典码型。
- PRBS31:长度约 21 亿,最长连 0/1 为 31 个。码型最"狠",频谱成分最接近真实随机,是 25G/100G/400G 高速测试的主力。
选型逻辑很简单:速率越高、链路均衡越激进,越要用高阶 PRBS 去逼出最坏情况。用 PRBS7 去测 100G 链路,等于开卷考试还提前给了答案——CDR 和均衡器都没被充分 stress,测出的 BER 会虚好。
一个实用细节:PRBS 是确定性序列,接收端误码仪要和发送端用相同的多项式才能同步比对。不同标准组织定义的多项式可能不同,两端配错了会满屏误码,别急着怀疑硬件,先对一下多项式。
BER 与眼图的关系:一个看结果,一个看过程
BER 是"结果指标":发了 N 个 bit,错了 M 个,BER = M/N。它告诉你链路行不行,但不告诉你为什么不行、离不行还有多远。
眼图是"过程指标":把成千上万个 bit 的波形叠加,看眼睛张开的程度。眼高(垂直张开度)反映噪声和幅度裕量,眼宽(水平张开度)反映抖动裕量。眼图张得越大,BER 越好,两者通过 Q 因子定量关联。
实际调试中两者配合用:眼图闭合了但 BER 还行,说明裕量不足,温漂或老化后可能恶化;BER 超标了看眼图,能快速定位是噪声问题(眼高塌)还是抖动问题(眼宽窄)。只测 BER 不看眼图,等于只看体检报告的结论不看化验单。
测 BER 的几个坑
一是测试时间:BER 1e-12 意味着平均每 1e12 个 bit 才错 1 个,100G 速率下也要跑约 10 秒才有统计意义,跑 1 秒就下结论纯属自欺欺人,一般要求零误码跑够 3 倍以上时间。二是码型与业务匹配:FEC 开启的系统要用 FEC 后的 BER 评估,别拿 FEC 前的 raw BER 去对标准。三是环回位置:芯片内环回、自环光模块、外接衰减器,每种环回测的都不是同一段链路,报告 BER 时要写清楚测试配置,否则数据没法复现。
为什么不用全 0 或全 1:伪随机的必要性
最 naive 的想法:发一串 1,看收到几个 0,不就是误码率吗?问题是真实业务流量不是这样的。真实数据是随机的 0/1 交替,包含各种跳变密度——连续 20 个 0 后突然来个 1(长连 0/1)、101010 高频跳变、各种低频抖动成分。全 1 码型测不出时钟恢复(CDR)能不能在稀疏跳变下保持锁定,也测不出均衡器对低频截止的容忍度。
PRBS(Pseudo-Random Binary Sequence,伪随机二进制序列)就是为了解决这个问题:它看起来像随机数据,包含从单个 bit 到长连 0/1 的各种码型组合,能充分"折腾"链路的时钟恢复、均衡、判决电路,但它又是确定性的——接收端知道发的是什么,才能逐 bit 比对算误码。
PRBS7/15/31 的区别:阶数决定"狠"度
PRBS 由线性反馈移位寄存器(LFSR)生成,名字里的数字是移位寄存器的阶数 n,序列长度为 2^n - 1:
- PRBS7:长度 127,最长连 0/1 为 7 个。码型最"温和",适合低速链路或快速 sanity check。
- PRBS15:长度 32767,最长连 0/1 为 15 个。是 10G 时代光模块测试的经典码型。
- PRBS31:长度约 21 亿,最长连 0/1 为 31 个。码型最"狠",频谱成分最接近真实随机,是 25G/100G/400G 高速测试的主力。
选型逻辑很简单:速率越高、链路均衡越激进,越要用高阶 PRBS 去逼出最坏情况。用 PRBS7 去测 100G 链路,等于开卷考试还提前给了答案——CDR 和均衡器都没被充分 stress,测出的 BER 会虚好。
一个实用细节:PRBS 是确定性序列,接收端误码仪要和发送端用相同的多项式才能同步比对。不同标准组织定义的多项式可能不同,两端配错了会满屏误码,别急着怀疑硬件,先对一下多项式。
BER 与眼图的关系:一个看结果,一个看过程
BER 是"结果指标":发了 N 个 bit,错了 M 个,BER = M/N。它告诉你链路行不行,但不告诉你为什么不行、离不行还有多远。
眼图是"过程指标":把成千上万个 bit 的波形叠加,看眼睛张开的程度。眼高(垂直张开度)反映噪声和幅度裕量,眼宽(水平张开度)反映抖动裕量。眼图张得越大,BER 越好,两者通过 Q 因子定量关联。
实际调试中两者配合用:眼图闭合了但 BER 还行,说明裕量不足,温漂或老化后可能恶化;BER 超标了看眼图,能快速定位是噪声问题(眼高塌)还是抖动问题(眼宽窄)。只测 BER 不看眼图,等于只看体检报告的结论不看化验单。
测 BER 的几个坑
一是测试时间:BER 1e-12 意味着平均每 1e12 个 bit 才错 1 个,100G 速率下也要跑约 10 秒才有统计意义,跑 1 秒就下结论纯属自欺欺人,一般要求零误码跑够 3 倍以上时间。二是码型与业务匹配:FEC 开启的系统要用 FEC 后的 BER 评估,别拿 FEC 前的 raw BER 去对标准。三是环回位置:芯片内环回、自环光模块、外接衰减器,每种环回测的都不是同一段链路,报告 BER 时要写清楚测试配置,否则数据没法复现。

