Professional Documents
Culture Documents
Multi-Ported Random Access Memories (Mprams)
Multi-Ported Random Access Memories (Mprams)
1.2. Limitations
1. MPRAM
A SRAM cell is a Complementary Metal-Oxide Semiconductor (CMOS) bi-stable circuit built
out of CMOS cross-coupled inverters and access pass-gates. To provide more access ports,
the basic SRAM bit cell can be altered to provide more bit lies, word lines, and access
transistors, however, the area growth is quadratic with the number of ports. Furthermore,
this requires a custom design for each unique set of parameters (e.g., number of ports,
width and depth of RAM). In FPGAs, one way of synthesizing a multi-ported RAM is to build
from registers and logic (works for small size memories), and the other method is build
them from RAM blocks.
2. CAM
CAMs are usually custom-designed at the transistor-level. The four additional transistors
over the standard six-transistor SRAM cell form a comparison circuit, an XOR with NMOS-
stack only, since its output (the match line) is pulled-up. The area growth of traditional
CAM techniques in FPGAs is high and is currently limited to 64k entries.
Wide and shallow RAMs are needed to efficiently implement brute-force CAMs. Shallow
RAMs are required because each extra bit in the CAM pattern width doubles the required
RAM depth, resulting in poor efficiency. In addition, deeper CAMs can be built by
increasing RAM width. However, FPGA RAM block width is growing slowly. For example,
M4K blocks in Stratix II devices have minimal depth of 128 with maximal width of 36, M9K
blocks in Stratix III and Stratix IV devices have minimal depth of 256 and maximal width of
36, M20K blocks in Stratix V devices have minimal depth of 512 and maximal width of 40.
With the increasing depth of RAMs, and limited width growth, the brute-force approach is
getting less efficient.
Altera Stratix V 5SGXMABN1F45C2 device: High-end performance-oriented speed grade 2
device with 360k ALMs, 2640 M20K blocks, and 1064 I/O pins. Half of the ALMs can be used
to construct Memory Logic Array Blocks (MLABs), where a single MLAB consists of 10
ALMs.
Altera’s M20K blocks can be configured into several RAM depth and data width
configurations. The total amount of utilized SRAM bits can be either 16K bits or 20K bits.
Assuming that the RAM packing process minimizes the number of blocks cascaded in
depth to avoid additional address decoding, each 16K lines will be packed into single bit-
wide blocks, and the remainder will be packed into the minimal required configuration.
An estimation of the number of packed M20K blocks required to construct a RAM with a
specific depth d, and data width w, is nM20K(d, w).
1. Cross Connect