HyperRAM / Octal SPI PSRAM 控制器:超总线、低延迟刷新与 XIP
更新时间:2026-09-19。前置:Quad/Octal SPI 控制器、SPI Flash XIP、DDR3 刷新。片上 SRAM 容量小,外挂一片引脚少、带宽比 QSPI 高的 **HyperRAM(HyperBus PSRAM)**或 OctalSPI PSRAM 可获得数 MB~数十 MB 低成本 RAM。
本文要回答的问题
- HyperBus 接口为什么只需约 12 根线就能高速随机访问?
- RWDS 信号起什么作用,读写延迟怎么定?
- PSRAM 内部仍是 DRAM,刷新怎么处理、为什么会插等待?
- 怎么把它当内存甚至 XIP 用,OctalSPI 模式如何兼容?
一、HyperBus 接口
HyperRAM 采用 HyperBus 规范,主要信号:
- DQ[7:0]:8 位双向数据/命令地址复用,**双数据率(DDR)**在 CK 上升/下降沿都传。
- CK / CK#:差分(或单端+反相)时钟。
- RWDS:Read/Write Data Strobe,读时从设备驱动指示有效字节/延迟,写时主设备用它做掩码;是源同步选通。
- CS#(片选)、RESET#,加上电源/地,约 12 根。
- 命令和地址在传输开始的几个双沿周期通过 **CA(Command/Address)**经同一 DQ 总线发出,之后紧跟线性突发数据——地址自动递增,适合顺序取指/大块 DMA。
带宽 = 8 位 × 双沿 × 时钟频率,常见 100~200MHz DDR,等效 200~400MB/s,远高于 QSPI。
二、读写时序与延迟
一次读(概念):
CS# 拉低
CA 周期: DQ 上传命令(读)+起始地址(分若干双沿)
初始延迟 latency: 设备内部准备(RWDS 在此期间参与指示)
数据突发: 从设备在 CK 双沿驱动 DQ,RWDS 指示有效;地址线性自增
CS# 拉高结束- 初始延迟(Initial Latency, IL):读命令后等固定若干周期才出数据,类似 DDR 的 CL。HyperRAM 支持固定延迟和可变初始延迟:可变模式下设备可通过 RWDS 额外插入等待周期(用于内部刷新撞上读时),主设备必须采样 RWDS 判断数据是否有效,不能假设固定拍数。
- 写有写延迟,写数据时主设备用 RWDS 作字节掩码(类似 DM),未屏蔽字节才更新。
- RWDS 是双向、方向随读/写切换的源同步信号,控制器要正确管理输出使能和三态(见 SPI 从机三态)。
三、刷新与 PSRAM 本性
PSRAM 名字里有 SRAM,内核实际是 DRAM(1T 单元),必须周期性刷新。与传统 DRAM 不同:
- HyperRAM 自带刷新控制器,外部不需要发 REFRESH 命令,接口看起来像随机访问存储器。
- 但当主机的读/写恰好撞上内部自动刷新时,设备用 RWDS 在可变延迟模式下插入额外等待周期(最多固定上限),这就是访问延迟偶尔变长的原因。
- 配置寄存器里设刷新间隔、温度补偿(高温缩短)、部分阵列刷新等。固定延迟模式下设备保证在规定最大延迟内完成刷新而不额外插等,但可能牺牲一点最坏频率;实时系统要按最坏延迟评估。
四、OctalSPI 与模式兼容
很多 PSRAM 同时支持两种封装/协议:
- HyperBus 模式:如上,CA+RWDS+DDR。
- OctalSPI(OPI)模式:8 数据线的 SPI 超集,命令/地址/数据都走 8 线、可选 DTR(双沿),用 DQS 选通;兼容标准 SPI/QSPI 命令风格,控制器从厂商命令集(如 0xEE 退出 reset、0xED 读、8 线 DTR 配置)配置。
- 上电默认可能在慢的 SPI/兼容模式,软件先发命令切到 Octal/HyperBus、配延迟和驱动强度。模式选择有的靠上电时某引脚电平,有的靠命令,需按器件手册。
五、内存映射与 XIP
控制器把 HyperRAM 映射成一段连续地址空间:
- 软件/硬件对该段发起读,控制器自动发 CA+取数据并做突发;顺序访问用最长线性突发提效率,随机访问要承受每次 CA+latency 开销。
- XIP(Execute In Place):可把代码放外部 PSRAM 直接取指(PSRAM 可写,常用于加载代码/数据;代码 XIP 更常见于 NOR Flash,见 XIP 启动)。关键是随机取指/分支时的延迟,靠 cache 行填充(长突发)、预取缓冲掩盖,与 AXI 突发 同源。
- 写有读-改-写(非整字节/掩码)和缓冲写;写时序与读共用总线要仲裁。
- DMA 连续搬运用线性突发效率最高(见 DMA 突发对齐)。
- 低功耗:支持 deep power-down,进入后数据靠刷新保持或停止刷新(看模式),唤醒需重新等就绪。
六、控制器要点与常见坑
- 不处理可变延迟:忽略 RWDS 等待指示,撞上内部刷新时读到错数据;必须采样 RWDS 或配置固定延迟并满足最坏时序。
- RWDS 方向切换错:读/写三态使能不当,总线冲突。
- CA 周期/位序错:命令地址在双沿的排布按规范,错位则全片不响应。
- 双沿当单沿:控制器只在上升沿收发,数据率减半且错位。
- 延迟参数配错:初始延迟小于设备实际,采样在数据有效前。
- 上电停留在兼容慢模式:没发切换命令就按 Octal/HyperBus 高速驱动。
- 刷新/温度补偿配错:高温下刷新不足导致位翻转(同 DDR 刷新风险)。
- 随机访问当 SRAM:每次访问都付 CA+latency,性能崩塌,要靠突发/cache。
- 写掩码(RWDS)用反:半字/字节写覆盖相邻数据。
- CS# 突发边界处理错:超过设备线性突发回绕边界未重发 CA,地址回卷。
- 深度掉电唤醒时序不足:未等就绪就访问。
- SI/端接:DDR 高速下走线不等长/阻抗不连续出错,降频可过是典型信号(见 信号完整性)。
相关与延伸
单线/多线 SPI 基础见 Quad/Octal SPI;XIP 见 SPI Flash XIP;DRAM 刷新原理见 DDR 控制器;突发填充见 AXI 突发与 cache。
总结
HyperRAM/OctalSPI PSRAM 用约 12 根 HyperBus 信号线(8 位 DQ 在 CK/CK# 双沿传命令地址和数据、RWDS 做源同步选通与写掩码、CS#/RESET#)实现 8 线 DDR 高带宽外部 RAM:传输先发几个双沿 CA 命令地址再做地址自增的线性突发,读后有初始延迟、在可变延迟模式下设备可用 RWDS 插入等待来掩盖其内部 DRAM 的自动刷新;PSRAM 自带刷新控制器但本质是 DRAM、高温要补偿,软件上电先从兼容 SPI 模式切到 Octal/HyperBus 并配延迟,映射成内存后靠长突发与 cache 行填充掩盖随机访问延迟——忽略 RWDS 可变等待、CA/双沿配错、把它当零等待 SRAM 和高速 SI 不良是四大坑。