-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patht_Claw_Machine.v
117 lines (108 loc) · 3.13 KB
/
t_Claw_Machine.v
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
`timescale 1ns/100ps
module t_Claw_Machine;
reg clk;
reg Coin;
reg Mov_l, Mov_r, Mov_f, Mov_b;
reg Grab;
reg Touch;
reg Top;
reg Origin;
reg Drop;
wire Claw_l, Claw_r, Claw_f, Claw_b;
wire Return;
wire Down;
wire Rise;
wire Open;
wire Tight;
wire Loose;
wire Release;
integer i;
parameter N = 11;
initial
begin
$dumpfile("Claw_Machine.vcd");
$dumpvars;
end
always
begin
#10 clk = ~clk;
end
initial
begin
clk = 1'b0;
Coin = 1'b1;
Grab = 1'b0;
Drop = 1'b1;
Mov_l = 1'b0;
Mov_r = 1'b0;
Mov_f = 1'b0;
Mov_b = 1'b0;
Touch = 1'b0;
Top = 1'b0;
Origin = 1'b0;
end
always @(posedge clk)
begin
//第一次:測Register1, Grab按鈕
#30 Coin = 1'b0;
#20 Mov_l = 1'b0; Mov_r = 1'b0; Mov_f = 1'b0; Mov_b = 1'b1; Coin = 1;
#20 Mov_l = 1'b0; Mov_r = 1'b1; Mov_f = 1'b0; Mov_b = 1'b0;
#20 Grab = 1'b1; Mov_r = 1'b0;
@(posedge Down)
#10 Grab = 1'b0;
#40 Touch = 1'b1;
@(posedge clk)
Touch = 1'b0;
#60 Top = 1'b1;
@(posedge clk)
@(negedge clk)
Top = 1'b0;
#50 Origin = 1'b1;
#20 Origin = 1'b0;
#20 Mov_l = 1'b1; Mov_r = 1'b0; Mov_f = 1'b0; Mov_b = 1'b0;
#20 Mov_l = 1'b0; Mov_r = 1'b1; Mov_f = 1'b0; Mov_b = 1'b0;
#20 Mov_l = 1'b0; Mov_r = 1'b0; Mov_f = 1'b1; Mov_b = 1'b0;
#20 Mov_l = 1'b0; Mov_r = 1'b0; Mov_f = 1'b0; Mov_b = 1'b1;
//第二次:測Timer1, Timer2, Register2, counter_10
#20 Coin = 1'b0;
#20 Mov_l = 1'b0; Mov_r = 1'b1; Mov_f = 1'b0; Mov_b = 1'b0; Coin = 1'b1;
#80 Mov_l = 1'b0; Mov_r = 1'b0; Mov_f = 1'b0; Mov_b = 1'b1;
#40 Mov_l = 1'b0; Mov_r = 1'b0; Mov_f = 1'b1; Mov_b = 1'b0;
#20 Mov_l = 1'b1; Mov_r = 1'b0; Mov_f = 1'b0; Mov_b = 1'b0;
@(posedge Down)
Mov_f = 1'b0;
#50 Touch = 1'b1;
@(posedge clk)
Touch = 1'b0;
#50 Top = 1'b1;
@(posedge clk)
Top = 1'b0;
#50 Origin = 1'b1;
#20 Drop = 1'b0; Origin = 1'b0;
#20 Drop = 1'b1;
//第三次到第十三次:測保夾、Counter_10重置
for (i = 1; i <= N; i = i+1)
begin
#100 Coin = 1'b0;
#20 Mov_l = 1'b0; Mov_r = 1'b1; Mov_f = 1'b0; Mov_b = 1'b0; Coin = 1;
#20 Mov_r = 1'b0;
#20 Grab = 1'b1;
@(posedge Down)
Grab = 1'b0;
#50 Touch = 1'b1;
@(posedge clk)
Touch = 1'b0;
#50 Top = 1'b1;
@(posedge clk)
Top = 1'b0;
#50 Origin = 1'b1;
#20 Origin = 1'b0;
end
end
initial #5000 $finish;
Claw_Machine M(clk, Coin, Mov_l, Mov_r, Mov_f, Mov_b,
Grab, Touch, Top, Origin, Drop,
Claw_l, Claw_r, Claw_f, Claw_b,
Return, Down, Rise, Open,
Tight, Loose, Release);
endmodule // t_Claw_Machine