3. 误码测试方法:PRBS模式与误码仪工作原理

做高速链路这么多年,我跟误码仪打交道的时间,比跟我老婆说话的时间都多。你问我为什么?因为一条链路好不好,不是看眼图多漂亮,也不是看抖动多少皮秒——最终要问一个数字:误码率。

这一章我们就来聊聊误码测试的核心——PRBS模式和误码仪到底怎么工作的。我尽量把那些“老师傅才懂”的细节抖出来。

3.1 为什么不用真实数据,非得用PRBS?

你可能想过一个问题:测试误码嘛,我直接用真实业务数据跑不就好了?真实数据最贴近实际。但现实是——你没法保证真实数据里有足够的“压力”。

举个例子。一条长串连续的0,接收端CDR(时钟数据恢复)很容易失锁。等你来一个跳变沿,CDR已经偏到姥姥家去了。真实数据往往有冗余、有编码,本来就躲着“长连0”走。你测出来的误码率可能很好,但实际生产环境下,某个特定码型一来,瞬间崩盘。

PRBS(Pseudo-Random Binary Sequence,伪随机二进制序列)就是为解决这个问题生的。它“看起来像随机”,实际上完全可重复——你知道下一个比特是什么。所以你可以收回来比对,逐比特判决:对了还是错了?

关键认识: PRBS不是真随机,而是“伪随机”。生成多项式确定,序列就确定。没有歧义,才能做误码判决。

我前几年调一个25Gbps的背板链路,眼图睁开度明明很好,结果PRBS31跑一夜,误码率一直在1E-12晃荡,死活不下去。后来发现是某个PCB过孔的阻抗不连续,只在特定跳变模式下激发谐振。换了PRBS7测不出来,换了PRBS31就现原形。所以你看——选择什么阶数的PRBS,本身就是一门学问。

3.2 PRBS的阶数与特性

PRBS后面跟的数字,比如PRBS7、PRBS15、PRBS31,代表生成多项式的阶数。阶数越高,序列越长,低频分量越丰富,对链路的压力越大。

PRBS阶数 序列长度(比特) 最长连1/连0 典型应用场景
PRBS7 127 (2⁷−1) 7 短距离、低速链路(≤1Gbps)
PRBS9 511 9 PCIe Gen1/2、SATA
PRBS15 32,767 15 10Gbps以下常见测试
PRBS23 8,388,607 23 高速背板、光模块
PRBS31 2,147,483,647 (约21亿) 31 PCIe Gen4/5、100G/400G光通信

我的经验: 选PRBS阶数时,记得看一眼你链路的最差运行长度(Run Length)。比如你链路里经过8B/10B编码,最大连0是5个,那PRBS7就够了;如果是64B/66B编码,最大运行长度66比特,那起码要PRBS15起步。选高了,测试时间长;选低了,测不出深层的低频抖动问题。

PRBS的最大连1/连0长度等于阶数,这一点容易记:PRBS7最长连7个1或7个0;PRBS31最长连31个。为什么会这样?因为生成多项式里,反馈抽头保证了状态不会卡在全0或全1(全0寄生状态会死锁,我们后面说)。

3.3 误码仪工作原理——从发送到判决

误码仪其实就三个部分:码型发生器、接收判决器、同步比对逻辑。我画个图你立刻明白。

误码仪工作原理框图 码型发生器 发送驱动器 被测链路 接收采样器 CDR + 时钟生成 同步 + 比对 误码计数 信号从链路返回 已知参考序列(本地生成) 核心逻辑:发射端本地生成PRBS序列 → 链路传输 → 接收端采样恢复 → 与本地同步生成的PRBS逐比特比对 → 统计错误

误码仪的工作原理说白了就是:我发我知道的,你收你猜的,回来一对账,不一样就是误码。

具体怎么干的?我分几步说:

  1. 初始化同步: 接收端不知道发射端此刻发到了PRBS序列的哪个位置。所以误码仪先做“滑动相关”——让本地序列滑动,跟接收到的比特流做XOR,找到一个匹配度最高的相位。一旦锁定,两边就对齐了。
  2. 高速采样: 接收采样器在CDR恢复的时钟沿上抓取数据。每个比特都被量化成1或0。注意,这里采样器本身也有误差——采样时刻偏了,码间干扰(ISI)就会把1判成0。所以误码仪需要精准的时钟相位调整。
  3. 逐比特比对: 同步之后,接收到的比特流和本地发生器产出的比特流逐位XOR。每一比特不一致,计数器加1。你设置的测试时间到了,或者计到足够多的误码,就输出BER = 误码数 / 总比特数。

