楊園格
(西安明德理工學(xué)院,陜西 西安710124)
21 世紀(jì)是一個(gè)信息量爆發(fā)的時(shí)代,信息數(shù)據(jù)以及處理速度在不斷增加,對(duì)MCU 的處理速度和處理能力要求變得越來越高,其相應(yīng)的片內(nèi)存儲(chǔ)模塊SRAM 容量也在增加,但是片內(nèi)SRAM 采用的6T 結(jié)構(gòu),成本較高,對(duì)其面積不易做得太大[1]。為了解決RAM 資源需求不斷提升的問題,PSRAM(Pseudo static random access memory)存儲(chǔ)技術(shù)給出了解決方案。PSRAM 是一種偽靜態(tài)隨機(jī)存儲(chǔ)器[2],采用的是1T1C 架構(gòu),其制作容量可以做的更大,價(jià)格也相對(duì)更低,被廣泛應(yīng)用于物聯(lián)網(wǎng)數(shù)據(jù)緩存方案中。由此,本文提出基于AHB 總線高速訪問串行PSRAM 的架構(gòu),可以實(shí)現(xiàn)對(duì)PSRAM 各種指令模式的訪問,提高數(shù)據(jù)傳輸效率。
PSRAM 的通信接口分為串行接口和并行接口。常用的串行接口包括SPI、Quad SPI 等。由于其串行通信管腳較少,相應(yīng)的占用的PCB 面積較少,在IOT 芯片中應(yīng)用較為廣泛,可以有效解決信息數(shù)據(jù)的緩存問題。但是,由于串行PSRAM 采用的是串行接口,也限制了其與MCU 芯片的數(shù)據(jù)傳輸速率[3]。
SQPI PSRAM 采用的通信接口模式為SPI mode、Quad mode,其操作模式與串口Flash 的類似。PSRAM 可以外掛在MCU 芯片的外部,根據(jù)應(yīng)用需求更改容量大小。對(duì)芯片的通信引腳一般如下表1 所示。
表1 PSRAM 通信端口描述
一般串行PSRAM 的訪問模式分為普通讀寫模式,速度在50MHz 以下;快速度模式,速度可達(dá)100MHz 以上。不同的廠商有不同的設(shè)計(jì)模式以及通信速度。
對(duì)于PSRAM 的訪問控制設(shè)計(jì)結(jié)構(gòu)如圖1 所示。該控制器由AHB 總線配置[4]模塊、AHB_to_SQPI 控制模塊、FIFO 模塊(數(shù)據(jù)收發(fā)復(fù)用)、以及SQPI 主機(jī)模塊構(gòu)成。該結(jié)構(gòu)使得MCU 可以直接通過AHB 總線去訪問PSRAM 的地址空間,而無需關(guān)注中間的數(shù)據(jù)流走向。
圖1 AHB 訪問SQPI PSRAM 架構(gòu)
本控制結(jié)構(gòu)的RTL 設(shè)計(jì)主要是上圖1 所描述的模塊。
AHB 接口配置模塊:該模塊主要用來配置SQPI 控制相關(guān)的寄存器、FIFO 控制相關(guān)的寄存器、中斷產(chǎn)生寄存器以及AHB 總線讀寫相關(guān)邏輯。在MCU 初始化時(shí),會(huì)相應(yīng)的初始化SQPI PSRAM 控制相關(guān)的寄存器:配置SQPI 訪問時(shí)鐘、SPI/Quad_SPI選擇、接收中斷使能選擇以及狀態(tài)寄存器等,這也就是對(duì)SQPI驅(qū)動(dòng)的配置。
AHB_to_SPI 控制模塊:該模塊進(jìn)行SQPI 的指令解析、讀寫模式選擇、數(shù)據(jù)地址分配等;并且根據(jù)MCU 是隨機(jī)地址讀寫還是連續(xù)地址讀寫,去調(diào)控FIFO 的讀寫使能[5],實(shí)現(xiàn)動(dòng)態(tài)控制。SQPI PSRAM 的主要指令如表2 所示,該模塊會(huì)對(duì)MCU 對(duì)該模塊寄存器控制初始化,進(jìn)行指令解析,進(jìn)而控制SQPI Master 數(shù)據(jù)收發(fā)類型。
表2 SQPI PSRAM 指令類型
FIFO 模塊:這里PSRAM 是串行通信單bit 傳輸,而MCU 的AHB 總線是32bit 并行傳輸,這就造成速度差,MCU 必須等待本次數(shù)據(jù)輸出完成后才能傳輸下一次數(shù)據(jù)。為此,本文采用了64x32bit FIFO 實(shí)現(xiàn)數(shù)據(jù)緩存,MCU 需要寫的數(shù)據(jù)會(huì)存入到FIFO 中,同時(shí)其所要寫入的地址也會(huì)被寄存下來;然后在AHB_to_SPI 模塊的控制下,依次由SPI Master 發(fā)送出去。MCU寫完數(shù)據(jù)就認(rèn)為其已經(jīng)將數(shù)據(jù)寫入到PSRAM,而后面的一系列操作完全由硬件自主完成。MCU 在讀取PSRAM 數(shù)據(jù)時(shí)也是類似,該模塊會(huì)在數(shù)據(jù)到來后通知MCU 來讀取數(shù)據(jù),這里可以采用產(chǎn)生中斷方式或者M(jìn)CU 輪詢方式實(shí)現(xiàn)。
圖2 PSRAM SPI mode 讀操作
SQPI Master 模塊:主要實(shí)現(xiàn)PSRAM SQPI 的通信接口協(xié)議,實(shí)現(xiàn)對(duì)片選信號(hào)ce_n、通信時(shí)鐘sclk 以及輸入輸出信號(hào)的時(shí)序控制。該模塊進(jìn)行了FSM 狀態(tài)設(shè)計(jì),用來控制各種狀態(tài)切換。在PSRAM 的SQPI 時(shí)序中有指令段、地址段和數(shù)據(jù)段,如圖2 所示。這里給出了SPI mode 讀操作下的數(shù)據(jù)分配,其中指令段占用8bit,地址段占用24bit,數(shù)據(jù)段每次輸出8bit 數(shù)據(jù)可連續(xù)輸出;同時(shí)這里也指出了數(shù)據(jù)流順序,以及各個(gè)信號(hào)的時(shí)序。
在狀態(tài)機(jī)設(shè)計(jì)時(shí),分為四種狀態(tài)IDLE 狀態(tài)、CMD 狀態(tài)(指令發(fā)送)、ADDR 狀態(tài)(地址發(fā)送)以及DATA 狀態(tài)(數(shù)據(jù)發(fā)送和接收),如圖3 所示。在MCU 對(duì)PSRAM 進(jìn)行尋址操作時(shí),會(huì)觸發(fā)狀態(tài)機(jī)進(jìn)入CMD 狀態(tài);8bit 指令發(fā)送完畢后,會(huì)根據(jù)是否發(fā)送PSRAM 地址,選擇進(jìn)入ADDR 狀態(tài)或DATA 狀態(tài)。當(dāng)進(jìn)入ADDR 狀態(tài),會(huì)等待24bit 地址發(fā)送完成后,進(jìn)入DATA 狀態(tài);如果不需要發(fā)送地址,則直接進(jìn)入DATA 狀態(tài)。在DATA 狀態(tài),會(huì)進(jìn)行數(shù)據(jù)發(fā)送或者數(shù)據(jù)接收。該狀態(tài)會(huì)根據(jù)需要接收的數(shù)據(jù)或發(fā)送的數(shù)據(jù)個(gè)數(shù),以及FIFO 的狀態(tài)來決定是否跳出DATA 狀態(tài),返回IDLE。
圖3 SQPI Master 狀態(tài)機(jī)
在RTL 設(shè)計(jì)完成之后,搭建測(cè)試平臺(tái)進(jìn)行測(cè)試。在該設(shè)計(jì)中,內(nèi)核時(shí)鐘采用16MHz;SQPI 時(shí)鐘采用60MHz,可進(jìn)行分頻60MHz/30MHz/15MHz。MCU 內(nèi)核采用Cortex-M0,外掛PSRAM仿真模型進(jìn)行仿真,驗(yàn)證了該設(shè)計(jì)的正確性。最后,在FPGA 平臺(tái)上進(jìn)行了系統(tǒng)測(cè)試,并選用了某廠家的64Mbit SQPI PSRAM進(jìn)行了驗(yàn)證,訪問模式采用60MHz Quad SPI mode,測(cè)試結(jié)果符合設(shè)計(jì)要求。
串行PSRAM 因容量大、引腳少,價(jià)格相對(duì)較低的優(yōu)勢(shì),使其在物聯(lián)網(wǎng)芯片的應(yīng)用中得到普及。 本文研究了基于AHB 總線的PSRAM 高速訪問設(shè)計(jì),MCU 通過AHB 總線直接實(shí)現(xiàn)對(duì)PSRAM 存儲(chǔ)器的尋址,內(nèi)部轉(zhuǎn)換模塊自動(dòng)實(shí)現(xiàn)對(duì)SQPI 的數(shù)據(jù)收發(fā)時(shí)序控制,可高效完成對(duì)PSRAM 的讀寫。該設(shè)計(jì)通過了FPGA 測(cè)試驗(yàn)證,具有較高的實(shí)用價(jià)值。