mirror of
https://github.com/aolofsson/oh.git
synced 2025-01-30 02:32:53 +08:00
Moving mailbox registers to new addres
-Mailbox is a pretty useful little block, registers don't belong in the RX space -Moved registers to the "MESH" group block at bits [10:8]. -Feel good about this, should not change... -Has been tested to work with test/test_regs.emf -For new register address, see README.md cc @olajep @peteasa
This commit is contained in:
parent
a1e19e0a5b
commit
240e5b433c
@ -181,26 +181,28 @@ REGISTER | ACCESS | ADDRESS | DESCRIPTION
|
||||
-----------------|--------|---------|------------------
|
||||
ELINK_RESET | -W | 0xF0200 | Soft reset
|
||||
ELINK_CLK | -W | 0xF0204 | Clock configuration
|
||||
ELINK_CHIPID | RW | 0xF0208 | Chip ID for Epiphany pins
|
||||
ELINK_VERSION | RW | 0xF020C | Version number (static)
|
||||
ELINK_CHIPID | RW | 0xF0208 | Chip ID for Epiphany pins
|
||||
ELINK_VERSION | RW | 0xF020C | Version number (static)
|
||||
*****************|********|*********|**************************
|
||||
ELINK_TXCFG | RW | 0xF0210 | TX configuration
|
||||
ELINK_TXSTATUS | RW | 0xF0214 | TX status
|
||||
ELINK_TXGPIO | RW | 0xF0218 | TX data in GPIO mode
|
||||
ELINK_TXMONITOR | RW | 0xF021C | TX transaction monitor
|
||||
ELINK_TXPACKET | R- | 0xF0220 | TX packet sampler
|
||||
ELINK_TXMMU | -W | 0xE0000 | TX MMU table
|
||||
*****************|******* |*********|********************
|
||||
ELINK_RXCFG | RW | 0xF0300 | RX configuration
|
||||
ELINK_RXSTATUS | R- | 0xF0304 | RX status register
|
||||
ELINK_RXGPIO | R- | 0xF0308 | RX data in GPIO mode
|
||||
ELINK_RXOFFSET | RW | 0xF030C | RX mem offset in remap mode
|
||||
ELINK_RXDELAY0 | RW | 0xF0310 | RX idelays 4 bit values d[7:0]
|
||||
ELINK_RXDELAY1 | RW | 0xF0314 | RX idelay msbs and frametap lsbs
|
||||
ELINK_RXDELAY0 | RW | 0xF0310 | RX idelays 4 bit lsb values d[7:0]
|
||||
ELINK_RXDELAY1 | RW | 0xF0314 | RX idelay taps {all msbs,frame lsbs}
|
||||
ELINK_RXTESTDATA | RW | 0xF0318 | RX sampled data
|
||||
ELINK_MAILBOXLO | RW | 0xF0320 | RX mailbox (lower 32 bit)
|
||||
ELINK_MAILBOXHI | RW | 0xF0324 | RX mailbox (upper 32 bits)
|
||||
ELINK_MAILBOXSTAT| RW | 0xF0328 | RX mailbox status
|
||||
*****************|******* |*********|********************
|
||||
ELINK_MAILBOXLO | RW | 0xF0730 | Mailbox (lower 32 bit)
|
||||
ELINK_MAILBOXHI | RW | 0xF0734 | Mailbox (upper 32 bits)
|
||||
ELINK_MAILBOXSTAT| RW | 0xF0738 | Mailbox status
|
||||
*****************|******* |*********|********************
|
||||
ELINK_TXMMU | -W | 0xE0000 | TX MMU table
|
||||
ELINK_RXMMU | -W | 0xE8000 | RX MMU table
|
||||
|
||||
## ELINK_RESET (0xF0200)
|
||||
@ -448,7 +450,7 @@ FIELD | DESCRIPTION
|
||||
|
||||
-------------------------------
|
||||
|
||||
## ELINK_MAILBOXLO (0xF0320)
|
||||
## ELINK_MAILBOXLO (0xF0730)
|
||||
Lower 32 bit word of current entry of RX 64-bit wide mailbox FIFO. Must be read before ELINK_MAILBOXHI is read
|
||||
|
||||
FIELD | DESCRIPTION
|
||||
@ -457,14 +459,14 @@ FIELD | DESCRIPTION
|
||||
|
||||
-------------------------------
|
||||
|
||||
## ELINK_MAILBOXHI (0xF0324)
|
||||
## ELINK_MAILBOXHI (0xF0734)
|
||||
Upper 32 bit word of current entry of RX 64-bit wide mailbox FIFO. Reading this register causes the RX FIFO read pointer to increment by one.
|
||||
|
||||
FIELD | DESCRIPTION
|
||||
-------- |---------------------------------------------------
|
||||
[31:0] | Upper data of RX FIFO
|
||||
|
||||
## ELINK_MAILBOXSTAT (0xF0328)
|
||||
## ELINK_MAILBOXSTAT (0xF0738)
|
||||
Status of mailbox
|
||||
|
||||
FIELD | DESCRIPTION
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
if [ -e "test_0.memh" ]
|
||||
if [ -e "test_0.emf" ]
|
||||
then
|
||||
rm test_0.memh
|
||||
rm test_0.emf
|
||||
fi
|
||||
cp $1 test_0.memh
|
||||
cp $1 test_0.emf
|
||||
./axi_elink.vvp
|
||||
|
@ -8,9 +8,10 @@ DEADBEEF_00000002_810f0214_05_0000 // (ELINK_TXSTATUS)
|
||||
DEADBEEF_87654321_810f0218_05_0000 // (ELINK_TXGPIO)
|
||||
DEADBEEF_AAAAAAAA_810f021C_05_0000 // (ELINK_TXMONITOR)
|
||||
DEADBEEF_00000000_810f0300_05_0000 // (ELINK_RXCFG)
|
||||
DEADBEEF_00000000_810f0304_05_0000 // (ELINK_RXSTATUS)
|
||||
DEADBEEF_00000000_810f030C_05_0000 // (ELINK_RXOFFSET)
|
||||
DEADBEEF_76543210_810f0310_05_0000 // (ELINK_RXIDELAY0)
|
||||
DEADBEEF_FEDCBA98_810f0314_05_0000 // (ELINK_RXIDELAY1)
|
||||
DEADBEEF_00000000_810f0310_05_0000 // (ELINK_RXIDELAY0)
|
||||
DEADBEEF_00000000_810f0314_05_0000 // (ELINK_RXIDELAY1)
|
||||
DEADBEEF_76543210_810f0318_05_0000 // (ELINK_RXTESTDATA)
|
||||
DEADBEEF_11111111_810E0000_05_0000 // (ELINK_TXMMU)
|
||||
DEADBEEF_22222222_810E0004_05_0000 // (ELINK_TXMMU)
|
||||
@ -24,8 +25,9 @@ DEADBEEF_44444444_810E8004_05_0000 // (ELINK_RXMMU)
|
||||
810D0304_DEADBEEF_810f0304_04_0000 // (ELINK_RXSTATUS)
|
||||
810D0308_DEADFEEF_810f0308_04_0000 // (ELINK_RXGPIO)
|
||||
fedcba98_76543210_80000000_07_0010 //MBOX (DUMY WRITE FOR DV ENV..)
|
||||
810f0310_DEADBEEF_80000000_06_0000 // (E_MAILBOXLO)
|
||||
810D0318_DEADBEEF_810f0318_04_0000 // (E_MAILBOXSTATUS-READ)
|
||||
810D0310_DEADBEEF_810f0310_04_0000 // (E_MAILBOXLO-READ)
|
||||
810D0314_DEADFEEF_810f0314_04_0000 // (E_MAILBOXHI_READ)
|
||||
810f0730_DEADBEEF_80000000_06_0040 // (E_MAILBOXLO)
|
||||
810D0000_DEADBEEF_810f0738_04_0000 // (E_MAILBOXSTATUS-READ)
|
||||
810D0004_DEADBEEF_810f0730_04_0000 // (E_MAILBOXLO-READ)
|
||||
810D0008_DEADFEEF_810f0734_04_0000 // (E_MAILBOXHI_READ)
|
||||
|
||||
|
||||
|
@ -17,9 +17,13 @@
|
||||
`define EGROUP_RR 4'hD // read response block
|
||||
|
||||
//Register blocks[10:8]
|
||||
`define EGROUP_TX 3'd2 //0200
|
||||
`define EGROUP_RX 3'd3 //0300
|
||||
`define EGROUP_DMA 3'd5 //0500
|
||||
`define EGROUP_RF 3'd0 //0x000
|
||||
`define EGROUP_TX 3'd2 //0x200
|
||||
`define EGROUP_RX 3'd3 //0x300
|
||||
`define EGROUP_CORE 3'd4 //0x400
|
||||
`define EGROUP_DMA 3'd5 //0x500
|
||||
`define EGROUP_MEM 3'd6 //0x600
|
||||
`define EGROUP_MESH 3'd7 //0x700
|
||||
|
||||
//ETX-REGS
|
||||
`define E_RESET 6'd0 //F0200-reset
|
||||
@ -43,9 +47,9 @@
|
||||
|
||||
//MAILBOX REGS
|
||||
`ifndef E_MAILBOXLO
|
||||
`define E_MAILBOXLO 6'd8 //F0320-reserved
|
||||
`define E_MAILBOXHI 6'd9 //F0324-reserved
|
||||
`define E_MAILBOXSTAT 6'd10 //F0328-reserved
|
||||
`define E_MAILBOXLO 6'hC //F0730-lower 32 bits of mailbox
|
||||
`define E_MAILBOXHI 6'hD //F0734-upper 32 bits of mailbox
|
||||
`define E_MAILBOXSTAT 6'hE //F0738-mailbox status
|
||||
`endif
|
||||
|
||||
//DMA (same numbering as in Epiphany, limit to 4 channels)
|
||||
|
@ -109,13 +109,11 @@ module erx_cfg (/*AUTOARG*/
|
||||
//read/write decode
|
||||
assign cfg_access = erx_cfg_access &
|
||||
(dstaddr_in[19:16] ==`EGROUP_MMR) &
|
||||
(dstaddr_in[10:8] ==`EGROUP_RX) &
|
||||
~dstaddr_in[5]; //reserveed for mailbox
|
||||
(dstaddr_in[10:8] ==`EGROUP_RX);
|
||||
|
||||
assign mailbox_access = erx_cfg_access &
|
||||
(dstaddr_in[19:16] ==`EGROUP_MMR) &
|
||||
(dstaddr_in[10:8] ==`EGROUP_RX) &
|
||||
dstaddr_in[5];
|
||||
(dstaddr_in[10:8] ==`EGROUP_MESH);
|
||||
|
||||
assign dma_access = erx_cfg_access &
|
||||
(dstaddr_in[19:16] ==`EGROUP_MMR) &
|
||||
@ -246,7 +244,7 @@ module erx_cfg (/*AUTOARG*/
|
||||
dstaddr_out[31:0] <= ecfg_read ? srcaddr_in[31:0] : dstaddr_in[31:0];
|
||||
data_out[31:0] <= data_in[31:0];
|
||||
srcaddr_out[31:0] <= srcaddr_in[31:0];
|
||||
rx_sel <= ~ecfg_read;
|
||||
rx_sel <= cfg_access;
|
||||
dma_sel <= dma_access;
|
||||
mailbox_sel <= mailbox_access;
|
||||
tx_sel <= ecfg_tx_read;
|
||||
|
@ -90,7 +90,8 @@ module emailbox (/*AUTOARG*/
|
||||
assign mailbox_write = emesh_access &
|
||||
emesh_write &
|
||||
(emesh_addr[31:20]==ID) &
|
||||
(emesh_addr[19:16]==`EGROUP_MMR) &
|
||||
(emesh_addr[19:16]==`EGROUP_MMR) &
|
||||
(emesh_addr[10:8] ==`EGROUP_MESH) &
|
||||
(emesh_addr[RFAW+1:2]==`E_MAILBOXLO);
|
||||
|
||||
//###########################################
|
||||
|
@ -2,23 +2,18 @@
|
||||
`define EMAILBOX_REGMAP_V_
|
||||
|
||||
`ifndef E_MAILBOXLO
|
||||
`define E_MAILBOXLO 6'd8
|
||||
`define E_MAILBOXLO 6'hC
|
||||
`define E_MAILBOXHI 6'hD
|
||||
`define E_MAILBOXSTAT 6'hE
|
||||
`endif
|
||||
|
||||
`ifndef E_MAILBOXHI
|
||||
`define E_MAILBOXHI 6'd9
|
||||
`endif
|
||||
|
||||
`ifndef E_MAILBOXSTAT
|
||||
`define E_MAILBOXSTAT 6'd10
|
||||
`endif
|
||||
|
||||
|
||||
`ifndef EGROUP_MMR
|
||||
`define EGROUP_MMR 4'hF
|
||||
`endif
|
||||
|
||||
|
||||
`ifndef EGROUP_MESH
|
||||
`define EGROUP_MESH 3'h7
|
||||
`endif
|
||||
|
||||
|
||||
`endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user