diff options
| author | Alejandro Soto <alejandro@34project.org> | 2022-10-15 19:31:55 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2022-10-15 19:31:55 -0600 |
| commit | ec152d814af82524cf68df95d7f06b9b70c0d0d0 (patch) | |
| tree | 417ad3c693f0618dd9609ffef6028fa0a955fee2 /rtl/bus/master.sv | |
| parent | 7d95ff01bcd8c42efe118fd1bddaabfca0e937eb (diff) | |
Rework bus architecture
Diffstat (limited to 'rtl/bus/master.sv')
| -rw-r--r-- | rtl/bus/master.sv | 47 |
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 |
