基于NAND Flash的數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
傳統(tǒng)的存儲(chǔ)設(shè)備雖然具有價(jià)格低廉的優(yōu)勢(shì),但是在高溫、高速、高沖擊的測(cè)試環(huán)境中,往往存在設(shè)備存放空間有限、測(cè)試參數(shù)較多、采集速率高、環(huán)境復(fù)雜等因素。為了得到準(zhǔn)確的測(cè)試數(shù)據(jù),對(duì)存儲(chǔ)設(shè)備的性能也提出了較高的要求,如高存儲(chǔ)速度、大存儲(chǔ)容量、小巧輕便、抗沖擊等。此時(shí)傳統(tǒng)的存儲(chǔ)設(shè)備便無(wú)法完成復(fù)雜環(huán)境測(cè)試數(shù)據(jù)的存儲(chǔ)任務(wù)。為解決這個(gè)問(wèn)題,本文設(shè)計(jì)了基于NAND Flash的數(shù)據(jù)存儲(chǔ)系統(tǒng),該系統(tǒng)采用Xilinx公司提出的靈活、高效、低成本的解決方案SOPC,把通用的RISC處理器MicroBlaze與用戶設(shè)計(jì)的特定功能邏輯電路集成到FPGA上,在FPGA的控制下將數(shù)據(jù)存儲(chǔ)到NAND Flash存儲(chǔ)設(shè)備中,實(shí)現(xiàn)了一個(gè)基于SOPC方案的嵌入式數(shù)據(jù)存儲(chǔ)系統(tǒng)。
NAND Flash存儲(chǔ)設(shè)備是Flash內(nèi)存的一種,其內(nèi)部采用非線性宏單元模式,為固態(tài)大容量?jī)?nèi)存的實(shí)現(xiàn)提供了廉價(jià)有效的解決方案。NAND Flash存儲(chǔ)器具有體積小、功耗低、讀寫速度快等優(yōu)點(diǎn),適用于大量數(shù)據(jù)的存儲(chǔ),被廣泛應(yīng)用到數(shù)碼相機(jī)、MP3、U盤等嵌入式產(chǎn)品中。
1 系統(tǒng)整體設(shè)計(jì)方案
基于NAND Flash的數(shù)據(jù)存儲(chǔ)系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
本文采用Samsung公司的NAND Flash芯片K9F4GOSUOA作為主要存儲(chǔ)器件,控制器件使用Atmel公司的ATmega162和Xilinx公司Spartan-3E系列的XC3S500E,結(jié)合對(duì)NAND Flash的讀、寫、擦除等操作進(jìn)行時(shí)序配置。A/D轉(zhuǎn)換芯片使用Maxim公司的MAX1308。另外,為實(shí)現(xiàn)通過(guò)USB總線將數(shù)據(jù)從采集設(shè)備傳送至PC,采用FTDI公司的FT245R芯片作為USB2.0接口控制器;并以LabVIEW為平臺(tái)設(shè)計(jì)開(kāi)發(fā)了專用“多通道數(shù)據(jù)分析軟件”,用于對(duì)存儲(chǔ)系統(tǒng)中數(shù)據(jù)后期的分析與處理。
2 NAND Flash陣列式存儲(chǔ)原理
Flash存儲(chǔ)器編程是以頁(yè)為單位,單片NAND Flash的單頁(yè)編程操作時(shí),命令鎖存信號(hào)CLE向端口寫入編程操作命令,地址鎖存信號(hào)ALE寫入操作塊地址,并傳輸2 KB數(shù)據(jù)到數(shù)據(jù)寄存器后,F(xiàn)lash進(jìn)入編程階段。此時(shí)其端口R/B信號(hào)被拉低,顯示Flash正處于忙工作狀態(tài),直到編程結(jié)束,這段時(shí)間系統(tǒng)不能對(duì)該Flash再進(jìn)行任何操作,一般該階段典型的時(shí)間為200μs。如果使用單片F(xiàn)lash存儲(chǔ)器進(jìn)行存儲(chǔ),則需等待編程結(jié)束后才能再寫入數(shù)據(jù)。這樣大量的時(shí)間耗費(fèi)在編程過(guò)程中,極大限制了系統(tǒng)存儲(chǔ)速度的提高。
為提高系統(tǒng)的存儲(chǔ)容量和存儲(chǔ)速度,系統(tǒng)使用8片NAND Flash存儲(chǔ)器,每4片為一組構(gòu)成一個(gè)總線寬度為8位的存儲(chǔ)陣列??刂菩盘?hào)中除設(shè)置獨(dú)立的片選信號(hào)CE外,其他的控制信號(hào)為8片共用;兩組Flash共用數(shù)據(jù)總線,存儲(chǔ)數(shù)據(jù)時(shí)先對(duì)第一組Flash進(jìn)行存儲(chǔ)操作,待第一組存儲(chǔ)完畢后再對(duì)第二組進(jìn)行數(shù)據(jù)存儲(chǔ)操作。Flash陣列式存儲(chǔ)結(jié)構(gòu)圖如圖2所示。
[!--empirenews.page--]
由以上分析可以看出,F(xiàn)lash存儲(chǔ)數(shù)據(jù)的過(guò)程由寫地址命令、數(shù)據(jù)傳輸以及Flash編程階段組成。為提高系統(tǒng)整體的存儲(chǔ)速度,減少系統(tǒng)等待時(shí)間,根據(jù)NAND Flash存儲(chǔ)器的特點(diǎn),借鑒時(shí)分多路復(fù)用技術(shù),設(shè)計(jì)了Flash存儲(chǔ)陣列,即利用上一片F(xiàn)lash的編程時(shí)間對(duì)下一片F(xiàn)lash
進(jìn)行操作,將數(shù)據(jù)加載到該片數(shù)據(jù)寄存器中,以此類推實(shí)現(xiàn)四級(jí)的流水線。這樣整個(gè)系統(tǒng)每個(gè)時(shí)刻都能對(duì)Flash加載數(shù)據(jù),保證了數(shù)據(jù)存儲(chǔ)的連續(xù)性。
時(shí)分多路復(fù)用(Time Division Multiplexing,TDM)是按傳輸信號(hào)的時(shí)間進(jìn)行分割的,它使不同的信號(hào)在不同的時(shí)間內(nèi)傳送,將整個(gè)傳輸時(shí)間分為許多時(shí)間間隔,每個(gè)時(shí)間片被一路信號(hào)占用,這樣既可以保證各傳輸信號(hào)的相互獨(dú)立,又提高了系統(tǒng)的傳輸效率。借鑒該原理,可以將Flash的編程時(shí)間看成一個(gè)固定的時(shí)間段,將這個(gè)時(shí)間段分成4個(gè)時(shí)間片,在這4個(gè)時(shí)間片上分別對(duì)Flash陣列的一個(gè)模塊中的4個(gè)Flash加載數(shù)據(jù),輸入存儲(chǔ)系統(tǒng)的高速數(shù)據(jù)流看作是以傳輸一組數(shù)據(jù)所需時(shí)間的一個(gè)時(shí)間片。
具體的操作如下:首先加載數(shù)據(jù)到第1片F(xiàn)lash存儲(chǔ)器中,該Flash進(jìn)入編程狀態(tài);在第1片F(xiàn)lash的編程時(shí)段內(nèi),對(duì)第2片F(xiàn)lash進(jìn)行數(shù)據(jù)加載操作;當(dāng)?shù)?片進(jìn)入編程狀態(tài)時(shí),再對(duì)第3片進(jìn)行數(shù)據(jù)加載操作;依次執(zhí)行下去,待一次整體操作完成后4片F(xiàn)lash都已加載完數(shù)據(jù)。此時(shí),第1片F(xiàn)lash的編程已經(jīng)完成,處于準(zhǔn)備就緒狀態(tài),可以寫入新的數(shù)據(jù),由此可以等效為Flash存儲(chǔ)器的編程時(shí)間為0。這樣就可以實(shí)現(xiàn)Flash陣列的連續(xù)傳輸數(shù)據(jù),提高系統(tǒng)的整體速度。
多片F(xiàn)lash時(shí)分多路復(fù)用式數(shù)據(jù)存儲(chǔ)原理如圖3所示。
3 系統(tǒng)硬件實(shí)現(xiàn)
系統(tǒng)采用了Xilinx公司的FPGA進(jìn)行SOPC開(kāi)發(fā),處理器選用了MicroBlaze軟核,并配置相應(yīng)的參數(shù)使標(biāo)準(zhǔn)IP核適應(yīng)用戶所設(shè)計(jì)的系統(tǒng),結(jié)合外圍電源電路、USB接口電路、程序配置電路,構(gòu)成了一套穩(wěn)定的數(shù)據(jù)存儲(chǔ)系統(tǒng)。
3.1 FPGA片上系統(tǒng)的實(shí)現(xiàn)
FPGA程序主要的功能是:軟件控制啟動(dòng)存儲(chǔ),在控制邏輯的作用下將前端A/D轉(zhuǎn)換之后的數(shù)據(jù)先存入內(nèi)部FIFO緩存中,同時(shí)啟動(dòng)DMA將緩存中的數(shù)據(jù)存儲(chǔ)到外部NAND Flash存儲(chǔ)陣列中。本文利用VHDL語(yǔ)言編寫程序,在FPGA芯片上實(shí)現(xiàn)了數(shù)據(jù)的高速存儲(chǔ)和傳輸控制。
3.2 USB接口電路模塊
USB器件主要用于實(shí)現(xiàn)SOPC系統(tǒng)在聯(lián)機(jī)模式下與主機(jī)通信以及數(shù)據(jù)的傳輸。USB芯片使用由FTDI公司推出的FT245R,該接口能夠?qū)SB接口信號(hào)轉(zhuǎn)換為8位并行信號(hào),上傳至?xí)r鐘頻率為150 MHz的MicroBlaze處理器進(jìn)行分析處理;并將處理器發(fā)送的數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)的USB接口數(shù)據(jù)傳向PC機(jī),完成SOPC系統(tǒng)與PC機(jī)之間的通信。USB接口電路如圖4所示。
[!--empirenews.page--]
3.3 FPGA配置電路模塊
本系統(tǒng)在FPGA配置電路中采用了主串配置模式。外部的配置芯片選用了XCF04S系列的PROM串行配置芯片。當(dāng)系統(tǒng)上電時(shí),芯片以主動(dòng)配置方式來(lái)實(shí)現(xiàn)系統(tǒng)中FPGA的硬件配置。通過(guò)高速的串行接口,整個(gè)芯片的配置工作可以在很短的時(shí)間內(nèi)完成。
3.4 電源模塊
電源模塊不僅能夠?yàn)橄到y(tǒng)各器件提供各種高性能的功率輸出,還能夠選擇合適的旁路、去耦電容來(lái)濾除各種干擾信號(hào),保證系統(tǒng)的穩(wěn)定工作。本系統(tǒng)電源模塊采用了TI公司的TPS75003芯片配置相應(yīng)的外圍電路,實(shí)現(xiàn)了由5 V輸入電壓到3.3 V、2.5 V和1.2 V輸出電壓的精確轉(zhuǎn)換。
4 系統(tǒng)驗(yàn)證與分析
在系統(tǒng)的軟硬件程序設(shè)計(jì)完成并生成BIT流文件后,下載到FPGA電路板上,結(jié)合PC機(jī)中的專用軟件對(duì)系統(tǒng)功能進(jìn)行驗(yàn)證測(cè)試。
4.1 對(duì)NAND Flash的操作驗(yàn)證
在數(shù)據(jù)存儲(chǔ)硬件系統(tǒng)設(shè)計(jì)過(guò)程中,用戶IP核設(shè)計(jì)得好壞決定著整個(gè)系統(tǒng)設(shè)計(jì)的成敗。系統(tǒng)IP核設(shè)計(jì)中集成了Flash控制器、DMA控制器以及數(shù)據(jù)和地址FIFO,為驗(yàn)證該IP核是否能正常工作,對(duì)其進(jìn)行了Flash操作驗(yàn)證。示波器捕獲的讀Flash存儲(chǔ)器ID號(hào)時(shí)序圖如圖5所示。其中通道0~4分別代表Flash的CE(片選)、ALE(地址鎖存)、CLE(命令鎖存)、RE(讀)、WE(寫)信號(hào)。圖中Flash陣列的4片F(xiàn)lash的ID號(hào)都為EC DC 10 95 54,這與實(shí)際Flash ID相符。實(shí)驗(yàn)證明,F(xiàn)lash存儲(chǔ)器的ID號(hào)是準(zhǔn)確的。
4.2 文件登記表驗(yàn)證
實(shí)驗(yàn)中在Flash存儲(chǔ)器的特定位置存有標(biāo)記數(shù)據(jù)特征的文件登記表,應(yīng)用程序讀取文件登記表中的信息并將相應(yīng)數(shù)據(jù)傳輸?shù)絇C機(jī)上進(jìn)行后期分析。文件登記表的存儲(chǔ)內(nèi)容有:文件名、實(shí)驗(yàn)的次數(shù)、存儲(chǔ)數(shù)據(jù)的長(zhǎng)度、本次存儲(chǔ)的首尾地址以及下次存儲(chǔ)的首地址等。
圖6為某次存儲(chǔ)實(shí)驗(yàn)的文件登記表信息,圖中前8個(gè)字節(jié)為文件名,往后依次為實(shí)驗(yàn)次數(shù)和數(shù)據(jù)通道數(shù)。本次實(shí)驗(yàn)中存儲(chǔ)的長(zhǎng)度為50 MB,存儲(chǔ)首地址和存儲(chǔ)尾地址分別為0x0115、0x0178。由于所用的存儲(chǔ)策略為4片流水線式存儲(chǔ),每片F(xiàn)lash每塊為128 KB,4片組成的模塊中每個(gè)大塊為512 KB(128 KB×4),所以可以計(jì)算出存儲(chǔ)的數(shù)據(jù)為512 KB×(0x0178-0x0115+1)=50 MB。這與所指定的本次存儲(chǔ)數(shù)據(jù)的長(zhǎng)度吻合,表明存儲(chǔ)系統(tǒng)正確可靠。[!--empirenews.page--]
4.3 數(shù)據(jù)存儲(chǔ)驗(yàn)證
系統(tǒng)構(gòu)建完成后,在實(shí)驗(yàn)室環(huán)境中,對(duì)信號(hào)發(fā)生器產(chǎn)生的正弦波信號(hào)進(jìn)行采集存儲(chǔ),通過(guò)USB接口將存儲(chǔ)在NAND Flash芯片中的數(shù)據(jù)上傳到PC機(jī)中,利用以LabVIEW為平臺(tái)設(shè)計(jì)開(kāi)發(fā)的“多通道數(shù)據(jù)分析軟件”進(jìn)行分析處理,得到的模擬信號(hào)及系統(tǒng)開(kāi)關(guān)量數(shù)字信號(hào)波形如圖7、圖8所示。
對(duì)比原始信號(hào)發(fā)現(xiàn),系統(tǒng)能夠快速、無(wú)失真地采集并存儲(chǔ)信號(hào)發(fā)生器產(chǎn)生的波形數(shù)據(jù),并且能夠利用不同的采樣速率來(lái)記錄系統(tǒng)開(kāi)關(guān)量數(shù)字信號(hào)信息,具有較高的可靠性。
結(jié)語(yǔ)
本文設(shè)計(jì)了基于NAND Flash的數(shù)據(jù)存儲(chǔ)系統(tǒng),通過(guò)時(shí)分多路復(fù)用式流水線操作,極大地提高了Flash芯片的存儲(chǔ)速度。實(shí)驗(yàn)表明,該系統(tǒng)能夠快速、準(zhǔn)確地記錄信號(hào)發(fā)生器產(chǎn)生的波形數(shù)據(jù),且具有性能穩(wěn)定可靠、操作簡(jiǎn)單、抗過(guò)載能力強(qiáng)等優(yōu)點(diǎn)。