注意一个坑: 误码仪在对齐阶段可能发生“假同步”。特别是链路有抖动或频偏时,本地PRBS相位可能错锁到别的对齐位置。结果每个比特都是错的,误码率显示0.5,你会以为链路挂了,实际只是同步失败。怎么防?我习惯的做法是:先发几百个特定的同步码(比如K28.5),锁定之后切换回PRBS。高级误码仪有“同步校验”逻辑,会连续验证N个比特都正确才真正进入测试。

3.4 误码仪测试模式:环路 vs 端到端

实际工程里,测试拓扑通常分两种。我把两者对比一下:

模式 连接方式 优点 缺点 适用场景
环路模式(Loopback) 误码仪TX发→链路→经DUT回环→回到误码仪RX 只用一台误码仪;自动同步简单 回环路径可能引入额外损耗;无法区分上下行 板级调测、生产测试
端到端模式(End-to-End) A端误码仪TX → 链路 → B端误码仪RX 真实模拟全双工;可分别测TX/RX 需要两台误码仪同步时钟;成本高 系统验收、背靠背测试

环路模式我经常用在研发阶段——小批量验证,够快。但做合规认证(比如PCIe一致性测试),必须端到端,因为回环会把发送端串扰引入接收端,导致误码率偏悲观。

3.5 误码率怎么算,测多久?

很多人以为直接用“误码数/总比特数”就行。对,公式没错。但真正问题是:测多久才能相信结果?

比如你要测BER低于1E-12,信噪比只有95%。按统计理论,你需要至少观察到3个误码才能以95%置信度认为BER不超过1E-12。3个误码 ÷ 1E-12 = 3E12比特。如果是25Gbps速率,需要跑 3E12 / 25E9 = 120秒。这只是理论下限,实际要考虑时钟偏差、温度漂移,我一般至少测15分钟。

我有个习惯:测试时间用公式 T = 10 / (BER_target × 比特率) 来估算。比如25Gbps测1E-12,T=10/(1E-12×25E9)=400秒,约7分钟。跑完没误码,基本稳了。

一句话总结: 误码测试是统计测试。没误码不等于零误码,只是置信度不够。跑够时间,才敢说“满足指标”。

3.6 常见误码仪参数与选型建议

市面上主流误码仪,比如安立MP1900A、是德N4904A、泰克BSX系列,看几个核心参数:

  • 比特率范围: 必须覆盖你的链路速率。注意要支持前向纠错(FEC)场景下的前/后FEC BER测量。
  • 信号幅度/灵敏度: 接收端能正确采样多小的信号?典型灵敏度50mVpp。我遇到过一些劣质光模块输出摆幅只有20mV,普通误码仪根本锁不住,得换高频探头。
  • 码型支持: 除了PRBS,还要支持自定义码型、抖动注入(SJ/RJ/SSC等)。
  • 时钟恢复能力: 内置CDR比外接时钟恢复灵活得多,特别是有频偏时。

选型时我一般按“够用偏上一档”的原则。你测10Gbps,就买支持14Gbps的机器,留点余量给下一代项目。不然老板明年让你测25G,你又得申请新设备——麻烦。

3.7 实践中容易踩的坑

最后分享几条避坑指南,都是我好几年里真金白银换回来的。

坑1:时钟未锁定就计数。 误码仪显示“Locked”不代表真正锁好了。我习惯先切到“Sync Monitor”模式看对齐误差,如果BER在1E-3量级波动,基本是没锁住。

坑2:线缆损耗导致幅度不够。 误码仪输出的信号经过电缆到达DUT时,损耗会把摆幅压到接收门限以下。我之前用一根2米的SMA电缆,2GHz以上损耗2dB多,根本没意识到。后来加了个放大器才正常。所以测试前一定要校准通道损耗。

坑3:全0寄生状态——PRBS生成器死锁。 很多误码仪的PRBS生成器用线性反馈移位寄存器(LFSR)实现。如果寄存器初始状态为全0,它就会永远输出0。误码仪本身有防死锁电路,但某些老型号没有。我吃过一次亏——跑了一夜误码为零,满心欢喜,结果发现是发端全0,根本没PRBS出来。从那以后,我每次跑长测前,先看波形有没有翻转,确认PRBS真的在动。

本章小结

PRBS模式是误码测试的基石。你理解了PRBS的阶数怎么选、误码仪怎么收发比对、测试时间怎么算,基本就掌握了80%的高速链路误码测试方法。剩下的20%在工程细节里——同轴电缆、连接器、温度、供电噪声……那些东西,等你亲自测几个项目,自然就记住了。