minic_wb_slave

Mini NIC for WhiteRabbit

Simple, embedded WhiteRabbit-compiliant Network Interface Controller (NIC) for use in WhiteRabbit embedded receivers

Contents:

1. Memory map summary
2. HDL symbol
3. Register description
3.1. miNIC Control Register
3.2. TX DMA Address
3.3. RX DMA Address
3.4. RX buffer size register
3.5. RX buffer available words register
3.6. TX timestamp register 0
3.7. TX timestamp register 1
3.8. Debug register
3.9. Memory protection reg
3.10. Interrupt disable register
3.11. Interrupt enable register
3.12. Interrupt mask register
3.13. Interrupt status register
5. Interrupts
5.1. TX DMA interrupt
5.2. RX DMA interrupt
5.3. TX timestamp available

1. Memory map summary

H/W Address Type Name VHDL/Verilog prefix C prefix
0x0 REG miNIC Control Register minic_mcr MCR
0x1 REG TX DMA Address minic_tx_addr TX_ADDR
0x2 REG RX DMA Address minic_rx_addr RX_ADDR
0x3 REG RX buffer size register minic_rx_size RX_SIZE
0x4 REG RX buffer available words register minic_rx_avail RX_AVAIL
0x5 REG TX timestamp register 0 minic_tsr0 TSR0
0x6 REG TX timestamp register 1 minic_tsr1 TSR1
0x7 REG Debug register minic_dbgr DBGR
0x8 REG Memory protection reg minic_mprot MPROT
0x10 REG Interrupt disable register minic_eic_idr EIC_IDR
0x11 REG Interrupt enable register minic_eic_ier EIC_IER
0x12 REG Interrupt mask register minic_eic_imr EIC_IMR
0x13 REG Interrupt status register minic_eic_isr EIC_ISR

2. HDL symbol

rst_n_i miNIC Control Register:
clk_sys_i minic_mcr_tx_start_o
wb_adr_i[4:0] minic_mcr_tx_idle_i
wb_dat_i[31:0] minic_mcr_tx_error_i
wb_dat_o[31:0] minic_mcr_rx_ready_i
wb_cyc_i minic_mcr_rx_full_i
wb_sel_i[3:0] minic_mcr_rx_en_o
wb_stb_i minic_mcr_rx_class_o[7:0]
wb_we_i  
wb_ack_o TX DMA Address:
wb_stall_o minic_tx_addr_o[23:0]
wb_int_o minic_tx_addr_i[23:0]
minic_tx_addr_load_o
 
RX DMA Address:
minic_rx_addr_o[23:0]
minic_rx_addr_i[23:0]
minic_rx_addr_load_o
 
RX buffer size register:
minic_rx_size_o[23:0]
minic_rx_size_i[23:0]
minic_rx_size_load_o
 
RX buffer available words register:
minic_rx_avail_o[23:0]
minic_rx_avail_i[23:0]
minic_rx_avail_load_o
 
TX timestamp register 0:
minic_tsr0_valid_i
minic_tsr0_pid_i[4:0]
minic_tsr0_fid_i[15:0]
 
TX timestamp register 1:
minic_tsr1_tsval_i[31:0]
tx_ts_read_ack_o
 
Debug register:
minic_dbgr_irq_cnt_i[23:0]
minic_dbgr_wb_irq_val_i
 
Memory protection reg:
minic_mprot_lo_o[15:0]
minic_mprot_hi_o[15:0]
 
TX DMA interrupt:
irq_tx_i
irq_tx_ack_o
irq_tx_mask_o
 
RX DMA interrupt:
irq_rx_i
irq_rx_ack_o
 
TX timestamp available:
irq_txts_i

3. Register description

3.1. miNIC Control Register

HW prefix: minic_mcr
HW address: 0x0
C prefix: MCR
C offset: 0x0
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
RX_CLASS[7:0]
15 14 13 12 11 10 9 8
- - - - - RX_EN RX_FULL RX_READY
7 6 5 4 3 2 1 0
- - - - - TX_ERROR TX_IDLE TX_START

3.2. TX DMA Address

HW prefix: minic_tx_addr
HW address: 0x1
C prefix: TX_ADDR
C offset: 0x4

Address of the start of TX buffer:
read: base address of the last transmitted TX descriptor
write: base address of the first descriptor to transmit

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
TX_ADDR[23:16]
15 14 13 12 11 10 9 8
TX_ADDR[15:8]
7 6 5 4 3 2 1 0
TX_ADDR[7:0]

