李致成,趙冬娥,張 坤,溫星曦,張文靜
(中北大學(xué)電子測試技術(shù)重點(diǎn)實驗室,儀器科學(xué)與動態(tài)測試教育部重點(diǎn)實驗室,山西 太原 030051)
對于高速運(yùn)動目標(biāo)速度的測量,目前有多種方法,按測量原理可分成3 類:瞬時速度測量法,平均速度測量法和多普勒原理測量法,每種測量方法各有特點(diǎn)[1]。而瞬時速度測量法,主要是通過某種傳感器對在一定距離內(nèi)運(yùn)動的時間進(jìn)行計算處理實現(xiàn)的。在如今,高速運(yùn)動目標(biāo)的速度獲得,需要采集大量的數(shù)據(jù)以分析和研究運(yùn)動目標(biāo)的運(yùn)動參數(shù),為此需要將大量高數(shù)據(jù)進(jìn)行實時、穩(wěn)定的存儲。
隨著所探測目標(biāo)運(yùn)動速度的提高和數(shù)據(jù)采樣率都大為提高,這就對數(shù)據(jù)存儲設(shè)備的性能提出了更高的要求:一、高速性,存儲器的存儲速率必須要和采樣數(shù)據(jù)的傳輸速率相匹配;二、大容量,長時間的高速數(shù)據(jù)采集必然會產(chǎn)生大量的數(shù)據(jù)流;三、可靠性,在各種條件下的工作性能穩(wěn)定,存儲數(shù)據(jù)的正確性必須得到充分的保障[2]。針對以上要求,本文提出一種基于FPGA 與NAND Flash 實現(xiàn)的高速大容量數(shù)據(jù)存儲器。
高速運(yùn)動目標(biāo)信號可以認(rèn)為是基于時間的電平變化信號,在運(yùn)動目標(biāo)未通過傳感器以前,是一個相對穩(wěn)定的電平信號,當(dāng)運(yùn)動目標(biāo)兩次通過相距固定距離的傳感器時,獲得兩個相距一定時間的變化量,通過計算兩次變化量所相差的時間,通過公式:
式中,s 表示兩個傳感器的距離;t 表示兩次電平變化量相隔的時間;v 表示運(yùn)動目標(biāo)的瞬時速度。其中運(yùn)動目標(biāo)的瞬時速度是我們感興趣的對象,因為兩個傳感器之間的距離可以相對比較近,可以忽略加速度的因數(shù),通過對采集數(shù)據(jù)中目標(biāo)信號的提取、分析就可以得兩次電平變化量相隔的時間的信息,而這些都是以采集數(shù)據(jù)的準(zhǔn)確存儲記錄作為前提。
1)存儲容量:16GB
2)存儲速率:150 Mbps
3)接口方式:采編單元數(shù)據(jù)通過LVDS 接口傳送給數(shù)據(jù)存儲記錄儀,其中包括8 位并行數(shù)據(jù)、一位同步時鐘、一個啟動信號(持續(xù)10 ms 的高電平)。
4)可靠性:保證存儲系統(tǒng)在各種極端條件下能正常工作,數(shù)據(jù)不失真。
整個系統(tǒng)設(shè)計時本著高可靠、低成本、低功耗的研制理念,采用模塊化設(shè)計思想,每個模塊都可以實現(xiàn)各自的功能且具有單獨(dú)的I/O 接口,將這些模塊組合在一起以實現(xiàn)整個系統(tǒng)的各項功能。該方案采用可編程邏輯器件FPGA 作為中央控制器實現(xiàn)各個模塊的互相通信以完成對數(shù)據(jù)的接收、存儲以及讀取操作。整個系統(tǒng)主要包含6 個部分:LVDS 接口電路、RS-422 接口電路、數(shù)字隔離電路、FPGA 控制模塊、存儲介質(zhì)以及讀數(shù)接口電路。系統(tǒng)原理框圖如圖1 所示。
圖1 系統(tǒng)原理框圖
系統(tǒng)上電后,RS-422 接口芯片使能有效,進(jìn)入接收狀態(tài)。當(dāng)RS-422 接收到持續(xù)20 ms 的高電平啟動信號時,LVDS 接口芯片以及緩存FIFO 進(jìn)入工作狀態(tài),這時在采編單元中完成模數(shù)轉(zhuǎn)換的信號經(jīng)過LVDS 接口電路轉(zhuǎn)變?yōu)門TL 信號然后緩存至FIFO,當(dāng)FIFO 幾乎寫滿時,再將數(shù)據(jù)送入FLASH 陣列進(jìn)行存儲。最終通過讀數(shù)接口將FLASH陣列中的數(shù)據(jù)上傳至計算機(jī)做后續(xù)的分析處理,整個過程由FPGA 進(jìn)行控制。
設(shè)計采用的FPGA(Field Programmable Gate Array)是XILINX 公司的spartan3 系列芯片XC3S200,這是一款高性能的微控制器:內(nèi)含可編程輸入輸出單元(IOB)、基本可編程邏輯單元(CLB)、完整的時鐘管理(DCM)、嵌入塊式RAM,以及豐富的布線資源。與傳統(tǒng)的單片機(jī)、DSP 等控制芯片相比具有開發(fā)周期短、集成度高、速度響應(yīng)快、功耗低和通用性好等特點(diǎn),其內(nèi)部豐富的邏輯資源保證了各種組合和時序邏輯電路的實現(xiàn)。
LVDS(Low Voltage Differential Signaling)接口技術(shù)在數(shù)據(jù)傳輸上具有高速率、低功耗、低噪聲、低電磁干擾等特點(diǎn),已被廣泛地應(yīng)用于高速數(shù)字系統(tǒng)設(shè)計中。這里選用了DS92LV010A 和DS92LV090A 芯片實現(xiàn)數(shù)據(jù)的傳輸和信號的電平轉(zhuǎn)換。
存儲介質(zhì)采用型號為K9WBG08U1M 的NAND Flash 芯片,存儲容量4GB。該芯片由兩片K9KAG08U0M 芯片組成,每片存儲容量2GB。一片K9WBG08U1M 含16348 個數(shù)據(jù)塊,每一塊包含64 頁,每一頁存儲容量為(4k+128)Byte,其中128Byte 為空閑區(qū)。它以頁為單位進(jìn)行擦寫,以塊為單位進(jìn)行擦除,命令、數(shù)據(jù)、地址采用同一總線,具有硬件數(shù)據(jù)保護(hù)功能。系統(tǒng)采用4 片K9WBG08U1M 進(jìn)行擴(kuò)展,使整個系統(tǒng)存儲容量達(dá)到16GB,滿足海量數(shù)據(jù)的實時記錄需要。
系統(tǒng)的軟件設(shè)計主要是指FPGA 的控制程序設(shè)計,它主要完成LVDS 信號的接收以及FLASH 芯片的數(shù)據(jù)寫、讀、擦除以及無效塊檢測操作。整個流程如圖2 所示。
圖2 系統(tǒng)軟件流程圖
為了實現(xiàn)數(shù)據(jù)的高速可靠存儲,軟件邏輯設(shè)計中采用了以下技術(shù):
1)對啟動信號20 ms 的脈寬進(jìn)行多次判斷;
每隔5 ms 對啟動信號進(jìn)行一次判斷,如果每次都有效,則進(jìn)入下一步操作。這樣可以防止由干擾引起的誤觸發(fā),保證系統(tǒng)的正常運(yùn)行。
2)利用FPGA 內(nèi)部塊RAM 建立一個容量為64 kb 的FLSAH 無效塊信息列表;
由于工藝的緣故,NAND Flash 內(nèi)部存在隨機(jī)分布的無效塊,為了保證存儲數(shù)據(jù)的有效性,在寫入數(shù)據(jù)之前需進(jìn)行無效塊檢測。系統(tǒng)上電之后首先建立一個64 kb 大小的內(nèi)部RAM,然后對整個存儲介質(zhì)進(jìn)行無效塊檢測,并將每一塊的好壞信息存入RAM 中,建立一個無效塊檢測信息列表。之后的Flash 讀、寫及擦除操作全部基于該信息列表進(jìn)行,這樣既可以保證數(shù)據(jù)的有效操作又提高了數(shù)據(jù)的寫入讀出速度。
3)采用流水線思想對Flash 進(jìn)行寫操作;
Flash 在進(jìn)行頁編程操作時,分為兩個階段:數(shù)據(jù)加載階段和編程階段,編程階段自動進(jìn)行,不需要外部的任何操作,其典型時間為200 μs,最大時間700 μs。按照設(shè)計要求存儲速率為21.25 MB/s(170 Mbps),連續(xù)加載寫滿一頁需要的時間為:4 096B/21.25MB/s=192.8 μs。則寫滿7 頁所需時間為:7 ×192.8 μs=1 349.6 μs,遠(yuǎn)遠(yuǎn)大于一頁的最大編程時間,這樣就可以采用流水線方式對8 片K9KAG08U0M 進(jìn)行寫操作。首先對第一片F(xiàn)lash 進(jìn)行數(shù)據(jù)加載,加載完成后,第一片F(xiàn)lash 隨后進(jìn)入自動編程階段;這時接著對第二片F(xiàn)lash 進(jìn)行數(shù)據(jù)加載,數(shù)據(jù)加載完成后,第二片F(xiàn)lash 進(jìn)入自動編程階段;依次對八片F(xiàn)lash 進(jìn)行同樣的操作,當(dāng)?shù)诎似現(xiàn)lash 完成加載后,第一片的自動編程結(jié)束,這樣又可以重復(fù)以上操作,直至整個數(shù)據(jù)存儲結(jié)束[3],如圖3 所示。采用這種方式可以大幅度提高數(shù)據(jù)存儲速率。
4)讀寫數(shù)據(jù)時使用了ECC(Error Checking and Correction)校驗技術(shù)。
圖3 流水線操作示意圖
在數(shù)據(jù)通信的過程中,由于各種干擾的影響或者個別芯片的讀寫失敗,會造成傳輸數(shù)據(jù)的錯誤或丟失。為了盡可能降低傳輸過程中的誤碼率,提高存儲數(shù)據(jù)的完整性,這里使用ECC 校驗技術(shù)來檢查恢復(fù)錯誤數(shù)據(jù),保障系統(tǒng)存儲數(shù)據(jù)的可靠性。具體算法分為四個步驟:
①Flash 寫數(shù)據(jù)時,同時生成寫校驗碼,并將其存入當(dāng)前頁的備用存儲區(qū)間;
②讀取Flash 數(shù)據(jù)時,同時生成讀校驗碼;
③將寫校驗碼與讀校驗碼兩者進(jìn)行異或比較;
④根據(jù)異或比較的結(jié)果判斷是否需要糾錯。
為了驗證存儲系統(tǒng)的可行性和可靠性,采用地面測試臺對其進(jìn)行了驗證分析。其中圖4 所示是存儲器記錄的由地面測試臺發(fā)出的正弦信號曲線,采樣頻率20 MHz,可以看出存儲器真實的記錄了正弦信號信息,波形無異常。經(jīng)過多次測試表明該系統(tǒng)能夠完成對高速運(yùn)動目標(biāo)運(yùn)動數(shù)據(jù)的存儲任務(wù),可靠性較高。
圖4 存儲器回讀波形(地面測試臺發(fā)出)
本文提出一種高速大容量數(shù)據(jù)存儲系統(tǒng),經(jīng)過測試表明該系統(tǒng)能夠?qū)崿F(xiàn)高速運(yùn)動目標(biāo)數(shù)據(jù)的存儲,其數(shù)據(jù)存儲速率及可靠性滿足系統(tǒng)設(shè)計任務(wù)的要求,具有很高的實用價值。
[1]黃站華,劉淼.高速運(yùn)動目標(biāo)的光電精密測速系統(tǒng)誤差分析[J].光電工程,2006,33(3):58-61.
[2]吳昊.高速大容量固態(tài)存儲系統(tǒng)設(shè)計[D].西安:西安電子科技大學(xué),2010.
[3]杜建海,張丕狀.一種流水線存儲的數(shù)據(jù)采集系統(tǒng)[J].兵工自動化,2010,29(9):60-63.
[4]關(guān)貞珍,楊潤澤,舒鑫,等.高速運(yùn)動目標(biāo)速度測量系統(tǒng)[J].軍械工程學(xué)院,2006,25(10):14-16.
[5]曾光宇,張志偉,張存林.光電檢測技術(shù)[M].北京:清華大學(xué)出版社,北京交通大學(xué)出版社,2003.
[6]王雪松.某高速采集存儲裝置中的關(guān)鍵技術(shù)研究[D].太原:中北大學(xué),2013.
[7]趙樂.基于FPGA 的高速實時數(shù)據(jù)采集存儲系統(tǒng)的設(shè)計[D].武漢:武漢理工大學(xué),2012.
[8]安海磊.高速數(shù)據(jù)采集存儲系統(tǒng)設(shè)計[D].西安:西安電子科技大學(xué),2012.