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