基于NAND FLASH的高速大容量存儲(chǔ)系統(tǒng)設(shè)計(jì)
3 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)硬件結(jié)構(gòu)組成
本文所設(shè)計(jì)的高速大容量存儲(chǔ)系統(tǒng)的結(jié)構(gòu)框圖如圖4所示。系統(tǒng)中FLASH芯片選用三星公司的K9WBG08U1M,存儲(chǔ)陣列分為8組,采用流水線操作,每組由8片FLASH并聯(lián)共用控制線,各組對(duì)應(yīng)行的FLASH共用數(shù)據(jù)線。系統(tǒng)存儲(chǔ)容量達(dá)到4×8×8=256 GB,存儲(chǔ)速度理論值為40MB/ s×8=320 MB/s。FPGA是整個(gè)系統(tǒng)的控制核心,它將產(chǎn)生各種復(fù)雜的邏輯時(shí)序來(lái)控制外圍芯片協(xié)調(diào)有序地工作,選用Altera公司StratixⅡ系列的EP2S60F484I4芯片,該芯片有48 352個(gè)邏輯單元,內(nèi)置存儲(chǔ)RAM容量達(dá)2.5 MB,滿(mǎn)足緩存數(shù)據(jù)的要求。USB接口電路選用CYPRESS公司的CY7C68013A,該芯片集成了一個(gè)8.5 KB片上RAM的8051核、4 KB的FIFO以及USB 2.0收發(fā)器,滿(mǎn)足USB2.0通信協(xié)議,是進(jìn)行USB2.0開(kāi)發(fā)的常用芯片。壞塊信息存儲(chǔ)電路用于存儲(chǔ)和更新FLASH存儲(chǔ)陣列隨機(jī)出現(xiàn)的壞塊位置,它必須是非易失零出錯(cuò)的存儲(chǔ)介質(zhì),因此選用AMD公司的Am29LV800B NOR型FLASH,存儲(chǔ)容量為8 Mb,保證無(wú)壞塊。本文引用地址:http://www.ex-cimer.com/article/191199.htm
3.2 系統(tǒng)具體實(shí)現(xiàn)
FPGA是整個(gè)硬件系統(tǒng)的核心,它完成電路的復(fù)雜時(shí)序控制,使系統(tǒng)有條不紊地運(yùn)行。FPGA上電后進(jìn)行初始化和加載配置信息,完成后進(jìn)入工作狀態(tài)。首先根據(jù)USB接口電壓判斷是進(jìn)入數(shù)據(jù)記錄狀態(tài)還是數(shù)據(jù)下載狀態(tài),然后分別按照各自流程進(jìn)行工作。FPGA內(nèi)部邏輯設(shè)計(jì)如圖5所示。
由于FLASH存儲(chǔ)陣列是8片并聯(lián)一起操作,因此數(shù)據(jù)總線寬度便為64位,同時(shí)由于USB的接口數(shù)據(jù)寬度為16位,因此系統(tǒng)中使用了2個(gè)FIFO分別進(jìn)行緩存。在系統(tǒng)記錄狀態(tài)下,前端接收到高速串行數(shù)據(jù)后首先進(jìn)行串/并轉(zhuǎn)換,然后為其添加一個(gè)64位的標(biāo)志頭一并存入FIFO緩存,標(biāo)識(shí)頭是用來(lái)標(biāo)記每次的加電情況,方便FLASH數(shù)據(jù)的分段下載。同時(shí)將外部NORFLASH內(nèi)所存儲(chǔ)的壞塊信息讀入FPGA內(nèi)部建立的RAM中,在總接口控制下,屏蔽FLASH存儲(chǔ)陣列內(nèi)部的壞塊,并按一定順序?qū)?shù)據(jù)寫(xiě)入FLASH芯片。由于數(shù)據(jù)在存儲(chǔ)過(guò)程中會(huì)產(chǎn)生新的壞塊,因此在每頁(yè)寫(xiě)操作結(jié)束后需判斷此頁(yè)編程是否成功,若編程失敗,則對(duì)照此壞塊地址更新RAM中的壞塊信息,等待FLASH的存儲(chǔ)操作結(jié)束后,再將更新后的RAM數(shù)據(jù)寫(xiě)入外部NOR FLASH進(jìn)行保存。
在系統(tǒng)下載狀態(tài)時(shí),首先對(duì)FLASH內(nèi)部的存儲(chǔ)數(shù)據(jù)進(jìn)行搜索,找到標(biāo)識(shí)頭所在存儲(chǔ)陣列中的位置并將此位置信息寫(xiě)入FPGA內(nèi)部的RAM中,這樣便可知道每次加電后存儲(chǔ)數(shù)據(jù)在FLASH陣列中的起始?jí)K位置和所占?jí)K的容量。然后通過(guò)上位機(jī)軟件輸入起始位置,塊容量和下載命令后,F(xiàn)PGA內(nèi)部的總接口控制便可根據(jù)這些命令信息,同時(shí)屏蔽壞塊后將FLASH存儲(chǔ)陣列中相應(yīng)的數(shù)據(jù)寫(xiě)入16位FIFO緩存中,隨后便可通過(guò)USB接口下載至計(jì)算機(jī)進(jìn)行數(shù)據(jù)分析。
4 結(jié)語(yǔ)
隨著基于NAND技術(shù)的FLASH固態(tài)存儲(chǔ)器的快速發(fā)展,其存儲(chǔ)密度也越來(lái)越大,而體積、功耗和成本卻在減小,這使得NAND型FLASH在大容量高速存儲(chǔ)設(shè)備的研制中得到廣泛應(yīng)用。本文針對(duì)單片F(xiàn)LASH存儲(chǔ)速度慢的缺點(diǎn),將多片低速FLASH芯片并行起來(lái)工作,同時(shí)又運(yùn)用流水線操作節(jié)省了FLASH的自身編程時(shí)間,從而使得整個(gè)存儲(chǔ)系統(tǒng)的存儲(chǔ)速度大大提高。針對(duì)NAND FLASH內(nèi)部存在壞塊的問(wèn)題,建立了一套完善的壞塊處理機(jī)制,使得系統(tǒng)能夠準(zhǔn)確的存儲(chǔ)數(shù)據(jù),保證數(shù)據(jù)的可靠性。使用FPGA對(duì)FLASH存儲(chǔ)陣列及USB下載電路進(jìn)行控制,充分發(fā)揮了FPGA處理復(fù)雜邏輯的特點(diǎn),簡(jiǎn)化了系統(tǒng)的硬件結(jié)構(gòu)。
評(píng)論