System Memory Module IP Core

Use of Embedded Block RAMs or Distributed Memory

The System Memory is designed to be fully compatible with the AHB-Lite and AXI4 standards. It can be configured as a single or dual AHB-Lite interface, depending on if single or dual port memory is needed. The signals from the AHB-L bus are translated into memory compatible signals, which can be directly interpreted by the core memory implementation. But unlike in the AHB-Lite interface, AXI4 is always implemented as a dual port memory. One port of the memory is assigned to AXI4 Write Channels, while the other port is assigned to AXI4 Read Channels. Similar to AHB-Lite interface, AXI4 transactions are translated to memory compatible signals that are directly interpreted by the core memory.

The System Memory Module employs the use of Embedded Block RAMs or Distributed Memory in the MachXO3D family of devices. The memory implementation can be configured as true-dual port, pseudo dual port, single port, or read-only memory.

FIFO Interface - There is a dedicated FIFO interface shared with the AHB-L port S1. This interface is used to inject FIFO data from a FIFO stream.

AXI4-Stream Interface - When the set interface for System Memory is AXI4, the data streamer interface can be set to AXI4-Stream. This interface is fully compatible to the AXI4-Stream standard and is implemented to have a priority to the other AXI4 Write transactions when valid data stream is given.

Memory Implementation - The System Memory Module uses Embedded Block RAMs (EBR) or Distributed Memory in the MachXO3D family of devices, as well Large RAM for LIFCL, LFCPNX, and LFD2NX family of devices. The memory implementation can be configured as true-dual port, pseudo dual port, single port, or read-only memory.

Features

  • Compliant with AMBA 3 AHB-Lite Protocol v1.0
  • Compliant with AMBA AXI4 Protocol
  • Configurable as single or dual port memory, utilizing 1 or 2 AHB-Lite or AXI4 Interfaces
  • Core memory can be implemented as EBR, Distributed RAM, or Large RAM
  • Supports ROM and RAM mode
Lattice Propel

Block Diagram

Resource Utilization

Avant Family
LAV-AT-500E-2LFG1156C
Configuration Clock Fmax (MHz) Register LUTs EBRs
INTERFACE = AXI4, PORT_COUNT = 1,
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192
181.324 303 710 8
INTERFACE = AXI4, PORT_COUNT = 2 (R/W + R/W),
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192
168.039 599 1478 8
INTERFACE = AXI4, PORT_COUNT = 2 (WO + RO),
MEMORY_TYPE = Distributed_RAM, ADDR_DEPTH = 1024,
148.434 510 5093 8
INTERFACE = AXI4, PORT_COUNT = 1,
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192,
DATA_STREAMER=1, STREAMER_INTF=AXI4 (Stream)
175.593 364 801 8
INTERFACE = AHBL, PORT_COUNT = 1
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192,
250 29 131 8
INTERFACE = AHBL, PORT_COUNT = 2 (R/W + R/W)
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192,
250 58 260 8
INTERFACE = AHBL, PORT_COUNT = 2 (WO + RO)
MEMORY_TYPE = Disributed_RAM, ADDR_DEPTH = 8192,
232.775 75 4009 8
CertusPro-NX Family
LFCPNX-100-9LFG672C
Configuration Clock Fmax (MHz) Register LUTs EBRs
INTERFACE = AXI4, PORT_COUNT = 1,
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192
155.812 296 730 16
INTERFACE = AXI4, PORT_COUNT = 2 (R/W + R/W),
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192
151.286 597 1484 16
INTERFACE = AXI4, PORT_COUNT = 2 (WO + RO),
MEMORY_TYPE = Distributed_RAM, ADDR_DEPTH = 1024
95.465 530 6589 16
INTERFACE = AXI4, PORT_COUNT = 1,
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192,
DATA_STREAMER=1, STREAMER_INTF=AXI4 (Stream)
161.865 359 673 16
INTERFACE = AHBL, PORT_COUNT = 1
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192
200 29 138 16
INTERFACE = AHBL, PORT_COUNT = 2 (W/R + W/R)
MEMORY_TYPE = EBR, ADDR_DEPTH = 8192
200 58 260 16
INTERFACE = AHBL, PORT_COUNT = 2 (WO + RO)
MEMORY_TYPE = Disributed_RAM, ADDR_DEPTH = 1024
129.988 74 5444 0

Documentation

Quick Reference
TITLE NUMBER VERSION DATE FORMAT SIZE
Select All
System Memory Module - User Guide
FPGA-IPUG-02073 2.1 2/4/2024 PDF 2.7 MB

*By clicking on the "Notify Me of Changes" button, you agree to receive notifications on changes to the document(s) you selected.