1.引言
NAND FLASH由于其存儲的容量大,小體積,同時讀寫速度快,外圍電路簡單而成為現在存儲應用中的主流產品。但NAND FLASH的寫操作比較特殊,在存儲數據時要先寫入存儲命令和存儲地址,編程時不能對其執行任何操作。傳統的由單片機作為核心的采集采用查詢的方式對NAND FLASH進行編程,不僅操作復雜,而且減慢了存儲速度。
為此設計了一種基于DMA傳輸方式的高速存儲陣列。采用DMA方式實現了對命令和地址的傳輸,并實現流水線存儲過程,加快了存儲速度。而且系統以FPGA為平臺,集成度高,具有靈活的總線寬度,拓寬了存儲陣列的應用環境。
2.系統結構
數據存儲系統結構如圖1所示,包括以下3個部分:
(1)FPGA,數據存儲系統的核心,集成度高,功耗低,內部嵌有總線結構靈活,并行處理能力強的軟處理器核MICROBLAZE,并有用戶自定義的IP核,可以實現對閃存陣列的控制和數據的正確存儲,而且可以將陣列中存儲的數據上傳到電腦,進行數據的后期處理。(2)存儲陣列:系統采用4×4陣列形式,由SAMSUNG公司的K9NBG08U5A搭建而成。構建閃存陣列時,所有FLASH使用相同的控制信號;同一列的FLASH的片選信號相同,但數據通道不同;同一行的FLASH的片選信號不同,而數據通道相同。
(3)USB接口:上位機和存儲系統的交互通過USB接口進行,上位機將命令和配置信息通過USB接口傳入FPGA,使FPGA內部的 MICROBLAZE執行相應的操作。數據回讀時通過USB接口將數據傳回上位機。本設計采用FTDI公司的FT245R作為上位機與FPGA通信的USB接口芯片。使用FTDI公司提供的D2XX驅動程序,最快的傳輸速率高達1MBps。
3.DMA設計實現
DMA的作用是控制閃存陣列的操作,達到數據的快速存儲。其設計主要包括兩部分:DMA方式寫命令和地址,流水線操作流程的實現。DMA方式寫命令 和地址是用硬件的方法將閃存陣列編程需要的命令碼和地址按時序釋放到數據總線,節約了單片機查詢時所浪費的時間;流水線操作流程是DMA對閃存陣列編程階 段等待的時間的利用,提高了存儲速度。
3.1 DMA方式寫命令和地址
對FLASH進行存儲操作時應先向FLASH寫入編程開始命令,然后是五個周期的有效塊存儲地址和2K字節數據,最后寫入結束編程命令。用DMA方式傳送命令和地址花費的時間低于單片機查詢的方式,提高了存儲速度。由于系統閃存陣列規模小,可以選用全相關的無效塊管理方法,其控制簡單、算法容易實現。無效塊的信息事先緩存于地址FIFO,待數據存儲時,由DMA讀取。此外每片NAND FLASH的編程命令碼相同,所以對每一列閃存操作時,每個FLASH IO口上的數據是相同的。DMA方式寫命令和地址如圖2所示,相同的地址和命令先并置在一起,然后通過DMA方式發送到數據總線,最后在每個FLASH的I/O口將分配。
圖2中的八選一電路的作用是按flash的操作時序將包括存儲數據,命令,地址放到FLASH的IO總線上,通道的選擇由DMA控制。與此同時,相應的控制信號ALE、CLE、WE等變為有效電平,實現命令、數據、地址的寫入。
這個部分時序仿真如圖3所示。信號線一是頻率為50MHz的時鐘信號;信號線二是FLASH寫信號;信號線三是ALE信號線,當它為高電平時,寫入FLASH的地址將鎖存到地址寄存器;信號線四是CLE信號,當它為高電平時,寫入FLASH的命令將鎖存到命令寄存器;剩下的信號是讀數據FIFO的信號。
3.2 DMA實現流水線操作流程
K9NBG08U5A對有效數據的存儲操作包括加載階段和編程階段,編程階段期間,FPGA不能對FLASH進行操作,因此對于單片FLASH存儲器而言,編程階段的時間被浪費,不利于達到快速存儲。為此可采用時分多路復用的方法對數據進行存儲,具體實現方式就是首先對第一列的 Nandflash加載數據,數據加載完后,第一列Nandflash隨后就將進入自動編程狀態,立即再加載第二列FLASH。如此循環進行數據加載,直到最后一片加載完成后,再回到第一片。這樣就充分利用了編程階段的時間,使存儲速度得到提升,此過程也稱流水線操作。
為了實現流水線的存儲方式,本文也用DMA控制器實現了對FLASH的片選。如圖4所示,圖中flash_ce_s代表每列flash的片選信號,其中低電平代表對flash加載有效,從圖中可以看出DMA控制器對flash依次加載,實現了流水線的操作流程。
4.系統驗證
本設計在用戶邏輯里設計一個計數時鐘為16MHZ的計數器,計數時鐘每來一次,就將數據分別緩存于四個FIFO并將數據通過DMA的方式存入閃存陣列系統中。通過上位機將數據回讀,如圖5所示。
從圖中可以看出連續的4個字節的數據都是相同的,它們分別來自4個緩存FIFO的同一個次計數的數據。同時,數據每4個字節是按一遞增,即沒有出現數據丟失的現象。由此可知系統的DMA控制器可以實現閃存陣列對數據的快速,正確存儲。
5.結論
本文在測控系統中海量數據的快速存儲的基礎上提出了一種基于DMA的數據存儲陣列系統的設計方案。它是以FPGA為平臺構建的SOPC系統,內含軟核處理器Microblaze和包含DMA控制器的用戶自定義IP,通過實驗驗證了本方案所設計的DMA控制器實現了對閃存陣列的編程命令、地址的傳輸,以及存儲陣列的流水線編程,提高了傳統的由CPLD與單片機組成的存儲測試系統的速度。