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. Unlike reading from a FIFO or register, you can read data from any location within a memory item, called an address, without respect to the order in which the data was written. You can create memory items in a resource collection or from within a document targeted to an FPGA.

You can read and write data to memory items on the FPGA at run time. You can also pre-initialize data which stores data in memory items, as ROM or RAM, prior to run time. You must always pre-initialize ROM. Pre-initialized data can save logic resources and computation time.

You can implement memory items using look-up tables, block RAM, or dynamic RAM. The best memory item implementation for your system depends on the needs of your particular application.

Memory Item Implementation Advantages Recommendations
Look-up tables (LUTs)
  • Allow access to a memory item within a Clock-Driven Loop
  • Provide an alternative implementation of memory when you have limited block RAM remaining
Implement memory in LUTs when you need to read data from a memory item during the same cycle as the one in which you invoke the memory item. Implementing memory in LUTs consumes logic resources and reduces the number of logic resources available for data processing.
Block RAM (BRAM)
  • Compiles at a high clock rate relative to other types of memory items
  • Does not consume FPGA logic resources
Implement memory items in BRAM to write data in one clock domain and read the data from the same clock domain. Use memory items implemented in BRAM to conserve LUTs on your FPGA.
Dynamic RAM (DRAM)
  • Provides a larger storage capacity than memory items implemented in LUTs or BRAM
  • Does not consume FPGA logic resources
Implement memory items in DRAM when you need to store large sets of data that are not immediately required by other parts of your system. DRAM is ideal for storing large data sets in embedded applications.