楊園格
(西安明德理工學院,陜西 西安710124)
21 世紀是一個信息量爆發的時代,信息數據以及處理速度在不斷增加,對MCU 的處理速度和處理能力要求變得越來越高,其相應的片內存儲模塊SRAM 容量也在增加,但是片內SRAM 采用的6T 結構,成本較高,對其面積不易做得太大[1]。為了解決RAM 資源需求不斷提升的問題,PSRAM(Pseudo static random access memory)存儲技術給出了解決方案。PSRAM 是一種偽靜態隨機存儲器[2],采用的是1T1C 架構,其制作容量可以做的更大,價格也相對更低,被廣泛應用于物聯網數據緩存方案中。由此,本文提出基于AHB 總線高速訪問串行PSRAM 的架構,可以實現對PSRAM 各種指令模式的訪問,提高數據傳輸效率。
PSRAM 的通信接口分為串行接口和并行接口。常用的串行接口包括SPI、Quad SPI 等。由于其串行通信管腳較少,相應的占用的PCB 面積較少,在IOT 芯片中應用較為廣泛,可以有效解決信息數據的緩存問題。但是,由于串行PSRAM 采用的是串行接口,也限制了其與MCU 芯片的數據傳輸速率[3]。
SQPI PSRAM 采用的通信接口模式為SPI mode、Quad mode,其操作模式與串口Flash 的類似。PSRAM 可以外掛在MCU 芯片的外部,根據應用需求更改容量大小。對芯片的通信引腳一般如下表1 所示。

表1 PSRAM 通信端口描述
一般串行PSRAM 的訪問模式分為普通讀寫模式,速度在50MHz 以下;快速度模式,速度可達100MHz 以上。不同的廠商有不同的設計模式以及通信速度。
對于PSRAM 的訪問控制設計結構如圖1 所示。該控制器由AHB 總線配置[4]模塊、AHB_to_SQPI 控制模塊、FIFO 模塊(數據收發復用)、以及SQPI 主機模塊構成。該結構使得MCU 可以直接通過AHB 總線去訪問PSRAM 的地址空間,而無需關注中間的數據流走向。

圖1 AHB 訪問SQPI PSRAM 架構
本控制結構的RTL 設計主要是上圖1 所描述的模塊。
AHB 接口配置模塊:該模塊主要用來配置SQPI 控制相關的寄存器、FIFO 控制相關的寄存器、中斷產生寄存器以及AHB 總線讀寫相關邏輯。在MCU 初始化時,會相應的初始化SQPI PSRAM 控制相關的寄存器:配置SQPI 訪問時鐘、SPI/Quad_SPI選擇、接收中斷使能選擇以及狀態寄存器等,這也就是對SQPI驅動的配置。
AHB_to_SPI 控制模塊:該模塊進行SQPI 的指令解析、讀寫模式選擇、數據地址分配等;并且根據MCU 是隨機地址讀寫還是連續地址讀寫,去調控FIFO 的讀寫使能[5],實現動態控制。SQPI PSRAM 的主要指令如表2 所示,該模塊會對MCU 對該模塊寄存器控制初始化,進行指令解析,進而控制SQPI Master 數據收發類型。

表2 SQPI PSRAM 指令類型
FIFO 模塊:這里PSRAM 是串行通信單bit 傳輸,而MCU 的AHB 總線是32bit 并行傳輸,這就造成速度差,MCU 必須等待本次數據輸出完成后才能傳輸下一次數據。為此,本文采用了64x32bit FIFO 實現數據緩存,MCU 需要寫的數據會存入到FIFO 中,同時其所要寫入的地址也會被寄存下來;然后在AHB_to_SPI 模塊的控制下,依次由SPI Master 發送出去。MCU寫完數據就認為其已經將數據寫入到PSRAM,而后面的一系列操作完全由硬件自主完成。MCU 在讀取PSRAM 數據時也是類似,該模塊會在數據到來后通知MCU 來讀取數據,這里可以采用產生中斷方式或者MCU 輪詢方式實現。

圖2 PSRAM SPI mode 讀操作
SQPI Master 模塊:主要實現PSRAM SQPI 的通信接口協議,實現對片選信號ce_n、通信時鐘sclk 以及輸入輸出信號的時序控制。該模塊進行了FSM 狀態設計,用來控制各種狀態切換。在PSRAM 的SQPI 時序中有指令段、地址段和數據段,如圖2 所示。這里給出了SPI mode 讀操作下的數據分配,其中指令段占用8bit,地址段占用24bit,數據段每次輸出8bit 數據可連續輸出;同時這里也指出了數據流順序,以及各個信號的時序。
在狀態機設計時,分為四種狀態IDLE 狀態、CMD 狀態(指令發送)、ADDR 狀態(地址發送)以及DATA 狀態(數據發送和接收),如圖3 所示。在MCU 對PSRAM 進行尋址操作時,會觸發狀態機進入CMD 狀態;8bit 指令發送完畢后,會根據是否發送PSRAM 地址,選擇進入ADDR 狀態或DATA 狀態。當進入ADDR 狀態,會等待24bit 地址發送完成后,進入DATA 狀態;如果不需要發送地址,則直接進入DATA 狀態。在DATA 狀態,會進行數據發送或者數據接收。該狀態會根據需要接收的數據或發送的數據個數,以及FIFO 的狀態來決定是否跳出DATA 狀態,返回IDLE。

圖3 SQPI Master 狀態機
在RTL 設計完成之后,搭建測試平臺進行測試。在該設計中,內核時鐘采用16MHz;SQPI 時鐘采用60MHz,可進行分頻60MHz/30MHz/15MHz。MCU 內核采用Cortex-M0,外掛PSRAM仿真模型進行仿真,驗證了該設計的正確性。最后,在FPGA 平臺上進行了系統測試,并選用了某廠家的64Mbit SQPI PSRAM進行了驗證,訪問模式采用60MHz Quad SPI mode,測試結果符合設計要求。
串行PSRAM 因容量大、引腳少,價格相對較低的優勢,使其在物聯網芯片的應用中得到普及。 本文研究了基于AHB 總線的PSRAM 高速訪問設計,MCU 通過AHB 總線直接實現對PSRAM 存儲器的尋址,內部轉換模塊自動實現對SQPI 的數據收發時序控制,可高效完成對PSRAM 的讀寫。該設計通過了FPGA 測試驗證,具有較高的實用價值。