ie型lfsr_线性反馈移位寄存器原理与实现 – 全文

ie型lfsr_线性反馈移位寄存器原理与实现 – 全文线性反馈移位寄存器(linearfeedbackshiftregister,LFSR)是指,给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。线性反馈移位寄存器(LFSR)是一个产生二进制位序列的机制。这个寄存器由一个初始化矢量设置的一系列信元组成,最常见的是,密钥。这个…

大家好,欢迎来到IT知识分享网。

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

线性反馈移位寄存器(LFSR)是一个产生二进制位序列的机制。这个寄存器由一个初始化矢量设置的一系列信元组成,最常见的是,密钥。这个寄存器的行为被一个时钟调节。在每个定时时刻,这个寄存器信元的内容被移动到一个正确的位置,这个排外的或这个信元子集内的内容被放在最左边的信元中。输出的一个位通常来自整个更新程序。LFSRs的应用包括产生伪随机数字,伪噪声序列,快速数字计算器和灰数序列。LFSRs软件和硬件的执行是相同的。

一个n阶的LFSR由n个触发器和若干个异或门组成。在实际应用当中,主要用到两种类型的LFSR,即异或门外接线性反馈移位寄存器(IE型LFSR,图1)和异或门内接线性反馈移位寄存器(EE型LFSR,图2)。其中g0 g1 g2 gn为’0’或’1’, Q1 Q2 Q3 Qn为LFSR的输出,M(x)是输入的码字多项式,如M(x)=x4+ x1+ 1,表示输入端的输入顺序为11001,同样,LFSR的结构也可以表示为多项式G(x),称为生成多项式:

G(x)= gn*xn+ …+g1*x1+ g0;

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

以EE型LFSR为例来分析LFSR的工作原理以应用

以n = 3 来做个例子,具体的电路图如图3所示:

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

假设开始的时候(D2,D1,D0 ) = (0,0,1),那么每过一个时钟周期会进行跳变一次,可以看到具体的跳变如图4所示:

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

然后我们可以看到这个计数器循环起来了,无论进入那样一个状态除了0之外,都可以循环着回来,其实这里就相当于了一个3bit的伪随机数,很有意思,不是所有的多项式都有这个特性,我们现在在从数学上面来看看这个问题,其实最上面的电路是可以看成是一个除法电路,在Galois域的一个除法电路。现在假设的是R(x)是寄存器中剩余的数据,M(x)是输入的码字多项式,然后数学公式可以表示成:

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

然后分别计算出了M(x)的各种情况,

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

对于这个部分的计算我开始走进了误区,因为开始我把这的除法当作二进制除法来算了,所以一直没得到正确的结果,后来我明白了这的除法是模二的除法,在LFSR的结果中,多项式中的“+”都是模2加,就是异或运算,所以是没有进位的概念;同样,这里的除法秀的也是模2除法,即除法过程中用到的减法是模2减法,是不会产生加法进位和减法借位的运算,所以在进行模2除法时,只要部分余数首位为1,便可上商1,否则上商0,然后按照模2减法求得余数,当被除数被除完时,最后得到比除数少一位的余数。

这里用一个例子说明一下,比如M(x)=x7时,R(x)=1;模2的计算公式如下:

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

所以这里一定要区别模2和二进制数之间的运算的区别。

M(x)和R(x)到底是什么意义呢?

比如M(x)=1时,R(x)=1,指的就是当M(x)输入一个1时,这时的R(x)为1,即寄存器剩余的数为001,即Q1=1,Q2=0,Q3=0。

又M(x)=x时,R(x)=x,指的就是当M(x)顺序输入1,0时,这时的R(x)为x,即寄存器剩余的数为010,即Q1=0,Q2=1,Q3=0。

同理,可以知道,当M(x)=x6时,R(x)=x2+1,指的就是当M(x)顺序输入1,0,0,0,0,0,0时,这时的R(x)为x2+1,即寄存器剩余的数为010,即Q1=1,Q2=0,Q3=1。

可以看出,当第一个时钟时输入端输入一个1时,以后保持输入端为0,则随着时钟的到来,输入码字多项式就是按照1,x,x2,x3,x4,x5,x6,x7,…,xn这样的顺序发展着,观察前六个输入的R(x)分别对应的输出为:001,010,100,011,101,111,101,111,刚好为除去000的其他七个状态,当M(x)为x7时,输出又回来001,所以输出一直这样循环下去,因此LFSR可以用来BIST的伪随机测试码产生器。

线性反馈移位寄存器的实现

1、写出n阶线性反馈移位寄存器的实现过程

2、假设一个GF(2)上的5阶线性反馈移位寄存器的反馈函数为

f(x1,x2,x3,x4,x5)=x1+x5

初始状态为10011,试写出该线性反馈移位寄存器的输出序列

程序:

#include《iostream》

#include《math.h》

using namespace std;

void GF(int a,int n)

{

int b;

for(int i=1;i《32;i++)

{

cout《《(a&1);

b=a&1^((a》》4)&1);

a=a》》1^(b《《4);

}

}

int main()

{

int a=0,b;

int n;

cout《《“请输入线性移位寄存器的阶数:”;

cin》》n;

cout《《“请输入初始状态:”;

for(int i=1;i《=n;i++)

{

cin》》b;

a=a^(b《《(i-1));

}

cout《《“输出序列为:”;

GF(a,n);

cout《《endl;

return 0;

}

运行结果:

ie型lfsr_线性反馈移位寄存器原理与实现 - 全文

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22654.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信