-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLFSR.v
More file actions
77 lines (61 loc) · 1.55 KB
/
LFSR.v
File metadata and controls
77 lines (61 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
`timescale 1ns / 1ps
module LFSR(e, clk, rst);
output [15:0] e;
input clk, rst;
dff r16(.d(w3) , .q(e[15]), .set(rst), .clk(clk));
dff r15(.d(e[15]), .q(e[14]), .set(rst), .clk(clk));
dff r14(.d(e[14]), .q(e[13]), .set(rst), .clk(clk));
dff r13(.d(e[13]), .q(e[12]), .set(rst), .clk(clk));
dff r12(.d(e[12]), .q(e[11]), .set(rst), .clk(clk));
dff r11(.d(e[11]), .q(e[10]), .set(rst), .clk(clk));
dff r10(.d(e[10]), .q(e[9]) , .set(rst), .clk(clk));
dff r9 (.d(e[9]) , .q(e[8]) , .set(rst), .clk(clk));
dff r8 (.d(e[8]) , .q(e[7]) , .set(rst), .clk(clk));
dff r7 (.d(e[7]) , .q(e[6]) , .set(rst), .clk(clk));
dff r6 (.d(e[6]) , .q(e[5]) , .set(rst), .clk(clk));
dff r5 (.d(e[5]) , .q(e[4]) , .set(rst), .clk(clk));
dff r4 (.d(e[4]) , .q(e[3]) , .set(rst), .clk(clk));
dff r3 (.d(e[3]) , .q(e[2]) , .set(rst), .clk(clk));
dff r2 (.d(e[2]) , .q(e[1]) , .set(rst), .clk(clk));
dff r1 (.d(e[1]) , .q(e[0]) , .set(rst), .clk(clk));
xor g2(w3,w2,e[5]);
xor g3(w2,w1,e[3]);
xor g4(w1,e[0],e[2]);
endmodule
module dff(d, clk, set, rst, q);
input clk, d, set, rst;
output q;
reg q;
always @ (posedge clk or posedge set or posedge rst)
begin
if (set)
q <= 1'b1;
else if (rst)
q <= 1'b0;
else
q <= d;
end
endmodule
module LFSR_tb();
reg clk,rst;
wire [15:0] e;
integer pattern;
initial
begin
pattern = 0;
clk = 0;
rst = 0;
end
always
begin
#5;
clk = ~ clk;
end
always
begin
#10;
pattern = pattern + 1'b1;
$display("pattern:%d e:%d at %0t",pattern,e,$time);
end
LFSR DUT(e, clk, rst);
endmodule