Embedded Memory User Guide: Agilex™ 5 FPGAs and SoCs

ID 813901
Date 9/03/2024
Public
Document Table of Contents

4.2.3.5. FIFO Signals

This section provides diagrams of the SCFIFO and DCFIFO blocks of the FIFO Intel® FPGA IP core to help in visualizing their input and output ports. This section also describes each port in detail to help in understanding their usages, functionality, or any restrictions. For better illustrations, some descriptions might refer you to a specific section in this user guide.
Figure 30. SCFIFO and DCFIFO Input and Output Signals
Figure 31. SYNC_FIFO and ASYNC_FIFO Input and Output Signals

For the SCFIFO block, the read and write signals are synchronized to the same clock; for the DCFIFO block, the read and write signals are synchronized to the rdclk and wrclk clocks respectively. The prefixes wr and rd represent the signals that are synchronized by the wrclk and rdclk clocks respectively.

Table 33.  Input and Output Ports DescriptionThis table lists the signals of the FIFO Intel® FPGA IP core. The term “series” refers to all the device families of a particular device.
Port Type Required Description
clock 11 Input Yes Positive-edge-triggered clock.
wrclk 12 Input Yes Positive-edge-triggered clock.

Use to synchronize the following ports:

  • data
  • wrreq
  • wrfull
  • wrempty
  • wrusedw
rdclk 12 Input Yes Positive-edge-triggered clock.

Use to synchronize the following ports:

  • q
  • rdreq
  • rdfull
  • rdempty
  • rdusedw
data 13 Input Yes

Holds the data to be written in the FIFO Intel® FPGA IP core when the wrreq signal is asserted. The port width is equal to the DATA_WIDTH parameter.

wrreq 13 Input Yes Assert this signal to request for a write operation.

Ensure that the following conditions are met:

  • Do not assert the wrreq signal when the full (for SCFIFO) or wrfull (for DCFIFO) port is high. Enable the overflow protection circuitry or set the overflow_checking parameter to ON so that the FIFO Intel® FPGA IP core can automatically disable the wrreq signal when it is full.
  • The wrreq signal must meet the functional timing requirement based on the full or wrfull signal.
  • Do not assert the wrreq signal during the deassertion of the aclr signal. Violating this requirement creates a race condition between the falling edge of the aclr signal and the rising edge of the write clock if the wrreq port is set to high. For both the DCFIFO functions, set the write_aclr_synch parameter to ON to synchronize the aclr signal with the wrclk clock.
rdreq 13 Input Yes Assert this signal to request for a read operation. The rdreq signal acts differently in normal mode and show-ahead mode.

Ensure that the following conditions are met:

  • Do not assert the rdreq signal when the empty (for SCFIFO) or rdempty (for DCFIFO) port is high. Enable the underflow protection circuitry or set the underflow_checking parameter to ON so that the FIFO Intel® FPGA IP core can automatically disable the rdreq signal when it is empty.
  • The rdreq signal must meet the functional timing requirement based on the empty or rdempty signal.
sclr 11

aclr 13

Input No Assert this signal to clear all the output status ports, but the effect on the q output may vary for different FIFO configurations.

There are no minimum number of clock cycles for aclr signals that must remain active.

By default, the aclr port is enabled. Make sure either aclr or sclr port is enabled and included in the design to ensure the correct functionality of the FIFO.

q 13 Output Yes

Shows the data read from the read request operation. For the SCFIFO function and DCFIFO function, the width of the q port must be equal to the width of the data port. If you manually instantiate the FIFO functions, ensure that the port width is equal to the DATA_WIDTH (SCFIFO) or DATA_WIDTH_A (DCFIFO) parameter.

For the DCFIFO_MIXED_WIDTHS function, the width of the q port can be different from the width of the data port. If you manually instantiate the FIFO function, ensure that the width of the q port is equal to the DATA_WIDTH_B parameter. The FIFO function supports a wide write port with a narrow read port, and vice versa. However, the width ratio is restricted by the type of RAM block, and in general, are in the power of 2.

full 11

wrfull 12

rdfull 12

Output No

When asserted, the FIFO is considered full. Do not perform write request operation when the FIFO is full.

FOr DCFIFO, the rdfull signal functions as a combinational output instead of a derived version of the wrfull signal. Therefore, you must always refer to the wrfull port to ensure whether or not a valid write request operation can be performed, regardless of the target device.

empty 11

wrempty 12

rdempty 12

Output No When asserted, the FIFO core is considered empty. Do not perform read request operation when the FIFO core is empty.

For DCFIFO, the wrempty signal functions as a combinational output instead of a derived version of the rdempty signal. Therefore, you must always refer to the rdempty port to ensure whether or not a valid read request operation can be performed, regardless of the target device.

almost_full 11 Output No Asserted when the usedw signal is greater than or equal to the ALMOST_FULL_VALUE parameter. It is used as an early indication of the full signal.
almost_empty 11 Output No Asserted when the usedw signal is less than the ALMOST_EMPTY_VALUE parameter. It is used as an early indication of the empty signal. 14
usedw 11

wrusedw 12

rdusedw 12

Output No Show the number of words stored in the FIFO.
If you manually instantiate the SCFIFO function or the DCFIFO function:
  • For SCFIFO, ensure that the port width is equal to the ADDR_WIDTH parameter.
  • For DCFIFO, ensure the width of the wrusedw and rdusedw ports must be equal to the ADDR_WIDTH_A and ADDR_WIDTH_B parameters respectively.
  • For the DCFIFO_MIXED_WIDTH function, the width of the wrusedw and rdusedw ports must be equal to the ADDR_WIDTH_A and ADDR_WIDTH_B parameters respectively.

The FIFO shows full even before the number of words stored reaches its maximum value. Therefore, you must always refer to the full or wrfull port for valid write request operation, and the empty or rdempty port for valid read request operation regardless of the target device.

byteena Input Yes Byte enable port at Port A to mask the data_a port so that only specific bits of data are written to the memory. This port is enabled in FIFO because the simple RAM (SCFIFO) or pseudo RAM (DCFIFO) supports data with BYTE_SIZE.

The DCFIFO function rdempty output may momentarily glitch when the aclr input is asserted. To prevent an external register from capturing this glitch incorrectly, ensure that one of the following is true:

  • The external register must use the same reset which is connected to the aclr input of the DCFIFO function, or
  • The reset connected to the aclr input of the DCFIFO function must be asserted synchronous to the clock which drives the external register.

The output latency information of the FIFO Intel® FPGA IP core is important, especially for the q output port, because there is no output flag to indicate when the output is valid to be sampled.

11 Only applicable for the SCFIFO function.
12 Applicable for both of the DCFIFO functions.
13 Applicable for the SCFIFO, DCFIFO, and DCFIFO_MIXED_WIDTH functions.
14 Under certain condition, the SCFIFO asserts the empty signal without ever asserting the almost_empty signal. Refer to SCFIFO ALMOST_EMPTY Functional Timing for more details.