线性反馈移位寄存器(LFSR)结构如下,此为三位移位寄存器,D0,D1,D2有一个初始值,称为seed,随着时钟信号的到来,D0,D1,D2的值会发生变化,总共有2^3 – 1 = 7种状态,全零状态是不包括的。

D2的输出连接到D0的输入,D0的输出与D2的输出进行异或运算后输入到D1,计算方法如下:
D2=D1
D1=D2out ⊕ D0out
D0=D2out
下面编写verilog代码实现这个LFSR
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
231. module LFSR_prj( 2. 3. input clk, 4. input rst_n, 5. 6. input[2:0] seed, 7. input load, 8. output reg[2:0] code 9. ); 10. 11. always@(posedge clk, negedge rst_n) 12. if(!rst_n) 13. code <= 3'd0; 14. else if(load) 15. code <= seed; 16. else begin 17. code[2] <= code[1]; 18. code[1] <= code[2] ^ code[0]; 19. code[0] <= code[2]; 20. end 21. 22. endmodule
仿真波形如下:

状态转移图如下:

利用LFSR可以产生伪随机数,例如给定一个初始值(seed),就可以产生一组随机数。此外,LFSR与CRC校验也有一定的关系,在后面的笔记会有介绍。
最后
以上就是爱听歌短靴最近收集整理的关于若三位右移移位寄存器_FPGA-线性反馈移位寄存器(LFSR)的全部内容,更多相关若三位右移移位寄存器_FPGA-线性反馈移位寄存器(LFSR)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复