Spartan-3E FPGA Family: Functional Description
DS312 (v4.1) July 19, 2013
Product Specification
35
Block RAM
For additional information, refer to the “Using Block RAM”
Spartan-3E devices incorporate 4 to 36 dedicated block
RAMs, which are organized as dual-port configurable
18 Kbit blocks. Functionally, the block RAM is identical to
the Spartan-3 architecture block RAM. Block RAM
synchronously stores large amounts of data while
distributed RAM, previously described, is better suited for
buffering small amounts of data anywhere along signal
paths. This section describes basic block RAM functions.
Each block RAM is configurable by setting the content’s
initial values, default signal value of the output registers,
port aspect ratios, and write modes. Block RAM can be
used in single-port or dual-port modes.
Arrangement of RAM Blocks on Die
The block RAMs are located together with the multipliers on
the die in one or two columns depending on the size of the
device. The XC3S100E has one column of block RAM. The
Spartan-3E devices ranging from the XC3S250E to
XC3S1600E have two columns of block RAM.
Table 21shows the number of RAM blocks, the data storage
capacity, and the number of columns for each device.
Row(s) of CLBs are located above and below each block
RAM column.
Immediately adjacent to each block RAM is an embedded
18x18 hardware multiplier. The upper 16 bits of the block
RAM's Port A Data input bus are shared with the upper 16
bits of the A multiplicand input bus of the multiplier. Similarly,
the upper 16 bits of Port B's data input bus are shared with
the B multiplicand input bus of the multiplier.
The Internal Structure of the Block RAM
The block RAM has a dual port structure. The two identical
data ports called A and B permit independent access to the
common block RAM, which has a maximum capacity of
18,432 bits, or 16,384 bits with no parity bits (see parity bits
description in
Table 22). Each port has its own dedicated
set of data, control, and clock lines for synchronous read
and write operations. There are four basic data paths, as
1.
Write to and read from Port A
2.
Write to and read from Port B
3.
Data transfer from Port A to Port B
4.
Data transfer from Port B to Port A
Number of Ports
A choice among primitives determines whether the block
RAM functions as dual- or single-port memory. A name of
the form RAMB16_S[wA]_S[wB] calls out the dual-port
primitive, where the integers wA and wB specify the total
data path width at ports A and B, respectively. Thus, a
RAMB16_S9_S18 is a dual-port RAM with a 9-bit Port A
and an 18-bit Port B. A name of the form RAMB16_S[w]
identifies the single-port primitive, where the integer w
specifies the total data path width of the lone port A. A
RAMB16_S18 is a single-port RAM with an 18-bit port.
Port Aspect Ratios
Each port of the block RAM can be configured
independently to select a number of different possible
widths for the data input (DI) and data output (DO) signals
Table 21: Number of RAM Blocks by Device
Device
Total
Number of
RAM Blocks
Total
Addressable
Locations
(bits)
Number of
Columns
XC3S100E
4
73,728
1
XC3S250E
12
221,184
2
XC3S500E
20
368,640
2
XC3S1200E
28
516,096
2
XC3S1600E
36
663,552
2
X-Ref Target - Figure 30
Figure 30: Block RAM Data Paths
DS312-2_01_020705
Spartan-3E
Dual-Port
Block RAM
Read 3
Read
Write
Read
Write
Read
Port
A
Port
B
2
1
4