Memory is
the storage device of an embedded system. Memory comes in many different
types and sizes; its basic purpose is to store data and instructions.
There are two very broad categories of memory from the EDK point of
view. There is memory that is created on the FPGA (on chip) and memory
created off of the FPGA (off chip).
The on chip memory is called
Block RAM (BRAM) block. The embedded processor IP blocks that implement
this memory is called bram_block. The BRAM block is a parameterizable
memory module that attaches to a variety of BRAM Interfaces Controllers
and has the following features:
- Uses from 4 to 64 dual-port
BRAMs to provide memory sizes from 2KB to 128KB.
- Both, Port A and Port
B of the memory block can be connected to independent BRAM interface
controllers.
- When used in conjunction
with BRAM interfaces controllers, provides fast internal memory for
LMB (Local Memory Bus), OPB (On-Chip Peripheral Bus), PLB (Processor
Local Bus), and OCM (On-chip Memory).
- Supports PowerPC and Microblaze
systems.
- Supports byte, halfword,
word and doubleword transfers.
Memory is "attached"
to the system and the microprocessor by an interface controller devices
and a bus. EDK supports several types of memory interfaces controllers
such as:
- LMB Block RAM (BRAM) Interface
Controller
- Dual LMB Block RAM (BRAM)
Interface Controller
- OPB External Memory controller
(EMC)
- OPB Synchronous DRAM (SDRAM)
Controller
- OPB Block RAM (BRAM) Interface
Controller
- OPB Double Data Rate (DDR)
Synchronous DRAM (SDRAM) Controller
- PLB External Memory Controller
(EMC)
- PLB Synchronous DRAM (SDRAM)
Controller
- PLB Block RAM (BRAM) Interface
Controller
- PLB Double Data Rate (DDR)
Synchronous DRAM (SDRAM) Controller
- Instruction Side OCM Block
RAM (ISBRAM) Interface Controller
- Data Side OCM Block RAM
(DSBRAM) Interface Controller
Each of these controllers
provides different capabilities depending on the memory type and the
bus used for interconnection. The specifications and parameterization
of these blocks can be found here.
Depending on which processor
our embedded system is using (Microblaze or PowerPC) different considerations
must be taken in account when working with memories, such as addressing,
mapping, base address, etc. For this specifications please refer to
Embedded System Tools Guide, Chapter 29 (Address Management)
As in any computer system, our embedded systems also use a memory hierarchy
to implement the system memory. A sample address map for a Microblaze
system is shown:

[1] Embedded
System Tools Guide; Embedded Development Kit. May 21, 2003. Xilinx.
[2] Computer
Organization & Architecture, Designing for performance. W. Stallings.