RAM256X1D - 2023.2 English

UltraScale Architecture Libraries Guide (UG974)

Document ID
UG974
Release Date
2023-10-18
Version
2023.2 English

Primitive: 256-Deep by 1-Wide Dual Port Random Access Memory (Select RAM)

  • PRIMITIVE_GROUP: CLB
  • PRIMITIVE_SUBGROUP: LUTRAM
  • Families: UltraScale, UltraScale+

Introduction

This design element is a 256-bit deep by 1-bit wide random access memory and has a read/write port that writes the value on the D input data pin when the write enable (WE) is high to the memory cell specified by the A address bus. This happens shortly after the rising edge of the WCLK and that same value is reflected in the data output SPO. When WE is low, an asynchronous read is initiated in which the contents of the memory cell specified by the A address bus is output asynchronously to the SPO output. The read port can perform asynchronous read access of the memory by changing the value of the address bus DPRA, and by outputting that value to the DPO data output.

Port Descriptions

Port Direction Width Function
SPO Output 1 Read/Write port data output addressed by A
DPO Output 1 Read port data output addressed by DPRA
D Input 1 Write data input addressed by A
A Input 8 Read/Write port address bus
DPRA Input 8 Read port address bus
WE Input 1 Write Enable
WCLK Input 1 Write clock (reads are asynchronous)

If instantiated, the following connections should be made to this component:

  • Tie the WCLK input to the desired clock source, the D input to the data source to be stored and the DPO output to an FDCE D input or other appropriate data destination.

  • Optionally, the SPO output can also be connected to the appropriate data destination or else left unconnected.

  • Connect the WE clock enable pin to the proper write enable source in the design.

  • Connect the 7-bit A bus to the source for the read/write addressing and the 7-bit DPRA bus to the appropriate read address connections.

You can use the INIT attribute to specify the initial contents of the RAM. If left unspecified, the initial contents default to all zeros.

Design Entry Method

Instantiation Yes
Inference Recommended
IP Catalog No

Available Attributes

Attribute Type Allowed Values Default Description
INIT HEX Any 256-bit value All zeros Specifies the initial contents of the RAM.
IS_WCLK_INVERTED BINARY 1'b0 to 1'b1 1'b0 Specifies whether or not to use the optional inversion on the WCLK pin.

VHDL Instantiation Template

Unless they already exist, copy the following two statements and paste them before the entity declaration.
Library UNISIM;
use UNISIM.vcomponents.all;

-- RAM256X1D: 256-deep by 1-wide positive edge write, asynchronous read
--            dual-port distributed LUT RAM
--            UltraScale
-- Xilinx HDL Language Template, version 2023.2

RAM256X1D_inst : RAM256X1D
generic map (
   INIT => X"0000000000000000000000000000000000000000000000000000000000000000", -- Initial contents of RAM
   IS_WCLK_INVERTED => '0') -- Specifies active high/low WCLK
port map (
   DPO => DPO,     -- Read/Write port 1-bit ouput
   SPO => SPO,     -- Read port 1-bit output
   A => A,         -- Read/Write port 8-bit address input
   D => D,         -- RAM data input
   DPRA => DPRA,   -- Read port 8-bit address input
   WCLK => WCLK,   -- Write clock input
   WE => WE        -- RAM data input
);

-- End of RAM256X1D_inst instantiation

Verilog Instantiation Template


// RAM256X1D: 256-deep by 1-wide positive edge write, asynchronous read
//            dual-port distributed LUT RAM
//            UltraScale
// Xilinx HDL Language Template, version 2023.2

RAM256X1D #(
   .INIT(256'h0000000000000000000000000000000000000000000000000000000000000000),
   .IS_WCLK_INVERTED(1'b0)  // Specifies active high/low WCLK
) RAM256X1D_inst (
   .DPO(DPO),   // Read port 1-bit output
   .SPO(SPO),   // Read/write port 1-bit output
   .A(A),       // Read/write port 8-bit address input
   .D(D),       // RAM data input
   .DPRA(DPRA), // Read port 8-bit address input
   .WCLK(WCLK), // Write clock input
   .WE(WE)      // Write enable input
);

// End of RAM256X1D_inst instantiation

Related Information

  • UltraScale Architecture Migration: Methodology Guide (UG1026).