External Memory Interfaces Agilex™ 7 F-Series and I-Series FPGA IP User Guide

ID 683216
Date 1/30/2025
Public
Document Table of Contents

10.4.5. User-Controlled Refresh

The requirement to periodically refresh memory contents is normally handled by the memory controller; however, the User Controlled Refresh option allows you to determine when memory refresh occurs.

With specific knowledge of traffic patterns, you can time the refresh operations so that they do not interrupt read or write operations, thus improving efficiency.

Note: If you enable the auto-precharge control, you must ensure that the average periodic refresh requirement is met, because the controller does not issue any refreshes until you instruct it to.

To perform a user-controlled refresh in the hard memory controller using the MMR interface, follow these steps:

  1. Write to the register (address=0x019) with the data 0x0000_0010 to enable user refresh.
  2. Write to the mmr_refresh_req register (address=0x02c) with the data 0x0000_0001 to send a refresh request to rank 0.
    Note:
    • Each bit corresponds to one specific rank; for example, data 0x0000_0002 corresponds to rank 1.
    • You may program refreshes to more than one rank at a time.
  3. Read from the mmr_refresh_ack register (address=0x032), the mmr_read signal should only be asserted during one cycle. Read data 1'b1 indicates that a refresh operation is in progress.
  4. You can issue the next refresh request only after you see the acknowledge signal asserted.
  5. You can implement a timer to track tRFC before sending the next user-controlled refresh.