aboutsummaryrefslogtreecommitdiff
path: root/rtl/src/verilog/eim_arbiter.v
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/src/verilog/eim_arbiter.v')
-rw-r--r--rtl/src/verilog/eim_arbiter.v20
1 files changed, 11 insertions, 9 deletions
diff --git a/rtl/src/verilog/eim_arbiter.v b/rtl/src/verilog/eim_arbiter.v
index 3dc6260..d21799f 100644
--- a/rtl/src/verilog/eim_arbiter.v
+++ b/rtl/src/verilog/eim_arbiter.v
@@ -39,7 +39,7 @@
module eim_arbiter
(
- eim_bclk, eim_cs0_n, eim_da,
+ eim_bclk, eim_cs0_n, eim_da, eim_a,
eim_lba_n, eim_wr_n,
eim_oe_n, eim_wait_n,
@@ -55,7 +55,8 @@ module eim_arbiter
//
input wire eim_bclk; // | eim bus
input wire eim_cs0_n; // |
- inout wire [15: 0] eim_da; // |
+ inout wire [15: 0] eim_da; // |
+ input wire [18:16] eim_a; // |
input wire eim_lba_n; // |
input wire eim_wr_n; // |
input wire eim_oe_n; // |
@@ -63,7 +64,7 @@ module eim_arbiter
input wire sys_clk; // system clock
- output wire [13: 0] sys_addr; // | user bus
+ output wire [16: 0] sys_addr; // | user bus
output wire sys_wren; // |
output wire [31: 0] sys_data_out; // |
output wire sys_rden; // |
@@ -107,7 +108,7 @@ module eim_arbiter
localparam EIM_FSM_STATE_READ_DONE = 5'b1_0_111; // transaction complete
reg [ 4: 0] eim_fsm_state = EIM_FSM_STATE_INIT; // fsm state
- reg [13: 0] eim_addr_latch = {14{1'bX}}; // transaction address
+ reg [16: 0] eim_addr_latch = {17{1'bX}}; // transaction address
reg [15: 0] eim_write_lsb_latch = {16{1'bX}}; // lower 16 bits of data to write
/* These flags are used to wake up from INIT state. */
@@ -183,7 +184,7 @@ module eim_arbiter
always @(posedge eim_bclk)
//
if ((eim_fsm_state == EIM_FSM_STATE_INIT) && (eim_write_start_flag || eim_read_start_flag))
- eim_addr_latch <= da_ro[15:2];
+ eim_addr_latch <= {eim_a[18:16], da_ro[15:2]};
//
@@ -256,10 +257,11 @@ module eim_arbiter
//
/* This block is used to transfer request data from BCLK clock domain to SYS_CLK clock domain and
- * then transfer acknowledge from SYS_CLK to BCLK clock domain in return. Af first 1+1+14+32 = 48 bits
- * are transfered, these are: write flag, read flag, address, write data. During read transaction
- * some bogus write data is passed, which is not used later anyway. During read requests 32 bits of data
- * are returned, during write requests 32 bits of bogus data are returned, that are never used later.
+ * then transfer acknowledge from SYS_CLK to BCLK clock domain in return. Af first 1+1+3+14+32 = 51 bits
+ * are transfered, these are: write flag, read flag, msb part of address, lsb part of address, write data.
+ * During read transaction some bogus write data is passed, which is not used later anyway. During read
+ * requests 32 bits of data are returned, during write requests 32 bits of bogus data are returned,
+ * that are never used later.
*/
eim_arbiter_cdc eim_cdc