Write Operation - 1.0 English

Embedded FIFO Generator LogiCORE IP Product Guide (PG327)

Document ID
PG327
Release Date
2023-05-10
Version
1.0 English

This section describes the behavior of a FIFO write operation and the associated status flags. When write enable is asserted and the FIFO is not full, data is added to the FIFO from the input bus (din) and write acknowledge (wr_ack) is asserted. If the FIFO is continuously written to without being read, it fills with data. Write operations are only successful when the FIFO is not full. When the FIFO is full and a write is initiated, the request is ignored, the overflow flag is asserted, and there is no change in the state of the FIFO (overflowing the FIFO is non-destructive).

almost_full and full Flags

The almost full flag (almost_full) indicates that only one more write can be performed before full is asserted. This flag is active-High and synchronous to the write clock (wr_clk).

The full flag (full) indicates that the FIFO is full and no more writes can be performed until data is read out. This flag is active-High and synchronous to the write clock (wr_clk). If a write is initiated when full is asserted, the write request is ignored and overflow is asserted.

Example Operation

The following figure shows a typical write operation. When you assert wr_en, it causes a write operation to occur on the next rising edge of the wr_clk. Because the FIFO is not full, wr_ack is asserted, acknowledging a successful write operation. When only one additional word can be written into the FIFO, the FIFO asserts the almost_full flag. When almost_full is asserted, one additional write causes the fifo to assert full. When a write occurs after full is asserted, wr_ack is deasserted and overflow is asserted, indicating an overflow condition. After you perform one or more read operations, the FIFO deasserts full, and data can successfully be written to the FIFO, as is indicated by the assertion of wr_ack and deassertion of overflow.

Figure 1. Write Operation for a FIFO with Independent Clocks