-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommands.v
66 lines (60 loc) · 1.34 KB
/
commands.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
module commands (
input clock,
input [7:0] command,
input request,
input [15:0] user_addr,
output reg [15:0] cmd_mem_addr,
output reg [7:0] cmd_mem_data,
output reg cmd_mem_wren,
output reg active
);
reg started = 0;
reg [15:0] tmp_addr = 0;
always @(posedge clock) begin
case (command)
8'h00 :;
8'h01 : begin
if (request) begin
if (!started) begin
cmd_mem_wren = 1; // write enable
cmd_mem_addr = 0; // start at $0000
cmd_mem_data = 0; // write zeros
started = 1;
active = 1;
end
end
if (started) begin
cmd_mem_addr = cmd_mem_addr + 1;
if (cmd_mem_addr == 0) begin
cmd_mem_data = 0;
cmd_mem_wren = 0;
started = 0;
active = 0;
end
end
end
8'h02 : begin
if (request) begin
if (!started) begin
cmd_mem_wren = 1; // write enable
cmd_mem_addr = 0; // start at $0000
cmd_mem_data = 0; // write zeros
tmp_addr = user_addr;
started = 1;
active = 1;
end
end
if (started) begin
cmd_mem_addr = cmd_mem_addr + 1;
if (cmd_mem_addr >= tmp_addr) begin
cmd_mem_data = 0;
cmd_mem_wren = 0;
started = 0;
active = 0;
end
end
end
default :;
endcase
end
endmodule