USER GUIDE / MEMORY / PSRAM / OPERATION FLOW

操作流程

电源启动顺序如图 1 所示,仅供参考。该顺序包括以下步骤:

  1. 上电整个芯片,确保至少 PSRAM 控制器和 PSRAM 已上电。

  2. 复位控制器,使用输入引脚:ctrl_rst_n、axi_rst_n/hresetn 和 prst_n。

  3. 执行 DLL 预初始化过程,如图 2 所示。

  4. 初始化 PSRAM 控制器,包括数字 PHY 初始化和 PSRAM 初始化,如图 3 所示。

完成这些步骤后,系统即可进行正常操作,包括读写操作。

上电序列
图 1 上电序列

DLL 预初始化

在初始化 PSRAM 控制器之前,需要按照图 2 所示的过程进行,以确保 DLL(延迟锁相环)准备好进行初始化。否则,在 DLL 初始化过程中可能会导致不正确的相位值,从而影响后续操作的正常进行。通常,这一步骤仅在初次上电时执行,并且必须在触发 CTRL_REG 之前完成(如果之后再次触发,则不需要重复执行;只需确保 *DELAY_INIT 值适当即可)。这一步确保 DLL 在校准后能够获得 90° 的相位偏移,而不是其他相位。

一般来说,这个过程仅在首次上电时需要执行,后续的 DLL 校准不需要此步骤。然而,如果有其他特殊要求(例如在未上电的情况下)来执行该步骤,应首先配置 DLL_DELAY_CTRL,确保以下设置:

  • WDLL_DELAY = WDLL_DELAY_INIT,

  • RDLL0_DELAY = RDLL0_DELAY_INIT,

  • RDLL1_DELAY = RDLL1_DELAY_INIT.

然后,按照图 2 所示的过程继续操作。

DLL预初始化流程
图 2 DLL预初始化流程

PSRAM 控制器初始化

一旦 DLL 准备好进行校准操作,就可以触发 PSRAM 控制器和 PSRAM 的初始化过程。主要的寄存器配置步骤如下。请注意,寄存器的默认值是为 APS256XXN x16 模式下的 200 MHz 频率定义的,可以根据具体的客户需求通过宏定义进行修改。

初始化流程
图 3 初始化流程
  1. 使用 CFG_REG 寄存器选择数据位宽和 PSRAM 型号。

  2. 根据选择的时钟频率,通过参考 PSRAM 数据手册配置 AC 时序参数、读/写延迟等。有关相关寄存器的信息,参考“寄存器描述”章节。

  3. 根据选择的工作模式,将 PSRAM 的模式寄存器配置写入 MR_INIT 寄存器。这些配置将在初始化过程中写入 PSRAM 的模式寄存器。注意:在硬件复位或退出深度低功耗模式后,如果需要重新配置 PSRAM,则需要重新配置 MR_INIT 寄存器。

  4. 通过向 CTRL_REG 寄存器写入 1'b1 来启动控制器。

  5. 等待控制器完成初始化。通过轮询 INITIAL_STATUS 寄存器获取初始化状态,如果 PSRAM_INITIAL 和 PHY_INITIAL 均为 1,则表示控制器已准备好进行正常的读/写操作。

正常读/写

  • 读/写模式寄存器–读取或写入模式寄存器 MR0、MR1、MR2、MR3、MR4 和 MR8(如适用)。

  • 读/写内存数组:

  • 对于 AXI 接口,axsize 可以是 1、2、4、8 或 16 字节;突发类型应为 INCR 或 WRAP。

  • 对于 AHB 接口,hsize 可以是 1、2、4、8 或 16 字节;突发类型可以是 SINGLE、INCR、INCR4/8/16、WRAP4/8/16;地址应与 hsize 对齐。