11-10-2015 06:59 PM
What are the advantages/disadvantages of implementing a FPGA FIFO using one of the following implementations: Flip-flops vs Look-Up Tables vs Block Memory.
Most documentation states that small amounts of data should be placed on the FFs (<100 bytes), medium amounts of data (100-300 bytes) on the LUTs, and large amounts of data on the Block Memory. Does this have something to do with speed or resource availability?
Thanks,
Craig
11-10-2015
08:40 PM
- last edited on
04-28-2025
07:31 PM
by
Content Cleaner
Craige,
It's mostly about the tradeoff between speed and available resources. The documentation sums up the reasons to use one over the other pretty well.
The cRIO developer's guide has Flip-Flops as the fastest implementation but because they are used in so many operations they are probably the most limited resource. This is why it is the best option if you don't have a large queue. On the opposite end, Block Memory is a resource on the FPGA dedicated to storing memory. It is how DMA and P2P FIFOs are implemented but in a target scoped FIFO you may have to deal with latency (it does have the advantage of being able to be used across clock domains). LUTs are in the middle in regards to your question. they are still used in other FPGA operations but are not as scare of a resource as Flip-Flops.
I am not sure about the speed differences between FIFOs implemented with Flip-Flops vs LUTs if there is one.