Quartus® Prime Pro Edition User Guide: Platform Designer

ID 683609
Date 7/07/2025
Public
Document Table of Contents

6.13.2. Operation of Avalon® -ST Multi-Channel Shared Memory FIFO

The Avalon® -ST Multi-Channel Shared FIFO core allocates dedicated memory segments within the core for each channel. The core's implementation ensures that memory segments occupy a single memory block. The FIFO depth parameter determines the depth of each memory segment.

The core receives data on its in interface ( Avalon® -ST data sink) and stores the data in the allocated memory segments. If a packet contains any error (in_error signal is asserted), the core drops the packet.

When the core receives a request on its Avalon memory-mapped request interface ( Avalon® -MM agent), the core forwards the requested data to its out interface ( Avalon® -ST data source) only when it has received a full packet on its in interface. If the core has not received a full packet, or has no data for the requested channel, the core deasserts the valid signal on its out interface to indicate that data is not available for the channel. The output latency is three, and only one word of data can be requested at a time.

When the Avalon® -MM request interface is not in use, the request_write signal remains asserted and the request_address signal is set to 0. Hence, if you configure the core to support more than one channel, you must also ensure that the Use request parameter is turned on. Otherwise, only channel 0 is accessible.

Figure 292.  Avalon® -ST Multi-Channel Shared Memory FIFO Block Diagram

You can configure almost-full thresholds to manage FIFO overflow. The current threshold status for each channel is available from the core's Avalon® -ST status interfaces in a round-robin fashion. For example, if the threshold status for channel 0 is available on the interface in clock cycle n, the threshold status for channel 1 is available in clock cycle n+1, and so forth.