伪静态随机存储器(PSRAM)
概述
PSRAM(Pseudo Static Random Access Memory,伪静态随机存储器)是一种兼具 SRAM 易用性与 DRAM 高密度特性的存储器。它内部集成刷新控制器并对软件完全透明,因此既能像 SRAM 一样通过简单接口按地址随机读写,又能提供接近 DRAM 的存储容量与更低的单位成本。
芯片通过 PSRAM 控制器(PSRAMC)与 PSRAM 通信,实现数据的高速传输,适用于音视频处理、图像传输等需要较大数据缓冲区、且对带宽有一定要求的应用场景。
功能特性
PSRAM 设备特性
存储单元:基于 DRAM 电容结构,集成内部刷新控制器。
并行接口:数据线(DQ0~DQn)与控制信号(CS、CK/CK#、DQS、RESET)。
自动刷新:内部刷新控制器定期维护数据完整性,无需软件干预。
温度自适应刷新:集成温度传感器,高温(>85°C)时自动缩短刷新间隔以保障数据可靠性,常温时延长间隔以降低功耗。
高速访问:支持 DDR(Double Data Rate,双倍数据速率)传输模式,适合高带宽数据处理。
Burst 访问:支持连续地址读写,提升数据传输效率。
随机访问:允许在任意地址读写数据。
低功耗模式:支持半睡眠(half-sleep)和深度睡眠(Deep-sleep)两种状态。深度睡眠模式下所有刷新操作停止,数据将丢失。
PSRAM 控制器特性
时钟频率:最高 200 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 250 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 250 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 250 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 250 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 230 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 200 MHz
支持双倍数据速率(DDR)
8/16 位数据位宽(DQ8/16)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
时钟频率:最高 200 MHz
支持双倍数据速率(DDR)
8 位数据位宽(DQ8)
支持 PHY 层自动校准
支持半休眠与深度掉电模式
驱动强度可软件配置
对软件透明:只需访问基地址(0x6000_0000)即可访问 PSRAM 内存。
架构
PSRAMC 的结构如下图所示,分为 PHY 层和 SPIC 控制器两部分:
PHY 层:物理层,负责时序校准、可编程驱动强度配置和信号完整性增强,直接对接 PSRAM 设备。
SPIC 控制器:控制层,负责时序控制、协议转换、仲裁和刷新调度。CPU、DMA 等主控通过 AXI 总线访问 SPIC,进而访问 PSRAM 设备。
使用方法
初始化 PSRAM
启动后自动初始化
设备启动后,Bootloader 会自动判断芯片是否集成 PSRAM,随后执行型号检测,选择最优的时钟频率,完成初始化,无需用户干预。初始化启动日志示例如下:
[PSRAM-I] PSRAM Ctrl CLK: 400000000 Hz
[BOOT-I] Init WB PSRAM
DQS 延迟校准
PSRAM 通过额外的 DQS(Data Strobe)信号线与 DQ(Data)数据信号线保持同步。受走线长度、芯片内部路径等因素影响,DQS 与 DQ 之间可能出现相位偏移,导致采样出错。因此初始化完成后,芯片会自动进行 DQS 延迟校准:通过动态调整 DQS 与 DQ 的相位对齐,优化信号的采样窗口。
校准成功的启动日志示例如下:
[PSRAM-I] Cal win size 16
备注
当校准窗口大小 Cal win size 小于 9 时视为校准失败。此时建议检查信号完整性或适当降低 PSRAM 时钟频率;若仍无法通过校准,请联系 Realtek。
内存布局规划
通过 menuconfig 选择 PSRAM 的链接策略(Link Option),如下:
----MENUCONFIG FOR General----
...
CONFIG Link Option --->
IMG1(Bootloader) running on FLASH or SRAM? (FLASH) --->
IMG2(Application) running on FLASH or PSRAM? (FLASH) --->
(X) FLASH
( ) SRAM
( ) PSRAM
IMG2 Data and Heap in SRAM or PSRAM? (SRAM)
(X) SRAM
( ) PSRAM
[*] ALL PSRAM USED FOR APPLICATION HEAP
...
上述选项用于决定各固件与数据段的存放位置:
IMG2(Application) running on FLASH or PSRAM:选择应用程序代码(IMG2)的运行空间。选择
PSRAM可将应用代码放入 PSRAM 运行,以缓解 Flash 容量或带宽压力。IMG2 Data and Heap in SRAM or PSRAM:选择应用程序数据段与堆的存放位置。数据量较大时可选择
PSRAM。ALL PSRAM USED FOR APPLICATION HEAP:勾选后将全部 PSRAM 空间划归应用程序堆使用。
备注
各配置对内存布局的具体影响,参考 RAM 内存布局 。
如果启动日志中出现如下打印,说明当前的内存布局中 PSRAM 的大小和 PSRAM 设备的实际大小不匹配,需要更新 ameba_layout.ld 中 PSRAM_END 的值为 PSRAM 设备的实际末尾地址。
[PSRAM-W] PSRAM_END mismatch: layout=0x60400000, actual=0x60800000, please update ameba_layout.ld
使用须知
高温下使用 PSRAM
PSRAM 依靠周期性刷新维持数据完整性。为避免刷新操作集中占用带宽,PSRAMC 采用 分布式刷新 策略:将刷新命令均匀分散到正常访问的间隙中执行,对软件透明。分布式刷新的最大间隔由 TCEM(Chip Select 低电平最大时间)决定。
TCEM 参数由 SDK 预设,芯片可能采用常温下的标准刷新模式。若应用场景涉及高温(T > 85℃),用户需按以下流程修改代码以确保数据可靠性。
配置规则:
PSRAM 在不同温度范围下的刷新规则如下表所示:
温度范围 |
刷新策略 |
最大刷新间隔 |
|---|---|---|
T ≤ 85°C |
标准刷新模式 |
4μs |
85°C < T ≤ 125°C |
增强刷新模式 |
1μs |
修改步骤:
定位代码文件。
打开 SDK 中的
ameba_psram.c文件,找到函数PSRAM_CTRL_Init()。修改代码。
Psram_Tcem_T25为常温(T ≤ 85°C)参数宏,Psram_Tcem_T85为高温(T > 85°C)参数宏(对应上表的增强刷新模式)。高温场景下, 保持其他内容不变 ,将Psram_Tcem_T25修改为Psram_Tcem_T85即可。psram_ctrl->TPR0 = (CS_TCEM(Psram_Tcem_T85 * 1000 / PsramInfo.PSRAMC_Clk_Unit / 32) | (TPR0_OTHER_FIELDS));
Row Hammer 效应防护
物理机制与风险
成因:高频次访问目标行(Aggressor Row)会导致 相邻行(Victim Row) 电容因电荷泄漏特性而产生异常电荷流失。
后果:引发单比特翻转(SEU)或多比特翻转(MBU),导致数据损坏。
防护方案
分布式行刷新:硬件自动执行,将刷新操作均匀分散,避免高频访问集中。
Cache 访问稀释:在启用 Cache 的 PSRAM 系统中,Cache 通过减少对物理内存的直接访问频率,显著降低 Row Hammer 发生概率:
预取缓冲:将随机访问合并为突发传输,减少物理行激活次数。
写合并:聚合分散的写操作,减少行地址切换频率。
备注
正常使用场景不会出现对同一行的高频激活访问。如果用户确实有此应用场景且引发了相邻行的比特翻转,请联系 Realtek。