Memory Controller - 1.0 English

Versal Adaptive SoC Soft DDR4 SDRAM Memory Controller LogiCORE IP Product Guide (PG353)

Document ID
PG353
Release Date
2023-10-18
Version
1.0 English

The Memory Controller (MC) is designed to take Read, Write, and Read-Modify-Write transactions from the user interface (UI) block and issues them to memory efficiently with low latency, meeting all DRAM protocol and timing requirements, while using minimal Versal adaptive SoC resources. The MC operates with a DRAM to system clock ratio of 4:1 and can issue one Activate, one CAS, and one Precharge command on each system clock cycle.

The MC supports an open page policy and can achieve very high efficiencies with workloads with a high degree of spatial locality. The MC also supports a closed page policy and the ability to reorder transactions to efficiently schedule workloads with address patterns that are more random. The MC also allows a degree of control over low-level functions with a UI control signal for AutoPrecharge on a per transaction basis as well as signals that can be used to determine when DRAM refresh commands are issued.

The key blocks of the MC command path include:

  1. The Group FSMs that queue up transactions, check DRAM timing, and decide when to request Precharge, Activate, and CAS DRAM commands.
  2. The "Safe" logic and arbitration units that reorder transactions between Group FSMs based on additional DRAM timing checks while also ensuring forward progress for all DRAM command requests.
  3. The Final Arbiter that makes the final decision about which commands are issued to the PHY and feeds the result back to the previous stages.

The maintenance blocks of the MC command path include:

  1. Blocks that generate refresh and ZQCS commands
  2. Commands needed for VT tracking
  3. Optional block that implements a SECDED ECC for 72-bit, 40-bit, and 24-bit wide data buses

The following figure shows the MC block diagram.

Figure 1. Memory Controller Block Diagram