lfsr介绍
线性反馈移位寄存器lfsr,常用于数字电路中产生伪随机数,我们给寄存器赋的初值称为种子,并且种子非零,lfsr下一时刻的输入为是由整个移位寄存器值的某些位做异或运算的结果。
n位lfsr,至多产生2^(n-1)种序列(因为异或门中,全零异或为0,同或门中,全1为0,不会产生新序列)
影响下一个状态的比特位叫做抽头。移位寄存器链的多个抽头用作XOR或XNOR门的输入。
理想抽头序列来自反馈多项式,参考
ie型lfsr
ie型lfsr,即内接异或门或者同或门的lfsr
g为反馈系数,即抽头序列,以4bit位lfsr为例,由反馈多项式得11001,即
g4,g3,g0 = 1
g2,g1 = 0
反馈系数为1表示该线路成立,反馈系数为0表示该线路不成立,由上图可得
ff0 = ff3
ff1 = ff0
ff2 = ff1
ff3 = ff2 ^ ff3
代码实现 8bit flsr
lfsr.v
module lfsr(
input rst_n ,
input clk ,
input flag_seed ,
input [7:0] seed ,
output reg [7:0] rand_num
);
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
rand_num <=8'b0;
else if(load)
rand_num <=seed;
else
begin
rand_num[0] <= rand_num[7];
rand_num[1