PRBS简介

PRBS简介 声明文中关于PRBS的介绍参考以下内容[1].Using Pseudo-Random Binary Sequences to Stress Test Serial Digital Interfaces.[2].UG476——7 Series FPGAs GTX/GTH Transceivers.[3].ITU-T Recommendation O.150.一、PRBS的定义PRBS Pseudo-Random Binary Sequences伪随机二进制序列是一串数字 1 和 0 的组合在其序列长度内具有统计学上的随机性。这种序列的相邻比特之间没有相关性因此可以被视为测试串行数字接口的“最坏情况”压力测试信号。如果接口能够在不产生比特错误的情况下处理这种“嘈杂”的随机比特序列那么我们就可以确信它能够处理好“干净”的非随机序列。虽然 PRBS 序列表现出随机行为但它实际上是确定性生成的重复时比特序列总是相同的。例如PRBS7 序列的字长为 7 位生成的序列长度为 2^7 - 1即 127位该序列由Pattern发生器无限重复。一般来说任何 PRBSk 序列的字长都为 k 位序列长度为 2^k - 1 位。正是这种确定性生成与随机比特模式的结合使得这些序列成为测试接口的理想选择。由于误码率分析仪知道生成了哪些 PRBS 比特因此对接口输出比特流进行误码计数就相对简单了。二、PRBS的选择PRBS测试码的选择依据参考文件的推荐在《Using Pseudo-Random Binary Sequences to Stress Test Serial Digital Interfaces》文档中推荐的PRBS测试码型如下表1所示。表1 PRBS测试码型选择1从表1中可以看出,PRBS9是SFP的推荐测试码型之一PRBS15通常用于抖动测试PRBS23通常用于SDH/SONET的测试以及SDI芯片制造商用于接口测试PRBS31是10G以太网的推荐测试码型之一。在《UG476——7 Series FPGAs GTX/GTH Transceivers》文档中推荐的PRBS测试码型如下表2所示。表2 PRBS测试码型选择2从表2中可以看出,PRBS7是通常用于8B/10B编码测试PRBS23用于非 8B/10B 编码测试。综合表1和表2的内容来看PRBS测试码型的选择依据接口的类型和实际的应用场景具体的码型选择需要参考上述文档和工程应用中的实际需求。三、PRBS的产生以PRBS7为例简单介绍PRBS产生的原理生成PRBS7测试码型相关的信息如下图1所示图1 PRBS7测试码型相关信息图1中展示了PRBS7的生成多项式为在生成PRBS7的线性反馈移位寄存器中对第6位和第7位进行异或操作并将其输出的结果反馈到第1位第7位的输出构成PRBS7的输出序列。使用Verilog实现一个PRBS7的生成器代码如下moduleprbs7_gen(inputclk,inputrst_n,outputprbs7_bit_o);parameterINITAIL_VALUE7b0000001;//初始值定义//表达式x^7x^61//初始值7b0000001//寄存器定义:R1-R2-R3-R4-R5-R6-R7其中最低位为R1最高位为R7//输出寄存器:R7//反馈值:feedback_bit R7 ⊕ R6//移位操作:// R1_new feedback_bit,// R2_new R1_old,// R3_new R2_old,// R4_new R3_old,// R5_new R4_old,// R6_new R5_old,// R7_new R6_old,reg[6:0]prbs7_r;wirefeedback_bit;always (posedgeclk)beginif(!rst_n)begin prbs7_rINITAIL_VALUE;endelsebegin prbs7_r{prbs7_r[5:0],feedback_bit};//PRBS7 实现低位向高位移位end endassignfeedback_bitprbs7_r[6]^prbs7_r[5];//对第7位和第6位进行异或操作assignprbs7_bit_oprbs7_r[6];//以第7位作为实际PRBS7 bit的输出endmodule在该代码中设定的初始值为7’b000_0001在该代码中prbs7_bit_o的值即为PRBS7序列值。对以上代码在Vivado软件中进行综合综合的RTL视图如下图2所示图2 PRBS7 RTL视图可以看到综合出来的结果中包含了1个FDSE和6个FDRE构成7个寄存器LUT2进行第6位和第7位输出的异或运算第7位作为输出从而综合出来的结果与图1中的生成原理相同。对上述代码在Vivado中进行仿真仿真结果如下图3所示图3 PRBS7 仿真结果从仿真结果输出可以看到前16个序列输出分别是0000_0010_0000_1100(前6个输出值为0000_00)前6个连续输出0之后第7个输出值为1刚好反映了PRBS7最多连续输出6个0在输出127位数值之后开始重复第1个数据以上输出信息与图1相对应在证明了代码正确性的同时验证了PRBS7序列的相关性质。