LFSR(线性反馈移位寄存器)

线性反馈移位寄存器是指给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的但比特线性函数,对寄存器的某些位进行异或操作后作为输入,再对寄存器中各比特位进行整体移位。

module cy4(q3,clk,pre_n);
input clk,pre_n;
output reg q3;
reg q2,q1;

always @(posedge clk or negedge pre_n)
if(!pre_n) {q3,q2,q1} <= 3'b111;
else {q3,q2,q1} <= {q2,(q1^q3),q3};
endmodule

LFSR(线性反馈移位寄存器)_第1张图片

与常见的计数器相比,LFSR计数器具有速度快、消耗逻辑门少的特点。通常有n个触发器,其周期数为2^n-1个。
影响下一个状态的比特位叫做抽头。
最大长度的LFSR生成一个M序列(例如,只有与有一定抽序列的LFSR才能通过所有 2^n − 1 个内部状态,不包括全零状态),除非它本身为全零,亦即状态永不改。
多项式中常数**“1”**并不代表某一个抽头,它所指的是一个比特位的输入(例如 等效为 1 )。多项式中的指数代表从左至右的抽头位,第一个和最后一个比特一般相应的是输入和输出位。当且仅当相应的回授多项式是本原多项式时,LFSR才能达到最大长度。这表示以下条件是必须的:
抽头的数量必须为偶数。
抽头之间不能成对出现,必须是互质的。

你可能感兴趣的:(嵌入式学习)