PRBS简介
2026/5/27 13:06:11 网站建设 项目流程

声明:文中关于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_VALUE=7'b0000001;//初始值定义//表达式:x^7+x^6+1//初始值:7'b0000001//寄存器定义: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_r<=INITAIL_VALUE;endelsebegin prbs7_r<={prbs7_r[5:0],feedback_bit};//PRBS7 实现低位向高位移位end endassignfeedback_bit=prbs7_r[6]^prbs7_r[5];//对第7位和第6位进行异或操作assignprbs7_bit_o=prbs7_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序列的相关性质。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询