數(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ù)擦寫功能。
此系統(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)的讀、寫、擦除等操作。系統(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的寫操作過(guò)程有其固定的操作模式, 如圖3 所示。由于FLASH是按頁(yè)存儲(chǔ)的, 當(dāng)一頁(yè)寫完之后要進(jìn)行下一頁(yè)的控制字和地址的重新寫入, 為了使采集回來(lái)的數(shù)據(jù)能及時(shí)準(zhǔn)確的寫入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ù)先寫入雙端口RAM, 然后再導(dǎo)入FLASH。過(guò)程是采回?cái)?shù)據(jù)從A 口寫入雙端口RAM。雙端口RAM中的數(shù)據(jù)從B口讀出, 然后寫入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 擦除。
評(píng)論
查看更多