16.11.2015 Views

UltraScale Architecture Memory Resources

ug573-ultrascale-memory-resources

ug573-ultrascale-memory-resources

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapter 2: Built-in FIFO<br />

PROGFULL Flag<br />

If PROGFULL is asserted, the number of words in the FIFO is greater than or equal to<br />

PROG_FULL_THRESH.<br />

Because of the inherent latencies in the FIFO, especially for the independent-clocks FIFO,<br />

PROGFULL is always considered a pessimistic flag. This means that not all read operations<br />

might have synchronized to the WRCLK domain, and therefore the words in the FIFO might<br />

be reported as more than there actually are in the FIFO. However, because the PROGFULL<br />

flag is synchronous to the WRCLK domain, PROGFULL is generally used to determine how<br />

many locations in the FIFO are available to be written, so the over-reporting of PROGFULL<br />

guarantees that too many words are never written to the FIFO.<br />

The number of clock cycles required for a read operation to cause PROGFULL to deassert<br />

depends on the FIFO configuration. For an independent-clocks FIFO, a read operation is<br />

first synchronized internally to the WRCLK domain before it can influence the status of the<br />

PROGFULL flag, resulting in a latency from the read operation to the deassertion of<br />

PROGFULL that is a combination of a few read clocks followed by a few write clocks.<br />

The PROGFULL flag is synchronous to the WRCLK domain and is intended as a status signal<br />

for logic writing to the FIFO.<br />

Flag Assertion/Deassertion and Flag Latencies<br />

Flag assertion and deassertion timing depends on the configuration of the FIFO. The<br />

common-clock FIFO configuration is not affected by the uncertainty of two unrelated clock<br />

domains, and requires no synchronization between clock domains. Therefore, the internal<br />

latencies from a write operation to the deassertion of EMPTY or PROGEMPTY, or from a read<br />

operation to the deassertion of FULL or PROGFULL, are much faster than in an equivalent<br />

independent-clock FIFO. Similarly, a FIFO configured with asymmetric ports has additional<br />

latencies depending on the port width ratios of the read and write port. The configuration<br />

of the REGISTER_MODE, FIRST_WORD_FALL_THROUGH, and EN_ECC_PIPE attributes can<br />

increase the latency from a write operation to the deassertion of EMPTY up to three<br />

additional RDCLK cycles.<br />

Independent-clock FIFOs are synchronized between clock domains. Due to this internal<br />

synchronization between the WRCLK domain and the RDCLK domain, certain transitions<br />

take several clock cycles. For example, it takes several clock cycles (both WRCLK and RDCLK<br />

clock cycles) for the write operation to synchronize to the RDCLK domain. Only after the<br />

write operation is synchronized to the RDCLK domain is that write operation reflected in the<br />

status of the RDCLK outputs EMPTY and PROGEMPTY, and possibly cause these flags to<br />

deassert.<br />

Similarly, the internal synchronization between the RDCLK domain and the WRCLK domain<br />

also takes several clock cycles. For example, it takes several clock cycles (both RDCLK and<br />

WRCLK clock cycles) for the read operation to synchronize to the WRCLK domain. Only after<br />

the read operation is synchronized to the WRCLK domain is that read operation reflected in<br />

<strong>UltraScale</strong> <strong>Architecture</strong> <strong>Memory</strong> <strong>Resources</strong> www.xilinx.com<br />

Send Feedback<br />

74<br />

UG573 (v1.2) February 24, 2015

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!