Synchronous/Asynchronous Dual Port RAM

Features

Family Support

3200DX, MX

Description

The RAM cores use 3200DX and MX, 32x8 or 64x4, dual port RAM cells.

In the synchronous mode, the read and write operations are totally independent and can be performed simultaneously. The operation of the RAM is fully synchronous with respect to the clock signals, WClock and RClock. Data of value Data are written to the WAddress of the RAM memory space on the rising (RISE) or falling (FALL) edge of the clock WClock (WCLK_EDGE). Data are read from the RAM memory space at RAddress into Q on the rising (RISE) or falling (FALL) edge of the clock signal RClock (RCLK_EDGE).

The behavior of the RAM is unknown if you write and read at the same address and signals WClock and RClock are not the same. The output Q of the RAM depends on the time relationship between the write and the read clock.

In the asynchronous mode, the operation of the RAM is only synchronous with respect to the clock signal WClock. Data of value Data are written to the WAddress of the RAM memory space on the rising (RISE) or falling (FALL) edge of the clock signal WClock (WCLK_EDGE). Data are read from the RAM memory space at RAddress into Q after some delay when RAddress has changed.

The behavior of the RAM is unknown if you write and read at the same address. The output Q depends on the time relationship between the write clock and the read address signal.

The WIDTH (word length) and DEPTH (number of words) have continuous values but the choice of WIDTH limits the choice of DEPTH and vice versa.

The write enable (WE) and read enable (RE) signals are active high request signals for writing and reading, respectively; you may choose not to use them.

Port Description

Port Name

Size

Type

Req/Opt

Function

Data

WIDTH

input

Req.

Input Data

WE

1

input

Opt.

Write Enable

RE

1

input

Opt.

Read Enable

WClock

1

input

Req.

Write clock

RClock

1

input

Opt.

Read clock

Q

WIDTH

output

Req.

Output Data

Parameter Description

Parameter

Value

Function

WIDTH

width

Word length of Data and Q

Depth

depth

Number of RAM words

WE_POLARITY

1 2

WE can be active high or not used

RE_POLARITY

1 2

RE can be active high or not used

WCLK_EDGE

RISE FALL

WClock can be rising or falling

RCLK_EDGE

RISE FALL NONE

RClock can be rising, falling, or not used

Implementation Parameters

Parameter

Value

Description

LPMTYPE

LPM_RAM_DQ

Generic Dual Port RAM category

Fan-in Parameters

Parameter

Value

Description

RAMFANIN

AUTO MANUAL

See Fan-In Control section below

Parameter Rules

Parameter Rules

If RCLK_EDGE is NONE (Asynchronous mode), then RE_POLARITY must be 2 (note used)

The number of RAM blocks used (function of width and depth) must be less than or equal to the number of RAM blocks in one column of the largest device.

Fan-In Control

One of the key issues when building RAM cores is control of the routing congestion near the RAM cells. The problem becomes more critical when deep RAM cores are built. You need to broadcast signals throughout the height of the chip. The place-and-route algorithm could have difficulties satisfying all routing constraints. As a result, much slower routing resources could be allocated to satisfy all constraints. To make this problem less likely, a special buffering scheme has been implemented to relieve the congestion near the RAM cells. However, you may choose to control the buffering yourself to improve performances when needed. The RAM core can be built using either the automatic buffering architecture or the manual buffering architecture.

Automatic Buffering

In this mode (default), a buffering scheme is automatically built into the RAM core architecture (see the figure below). This mode should always be considered first. However, if the performance is not met, it may be better to use the manual buffering option.

Automatic Buffering for RAM cores

Manual Buffering

The figure below (Manual Buffering) shows how manual buffering is executed. A fan-in of one (1) is enforced on all signals fanning out to more than one RAM cell. If these signals were broadcast to all RAM cells, very slow routing resources (long freeways) would be required to route the signals impacting the RAM performance.

Manual buffering should only be used if the expected performance is not realized using the automatic buffering scheme, or if you know ahead of time that you need to use this scheme to meet your timing goals. In this architecture, the idea is not to buffer the signals internally but rather give some kind of access to the RAM core internal signals. Then, you must buffer the signals outside the core and either use traditional buffers or duplicate the logic that drives these signals externally. If you choose manual buffering, the WE, RE, Waddress(i), RAddress(i), and Data[i] signals become busses external to the core. For all these signals, the bus width is equal to the number of RAM cells (used to build a given configuration) driven by each signal. The Manual Buffering figure below illustrates the manual buffering architecture for a 96x8 RAM configuration, built of three 32x8 configured RAM cells. In this configuration, the WE, RE, WAddress and RAddress signals drive all RAM cells simultaneously. The Manual Buffering for the Data Bus shows a 128x8 RAM configuration, built using four 64x4 configured RAM cells. In that configuration, the 8-bit data bus is split into two completely independent 4-bit data busses.

Manual Buffering (96x8 RAM Configuration)

 

 

Manual Buffering for the Data Bus (128x8 RAM Configuration)

 

Timing Waveforms

Timing waveforms for this core are available in the SmartGen Cores Reference Guide. The reference guide is located in the designer\doc directory on the hard drive where you installed your Actel Libero IDE or Designer software.