summaryrefslogtreecommitdiff
path: root/rtl/bus/master.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-10-15 19:31:55 -0600
committerAlejandro Soto <alejandro@34project.org>2022-10-15 19:31:55 -0600
commitec152d814af82524cf68df95d7f06b9b70c0d0d0 (patch)
tree417ad3c693f0618dd9609ffef6028fa0a955fee2 /rtl/bus/master.sv
parent7d95ff01bcd8c42efe118fd1bddaabfca0e937eb (diff)
Rework bus architecture
Diffstat (limited to 'rtl/bus/master.sv')
-rw-r--r--rtl/bus/master.sv47
1 files changed, 25 insertions, 22 deletions
diff --git a/rtl/bus/master.sv b/rtl/bus/master.sv
index 6e29ac2..e4a76d2 100644
--- a/rtl/bus/master.sv
+++ b/rtl/bus/master.sv
@@ -20,41 +20,44 @@ module bus_master
);
enum {
- REQUEST,
- WAIT,
- RESPONSE
+ IDLE,
+ WAIT
} state;
assign data_rd = avl_readdata;
- assign avl_byteenable = 4'b1111;
-
- always_ff @(posedge clk) unique case(state)
- REQUEST: if(start) begin
+ assign avl_byteenable = 4'b1111; //TODO
+
+ always_comb
+ unique case(state)
+ IDLE: ready = 0;
+ WAIT: ready = !avl_waitrequest;
+ endcase
+
+ always_ff @(posedge clk) begin
+ unique case(state)
+ IDLE: begin
+ avl_read <= 0;
+ avl_write <= 0;
+ end
+
+ WAIT:
+ if(!start)
+ state <= IDLE;
+ endcase
+
+ if(!avl_waitrequest && start) begin
avl_address <= {addr, 2'b00};
avl_read <= ~write;
avl_write <= write;
avl_writedata <= data_wr;
state <= WAIT;
end
-
- WAIT: if(~avl_waitrequest) begin
- ready <= 1;
- state <= RESPONSE;
- end
-
- RESPONSE: begin
- ready <= 0;
- avl_read <= 0;
- avl_write <= 0;
- state <= REQUEST;
- end
- endcase
+ end
initial begin
- ready = 0;
+ state = IDLE;
avl_read = 0;
avl_write = 0;
- state = REQUEST;
end
endmodule