300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 线性反馈移位寄存器 LFSR

线性反馈移位寄存器 LFSR

时间:2021-08-29 19:17:09

相关推荐

线性反馈移位寄存器 LFSR

参考连接:添加链接描述

运算基础:模2运算;

线性反馈移位寄存器用于产生可重复的伪随机序列PRBS,该电路由n级除法器和异或门组成;

k阶段,寄存器存在初值,(Rn-1, … R1, R0),称为seed

k+1阶段,寄存器的值变为:

*k+1阶段

Rn-1 = Rn-2

Rn-2 = Rn-3

R0 = f(R1, R2, …, Rn-1) = (Rn-1gn)⊕(Rn-2gn-1)⊕…⊕(R0*g1)g0

也就是说寄存器存储的结果 (Rn-1, … R1, R0) 每个时钟周期改变一次,其中R1-Rn-1是位移产生,R0是线性反馈函数 f(Rn-1, … R1, R0) 产生,所以称为线性反馈移位寄存器。

线性反馈移位寄存器总是假定g0,gn为1,否则 (Rn-1, … R1, R0) 将在n个周期后恒定为0。

抽头和特征多项式:

f(Rn-1, … R1, R0) = (Rn-1gn)⊕(Rn-2gn-1)⊕…⊕(R0*g1)*g0 可以用多项式表示为:

G(x)=gnxn+gn-1xn-1+…+g1x+g0

G(x)称为LFSR的特征多项式

影响线性反馈寄存器下一个状态的 gi = 0 或1叫做抽头,抽头的设定会决定线性反馈寄存器存储的结果 (Rn-1, … R1, R0) 的变化规律。

通常N位的线性反馈寄存器最多有 2N 个不同的状态。但是如果出现初值为N个0的情况,线性反馈寄存器陷入死循环,要排除掉。所以N位线性反馈寄存器能产生最长的不重复序列为 2N-1。

抽头的位置会影响LSFR的最大输出状态的个数

例如:3位的抽头为(g3, g2, g1, g0) = (1, 1, 0, 1)会产生7个状态(多项式对应为:G(x)=x3+x2+1)

若抽头为(g3, g2, g1, g0) = (1, 0, 1, 1),会产生2个状态(多项式对应为:x3+x+1)。

使最大输出序列长度为2N-1的不可约多项式称为LFSR的本原多项式,本原多项式产生的寄存器序列为M序列。

当N位下,本原多项式不是唯一的。下表为不同的位下的本原多项式:

3阶线性反馈移位寄存器实例:

上图为3阶线性反馈移位寄存器

抽头为(g3, g2, g1, g0) = (1, 1, 0, 1)

多项式对应为:G(x)=x3+x2+1

线性反馈函数R0 = f(R2, R1, R0) = R1⊕R2

初始值为SEED = (R2, R1, R0) = (1, 0, 1)

3阶线性反馈移位寄存器周期为7:

k周期 (R2, R1, R0)

0 (1, 0, 1)

1 (0, 1, 1)

2 (1, 1, 1)

3 (1, 1, 0)

4 (1, 0, 0)

5 (0, 0, 1)

6 (0, 1, 0)

7 (1, 0, 1)

通过设定seed和抽头,LFSR最多可产生2N-1个序列,这些序列之间看似是随机产生的,之所以称之为伪随机,是因为这些数是通过具体的关系式产生,最终会实现循环。

上代码:

LSFR_3

`timescale 1ns/1psmodule LSFR_3(//input wire clk,//input wire rstn,//output wire [2:0] o//{r2,1,r0});reg clk;reg rstn;reg [2:0] o_out;parameter perd = 20;initial beginrstn=1;clk=1;#20 rstn =0;#20 rstn =1;endalways #(perd/2) clk =~clk;always @(posedge clk or negedge rstn) beginif(~rstn) begino_out<=3'b101;endelse begin//o_out<={r1,r0,r1^r2};o_out<={o_out[1],o_out[0],o_out[1]^o_out[2]};endendendmodule

测试和计算一样;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。