3. 测试码型:PRBS(伪随机二进制序列)原理、常用PRBS阶数、码型选择依据
好,咱们来聊聊测试码型。做误码测试,你总得给信道喂点东西吧?喂什么?这就是个大问题。
你想想看,如果我一直发“10101010”这种固定模式,信道稍微有点毛病,可能根本测不出来。为什么?因为这种码型太有规律了,信道能“猜”出下一个比特是什么。真正考验信道能力的,是那种看起来毫无规律、但又可重复的信号。
这就是PRBS登场的原因。
3.1 PRBS原理:看似随机,实则有序
PRBS,全称Pseudo-Random Binary Sequence,伪随机二进制序列。名字里带个“伪”字,说明它不是真随机。
真随机信号,比如热噪声,你没法复现。今天测一次,明天再测一次,结果不一样,那你怎么对比?怎么定位问题?
PRBS就不一样了。它由线性反馈移位寄存器(LFSR)生成。说白了,就是一堆寄存器排成队,再通过异或门把某些位的值反馈回去。
我画个图你就明白了:
这个图展示的是PRBS7的生成结构。7个寄存器,把第7位和第6位的值异或后,反馈到第7位。每次时钟来,数据右移一位,最低位就是输出的码元。
关键点来了:只要初始值固定,生成的序列就完全确定。这就是“伪随机”的含义——看起来随机,实际上可复现。
核心特性:
- 0和1的个数近似相等(只差1个)
- 游程分布符合统计规律
- 自相关特性好,类似白噪声
- 序列长度 = 2ⁿ - 1(n为阶数)
3.2 常用PRBS阶数
实际工程中,不是随便选个阶数就行的。不同场景有不同讲究。我列个表,你一看就明白:
| 阶数 | 生成多项式 | 序列长度 | 典型应用 |
|---|---|---|---|
| PRBS7 | x⁷ + x⁶ + 1 | 127 bits | SDH/SONET、以太网(100M/1G) |
| PRBS15 | x¹⁵ + x¹⁴ + 1 | 32,767 bits | 10G以太网、OTN |
| PRBS23 | x²³ + x¹⁸ + 1 | 8,388,607 bits | SDH高阶、高速背板 |
| PRBS31 | x³¹ + x²⁸ + 1 | 2,147,483,647 bits | 100G/400G以太网、光纤通道 |
我个人习惯,做低速测试时首选PRBS7。为什么?因为它短,127个bit就一个周期,测试速度快,发现问题也快。
但到了高速场景,比如100G光模块,PRBS7就不够看了。为什么?因为它的低频分量不够丰富,没法充分考验信道的低频响应。这时候就得用PRBS31,20多亿个bit才重复一次,低频分量非常丰富。
小技巧: 我在调试10G背板时遇到过一个问题——用PRBS7测,误码率10⁻¹²,完美。换成PRBS31,直接飙到10⁻⁶。后来发现是DC平衡电容的截止频率偏低,低频分量被衰减了。所以,码型选不对,测试等于白费。
3.3 码型选择依据
好,那到底怎么选?我总结了几条原则:
- 看信道带宽:信道带宽越窄,越需要长PRBS来测试低频响应
- 看数据速率:速率越高,码间串扰越严重,建议用高阶PRBS
- 看编码方式:如果系统用了8B/10B或64B/66B编码,PRBS7通常够用
- 看测试时间:PRBS31虽然全面,但测一次要很久,产线上不现实
嗯,这里要注意一点。有些工程师觉得PRBS阶数越高越好,其实不是。我见过有人用PRBS31去测一个低速串口,结果测了半天没跑完一个周期,白白浪费时间。
避坑指南: 我曾经在一个项目中,用PRBS23测试25G背板,误码率一直下不来。折腾了两天,最后发现是测试仪器的PRBS生成器和接收器的初始相位没对齐。所以,用高阶PRBS时,一定要确认同步机制是否可靠。
另外,有些标准会强制规定测试码型。比如IEEE 802.3就明确要求100GBASE-LR4用PRBS31。这时候就别纠结了,按标准来。
最后说一句,PRBS不是万能的。它模拟的是数据信号的统计特性,但真实业务流可能有更复杂的模式。所以,PRBS测试通过只是第一步,最终还得用真实业务流做验证。