Is the Data Count feature available for FIFO Generator Core?
Currently, FIFO Generator Core does support the Data Count feature when using Block Memory type and Distributed Memory type, but it does not support the Data Count feature when using FIFO16 type. The embedded FIFO16 primitive has built-in counters for the read and write clock domains, synchronization logic to cross clock domains, and comparators for the status flags. However, it does not provide a Data Count feature. RDCOUNT and WRCOUNT outputs from FIFO16 are pointers to the memory in their respective read and write clock domains.
If you have a request for this feature, open an online WebCase with Xilinx Customer Support:
and have the hotline engineer link the case to this Answer Record: (Xilinx Answer 21014). This will ensure that your request is properly tracked.
In the meantime, you can work around this issue by performing one of the following:
- Use Block Memory type FIFO Generator:
You are basically using the same block RAM resource as if you were using FIFO16. You just will not be using the FIFO16 features that are new to Virtex-4 block RAM, but it will still accomplish the goal by using a few more slices. The additional slice count should be very minimal.
- Use FIFO16 type FIFO Generator, but make use of the programmable Full and Empty features:
This allows you to set the threshold points. See the data sheet on how to use the programmable negate and assert features.
ADDITIONAL NOTE: One of the many capabilities of the FIFO Generator is to concatenate FIFO16 primitives in width and depth to create completely customizable solutions. The core does this by using only minimal fabric logic, and using the FIFO16 embedded capabilities for everything that is possible. If you want a Virtex-4 based FIFO with only FULL, EMPTY, PROG_FULL and PROG_EMPTY feature, use the FIFO16-based FIFO. However, when Data Count feature is needed, Xilinx recommends using Block Memory based FIFO, since data count feature is not supported directly on the FIFO16 primitive itself.