一、PRBS 码型的基本概念与应用场景
做高速信号测试这些年,经常有人问我:“为什么眼图测试非得用 PRBS?随便给一串数据不行吗?” 说实话,我刚入行时也这么想。后来在一次 10Gbps 背板测试中,我用了固定 1010 模式,眼图看着挺漂亮,结果量产时死活调不通。换上 PRBS 之后,才看到真实的信号劣化。嗯,从那以后,我再也不敢轻视这个“伪随机”码型了。
1.1 什么是 PRBS?
PRBS,全称 Pseudo-Random Binary Sequence,翻译过来就是“伪随机二进制序列”。说白了,它看起来像随机数(0和1的分布接近各半),但其实是完全确定的——只要你知道生成它的多项式,就能复现出完全相同的序列。
我习惯用线性反馈移位寄存器(LFSR)来理解它。一个 n 阶的 LFSR,配合一条“本原多项式”,就能产生周期为 \(2^n - 1\) 的序列。注意,这个序列不会全零,所以长度正好少一位。
举个例子,PRBS7 的多项式是 \(x^7 + x^6 + 1\),用 7 个寄存器就能实现。它的周期是 127 个 bit。你可能会问:“才 127 个 bit,有什么用?” 别急,它的跳变密度很丰富,足够暴露很多高速信道的问题了。
| 码型 | 阶数 n | 周期(比特) | 常用本原多项式(示例) | 典型应用 |
|---|---|---|---|---|
| PRBS7 | 7 | 127 | \(x^7 + x^6 + 1\) | 短链路、SATA Gen1、PCIe Gen1 |
| PRBS9 | 9 | 511 | \(x^9 + x^5 + 1\) | 千兆以太网背板 |
| PRBS15 | 15 | 32767 | \(x^{15} + x^{14} + 1\) | PCIe Gen3/4、10G KR |
| PRBS23 | 23 | 8,388,607 | \(x^{23} + x^{18} + 1\) | 25G/100G 光模块 |
| PRBS31 | 31 | 2,147,483,647 | \(x^{31} + x^{28} + 1\) | 400G+ 高性能测试、长尾损耗分析 |
1.2 为什么眼图测试离不开 PRBS?
眼图说白了就是“信号质量的 X 光片”。要拍这张 X 光片,你得让信号经历所有可能的码型转换——010、101、000、111 等等。如果只给一个简单的 101010 模式,你只能看到上升和下降边,但看不到长连 0 之后第一条边的退化,也看不到连续 1 之后过冲有多严重。
PRBS 天然包含所有短模式和长模式。比如 PRBS7 里面就有 7 个连续的 0,也有 7 个连续的 1。你想想看,这种“激烈”的跳变最能逼出信道的缺陷。我在项目中遇到过一回:用固定模式测眼图,张开度很好,换成 PRBS31 之后眼图几乎闭合。原来是因为 DC 耦合电容太小,低频衰减严重——这个坑,用短码型根本看不出来。
1.3 PRBS 的主要应用场景
- 高速串行总线一致性测试:PCIe、SATA、USB、DisplayPort 的电气层测试几乎都指定 PRBS 作为激励信号。
- 光模块 / 光互联测试:100G/400G 光模块眼图测试常用 PRBS31,因为光纤的色散和偏振模色散对低频都很敏感。
- 背板与电缆信号完整性验证:背板上的过孔、连接器、走线损耗——这些东西让长连 0 和长连 1 造成的低频损伤特别明显,PRBS 能帮你抓出来。
- 误码率(BER)测试:BERT 仪器通常内建 PRBS 发生器,通过比较发/收序列的差异直接算出误码率。
- 抖动分离与诊断:利用 PRBS 的确定性,可以分离随机抖动和确定性抖动,这个后面章节会详细讲。
1.4 避坑指南——我踩过的几个雷
- 用 PRBS7 测试 100G 链路——周期太短,低频能量不够,漏掉了 DC 阻断电容的缺陷。后来换成 PRBS31 才看到眼图完全塌陷。
- 忘记同步触发——PRBS 是循环重复的,但示波器的触发必须跟码型对齐,否则眼图会不断重绘,根本看不出稳定图案。我习惯用“pattern lock”或“clock recovery”模式。
- 选错了码型极性——有些测试要求 PRBS 信号是 NRZ,有些是 PAM4,直接套用会让眼图分层错误。记得先看仪器和 DUT 的期望电平。
总结一下:PRBS 不是越贵越好、越大越好。合适才是关键。短码型速度快、周期小、适合排查高频问题;长码型低频丰富,适合暴露信道中的低频缺陷。后面我们会一步步拆解每种 PRBS 序列对眼图的具体影响。