大数跨境
0
0

PRBS编码的逻辑运算实现原理

PRBS编码的逻辑运算实现原理 Manda与FPGA
2025-11-14
0

在高速链路测试中,我们常用的测试码型就是PRBS,即Pseudo-Random Binary Sequence,伪随机二进制序列。PRBS码常用的阶数有7、9、11、15、23、31,也就是我们常说的PRBS7、PRBS9、PRBS11、PRBS15、PRBS23、PRBS31等。PRBS码是由LFSRLinear Feedback Shift Register,线性反馈移位寄存器)产生的,因此可以根据前一个码型来确定下一个码型。

下面我们以PRBS7为例,介绍其逻辑运算实现原理。

PRBS7的对应的特征多项式为:

LFSR为:

比如我们要产生64位宽的PRBS7[63:0],其LFSR就是:

根据上面的LFSR,计算1bitPRBS结果为:

可以得到如下的公式:

其中,

产生64bit位宽的PRBS7的公式就为:

可以使用Matlab或者Python计算。

使用Python计算代码如下:

        import numpy as np

        M=np.diagflat(np.ones(63),-1)

        M[0,(5,6)]=1

        M64=np.linalg.matrix_power(M,64)

        M64=M64%2

M64只有前7列为非0值,其他的列都为0,取前9列。

结果就是:

偶数个同一比特异或后还是0,所以结果为:

所以可以将M64简化为M64%2,即对M64的每个元素进行模2取值。

最后PRBS7[63:0]的逻辑运算式就为:

prbs(0) <= prbs(2) ^ prbs(3) ^ prbs(5) ^ prbs(6) ;

prbs(1) <= prbs(0) ^ prbs(3) ^ prbs(4) ;

prbs(2) <= prbs(1) ^ prbs(4) ^ prbs(5) ;

prbs(3) <= prbs(2) ^ prbs(5) ^ prbs(6) ;

prbs(4) <= prbs(0) ^ prbs(3) ;

prbs(5) <= prbs(1) ^ prbs(4) ;

prbs(6) <= prbs(2) ^ prbs(5) ;

prbs(7) <= prbs(3) ^ prbs(6) ;

prbs(8) <= prbs(0) ^ prbs(4) ^ prbs(6) ;

prbs(9) <= prbs(0) ^ prbs(1) ^ prbs(5) ^ prbs(6) ;

prbs(10) <= prbs(0) ^ prbs(1) ^ prbs(2) ;

prbs(11) <= prbs(1) ^ prbs(2) ^ prbs(3) ;

prbs(12) <= prbs(2) ^ prbs(3) ^ prbs(4) ;

prbs(13) <= prbs(3) ^ prbs(4) ^ prbs(5) ;

prbs(14) <= prbs(4) ^ prbs(5) ^ prbs(6) ;

prbs(15) <= prbs(0) ^ prbs(5) ;

prbs(16) <= prbs(1) ^ prbs(6) ;

prbs(17) <= prbs(0) ^ prbs(2) ^ prbs(6) ;

prbs(18) <= prbs(0) ^ prbs(1) ^ prbs(3) ^ prbs(6) ;

prbs(19) <= prbs(0) ^ prbs(1) ^ prbs(2) ^ prbs(4) ^ prbs(6) ;

prbs(20) <= prbs(0) ^ prbs(1) ^ prbs(2) ^ prbs(3) ^ prbs(5) ^ prbs(6) ;

prbs(21) <= prbs(0) ^ prbs(1) ^ prbs(2) ^ prbs(3) ^ prbs(4) ;

prbs(22) <= prbs(1) ^ prbs(2) ^ prbs(3) ^ prbs(4) ^ prbs(5) ;

prbs(23) <= prbs(2) ^ prbs(3) ^ prbs(4) ^ prbs(5) ^ prbs(6) ;

prbs(24) <= prbs(0) ^ prbs(3) ^ prbs(4) ^ prbs(5) ;

prbs(25) <= prbs(1) ^ prbs(4) ^ prbs(5) ^ prbs(6) ;

prbs(26) <= prbs(0) ^ prbs(2) ^ prbs(5) ;

prbs(27) <= prbs(1) ^ prbs(3) ^ prbs(6) ;

prbs(28) <= prbs(0) ^ prbs(2) ^ prbs(4) ^ prbs(6) ;

prbs(29) <= prbs(0) ^ prbs(1) ^ prbs(3) ^ prbs(5) ^ prbs(6) ;

prbs(30) <= prbs(0) ^ prbs(1) ^ prbs(2) ^ prbs(4) ;

prbs(31) <= prbs(1) ^ prbs(2) ^ prbs(3) ^ prbs(5) ;

prbs(32) <= prbs(2) ^ prbs(3) ^ prbs(4) ^ prbs(6) ;

prbs(33) <= prbs(0) ^ prbs(3) ^ prbs(4) ^ prbs(5) ^ prbs(6) ;

prbs(34) <= prbs(0) ^ prbs(1) ^ prbs(4) ^ prbs(5) ;

prbs(35) <= prbs(1) ^ prbs(2) ^ prbs(5) ^ prbs(6) ;

prbs(36) <= prbs(0) ^ prbs(2) ^ prbs(3) ;

prbs(37) <= prbs(1) ^ prbs(3) ^ prbs(4) ;

prbs(38) <= prbs(2) ^ prbs(4) ^ prbs(5) ;

prbs(39) <= prbs(3) ^ prbs(5) ^ prbs(6) ;

prbs(40) <= prbs(0) ^ prbs(4) ;

prbs(41) <= prbs(1) ^ prbs(5) ;

prbs(42) <= prbs(2) ^ prbs(6) ;

prbs(43) <= prbs(0) ^ prbs(3) ^ prbs(6) ;

prbs(44) <= prbs(0) ^ prbs(1) ^ prbs(4) ^ prbs(6) ;

prbs(45) <= prbs(0) ^ prbs(1) ^ prbs(2) ^ prbs(5) ^ prbs(6) ;

prbs(46) <= prbs(0) ^ prbs(1) ^ prbs(2) ^ prbs(3) ;

prbs(47) <= prbs(1) ^ prbs(2) ^ prbs(3) ^ prbs(4) ;

prbs(48) <= prbs(2) ^ prbs(3) ^ prbs(4) ^ prbs(5) ;

prbs(49) <= prbs(3) ^ prbs(4) ^ prbs(5) ^ prbs(6) ;

prbs(50) <= prbs(0) ^ prbs(4) ^ prbs(5) ;

prbs(51) <= prbs(1) ^ prbs(5) ^ prbs(6) ;

prbs(52) <= prbs(0) ^ prbs(2) ;

prbs(53) <= prbs(1) ^ prbs(3) ;

prbs(54) <= prbs(2) ^ prbs(4) ;

prbs(55) <= prbs(3) ^ prbs(5) ;

prbs(56) <= prbs(4) ^ prbs(6) ;

prbs(57) <= prbs(0) ^ prbs(5) ^ prbs(6) ;

prbs(58) <= prbs(0) ^ prbs(1) ;

prbs(59) <= prbs(1) ^ prbs(2) ;

prbs(60) <= prbs(2) ^ prbs(3) ;

prbs(61) <= prbs(3) ^ prbs(4) ;

prbs(62) <= prbs(4) ^ prbs(5) ;

prbs(63) <= prbs(5) ^ prbs(6) ;


【声明】内容源于网络
0
0
Manda与FPGA
Manda,与FPGA打交道十八年。
内容 4
粉丝 0
Manda与FPGA Manda,与FPGA打交道十八年。
总阅读7
粉丝0
内容4