avsbus_async_fifo

Cross AVSBus data between the write and read clock domains in an async FIFO.

Gray-coded pointers cross each way through prim_sync3 synchronizers, so DEPTH must be a power of two. Each side takes its own synchronized reset. vacant_slots_o and full_slots_o report occupancy in the write domain for flow control.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
DEPTHint unsigned8FIFO depth in entries; must be a power of two.
WIDTHint unsigned32FIFO data width in bits.

Ports

Table 2. Ports
NameDirectionTypeDescription
scan_rst_niinputlogicDFT scan reset, active-low; unused.
test_mode_iinputlogicDFT test mode; unused.
rst_wr_clk_syncd_niinputlogicWrite-side reset, synchronized to wr_clk_i.
wr_clk_iinputlogicWrite clock.
wr_en_iinputlogicWrite enable; ignored while wr_full_o is high.
wr_data_iinputlogic [WIDTH-1:0]Write data.
wr_full_ooutputlogicFIFO full in the write domain.
wr_empty_ooutputlogicFIFO empty in the write domain.
rst_rd_clk_syncd_niinputlogicRead-side reset, synchronized to rd_clk_i.
rd_clk_iinputlogicRead clock.
rd_en_iinputlogicRead enable; ignored while rd_empty_o is high.
rd_data_ooutputlogic [WIDTH-1:0]Head entry, read combinationally before rd_en_i.
rd_empty_ooutputlogicFIFO empty in the read domain.
vacant_slots_ooutputlogic [$clog2(DEPTH):0]Free entries, computed in the wr_clk_i domain.
full_slots_ooutputlogic [$clog2(DEPTH):0]Occupied entries, computed in the wr_clk_i domain.