新聞中心

EEPW首頁 > 消費(fèi)電子 > 設(shè)計應(yīng)用 > 基于DMA的高速數(shù)據(jù)閃存陣列的設(shè)計方案

基于DMA的高速數(shù)據(jù)閃存陣列的設(shè)計方案

作者: 時間:2018-09-06 來源:網(wǎng)絡(luò) 收藏

1.引言

本文引用地址:http://butianyuan.cn/article/201809/388613.htm

NAND FLASH由于其存儲的容量大,小體積,同時讀寫速度快,外圍電路簡單而成為現(xiàn)在存儲應(yīng)用中的主流產(chǎn)品。但NAND FLASH的寫操作比較特殊,在存儲數(shù)據(jù)時要先寫入存儲命令和存儲地址,編程時不能對其執(zhí)行任何操作。傳統(tǒng)的由單片機(jī)作為核心的采集采用查詢的方式對NAND FLASH進(jìn)行編程,不僅操作復(fù)雜,而且減慢了存儲速度。

為此設(shè)計了一種基于DMA傳輸方式的高速存儲陣列。采用DMA方式實(shí)現(xiàn)了對命令和地址的傳輸,并實(shí)現(xiàn)流水線存儲過程,加快了存儲速度。而且系統(tǒng)以FPGA為平臺,集成度高,具有靈活的總線寬度,拓寬了存儲陣列的應(yīng)用環(huán)境。

2.系統(tǒng)結(jié)構(gòu)

數(shù)據(jù)存儲系統(tǒng)結(jié)構(gòu)如圖1所示,包括以下3個部分:

(1)FPGA,數(shù)據(jù)存儲系統(tǒng)的核心,集成度高,功耗低,內(nèi)部嵌有總線結(jié)構(gòu)靈活,并行處理能力強(qiáng)的軟處理器核MICROBLAZE,并有用戶自定義的IP核,可以實(shí)現(xiàn)對閃存陣列的控制和數(shù)據(jù)的正確存儲,而且可以將陣列中存儲的數(shù)據(jù)上傳到電腦,進(jìn)行數(shù)據(jù)的后期處理。

( 2 )存儲陣列:系統(tǒng)采用4×4陣列形式,由SAMSUNG公司的K9NBG08U5A搭建而成。構(gòu)建閃存陣列時,所有FLASH使用相同的控制信號;同一列的FLASH的片選信號相同,但數(shù)據(jù)通道不同;同一行的FLASH的片選信號不同,而數(shù)據(jù)通道相同。

(3)USB接口:上位機(jī)和存儲系統(tǒng)的交互通過USB接口進(jìn)行,上位機(jī)將命令和配置信息通過USB接口傳入FPGA,使FPGA內(nèi)部的MICROBLAZE執(zhí)行相應(yīng)的操作。數(shù)據(jù)回讀時通過USB接口將數(shù)據(jù)傳回上位機(jī)。本設(shè)計采用FIDI公司的FT245R作為上位機(jī)與FPGA通信的USB接口芯片。使用FIDI公司提供的D2XX驅(qū)動程序,最快的傳輸速率高達(dá)1MBps.

3.DMA設(shè)計實(shí)現(xiàn)

DMA的作用是控制閃存陣列的操作,達(dá)到數(shù)據(jù)的快速存儲。其設(shè)計主要包括兩部分:DMA方式寫命令和地址,流水線操作流程的實(shí)現(xiàn)。DMA方式寫命令和地址是用硬件的方法將閃存陣列編程需要的命令碼和地址按時序釋放到數(shù)據(jù)總線,節(jié)約了單片機(jī)查詢時所浪費(fèi)的時間;流水線操作流程是DMA對閃存陣列編程階段等待的時間的利用,提高了存儲速度。

3.1 DMA方式寫命令和地址

