In the course of designing an FPGA-based application, it quickly becomes apparent that in order to arrive at the solution one must implement some form of storage, whether it be a simple register file such as a stack or a queue, or a large array of memory for such things as a video display or character generator.
Altera has recognised this need among others, and has developed a Library of
Parameterised Modules (LPMs) that contains, among other things, several memory
modules optimised for use with the Altera FLEX line of programmable devices.
Without these modules, implementing memory using standard VHDL arrays would
consume an excessive number of logic cells. The link below will provide some
details on what types of memory can be implemented, and how to implement it.
The Altera LPMs are adequate for many applications, where a small amount of
memory must be implemented (up to around 8 kilobits). For most applications,
this memory is sufficient. However, there are some instances where this is still
insufficient. For example, it would take 921,600 bits (configured as
307,200 * 3) to implement a fully bit-mapped 8-colour display on the Altera.
thus, sometimes it is impossible to avoid interfacing to external memory. This
application note provides some information on the principles of SRAM and DRAM
operation and some VHDL examples that might work for you. This information
may also apply to other programmable devices or even digital systems design in
general.