线性反馈移位寄存器(LFSR)结构如下,此为三位移位寄存器,D0,D1,D2有一个初始值,称为seed,随着时钟信号的到来,D0,D1,D2的值会发生变化,总共有2^3 – 1 = 7种状态,全零状态是不包括的。
![da4273d06007c1033faf02b7bbbde8d4.png](https://i-blog.csdnimg.cn/blog_migrate/3633d5b33303c0f0bb64836c3e0dcdae.png)
D2的输出连接到D0的输入,D0的输出与D2的输出进行异或运算后输入到D1,计算方法如下:
D2=D1
D1=D2out ⊕ D0out
D0=D2out
下面编写verilog代码实现这个LFSR
1. 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;