-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomp2.v
More file actions
61 lines (60 loc) · 1.13 KB
/
comp2.v
File metadata and controls
61 lines (60 loc) · 1.13 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
module comp1
(input wire in,clk,reset,output reg out);
reg [0:1] cs,ns;
always @ (posedge clk,negedge reset)
begin
if(!reset)
cs <= 0;
else
cs <= ns;
end
always @ (cs or in)
begin
case(cs)
2'b00:if(in==0)
ns=2'b00;
else
ns=2'b01;
2'b01:if(in==0)
ns=2'b01;
else
ns=2'b10;
2'b10:if(in==1)
ns=2'b10;
else
ns=2'b01;
default: ns=2'b00;
endcase
end // always @ (cs or in)
always @ (cs)
begin
case(cs)
2'b00:out=0;
2'b01:out=1;
2'b10:out=0;
endcase // case (cs)
end
endmodule // comp1
module tg
(output reg in,clk,reset,input wire out);
initial begin
$monitor($time,,,"in=%b clk=%b reset=%b out=%b cs=%b ns=%b",in,clk,reset,out,comp11.cs,comp11.ns);
clk=0;
reset=0;
#0.5 in=1;
#0.2 reset=1;
#2 in=1;
#2 in=0;
#2 in=1;
#1 $finish;
end
always
begin
#1 clk=~clk;
end
endmodule // tg
module wb;
wire in,clk,reset,out;
comp1 comp11(in,clk,reset,out);
tg tg1(in,clk,reset,out);
endmodule