本課題研究的數據存儲與管理技術可應用于在大型海域進行的水中爆炸效能參數測試的分布式測試系統中,整個系統中基站與主站通過無線傳輸。由于在海域中的測試環(huán)境比較惡劣,對于測試設備的布置比較困難,因此有時需要在短時間內做多次重復性實驗。重復性實驗就要求將每次所采集的數據實時回傳處理或存儲管理,為下次實驗作準備。本系統所采用的無線傳輸方式決定不可能在短時間內把大量數據回傳。NAND Flash存儲器作為一種非易失、大容量、可擦除與重復性編程等優(yōu)點,在其內部構建文件系統,把多次重復性采集的多種數據以文件格式存儲,可為系統由無線傳輸引起的瓶頸提供另一種解決方案。在存儲沖擊波數據時,沖擊波信號有其典型的特征(最大值特征),可提取其最大值特征作為該文件的信息一同存儲。事后數據快速分析處理時,最關心的是沖擊波壓力峰值(即最大值),因此可通過傳輸特征值少量數據快速分析提高系統實時性。
1 系統組成
本課題研究的數據存儲管理系統是分布式測試系統基站的重要組成部分。該模塊實現了對沖擊波數據、水聲定位信號、環(huán)境溫度等多種數據的存儲管理,為事后數據分析處理提供可靠保證,并通過與基站中的無線收發(fā)模塊通信,實現與主站的通信。圖1為系統結構框圖。數據存儲管理系統主要由單片機與CPLD組成,本系統通過在CPLD內部擴展SPI接口電路,完成沖擊波、水聲定位等信號的存儲;并在NAND Flash存儲器中構建文件系統,實現對多種大量數據的存儲管理。
2 數據傳輸接口電路設計
本數據存儲管理系統以單片機和CPLD作為核心控制器。由于單片機的端口、內部串口等資源數目有限,需在CPLD內部擴展SPI接口電路,不僅簡化了接口和控制,提高了系統的整體性能及工作靈活性,還使系統擴展變得可行。CPLD擴展SPI接口框圖如圖2所示。
在CPLD內部編寫雙向I/O總線、譯碼電路、時鐘發(fā)生器、移位寄存器等電路完成SPI接口電路設計。READY為從機(沖擊波模塊)與主機(數據存儲管理系統)通信時狀態(tài)標志位,供主機與從機通信時查詢使用。READY為1時,主從機可通信。
圖3為CPLD擴展SPI接口電路讀取沖擊波模塊數據時的波形。bit8為READY信號,從機高電平時主機讀取數據;bit9為SCK時鐘信號,主機查詢READY為高時主機產生8個SCK時鐘,啟動SPI傳輸;bit10為MOSI,主機輸出端口;bit11為MISO,主機輸入端口,SCK上升沿讀取數據。圖3連續(xù)兩個周期讀取的數據為0x07(00000111)、0xb0(10110000),兩周期時間間隔為20.400μs,傳輸速度可達4×105bps。
3 數據存儲管理
3.1 存儲管理數據特征
在本分布式測試系統實驗時,所要存儲管理的沖擊波、水聲信號等數據的大小、存儲順序都一定,是其典型特征。因此存儲數據時可以按順序方式存儲,把每一類數據分別以一個文件的形式存儲,用文件名把沖擊波與水聲信號等進行區(qū)別,并且每一文件有其唯一的編號ID。采集參數信息(如時間、通道、頻率、點數、觸發(fā)延時信息等)作為每個文件的頭信息保存,事后數據分析處理時可先讀取文件存儲狀態(tài)(包括所有存儲文件的頭信息),然后可為事后分析處理數據提供便利。
3.2 文件系統的設計
文件系統的具體設計是根據系統資源環(huán)境和應用需求而定的,因此在具體的應用系統中文件系統會有不同的實現形式。
結合本課題的存儲器特征:NAND Flash(Samsung K9F1208)是以頁為單位存儲、以塊為單位擦除,寫入速度快(典型200μs)、擦除速度慢(典型2 ms)。存儲數據特征:文件大小是確定的,存儲過程是順序存儲,且存儲之后不會對數據進行再寫入和隨機讀取與修改。NAND Flash構建一種基于塊設備存儲的文件系統,適合對本課題多次重復性實驗數據進行有效存儲與管理?;趬K設備存儲的文件系統是磁盤存儲器常用的文件系統,典型的是FAT文件系統。FAT文件系統技術成熟、結構簡單、系統資源開銷小,結合本系統使用的NAND Flash特性,易于在本系統硬件平臺(Atmel ATmega162單片機與Xilinx XC2C256-7 CPLD為核心控制)上實現。
由于NAND Flash不同于一般的磁盤存儲器,在出廠時允許有一定數量的壞塊,需對通用FAT文件系統做相應的修改,方可運用于本系統。在NAND Flash中建立無效塊表,在該表內把所有塊的狀態(tài)標示出來(如可用0x00表示壞塊、0xff表示有效塊),這樣在之后的數據存儲過程中,可防止把數據寫到壞塊,提高數據存儲的可靠性。本文件系統由以下幾部分組成:系統記錄區(qū)、無效塊表、文件登記表區(qū)、數據區(qū)。
本系統所用的NAND Flash是K9F1208,生產廠商設定的存儲空間的第1區(qū)塊必定是有效塊。在設計時,將第1區(qū)塊作為存儲器的系統記錄區(qū),同時在此區(qū)塊中建立無效塊表、文件分配表、文件登記表。
①系統記錄區(qū):存放最重要的文件系統信息,如Flash存儲器的類型、容量、版本信息等。
②無效塊表:標示所有塊的狀態(tài)。無效塊表存儲在第1區(qū)塊的第1頁到第8頁(共8頁,每頁512字節(jié),512×8=4 096,可把FLash所有塊狀態(tài)標示出來)。系統調試結果如圖4所示。
③文件登記表:存儲每一個文件的文件頭信息,存儲在無效塊表之后。K9F1208每頁有512字節(jié),每頁存儲一個文件的文件頭信息?,F每一文件頭信息占30字節(jié)(其余系統可擴展使用),主要包括文件名、ID號、長度、以及該文件存儲在NAND Flash中的起始、結束塊號物理地址。文件登記表的建立為系統查看所有存儲數據提供便利,方便數據管理。根據文件登記表中文件存儲在NAND FLash的首尾物理塊地址信息,可隨機讀取少量文件數據分析,為系統因無線傳輸大量數據的瓶頸提供另一種解決方案。調試結果如圖5所示。
④數據區(qū)域:用于存放數據,文件系統中,數據分配的最小單位是Flash存儲器的一個基本擦除單元,即一個物理區(qū)塊(16 KB)。
3.3 基于沖擊波數據特征提取的數據存儲
由于每次實驗沖擊波數據量相對于無線傳輸而言比較大(4 MB,系統實驗無線傳輸需20 min),如果回傳全部數據處理,系統實時性能比較差。水中沖擊波信號有其典型的特征,如圖6所示。Pm為沖擊波壓力峰值信號(即最大值),事后數據分析處理時,最關心的是沖擊波的壓力峰值附近的數據。因此在數據存儲時,可根據其特征找最大值,并把最大值所存儲的NAND Flash的物理地址作為一個參數信息保存到文件頭信息中,如圖5所示。沖擊波文件信息中有最大值與所存儲位置文件信息。在文件數據回傳時,可依據最大值所在塊地址信息讀取最大值附近的數據,實現基于特征的高效數據傳輸,提高系統實時性。圖7為根據沖擊波文件頭信息讀取最大值附近40 000個點(40 000×2/1024=78.1 25KB)數據恢復波形,實現了基于特征提取的高效數據傳輸。
結語
本課題研究在大型海域進行的分布式測試系統中對多種類大量數據的存儲管理,通過在系統內部擴展SPI接口電路,實現與沖擊波采集模塊數據傳輸。此方法提高了系統的擴展性,為系統升級管理更多數據模塊提供了可能;針對大量、多種類實驗測試數據以及實驗的重復性,基于NAND Flash K9F1208存儲器構建文件系統對數據分類存儲管理。文件登記表的創(chuàng)建方便了數據的管理,為實驗事后數據分析處理提供了可靠依據;根據沖擊波信號的典型數據特征,存儲沖擊波信號時提取其特征信息,作為文件頭信息保存,可實現基于特征提取的高效數據傳輸。