吳 凡
(成都蓉威電子技術(shù)開發(fā)公司 開發(fā)部,四川 成都 610091)
?
基于FPGA和NAND Flash的嵌入式存儲系統(tǒng)設(shè)計
吳凡
(成都蓉威電子技術(shù)開發(fā)公司 開發(fā)部,四川 成都610091)
摘要為了有效解決惡劣工作環(huán)境下對體積有特殊要求的數(shù)據(jù)存儲問題,設(shè)計了基于FPGA和NAND Flash的小尺寸嵌入式存儲系統(tǒng)。系統(tǒng)選用FPGA為控制核心,以NAND Flash作為存儲介質(zhì),采用LVDS接口存儲和回放數(shù)據(jù),通過以千兆網(wǎng)與計算機通信,以文件方式管理數(shù)據(jù),并采用壞塊管理和ECC技術(shù)保證數(shù)據(jù)完整性。實測表明,該系統(tǒng)具有高帶寬、體積小等特點,同時具有實時存儲、回放、加載、卸載和管理功能,并可在惡劣環(huán)境下穩(wěn)定工作。
關(guān)鍵詞存儲系統(tǒng);FPGA;NAND Flash;文件管理;千兆網(wǎng)
Design of Embedded Storage Device Based on FPGA and NAND Flash
WU Fan
(Development Department,Chengdu Electronic Technology Development Company,Chengdu 610091,China)
AbstractA small size embedded storage system based on FPGA and NAND Flash is designed for special data storage requirements in size under harsh working conditions.The system selects FPGA as the control core,NAND flash as the storage medium,and LVDS interface for data storages and replay.Communicates with computers are performed via gigabit network,and data are managed as files with data integrity guaranteed by bad-block management and ECC technology.The experimental results show that the system has the characteristics of high bandwidth and small size,is capable of real-time storage,replay,loading,unloading and management,and can work steadily in the harsh environment.
Keywordsstorage system;FPGA;NAND Flash;file management;gigabit network
數(shù)據(jù)采集系統(tǒng)在進行數(shù)據(jù)采集和信號處理的同時,通常需要將關(guān)鍵數(shù)據(jù)存儲下來用于監(jiān)控設(shè)備的工作狀態(tài),遇到問題后能通過這些數(shù)據(jù)復(fù)原當時的工作場景,為分析問題和解決問題提供依據(jù)。通常需要存儲系統(tǒng)具有容量大、速度快、以文件形式管理數(shù)據(jù)、體積小等特點。根據(jù)這一需求,本文提供了一套完整的數(shù)據(jù)存儲、加載、卸載和回放軟硬件方案;本方案具有體積小、存儲速度快、自動化程度高和工作溫度廣等優(yōu)點。系統(tǒng)以Xilinx公司Virtex-5系列FPGA為主控芯片,Micron公司的NAND Flash芯片MT29F64G08作為文件存儲介質(zhì),Marvell公司的千兆網(wǎng)物理層控制器芯片88E1111作為網(wǎng)絡(luò)橋接芯片與計算機進行通信。
1系統(tǒng)設(shè)計思路
系統(tǒng)采用FPGA夾層卡(FPGA Mezzanine Card,FMC)結(jié)構(gòu),長不超過80 mm,寬不超過70 mm,高不超過15 mm,采用8片NAND Flash,總存儲容量為64 GB,采用TSOP封裝,方便利用FMC插座背面的空間,存儲數(shù)據(jù)接口和回放數(shù)據(jù)接口均采用LVDS接口。
系統(tǒng)以1片F(xiàn)PGA作為控制核心,LVDS接口控制、千兆網(wǎng)接口控制、NAND Flash控制(壞塊管理、ECC和損耗平衡)和文件管理都在FPGA中完成。系統(tǒng)的設(shè)計功能為:(1)存儲。接收前端信號采集設(shè)備的輸入數(shù)據(jù),自動或在主控軟件控制下按照文件方式將數(shù)據(jù)寫入NAND Flash;(2)卸載。通過千兆網(wǎng)和PC機連接,接收主控命令,卸載指定文件;(3)加載。通過千兆網(wǎng)和PC機連接,從PC機加載文件;(4)回放。將主控指定的文件從NAND Flash中讀出,回放到信號處理設(shè)備,模擬數(shù)據(jù)存儲場景,用來分析定位系統(tǒng)問題。
2硬件設(shè)計
系統(tǒng)硬件原理框圖,如圖1所示。
圖1 硬件原理框圖
其中LVDS是存儲數(shù)據(jù)和回放數(shù)據(jù)的接口,千兆網(wǎng)是和計算機連接的接口,接收主控指令,加卸載文件。FPGA芯片選用Xilinx公司的XC5VLX50T,含有28 800個觸發(fā)器,28 800個6輸入查找表,60個36 kB塊存儲器,4個千兆網(wǎng)介質(zhì)訪問控制(Media Access Control,MAC)硬核,360個IO管腳[1]。
千兆以太網(wǎng)的MAC層由FPGA內(nèi)部的MAC硬核實現(xiàn)[2],不占用邏輯資源,PHY芯片選用Marvell公司的88E1111,可支持1000BASE-T、100BASE-TX、
10BASE-T,支持GMII、RGMII、SGMII、TBI、RTBI等接口,通過MDIO接口由FPGA進行配置。
NAND Flash選用Micron公司的MT29F64G08AJABA,單片容量為8 GB。方案使用的Flash芯片內(nèi)部分為兩片,每一片通過芯片的片選信號使能,每一片為一個target,每個target有兩個邏輯單元(Logical Unit,LUN),每個LUN有兩個PLANE,每個PLANE有2 048個塊,每一塊中有128頁,每一頁可以存儲4 096 Byte數(shù)據(jù)[3]。8片NAND Flash組成陣列,同時進行讀、寫或擦除操作。
選用Cypress公司的非易失性隨機訪問存儲器(Non-Volatile Random Access Memory,NVRAM)芯片CY14B104M存儲文件信息表,具有掉電保存功能。系統(tǒng)加電工作時,NVRAM的讀寫速度與普通SRAM相當,NVRAM檢測到系統(tǒng)電壓低于門限電壓時,通過板上電容供電將信息存入內(nèi)部非易失性存儲單元。
3FPGA設(shè)計
系統(tǒng)FPGA包含LVDS接口控制、千兆網(wǎng)接口控制、文件處理和NAND Flash控制4個模塊,文件處理是FPGA的控制中心,如圖2所示。
圖2 FPGA原理框圖
3.1LVDS接口控制
存儲數(shù)據(jù)和回放數(shù)據(jù)通過LVDS接口進入FPGA,分別使用8路數(shù)據(jù)、1路使能和1路時鐘,時鐘頻率125 MHz,雙沿傳輸方式,接口數(shù)據(jù)速率為250 MB·s-1。LVDS接口控制通過IBUFDS和OBUFDS原語完成LVDS差分信號和單端信號的轉(zhuǎn)換,通過IDDR和ODDR原語完成DDR信號和SDR信號的轉(zhuǎn)換。接收存儲數(shù)據(jù)時通過IDELAY原語調(diào)整數(shù)據(jù)線和時鐘線的延時值以進行穩(wěn)定采樣[4-5],通過存儲FIFO送給文件管理模塊,回放數(shù)據(jù)從回放FIFO讀出,轉(zhuǎn)換為DDR信號后通過LVDS接口輸出。
3.2千兆網(wǎng)接口控制
千兆網(wǎng)接口控制模塊在系統(tǒng)復(fù)位后配置FPGA內(nèi)部MAC硬核和外部PHY芯片的寄存器,采用UDP協(xié)議和計算機主控軟件通信。接收時解析UDP包,將主控計算機命令封裝成為帶包頭和包尾標識的數(shù)據(jù)包通過接收FIFO發(fā)送到文件管理模塊。當判斷發(fā)送FIFO非空時,從發(fā)送FIFO中讀出數(shù)據(jù)包,填入MAC地址、網(wǎng)絡(luò)類型等數(shù)據(jù),構(gòu)造UDP包,寫入MAC硬核,發(fā)送到計算機。
3.3文件管理
文件管理模塊有兩個主要功能:命令解析和文件管理。
(1)命令解析。命令解析采用主狀態(tài)機加多個從狀態(tài)機方式,完成命令解析、命令執(zhí)行和命令回應(yīng)等過程。主要命令有上報狀態(tài)、查詢文件列表、文件加載、文件卸載和文件回放等,其命令流程如圖3所示。
圖3 命令解析流程圖
(2)文件管理。文件管理主要通過在NVRAM中維護文件信息表來管理NAND Flash中的數(shù)據(jù)。文件信息表分為系統(tǒng)信息區(qū)和文件信息區(qū)兩部分,如圖4所示。
圖4 文件信息表
系統(tǒng)信息區(qū)存放存儲系統(tǒng)的系統(tǒng)信息,包括存儲總?cè)萘俊⒁延萌萘?、已有文件?shù)和已用地址等。在文件信息區(qū)中按照文件序號存放各個文件的詳細信息,包括文件有效標志、文件名、文件創(chuàng)建時間、文件起始地址、文件大小、文件關(guān)閉時間和文件結(jié)束地址等。系統(tǒng)信息區(qū)占用64 Byte,每個文件占用64 Byte,NVRAM大小為512 kB,可以存放8 000個以上文件。文件地址是邏輯地址,單位為64 kB,需通過Flash控制模塊映射為物理地址。
3.4NAND Flash控制
NAND Flash控制模塊主要功能有控制調(diào)度、壞塊管理[6]、地址映射[7]、數(shù)據(jù)緩存、錯誤檢查和糾正(Error Correcting Code,ECC)校驗[8-9]以及接口時序控制,功能框圖如圖5所示。
圖5 NAND Flash控制模塊原理框圖
單片NAND Flash一頁大小為4 kB,一頁的平均編程時間為230 μs,由此計算單片NAND Flash的寫入速度只能達到17.8 MB·s-1,為提高速度,系統(tǒng)采用以下3種技術(shù):
(1)多Plane同時寫。因為NAND Flash每個LUN含有2個Plane,每個Plane有獨立的數(shù)據(jù)寄存器,所以可一次傳輸2頁數(shù)據(jù)(Plane0和Plane1),然后下發(fā)命令同時編程,相當于寫Flash速度提升為單Plane寫的兩倍,如圖6所示;
圖6 NAND flash結(jié)構(gòu)
(2)Target流水技術(shù),由于一片NAND Flash含有兩個Target,共用一路數(shù)據(jù)通道,但每個Target均有獨立的片選信號CS#和準備好信號R/B#,因此可先傳輸Target1的2頁數(shù)據(jù),Target1開始編程,然后傳輸Target2的兩頁數(shù)據(jù),Target2開始編程,再切換回Target1,如此流水操作。傳輸Target1數(shù)據(jù)耗時約為224 μs,與Target2的編程時間230 μs相當,相當于通過Target流水技術(shù)基本消除了數(shù)據(jù)傳輸時間,如圖7所示;
圖7 Target流水技術(shù)
(3)并行總線處理技術(shù)[10],同時對8片F(xiàn)lash進行讀寫,相當于寫速度提升為單片F(xiàn)lash寫速度的8倍。
4系統(tǒng)測試和數(shù)據(jù)分析
4.1文件加卸載測試
從計算機選擇一個文件test.ld加載到存儲系統(tǒng),加載速度超過80 MB·s-1,加載完成后,選擇該文件卸載到計算機,卸載速度超過40 MB·s-1,通過Beyond Compare軟件比較卸載后的文件和原始文件,兩者完全一致,說明文件加載和卸載功能正確,如圖8所示。
圖8 文件加卸載測試
4.2文件存儲回放測試
存儲設(shè)備進入存儲模式后,測試設(shè)備的FPGA邏輯產(chǎn)生存儲測試數(shù)據(jù),通過ChipScope監(jiān)控測試設(shè)備,存儲測試數(shù)據(jù)以18 Byte為1個數(shù)據(jù)包,最后4 Byte為從零開始逐一遞增的計數(shù)器,每個數(shù)據(jù)包加一,停止存儲后,從文件列表中觀測可知:存儲文件名為“store002”,存儲起始時間為“2013年5月3日7點59分57秒”,存儲結(jié)束時間為“2013年5月3日8點0分11秒”,存儲文件長度為3 591 492 kB,計算后可得存儲速度為233.8 MB·s-1,如圖9所示。
圖9 文件存儲測試
選擇文件“store002”進行回放,存儲系統(tǒng)讀取該文件數(shù)據(jù),通過回放接口輸出到測試設(shè)備。測試設(shè)備的FPGA邏輯根據(jù)測試樣式產(chǎn)生本地標準數(shù)據(jù),與回放數(shù)據(jù)進行比對,并將比對結(jié)果上報主控軟件?;胤磐瓿珊笥^測輸出狀態(tài)窗口,回放錯誤計數(shù)為0,說明文件存儲和回放功能正確,如圖10所示。
圖10 文件回放測試
5結(jié)束語
本文介紹了嵌入式存儲系統(tǒng)基于FPGA技術(shù)和NAND Flash芯片構(gòu)建,采用文件方式管理數(shù)據(jù)。通過在某型系統(tǒng)中實用表明,該系統(tǒng)體積小巧、使用方便、存儲速度快,可在-40~+70 ℃溫度下長時間穩(wěn)定工作,能有效解決惡劣工作環(huán)境下對體積有苛刻要求的數(shù)據(jù)存儲問題,并可用于車載和機載數(shù)據(jù)存儲場合,且具備較高的實用價值。
參考文獻
[1]Xilinx Corporation.Virtex-5 FPGA user guide[M].USA:Xilinx Corporation,2012.
[2]Xilinx Corporation.Virtex-5 FPGA embedded tri-Mode ethernet MAC user guide[M].USA:Xilinx Corporation,2011.
[3]Micron Corporation.NAND flash memory MT29F64G08AJABA[M].USA:Micron Corporation,2009.
[4]李大鵬,李雯,王曉華.基于FPGA的高速LVDS接口的實現(xiàn)[J].航空計算技術(shù),2012,42(5):115-118.
[5]張小軍,廖風強,王錄濤,等.多通道高速串行LVDS信號解串器設(shè)計[J].電子測量技術(shù),2013,36(4):63-67.
[6]張勝勇,高世杰,吳志勇,等.基于FPGA的NAND Flash壞塊處理方法[J].計算機工程,2010,36(6):239-243.
[7]陸林燕,王魯靜,鄭正奇.NAND Flash編程實現(xiàn)研究分析[J].計算機技術(shù)與發(fā)展,2008,18(3):118-124.
[8]邢開宇,曹曉曼,方火能.基于FPGA和NAND Flash的存儲器ECC設(shè)計與實現(xiàn)[J].電子科技,2012,25(10):70-73.
[9]呂小微.基于FPGA的NAND Flash ECC校驗[J].電子科技,2010,24(6):34-37.
[10]朱知博.基于NAND Flash的高速大容量存儲系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2011,34(8):170-173.
中圖分類號TP316.85
文獻標識碼A
文章編號1007-7820(2016)03-097-06
doi:10.16180/j.cnki.issn1007-7820.2016.03.025
作者簡介:吳凡(1981—),男,碩士,工程師。研究方向:嵌入式存儲系統(tǒng)。
收稿日期:2015- 07- 27