axi_lite_mailbox_unit

Expose NUM_MAILBOXES AXI-Lite mailboxes with inbound and outbound IRQs.

Independent mailboxes share one AXI-Lite slave decode sized by MAILBOX_BASE_ADDR and MAILBOX_SIZE. Each mailbox is an axi_lite_mailbox with two AXI-Lite ports of MAILBOX_SIZE bytes each: mailbox m places its outbound port at MAILBOX_BASE_ADDR + 2 * m * MAILBOX_SIZE and its inbound port one MAILBOX_SIZE above it. The axi_lite_demux decodes only the base-relative address bits from $clog2(MAILBOX_SIZE) upward that select a port. Each mailbox has depth MAILBOX_DEPTH and raises inbound_interrupt_o and outbound_interrupt_o as level-sensitive, active-high interrupts.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
NUM_MAILBOXESint unsigned2Number of mailboxes, each with an outbound and an inbound port.
MAILBOX_DEPTHint unsigned8FIFO depth per mailbox. In entries, for each internal message FIFO.
MAX_TRANSint unsigned32AXI-Lite outstanding capacity. Maximum open AXI-Lite transactions per channel in the port demux.
MAILBOX_BASE_ADDRint unsigned32'h0Byte base of mailbox 0. The aperture decode is relative to it.
MAILBOX_SIZEbit [31:0]32'h800Byte span per mailbox port. Register space of one port of an axi_lite_mailbox; a mailbox spans twice this. Must be a power of two.
ADDR_WIDTHint unsigned32AXI-Lite address width.
DATA_WIDTHint unsigned64AXI-Lite data width.
StrbWidthint unsignedDATA_WIDTH / 8Write-strobe width.
MailboxSizeWint unsigned$clog2(MAILBOX_SIZE)Lowest address bit of the port select.

Ports

Table 2. Ports
NameDirectionTypeDescription
clk_iinputlogicSystem clock. Clocks all mailbox logic and the AXI-Lite interface; the unit has one clock domain.
rst_niinputlogicAsync reset, active-low. Initializes all mailbox state.
test_en_iinputlogicDFT test enable, driven to the demux and mailbox test inputs.
mailbox_axi_req_iinputaxi_req_tAXI-Lite slave request.
mailbox_axi_resp_ooutputaxi_resp_tAXI-Lite slave response.
inbound_interrupt_ooutputlogic [NUM_MAILBOXES-1:0]Per-mailbox interrupt of the inbound port.
outbound_interrupt_ooutputlogic [NUM_MAILBOXES-1:0]Per-mailbox interrupt of the outbound port.