You can store and transfer data on an FPGA using FIFOs, memory items, FPGA registers, or handshake items.
Use the following table to determine the best type of data storage and transfer for your application.
|Type of Data Storage or Transfer||Use Case|
|FIFO||Use a FIFO when you need to store multiple sequential data samples. FIFOs support lossless data transfer.|
|Memory Item||Use a memory item when you need to access data without respect to the sequence in which the data is written to memory. Unlike FIFOs, all units of data within a memory item are readable at any time. You can also store data in memory items prior to run time, called pre-initializing data, to use the memory as a read-only reference. Pre-initialized data can save logic resources and computation time.|
|FPGA Register||Use a register when you need to hold only one unit of the specified data size at one time. Data transfer using registers is often lossy, but registers consume fewer FPGA resources than FIFOs when storing equivalent sizes of data. Use registers for synchronization, and pipelining.|
|Handshake Item||Use a handshake item when you want lossless data transfer between multiple clock domains inside the FPGA.|