Storing and Transferring Data
- Updated2023-02-17
- 1 minute(s) read
Storing and Transferring Data
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. |
Related Information
- Data Transfer Using FIFOs
A FIFO is a data structure that holds elements in the order they are received and provides access to those elements using a first-in, first-out basis.
- Data Transfer Using Memory Items
A memory item is a data storage container of a specified size, used to store and reference data samples on an FPGA.
- Data Transfer Using FPGA Registers
On an FPGA, registers synchronize sections of code that execute at different rates so that data can move between the sections.