數據采集存儲是信號處理過程的一個重要環節, 已經廣泛應用于雷達、聲納、瞬態信號測試、無線探傷等領域。在不同的條件下采樣速率和采樣精度也有所不同, 系統的實現方法也各有差異。通常情況下, 如果采集速率較低, 采集和數據計算機讀取可同時進行。但在高速采集或采集源移動的情況下, 如空中飛行體或水下運動體, 這時就需要系統有采集功能的同時應具有存儲功能, 存儲數據可事后讀取, 黑匣子就屬于這樣的采集存儲器。根據目前的發展趨勢, 開發體積小、功耗低和存儲容量大的系統越來越受到重視。根據實際情況, 我們研制開發了一種用蓄電池就可工作的、能在水下應用的、可回收的小體積低功耗的大容量存儲器。
本文就介紹了一種基于FPGA 和FLASH 的多通道大容量的采集存儲器的設計與實現方法。
1 系統背景及功能描述
當船舶或潛艇在水中運動時, 要對其運動時的變化參數信號進行瞬態采集記錄, 記錄存儲器要安裝于運動的船體或艇體上的。要求采集存儲時間不長, 但它必須要滿足體積小、功耗低和可重復擦寫功能。
此系統要求能對32 路模擬信號同時采集存儲, 采樣率是每路10KHZ, 總采樣數率320K, 事后可對存儲數據計算機讀取分析。根據此種要求我們設計實現了多路采集存儲器, 此種存儲其使用FPGA 和FLASH 存儲器。滿足體積小, 功耗低的要求。用干電池供電就可工作。
2 系統結構設計
整個系統以FPGA 為核心控制器來組織工作, 它控制著整個系統的讀、寫、擦除等操作。系統主要解決的問題是采集、存儲和數據事后讀取。
2.1 數據采集
由于要同時對多路信號進行采集, 我們采取了FPGA 對模擬開關進行均等時間推進以實現通道的轉換。當轉換到某一通道時, FPGA 同時要啟動A/D 進行模數轉換。為了達到高精度采集的目的, 可采用12 位的AD 轉換器。為了達到通道轉換、啟動A/D 和數據FIFO 存儲的時序合理統一, 我們采用全體時鐘, 實現過程如下圖所示。
2.2 數據存儲
對數據的存儲, 我們采用閃存(FLASH Memory)作為存儲器, 它具有體積小、功耗低和數據不易丟失的特點。對FLASH的寫操作過程有其固定的操作模式, 如圖3 所示。由于FLASH是按頁存儲的, 當一頁寫完之后要進行下一頁的控制字和地址的重新寫入, 為了使采集回來的數據能及時準確的寫入FLASH, 而不至于在頁與頁的交替時間內使數據丟失, 所以不可能將采集回的數據直接存入FLASH, 我們利用FPGA 內部提供的RAM來構成雙端口RAM作為數據存儲過程中的緩存, 采集回來的數據先寫入雙端口RAM, 然后再導入FLASH。過程是采回數據從A 口寫入雙端口RAM。雙端口RAM中的數據從B口讀出, 然后寫入FLASH, 在操作的過程中, 要保證雙端口RAM的B 口地址推進要小于其A 口的地址推進。因為在采集過程中使用了12 的位的AD, 加之FLASH 存儲器是8 位的存儲器, 所以就使得每次采集的數據要分2 次存儲, 我們采取的方式是高8 位存儲一次, 低4 位加補標志碼的存儲一次。
2.3 數據讀取
數據的讀取有很多種方法, 目前有串口、并口、USB 口或PCI 總線方式讀取。我們這里采用并口讀取方式。因為數據存儲量大, 我們采取了并口主動讀取的方法, 消除了并口從動讀取速度慢的問題, 采用EPP 模式, 讀取數據速度能達到500K—2Mb/s 的數據量。FPGA 此時的工作是使讀數和采集的控制線與數據線的隔離。
這時并口可直接對FLASH 的控制線和數據線進行操作。對FLASH 的讀數操作也有其固定的操作過程。FLASH 數據的擦除是按塊擦除的, 所以它的特點是擦除速度快, 一般在幾秒鐘內就完成了。當一次采集存儲完畢后, 數據就長久保持在FLASH 內, 不會丟失, 若要從新采集存儲, 則必須要先進行FLASH 擦除。
評論
查看更多