The following table lists the block RAM primitives.
Primitive | Description |
---|---|
RAMB36E5 RAMB18E5 |
|
The block RAM library primitives RAMB18E5 and RAMB36E5 are the basic building blocks for all block RAM configurations. Other block RAM primitives and macros are based on these primitives. Some block RAM attributes can only be configured using one of these primitives (for example, pipeline register, cascade).
The input and output data buses are represented by two buses for 9-bit width (8 + 1), 18-bit width (16 + 2), and 36-bit width (32 + 4) configurations. The ninth bit associated with each byte can store parity/error correction bits or serve as additional data bits. No specific function is performed on the ninth bit. The separate bus for parity bits facilitates some designs. However, other designs safely use a 9-bit, 18-bit, or 36-bit bus by merging the regular data bus with the parity bus. Read/write and storage operations are identical for all bits, including the parity bits.
The following figure illustrates all the I/O ports of the 36 Kb true dual-port block RAM primitive (RAMB36). The following table lists these primitives.
Primitive | Description |
---|---|
RAMB36E5 |
|
RAMB18E5 |
|
The following table shows the port names and descriptions of the primitives outlined in the previous table. The ECC ports are described in Built-in Error Correction.
Port Name | Description |
---|---|
DINADIN[31:0] | Port A data inputs addressed by ADDRARDADDR. See Table 5 for SDP usage port name mapping. |
DINPADINP[3:0] | Port A data parity inputs addressed by ADDRARDADDR. See Table 5 for SDP usage port name mapping. |
DINBDIN[31:0] | Port B data inputs addressed by ADDRBWRADDR. See Table 5 for SDP usage port name mapping. |
DINPBDINP[3:0] | Port A data parity inputs addressed by ADDRBWRADDR. See Table 5 for SDP usage port name mapping. |
ADDRARDADDR[11:0] | Port A address input bus. When used as SDP memory, this is the RDADDR bus. |
ADDRARDADDR[10:0] | (RAMB18E5 ONLY) Port A address input bus. When used as SDP memory, this is the RDADDR bus. |
ADDRBWRADDR[11:0] | Port B address input bus. When used as SDP memory, this is the WRADDR bus. |
ADDRBWRADDR[10:0] | (RAMB18E5 ONLY) Port B address input bus. When used as SDP memory, this is the WRADDR bus. |
ARST_A | Asynchronous reset that resets the output register for port A to all zeros. |
ARST_B | Asynchronous reset that resets the output register for port B to all zeros. |
WEA[3:0] | Port A byte-wide write enable. When used as SDP memory, this port is not used. |
WEBWE[8:0] | Port B byte-wide write enable. In SDP mode, this is the byte-wide write enable. |
ENARDEN | Port A enable. When used as SDP memory, this is RDEN. |
ENBWREN | Port B enable. When used as SDP memory, this is WREN. |
RSTREGARSTREG | Synchronous output register set/reset as initialized by SRVAL_A (DOA_REG = 1). RSTREG_PRIORITY_A determines the priority over REGCE. When used as SDP memory, this is RSTREG. |
RSTREGB | Synchronous output register set/reset as initialized by SRVAL_B (DOA_REG = 1). RSTREG_PRIORITY_B determines the priority over REGCE. |
RSTRAMARSTRAM | Synchronous output latch set/reset as initialized by SRVAL_A (DOB_REG = 0). When used as SDP memory, this is RSTRAM. |
RSTRAMB | Synchronous output latch set/reset as initialized by SRVAL_B (DOB_REG = 0). |
CLKARDCLK | Port A clock input. When used as SDP memory, this is RDCLK. |
CLKBWRCLK | Port B clock input. When used as SDP memory, this is WRCLK. |
REGCEAREGCE | Port A output register clock enable (DOA_REG = 1). When used as SDP memory, this is REGCE. |
REGCEB | Port B output register clock enable (DOB_REG = 1). |
CASDINA[31:0] | Port A cascade data input connected to data output of lower block RAM. For RAMB18E5: CASDINA[15:0]. |
CASDINPA[3:0] | Port A cascade parity data input connected to parity data output of lower block RAM. For RAMB18E5: CASDINPA[1:0]. |
CASDINB[31:0] | Port B cascade data input connected to data output of lower block RAM. For RAMB18E5: CASDINB[15:0]. |
CASDINPB[3:0] | Port B cascade parity data input connected to parity
data output of lower block RAM. For RAMB18E5: CASDINPB[1:0]. |
CASDOUTA[31:0] | Port A cascade data output connected to CASDINA[31:0] of upper block RAM. For RAMB18E5: CASDOUTA[15:0]. |
CASDOUTPA[3:0] | Port A cascade parity data output connected to CASDINPA[3:0] of upper block RAM. For RAMB18E5: CASDOUTPA[1:0]. |
CASDOUTB[31:0] | Port B cascade data output connected to CASDINB[31:0] of upper block RAM. For RAMB18E5: CASDOUTB[15:0]. |
CASDOUTPB[3:0] | Port B cascade parity data output connected to CASDINPB[3:0] of upper block RAM. For RAMB18E5: CASDOUTPB[1:0]. |
CASDOMUXA | Selects input to control the data cascade output multiplexer for port A. |
CASDOMUXEN_A | Enables control for the CASDOMUXA register. |
CASDOMUXB | Selects input to control the data cascade output multiplexer for port B. |
CASDOMUXEN_B | Enables control for the CASDOMUXB register. When used as SDP memory, this port is not used. |
CASOREGIMUXA | Selects input to control the cascade multiplexer before the output register for Port A. |
CASOREGIMUXEN_A | Enables control for the CASOREGIMUXA register. |
CASOREGIMUXB | Selects input to control the cascade multiplexer before the output register for Port B. When used as SDP memory, this port is not used. |
CASOREGIMUXEN_B | Enables control for the CASOREGIMUXB register. When used as SDP memory, this port is not used. |
DOUTADOUT[31:0] | Port A data output bus addressed by ADDRARDADDR. See Table 5 for SDP usage port name mapping. RAMB18E5: DOUTADOUT[15:0]. |
DOUTPADOUTP[3:0] | Port A parity output bus addressed by ADDRARDADDR. See Table 5 for SDP usage port name mapping. RAMB18E5: DOUTPADOUTP[1:0]. |
DOUTBDOUT[31:0] | Port B data output bus addressed by ADDRBWRADDR. See Table 5 for SDP usage port name mapping. RAMB18E5: DOUTBDOUT[15:0]. |
DOUTPBDOUTP[3:0] | Port B parity output bus addressed by ADDRBWRADDR. See Table 5 for SDP usage port name mapping. RAMB18E5: DOUTPBDOUTP[1:0]. |
SLEEP | Dynamic power gating. |