m序列产生器
摘自《Altera FPGA 系统设计实用教程》清华大学出版社
伪随机数在密码邻域的应用无处不在,是很多密码算法和密码协议的基础,常见伪随机数发生器基于线性反馈移位寄存器的伪随机数发生器,简称LFSR(linear feedback shift register)
一个反馈移位寄存器FSR由移位寄存器和反馈函数组成。其中,反馈函数由移位寄存器某些位的组合逻辑构成。
关于移位寄存器的设计方法:
1.基于行为的设计方法:由相应个数的D触发器首位连接而成
2.基于结构的描述方法:通过元件例化语句循环调用触发器
LFSR工作原理:移位寄存器所有位的值右移一位,最右边的寄存器移出的值作为输出,最左边的寄存器输入的值由反馈值填充,此过程称为进动一拍。
进动m拍就产生m个输出。
LFSR的周期定义:输出序列从开始到重复所经历的长度,n级最大周期为2*n-1,此时输出最长周期序列成为m序列,即m序列是最长线性反馈移位寄存器序列。
f(x)=CnXn+C(n-1)X(n-1)… …C2X2+C1X+1 (n阶本原多项式)
Xn第n个触发器
Cn反馈系数,其值为1时表示反馈支路连接
寄存器级数和m序列长 | 反馈系数(八进制) |
---|---|
2/3 | 7 |
3/7 | 13 |
4/15 | 23 |
5/31 | 45 |
6/63 | 103 |
7/127 | 211 |
8/255 | 435 |
9/511 | 1021 |
10/1023 | 2011 |
例:设计一个5级m序列,反馈为45,即100101
此时C5,C2,C0=1; C4,C3,C1=0
图中非门为避免输出全0 信号。
Altera库中的DFF元件定义如下
供自己fpga学习,如有错误,欢迎指出