3.3. RX DMA Address

HW prefix: minic_rx_addr
HW address: 0x2
C prefix: RX_ADDR
C offset: 0x8

Address of the start of RX buffer:
read: address of the last received RX descriptor
write: base address of the RX buffer

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
RX_ADDR[23:16]
15 14 13 12 11 10 9 8
RX_ADDR[15:8]
7 6 5 4 3 2 1 0
RX_ADDR[7:0]

3.4. RX buffer size register

HW prefix: minic_rx_size
HW address: 0x3
C prefix: RX_SIZE
C offset: 0xc

Size of RX buffer in 32-bit words

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
RX_SIZE[23:16]
15 14 13 12 11 10 9 8
RX_SIZE[15:8]
7 6 5 4 3 2 1 0
RX_SIZE[7:0]

3.5. RX buffer available words register

HW prefix: minic_rx_avail
HW address: 0x4
C prefix: RX_AVAIL
C offset: 0x10

Number of available 32-bit words in the RX buffer
read: available words in RX buffer
write: increment available words in RX buffer

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
RX_AVAIL[23:16]
15 14 13 12 11 10 9 8
RX_AVAIL[15:8]
7 6 5 4 3 2 1 0
RX_AVAIL[7:0]

3.6. TX timestamp register 0

HW prefix: minic_tsr0
HW address: 0x5
C prefix: TSR0
C offset: 0x14
31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - FID[15:10]
15 14 13 12 11 10 9 8
FID[9:2]
7 6 5 4 3 2 1 0
FID[1:0] PID[4:0] VALID

3.7. TX timestamp register 1

HW prefix: minic_tsr1
HW address: 0x6
C prefix: TSR1
C offset: 0x18
31 30 29 28 27 26 25 24
TSVAL[31:24]
23 22 21 20 19 18 17 16
TSVAL[23:16]
15 14 13 12 11 10 9 8
TSVAL[15:8]
7 6 5 4 3 2 1 0
TSVAL[7:0]

3.8. Debug register

HW prefix: minic_dbgr
HW address: 0x7
C prefix: DBGR
C offset: 0x1c
31 30 29 28 27 26 25 24
- - - - - - - WB_IRQ_VAL
23 22 21 20 19 18 17 16
IRQ_CNT[23:16]
15 14 13 12 11 10 9 8
IRQ_CNT[15:8]
7 6 5 4 3 2 1 0
IRQ_CNT[7:0]

3.9. Memory protection reg

HW prefix: minic_mprot
HW address: 0x8
C prefix: MPROT
C offset: 0x20
31 30 29 28 27 26 25 24
HI[15:8]
23 22 21 20 19 18 17 16
HI[7:0]
15 14 13 12 11 10 9 8
LO[15:8]
7 6 5 4 3 2 1 0
LO[7:0]

3.10. Interrupt disable register

HW prefix: minic_eic_idr
HW address: 0x10
C prefix: EIC_IDR
C offset: 0x40

Writing 1 disables handling of the interrupt associated with corresponding bit. Writin 0 has no effect.

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - TXTS RX TX

3.11. Interrupt enable register

HW prefix: minic_eic_ier
HW address: 0x11
C prefix: EIC_IER
C offset: 0x44

Writing 1 enables handling of the interrupt associated with corresponding bit. Writin 0 has no effect.

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - TXTS RX TX

3.12. Interrupt mask register

HW prefix: minic_eic_imr
HW address: 0x12
C prefix: EIC_IMR
C offset: 0x48

Shows which interrupts are enabled. 1 means that the interrupt associated with the bitfield is enabled

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - TXTS RX TX

3.13. Interrupt status register

HW prefix: minic_eic_isr
HW address: 0x13
C prefix: EIC_ISR
C offset: 0x4c

Each bit represents the state of corresponding interrupt. 1 means the interrupt is pending. Writing 1 to a bit clears the corresponding interrupt. Writing 0 has no effect.

31 30 29 28 27 26 25 24
- - - - - - - -
23 22 21 20 19 18 17 16
- - - - - - - -
15 14 13 12 11 10 9 8
- - - - - - - -
7 6 5 4 3 2 1 0
- - - - - TXTS RX TX

5. Interrupts

5.1. TX DMA interrupt

HW prefix: minic_tx
C prefix: TX
Trigger: high level

5.2. RX DMA interrupt

HW prefix: minic_rx
C prefix: RX
Trigger: high level

5.3. TX timestamp available

HW prefix: minic_txts
C prefix: TXTS
Trigger: high level