數(shù)據(jù)采集存儲是信號處理過程的一個重要環(huán)節(jié), 已經(jīng)廣泛應(yīng)用于雷達(dá)、聲納、瞬態(tài)信號測試、無線探傷等領(lǐng)域。在不同的條件下采樣速率和采樣精度也有所不同, 系統(tǒng)的實現(xiàn)方法也各有差異。通常情況下, 如果采集速率較低, 采集和數(shù)據(jù)計算機(jī)讀取可同時進(jìn)行。但在高速采集或采集源移動的情況下, 如空中飛行體或水下運動體, 這時就需要系統(tǒng)有采集功能的同時應(yīng)具有存儲功能, 存儲數(shù)據(jù)可事后讀取, 黑匣子就屬于這樣的采集存儲器。根據(jù)目前的發(fā)展趨勢, 開發(fā)體積小、功耗低和存儲容量大的系統(tǒng)越來越受到重視。根據(jù)實際情況, 我們研制開發(fā)了一種用蓄電池就可工作的、能在水下應(yīng)用的、可回收的小體積低功耗的大容量存儲器。
本文就介紹了一種基于FPGA 和FLASH 的多通道大容量的采集存儲器的設(shè)計與實現(xiàn)方法。
1 系統(tǒng)背景及功能描述
當(dāng)船舶或潛艇在水中運動時, 要對其運動時的變化參數(shù)信號進(jìn)行瞬態(tài)采集記錄, 記錄存儲器要安裝于運動的船體或艇體上的。要求采集存儲時間不長, 但它必須要滿足體積小、功耗低和可重復(fù)擦寫功能。
此系統(tǒng)要求能對32 路模擬信號同時采集存儲, 采樣率是每路10KHZ, 總采樣數(shù)率320K, 事后可對存儲數(shù)據(jù)計算機(jī)讀取分析。根據(jù)此種要求我們設(shè)計實現(xiàn)了多路采集存儲器, 此種存儲其使用FPGA 和FLASH 存儲器。滿足體積小, 功耗低的要求。用干電池供電就可工作。
2 系統(tǒng)結(jié)構(gòu)設(shè)計
整個系統(tǒng)以FPGA 為核心控制器來組織工作, 它控制著整個系統(tǒng)的讀、寫、擦除等操作。系統(tǒng)主要解決的問題是采集、存儲和數(shù)據(jù)事后讀取。
2.1 數(shù)據(jù)采集
由于要同時對多路信號進(jìn)行采集, 我們采取了FPGA 對模擬開關(guān)進(jìn)行均等時間推進(jìn)以實現(xiàn)通道的轉(zhuǎn)換。當(dāng)轉(zhuǎn)換到某一通道時, FPGA 同時要啟動A/D 進(jìn)行模數(shù)轉(zhuǎn)換。為了達(dá)到高精度采集的目的, 可采用12 位的AD 轉(zhuǎn)換器。為了達(dá)到通道轉(zhuǎn)換、啟動A/D 和數(shù)據(jù)FIFO 存儲的時序合理統(tǒng)一, 我們采用全體時鐘, 實現(xiàn)過程如下圖所示。
2.2 數(shù)據(jù)存儲
對數(shù)據(jù)的存儲, 我們采用閃存(FLASH Memory)作為存儲器, 它具有體積小、功耗低和數(shù)據(jù)不易丟失的特點。對FLASH的寫操作過程有其固定的操作模式, 如圖3 所示。由于FLASH是按頁存儲的, 當(dāng)一頁寫完之后要進(jìn)行下一頁的控制字和地址的重新寫入, 為了使采集回來的數(shù)據(jù)能及時準(zhǔn)確的寫入FLASH, 而不至于在頁與頁的交替時間內(nèi)使數(shù)據(jù)丟失, 所以不可能將采集回的數(shù)據(jù)直接存入FLASH, 我們利用FPGA 內(nèi)部提供的RAM來構(gòu)成雙端口RAM作為數(shù)據(jù)存儲過程中的緩存, 采集回來的數(shù)據(jù)先寫入雙端口RAM, 然后再導(dǎo)入FLASH。過程是采回數(shù)據(jù)從A 口寫入雙端口RAM。雙端口RAM中的數(shù)據(jù)從B口讀出, 然后寫入FLASH, 在操作的過程中, 要保證雙端口RAM的B 口地址推進(jìn)要小于其A 口的地址推進(jìn)。因為在采集過程中使用了12 的位的AD, 加之FLASH 存儲器是8 位的存儲器, 所以就使得每次采集的數(shù)據(jù)要分2 次存儲, 我們采取的方式是高8 位存儲一次, 低4 位加補(bǔ)標(biāo)志碼的存儲一次。
2.3 數(shù)據(jù)讀取
數(shù)據(jù)的讀取有很多種方法, 目前有串口、并口、USB 口或PCI 總線方式讀取。我們這里采用并口讀取方式。因為數(shù)據(jù)存儲量大, 我們采取了并口主動讀取的方法, 消除了并口從動讀取速度慢的問題, 采用EPP 模式, 讀取數(shù)據(jù)速度能達(dá)到500K—2Mb/s 的數(shù)據(jù)量。FPGA 此時的工作是使讀數(shù)和采集的控制線與數(shù)據(jù)線的隔離。
這時并口可直接對FLASH 的控制線和數(shù)據(jù)線進(jìn)行操作。對FLASH 的讀數(shù)操作也有其固定的操作過程。FLASH 數(shù)據(jù)的擦除是按塊擦除的, 所以它的特點是擦除速度快, 一般在幾秒鐘內(nèi)就完成了。當(dāng)一次采集存儲完畢后, 數(shù)據(jù)就長久保持在FLASH 內(nèi), 不會丟失, 若要從新采集存儲, 則必須要先進(jìn)行FLASH 擦除。
3 相關(guān)問題
3.1 防止數(shù)據(jù)錯位的解決辦法
在存儲的過程中, 多路信號是同時存儲在FLASH 里面的。當(dāng)采集存儲完畢后, 我們要對數(shù)據(jù)進(jìn)行事后處理, 為了防止讀取或存儲數(shù)據(jù)錯位現(xiàn)象, 也是為了便于對錯誤的跟蹤查找, 最后使每路數(shù)據(jù)能完整的整合到一起。我們采取了相應(yīng)的措施,在每個數(shù)據(jù)存儲的過程中我們要給每路信號加上標(biāo)志位, 當(dāng)多路信號采完一個周期后, 存儲一些標(biāo)志位作為每幀數(shù)據(jù)的區(qū)分
信號。這樣即使某幀數(shù)據(jù)出了問題, 也可以很容易的確定各路信號的數(shù)據(jù), 不會出現(xiàn)數(shù)據(jù)錯位現(xiàn)象。
3.2 開關(guān)量輸入信號閉合時信號抖動的解決
在電路中, 對FPGA 有大量的開關(guān)行性操作, 例如控制讀、寫和擦除的控制信號, 還有FLASH 反饋給FPGA 的高頻脈沖狀態(tài)信號。在開關(guān)閉合的過程中, 信號存在抖動現(xiàn)象, 這時的信號是不穩(wěn)定的, 為了消除這種信號的不穩(wěn)定性外界因素干擾的不良影響下, 從而防止FPGA 的誤操作現(xiàn)象的發(fā)生, 我們在FPGA內(nèi)加了延時子程序, 目的就是對這些敏感信號進(jìn)行消陡延時預(yù)處理, 避免誤操作, 使系統(tǒng)在更加可靠穩(wěn)定的狀態(tài)下工作。
3.3 灌封技術(shù)
因為采集存儲器要在水下工作, 所以要對其進(jìn)行防水處理。經(jīng)過多次灌封試驗, 采用石蠟和三防漆灌封取得了良好的效果。
4 結(jié)論
根據(jù)本文介紹的采集存儲器應(yīng)用于某系統(tǒng)測試中, 經(jīng)實驗室和水下測試, 系統(tǒng)工作正常, 達(dá)到了設(shè)計的要求。
文章創(chuàng)新點:本文設(shè)計的采集存儲器適用于水下作業(yè), 采集可根據(jù)實際情況進(jìn)行擴(kuò)展, 采集頻率可根據(jù)實際情況改動, 通用性比較強(qiáng)。它體積小、功耗低的優(yōu)勢更是目前采集存儲的發(fā)展趨勢。他的原理可得到廣泛推廣。
參考文獻(xiàn):
[1]沈蘭蓀. 高速數(shù)據(jù)采集系統(tǒng)的原理與應(yīng)用. 北京: 人民郵電出版社, 1995.
[2]周明德. 微型計算機(jī)硬件軟件及其應(yīng)用. 北京: 清華大學(xué).出版社, 1990.
[3]郭四穩(wěn),古樂野. 多通道大容量高速數(shù)據(jù)采集系統(tǒng)[J ] .四川大學(xué)學(xué)報,2001 ,38(1) :29~32.
[4]褚振勇, 翁木云. FPGA 設(shè)計及應(yīng)用[M] . 西安: 西安電子科技大學(xué)出版社, 2002.
[5]繆云青李永剛. FPGA 器件在嵌入式系統(tǒng)中的配置方式的探討[J]微計算機(jī)信息,2006,161~163.
評論