Store and transfer data on an FPGA using resource items like FIFOs, memory items, FPGA registers, or handshake items. You can also transfer data on an FPGA using panel controls or indicators.
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.|
|Panel Controls and Indicators||Use panel controls and indicators to transfer the most current data between the FPGA and the host. This method is useful for small and frequent data transfers that require little overhead.|