blob: 00ebd4ff59367f5adc7ea9dfbdfdfd193e14e4d1 (
plain)
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
|
module control_unit (
input clk,
input fetch_ready,
output fetch_en,
output decode_en,
output alu_en,
output incr_pc,
output [9:0] dbg_state
);
reg [9:0] current_state;
initial begin
current_state = 10'b1;
end
assign fetch_en = current_state[0];
assign decode_en = current_state[1];
assign alu_en = current_state[2];
assign incr_pc = current_state[1];
always @(posedge clk) begin
case(current_state)
10'b1: if(fetch_ready) current_state <= 10'b10;
10'b10: current_state <= 10'b100;
10'b100: current_state <= 10'b1;
endcase
end
assign dbg_state = current_state;
endmodule
|