Data Flow

Versal ACAP Memory Resources Architecture Manual (AM007)

Document ID
Release Date
1.1 English

The true dual-port 36 Kb block RAM dual-port memories consist of a 36 Kb storage area and two completely independent access ports, A and B. Similarly, each 18 Kb block RAM dual-port memory consists of an 18 Kb storage area and two completely independent access ports, A and B. The structure is fully symmetrical, and both ports are interchangeable. The following figure illustrates the true dual-port data flow of a RAMB36. The following table lists the port functions and descriptions.

Data can be written to either or both ports and can be read from either or both ports. Each write operation is synchronous, and each port has its own address, data in, data out, clock, clock enable, and write enable. The read and write operations are synchronous and require a clock edge.

There is no dedicated monitor to arbitrate the effect of identical addresses on both ports.

Important: The two clocks must be timed appropriately. Conflicting simultaneous writes to the same location never cause any physical damage but can result in data uncertainty.
Note: The Vivado® tools automatically determine if a block RAM is used in SDP or TDP mode.
Figure 1. RAMB36 Usage in a True Dual-Port Data Flow

Table 1. True Dual-Port Functions and Descriptions
Port Function Description
ARST_[A|B] Asynchronous reset that resets the output register for port A and B to all zeros.
DIN[A|B] Data input bus.
DINP[A|B](1) Data input parity bus. Can be used for additional data inputs.
ADDR[A|B] Address bus.
WE[A|B] Byte-wide write enable.
EN[A|B] When inactive, no data is written to the block RAM and the output bus remains in its previous state.
RSTREG[A|B] Synchronous set/reset of the output registers (DO_REG = 1). The RSTREG_PRIORITY attribute determines the priority over REGCE.
RSTRAM[A|B] Synchronous set/reset of the output data latches.
CLK[A|B] Clock input.
DOUT[A|B] Data output bus.
DOUTP[A|B](1) Data output parity bus. Can be used for additional data outputs.
REGCE[A|B] Output register clock enable.
CASDIN[A|B] Cascade data input bus.
CASDINP[A|B] Cascade parity input bus.
CASDOUT[A|B] Cascade data output bus.
CASDOUTP[A|B] Cascade parity output bus.
SLEEP Dynamic shutdown power saving. If SLEEP is active, the block is in power saving mode.
  1. Data-In Buses – DINADIN, DINPADINP, DINBDIN, and DINPBDINP has more information on data parity pins.
  2. Block RAM primitive port names can be different from the port function names.
  3. For a more complete cascade data flow and port descriptions, see Cascadable Block RAM and Block RAM Library Primitives.