對FLASH進(jìn)行存儲操作時應(yīng)先向FLASH寫入編程開始命令,然后是五個周期的有效塊存儲地址和2K字節(jié)數(shù)據(jù),最后寫入結(jié)束編程命令。用DMA方式傳送命令和地址花費(fèi)的時間低于單片機(jī)查詢的方式,提高了存儲速度。由于系統(tǒng)閃存陣列規(guī)模小,可以選用全相關(guān)的無效塊管理方法,其控制簡單、算法容易實(shí)現(xiàn)。無效塊的信息事先緩存于地址FIFO,待數(shù)據(jù)存儲時,由DMA讀取。此外每片NAND FLASH的編程命令碼相同,所以對每一列閃存操作時,每個FLASH IO口上的數(shù)據(jù)是相同的。DMA方式寫命令和地址如圖2所示,相同的地址和命令先并置在一起,然后通過DMA方式發(fā)送到數(shù)據(jù)總線,最后在每個FLASH的I/O口將分配。

圖2中的八選一電路的作用是按flash的操作時序?qū)ù鎯?shù)據(jù),命令,地址放到FLASH的IO總線上,通道的選擇由DMA控制。與此同時,相應(yīng)的控制信號ALE、CLE、WE等變?yōu)橛行щ娖剑瑢?shí)現(xiàn)命令、數(shù)據(jù)、地址的寫入。

這個部分時序仿真如圖3所示。信號線一是頻率為50MHz的時鐘信號;信號線二是FLASH寫信號;信號線三是ALE信號線,當(dāng)它為高電平時,寫入FLASH的地址將鎖存到地址寄存器;信號線四是CLE信號,當(dāng)它為高電平時,寫入FLASH的命令將鎖存到命令寄存器;剩下的信號是讀數(shù)據(jù)FIFO的信號。

3.2 DMA實(shí)現(xiàn)流水線操作流程

K9NBG08U5A對有效數(shù)據(jù)的存儲操作包括加載階段和編程階段,編程階段期間,F(xiàn)PGA不能對FLASH進(jìn)行操作,因此對于單片F(xiàn) L A S H存儲器而言,編程階段的時間被浪費(fèi),不利于達(dá)到快速存儲。為此可采用時分多路復(fù)用的方法對數(shù)據(jù)進(jìn)行存儲,具體實(shí)現(xiàn)方式就是首先對第一列的Nandflash加載數(shù)據(jù),數(shù)據(jù)加載完后,第一列Nandflash隨后就將進(jìn)入自動編程狀態(tài),立即再加載第二列FLASH.如此循環(huán)進(jìn)行數(shù)據(jù)加載,直到最后一片加載完成后,再回到第一片。這樣就充分利用了編程階段的時間,使存儲速度得到提升,此過程也稱流水線操作。

為了實(shí)現(xiàn)流水線的存儲方式,本文也用DMA控制器實(shí)現(xiàn)了對FLASH的片選。如圖4所示,圖中flash_ce_s代表每列flash的片選信號,其中低電平代表對flash加載有效,從圖中可以看出DMA控制器對flash依次加載,實(shí)現(xiàn)了流水線的操作流程。

4.系統(tǒng)驗證

本設(shè)計在用戶邏輯里設(shè)計一個計數(shù)時鐘為16MHZ的計數(shù)器,計數(shù)時鐘每來一次,就將數(shù)據(jù)分別緩存于四個FIFO并將數(shù)據(jù)通過DMA的方式存入閃存陣列系統(tǒng)中。通過上位機(jī)將數(shù)據(jù)回讀,如圖5所示。

從圖中可以看出連續(xù)的4個字節(jié)的數(shù)據(jù)都是相同的,它們分別來自4個緩存FIFO的同一個次計數(shù)的數(shù)據(jù)。同時,數(shù)據(jù)每4個字節(jié)是按一遞增,即沒有出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象。由此可知系統(tǒng)的DMA控制器可以實(shí)現(xiàn)閃存陣列對數(shù)據(jù)的快速,正確存儲。

5.結(jié)論

本文在測控系統(tǒng)中海量數(shù)據(jù)的快速存儲的基礎(chǔ)上提出了一種基于DMA的數(shù)據(jù)存儲陣列系統(tǒng)的設(shè)計方案。它是以FPGA為平臺構(gòu)建的SOPC系統(tǒng),內(nèi)含軟核處理器Microblaze和包含DMA控制器的用戶自定義IP,通過實(shí)驗驗證了本方案所設(shè)計的DMA控制器實(shí)現(xiàn)了對閃存陣列的編程命令、地址的傳輸,以及存儲陣列的流水線編程,提高了傳統(tǒng)的由CPLD與單片機(jī)組成的存儲測試系統(tǒng)的速度。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