【verilog】十一、m序列发生器

    技术2025-05-13  13

    一、定义

    m序列:最长线性反馈移位寄存器序列的简称。是一种伪随机序列、伪噪声码。

    伪随机序列:不能预先确定但可以重复实现的序列。

     

    二、原理

     

    递推方程:

    特征方程:

    x^i仅指明其系数代表ci的值,x本身的取值并无实际意义。

    本原多项式:

    若反馈移位寄存器的特征多项式为本原多项式,则移位寄存器能产生m序列。

    若一个n次多项式f(x)满足:

    1)既约的:不能再因式分解;

    2)可整除(x^m + 1), m = 2^n - 1;

    3)除不尽(x^q + 1), q < m;

    则称:f(x)为本原多项式。

    三、实现

    //以x8+x4+x3+x2+1为例: module m_sequence( input sclk, input rst_n, output m_seq ); parameter POLY = 8'b10001110; reg [7 : 0] shift_reg; always@(posedge sclk or negedge rst_n) begin if(rst_n == 0) begin shift_reg <= 8'b11111111; end else begin shift_reg[7] <= (shift_reg[0] & POLY[7]) ^ (shift_reg[1] & POLY[6]) ^ (shift_reg[2] & POLY[5]) ^ (shift_reg[3] & POLY[4]) ^ (shift_reg[4] & POLY[3]) ^ (shift_reg[5] & POLY[2]) ^ (shift_reg[6] & POLY[1]) ^ (shift_reg[7] & POLY[0]); shift_reg[6 : 0] <= shift_reg[7 : 1]; end end assign m_seq = shift_reg[0]; endmodule

     

     
    Processed: 0.009, SQL: 9