为啥眼图测试/误码率/抖动容限测试都离不开PRBS?
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。
- 以1.5 Gbps运行的PRBS发生器(04-06)
- 信号完整性系列之十七—— 基于误码率的眼图测试,ISOBER(01-05)
- 基于误码率的眼图测试(04-12)