-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfsm_1010_moore.v
More file actions
88 lines (75 loc) · 1.99 KB
/
Copy pathfsm_1010_moore.v
File metadata and controls
88 lines (75 loc) · 1.99 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
78
79
80
81
82
83
84
85
86
87
88
`timescale 1ns / 1ps
module fsm_1010_nol(
input clk,rst,din ,output reg detected
);
parameter idle = 3'b000;
parameter s1 = 3'b001;
parameter s2 = 3'b010;
parameter s3 = 3'b011;
parameter s4 = 3'b100;
reg [2:0] ps,ns;
// present state logic
always@(posedge clk)
begin
if(rst)begin
ps <= idle;
end
else
ps <= ns;
end
// next state logic
always@(*)
begin
case(ps)
idle : begin
// detected = 0;
if(din == 1'b1)
ns = s1;
else
ns = idle;
end
s1 : begin
if(din == 1'b0)
ns = s2;
else
ns = s1;
end
s2 : begin
if(din == 1'b1)
ns = s3;
else
ns = idle;
end
s3 : begin
if(din == 1'b1)
ns = s1;
else begin
ns = s4;
// detected = 1'b1;
end
end
s4 : begin
detected = 1'b1;
if(din == 1'b0)
ns = idle;
else
ns = s1;
end
default : ns = idle;
endcase
end
// always@(posedge clk)
// begin
// if(rst)
// detected <= 1'b0;
// else
// case(ps)
// idle : detected <= 0;
// s1 : detected <= 0;
// s2 : detected <= 0;
// s3 : detected <= 1'b0;
// s4 : detected <= 1'b1;
// default : detected <= 1'b0;
// endcase
// end
endmodule