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