PRBS 定义
二进制序列指的是,a0, ..... , aN-1的 N bit 的序列,其中 aj∈{0,1},j=0, 1, ..., N-1。
一个二进制序列中,包含m=∑aj个 1, 以及N-M个 0。
如果一个二进制序列的自相关函数
只有两个值
且
那么,将这个二进制序列称为伪随机二进制序列pseudo-random binary sequence (PRBS)。c 称作 PRBS 的占空比(duty cycle),这个和时序信号里的占空比的定义类似。
PRBS 被称为“伪随机”的,是因为实际上它是确定的。它看上去是随机的原因是,aj的值和序列中其它码值无关,和真实的随机序列类似。
如果每N bit 就重复一下的话,伪随机码 PRBS 码可以扩展到无穷位码长。相对而言,大部分随机码流的码长本质上是无穷长的(不重复),比如放射性信号的衰减或者白噪声。N 位最大码长的伪随机码,一般都是由线性反馈移位寄存器产生的。伪随机码的占空比一般都是 1/2,并且,一个k位长度的寄存器,产生的伪随机码的码长为 N=2K-1。伪随机码被广泛应用在无线 / 有线通讯,密码学,仿真,光谱分析法等。
PRBS的生成方法
PRBS 信号是由 PRBS 码形发生器生成的。PRBS 发生器通常是由线性反馈移位寄存器(linear feedback shift registers,LFSR)和异或电路组成。如下图 1 是 PRBS7 的码形发生器,其初始值是 0000001,本原多项式是X6+X7+1。即将寄存器的第 6 位和第 7 位做异或运算后,输入到寄存器的第 1 位,寄存器的第 7 位同时也是 PRBS7 发生器的输出。
在图一中可以看到,PRBS7 最长是 127bit(27-1), 理论上来说,7bit 的 2 进制码,一共会有 27个不同组合,但是,如果码流全部为‘0’的时候,经过异或运算,输入到寄存器第一位的值还是 0, 这样移位寄存器将会一直输出为零,移位寄存器被死锁。所以 PRBS 码流不能全部为零。另外,PRBS7 码流中最长的连续‘1’个数为 7 个,最长的连续‘0’个数为 6 个。127bit 的连续码流中,一共有 64 个‘1’,63 个‘0’。
同理,PRBSn 的码长为2n-1 bits,其中包括2n-1个‘1’,2n-1-1个‘0’。
一些常用的 PRBS 码的本原多项式如下:
PRBS7 = X6+X7+1
PRBS9 = X9+X5+1
PRBS11 = X11+X9+1
PRBS15 = X15+X14+1
PRBS20 = X20+X3+1
PRBS23 = X23+X18+1
PRBS31 = X31+X28+1
PRBS 作用
串行总线的物理层测试通常分为发射机测试和接收机测试,又称为 TX 测试和 RX 测试。发射机测试通常包括眼图、抖动、信号波形、幅度、上升下降时间等测试项目,接收机测试通常包括误码率、抖动容限、接收机灵敏度等测试项目。对于眼图测试、误码率和抖动容限测试,最常用的测试码是 PRBS,主要有 PRBS7、PRBS15、PRBS23 和 PRBS31。
PRBS7 是目前 10Gbps 以下的串行总线中最常用的测试码型,在 ITU-TV.29 规范中规定。PRBS7 属于短伪随机码型,与 8b10b NRZ 编码的数据流很相似,所以,在 PCIe、SATA、XAUI、1000BASE-LX、FC、SAS 等采用 8b10b 编码的串行总线中,PRBS7 是最常用的测试码型,支持这些总线的芯片通常都可以输出 PRBS7 测试码型,用于眼图、抖动或误码率测量。
PRBS7 的码流中最长的连 1 为 7 个,最长的连 0 为 6 个;而 8b10b 编码中最长的连 1 为 5,最长的连 0 也是 5;因此,相比 8b10b 编码,PRBS7 可以产生的较低频率的码型。使用 PRBS7 作为驱动源,在同一信道(比如背板上 20inch 长走线)上传输到接收端后得到眼图和抖动,都比 8b10b 编码的作为驱动源时的结果稍差些。这样,PRBS7 作为 8b10b 编码的串行总线的测试码型,留出了一定的设计余量。
10GBASE-KR 标准里特别标注了推荐的测试码形为 PRBS11。