Home | Microprocessor | Labs Index |XUP-UNM V1000 Project|Workshops | Links & Datasheets | General Educational Material


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.


 


alnz | UNM - XUP