Flag assertion and deassertion timing depends on the configuration of the FIFO. The common-clock FIFO configuration is not affected by the uncertainty of two unrelated clock domains, and requires no synchronization between clock domains. Therefore, the internal latencies from a write operation to the deassertion of EMPTY or PROGEMPTY, or from a read operation to the deassertion of FULL or PROGFULL, are much faster than in an equivalent independent-clock FIFO. Similarly, a FIFO configured with asymmetric ports has additional latencies depending on the port width ratios of the read and write port. The configuration of the REGISTER_MODE, FIRST_WORD_FALL_THROUGH, and EN_ECC_PIPE attributes can increase the latency from a write operation to the deassertion of EMPTY up to three additional RDCLK cycles.
Independent-clock FIFOs are synchronized between clock domains. Due to this internal synchronization between the WRCLK domain and the RDCLK domain, certain transitions take several clock cycles. For example, it takes several clock cycles (both WRCLK and RDCLK clock cycles) for the write operation to synchronize to the RDCLK domain. Only after the write operation is synchronized to the RDCLK domain is that write operation reflected in the status of the RDCLK outputs EMPTY and PROGEMPTY, and possibly cause these flags to deassert.
Similarly, the internal synchronization between the RDCLK domain and the WRCLK domain also takes several clock cycles. For example, it takes several clock cycles (both RDCLK and WRCLK clock cycles) for the read operation to synchronize to the WRCLK domain. Only after the read operation is synchronized to the WRCLK domain is that read operation reflected in the status of the WRCLK outputs FULL and PROGFULL, and possibly cause these flags to deassert. Due to the clock phase relationship uncertainty in the independent clock FIFO, the deassertion of the flags can vary by one clock cycle.
| Assertion 1 |
Deassertion Standard FIFO 2 |
Deassertion FWFT FIFO 2 |
|
|---|---|---|---|
| EMPTY | 0 RDCLK | 1 WRCLK and 4 or 5 RDCLK 3 | 1 WRCLK and 5 or 6 RDCLK 3 |
| PROGEMPTY | 1 RDCLK | 1 WRCLK and 5 or 6 RDCLK | 1 WRCLK and 5 or 6 RDCLK |
| FULL | 0 WRCLK | 1 RDCLK and 4 or 5 WRCLK | 1 RDCLK and 4 or 5 WRCLK |
| PROGFULL | 1 WRCLK | 1 RDCLK and 5 or 6 WRCLK | 1 RDCLK and 5 or 6 WRCLK |
|
|||
The programmable flags in the preceding figures are asserted and deasserted based on their threshold settings and there is no dependency or relationship to the EMPTY/FULL flags.
| Assertion 1 |
Deassertion Standard FIFO 2 |
Deassertion FWFT FIFO 2 |
|
|---|---|---|---|
| EMPTY | 0 RDCLK | 0 WRCLK 3 | 1 WRCLK 3 |
| PROGEMPTY | 1 RDCLK | 1 WRCLK | 1 WRCLK |
| FULL | 0 WRCLK | 0 RDCLK | 0 RDCLK |
| PROGFULL | 1 WRCLK | 1 RDCLK | 1 RDCLK |
|
|||
The programmable flags in the preceding figures are asserted and deasserted based on their threshold settings and there is no dependency or relationship to the EMPTY/FULL flags.