基于FPGA高速大容量數據采集與存儲系統
大容量數據采集與存儲系統在工業(yè)自動(dòng)化生產(chǎn)、國防和軍事監控及環(huán)境監測等方面被廣泛應用。為了能夠完整、準確地捕獲到各種信號或者故障發(fā)生時(shí)的特征信號,需要對其進(jìn)行狀態(tài)監測,并且要求監測系統具備長(cháng)時(shí)間連續采集和存儲的功能。但是為了支持系統中大量高速數據的暫時(shí)存儲,這就需要很大的中間緩存,而專(zhuān)用的高速FIFO芯片價(jià)格昂貴且容量受限,大大增加了商業(yè)成本,因此在實(shí)際應用中尋找可靠的、低成本的采集存儲系統是很有必要的。為此本文提出利用FPGA作為橋梁,實(shí)現對SDRAM的控制,從而對采集的數據進(jìn)行緩沖,然后存儲到大容量的CF卡中,滿(mǎn)足系統所要求的速度快、實(shí)時(shí)性高、成本低和容易擴展等要求;接著(zhù)詳細論述了系統各個(gè)功能電路的設計思路和具體實(shí)現過(guò)程。
本文引用地址:http://dyxdggzs.com/article/201610/308392.htm1系統方案設計
數據采集和存儲系統主要由三部分組成:A/D轉換器、FPGA的數據雙緩沖器和CF卡的存儲。
1)A/D轉換器的作用是將所要采集的模擬量轉換成數字量,通過(guò)光耦隔離后,由FPGA接收、緩沖、存儲至CF卡。高速A/D轉換器采用的是采樣率為250kS/s的16位A/D轉換芯片ADS8515,它屬于逐次逼近寄存器型(簡(jiǎn)稱(chēng)SAR型)A/D轉換器,其內部通常具有采樣保持器,轉換速率快。
2)FPGA采用ALTERA公司CycloneⅡ系列的EP2C35F672I8N,靜態(tài)功耗小于0.25W。采用+3.3V、+2.5V、+1.2V分別給不同區進(jìn)行供電。靈活的I/O控制使得編程簡(jiǎn)化,電路設計方便。采用AS和JTAG配置模式,配置芯片是EPCS16SI8N,器件的時(shí)鐘配置為50MHz。
FPGA主要利用片外的SDRAM提供數據輸出/輸入的雙緩沖作用,之所以選取SDRAM,主要是因為在各種隨機存取器件中,SDRAM的容量較大,價(jià)格較低,且其數據突發(fā)傳輸模式能大大提高存取速度,能夠滿(mǎn)足應用的要求。
3)CF卡作用是將A/D采集到的數據進(jìn)行存儲,當數據容量存儲滿(mǎn)時(shí),發(fā)送滿(mǎn)信息,FPGA得到滿(mǎn)信息后,停止對數據的采集并提示用戶(hù)更換CF卡。
系統工作過(guò)程為:系統加電后,FPGA向A/D轉換器發(fā)出相應控制信號,由于A(yíng)DC采樣率為250kS/s,為和CF卡存儲速度相匹配,需要一個(gè)FIFO緩存系統。A/D轉換器在FPGA的ADC接口控制電路控制下,把模擬信號轉換成數字信號,并將采樣數據存入FIFO緩存系統。同時(shí)FPGA查詢(xún)CF卡是否有容量,如果CF卡未滿(mǎn),那么由FPGA的CF卡接口控制邏輯將采樣結果從FIFO緩存送入CF卡中;當CF卡的容量達到一定程度后,FPGA發(fā)出滿(mǎn)信息,向A/D狀態(tài)機發(fā)送停止采集的命令,并提示用戶(hù)已滿(mǎn),更換CF卡。
由于把FPGA設置為特定的自動(dòng)模式,因此FPGA控制A/D采集以及把數據送往CF卡的所有操作不需要外部干預,從而保證足夠的數據傳輸速率。采樣過(guò)程中FPGA的CF卡接口控制邏輯依次取走FIFO中的批量數據,在進(jìn)行CF卡的數據存儲時(shí)A/D仍然持續轉換,FIFO也被持續寫(xiě)入轉換結果,避免兩者的沖突。
2硬件設計
系統的硬件由模數轉換電路、數據采集存儲與傳輸控制電路、接口電路構成。
2.1模數轉換電路設計
模數轉換電路是整個(gè)系統的重要組成部分,它由差分放大適配電路、A/D轉換器構成,如圖1所示,其核心器件是A/D轉換芯片ADS8515。

圖1 信號適配和模數轉換電路原理圖
模擬輸入信號經(jīng)過(guò)由OPA2604和OP604構成的差分放大適配電路將信號適配到ADS8515的采集范圍。ADS8515將模擬信號轉換為數字信號。ADS8515的控制信號由FPGA提供,ADS8515在控制信號的作用下,以適當的時(shí)序完成轉換工作。
2.2數據采集存儲與傳輸控制電路設計
數據采集存儲與傳輸控制電路的開(kāi)發(fā)工作主要集中在FPGA上。FPGA負責在CF卡與A/D芯片之間的緩沖與控制,一邊與A/D接口,另一邊與CF卡接口,產(chǎn)生數據采集、A/D轉換、FIFO所需的全部控制信號,實(shí)現對傳輸數據的緩存、讀/寫(xiě)控制、時(shí)鐘、輸出使能以及對A/D的控制等功能。
2.2.1FPGA內部總體設計
FPGA設計內部結構簡(jiǎn)圖如圖2所示,由FIFO、CF卡控制狀態(tài)機、ADC接口控制狀態(tài)機三部分構成。
圖中由左向右的寬箭頭表示數據流,ADdata[15..0]是與A/D轉換連接的數據總線(xiàn),CFdata[15:0]是與CF卡連接的數據總線(xiàn)。單線(xiàn)箭頭表示輸入輸出及FPGA內部各個(gè)模塊間的控制信號線(xiàn)。從數據流向看,數據在A(yíng)DC接口控制狀態(tài)機的協(xié)調下通過(guò)ADC接口送入FIFO中,經(jīng)過(guò)FIFO的緩沖后,在CF卡控制狀態(tài)機的協(xié)調下,數據傳輸存儲到CF卡;當CF卡存儲滿(mǎn)時(shí),FPGA通過(guò)ADC狀態(tài)機停止A/D的采集,并提示用戶(hù)更換CF卡。
2.2.2數據雙緩存器FIFO
由于與CF卡接口的數據傳輸方式是突發(fā)的數據塊傳送,每個(gè)數據塊是用很高的速率傳送到CF卡,這樣就必須有緩存把A/D采集來(lái)的數據先緩存,然后發(fā)送到CF卡進(jìn)行存儲。然而FPGA內部的FIFO不足以支持系統中大量數據的暫時(shí)存儲,這就要求很大的中間緩存。在本系統中利用FPGA對外部SDRAM的控制,以達到大量高速存取數據的功能。SDRAM選用MICRON公司的MT48LC4M32B2,存儲容量為128MB,數據帶寬為32位,內部由4個(gè)BANK組成,每個(gè)BANK有4096行和256列。

圖2 數據采集與傳輸控制結構示意圖
本文設計的FIFO系統由FPGA和SDRAM兩部分組成。其中FPGA內部包含FIFO監控器、緩沖器、SDRAM控制器三個(gè)模塊。FIFO監控器的作用是將SDRAM的狀態(tài)轉變成SDRAM控制器的讀、寫(xiě)信號。若操作為向SDRAM寫(xiě)數據,則在SDRAM滿(mǎn)時(shí),FIFO監控器送出一個(gè)信號,以阻止寫(xiě)操作繼續向SDRAM中寫(xiě)數據而造成溢出;若操作為向SDRAM讀數據,則在緩沖器已空時(shí),FIFO監控器送出一個(gè)信號,以阻止讀操作繼續從SDRAM中讀數據而造成無(wú)效數據的讀出。FIFO系統的模塊結構如圖3所示。

圖3 FIFO模塊結構示意圖
2.3接口電路設計
2.3.1FPGA內ADC接口模塊的設計
對A/D轉換器的編程,主要是FPGA對ADS8515的控制信號進(jìn)行寫(xiě)邏輯,其接口示意圖如圖4所示。

圖4 A/D轉換模塊接口示意圖
2.3.2FPGA內CF卡接口控制狀態(tài)機的設計
CF卡有三種訪(fǎng)問(wèn)方式,分別為I/O模式、Memory模式和TrueIDE模式。本系統采用TrueIDE模式訪(fǎng)問(wèn)CF卡。需要在電源加電啟動(dòng)時(shí)將OE接地,見(jiàn)圖5,讓CF卡工作在TrueIDE模式。當CSEL輸入信號接地時(shí),CF卡工作方式為主模式;CSEL輸入信號接高電平時(shí),CF卡工作方式為從模式。本系統中將CF卡配置成從模式工作方式。當采用TrueIDE訪(fǎng)問(wèn)模式工作時(shí),第3位到第10位地址線(xiàn)接地,WE信號接高電平。

圖5 FPGA與CF卡接口示意圖
3軟件設計
CF卡的數據存儲以扇區為基本單位。系統向CF卡寫(xiě)入一個(gè)扇區的數據,如圖6所示。首先根據控制命令設定16位工作模式,設置將寫(xiě)入的扇區數目、相應地址和訪(fǎng)問(wèn)模式,然后發(fā)送寫(xiě)命令,等待CF卡準備就緒后,從數據緩沖區SDRAM寫(xiě)入CF卡中。

圖6 向CF卡寫(xiě)數據流程圖
4結束語(yǔ)
基于FPGA的高速大容量低成本數據采集系統以FPGA作為橋梁,控制片外高速SDRAM緩沖器,以CF卡作為大容量存儲介質(zhì),既利用了FPGA的內部資源豐富和設計方便的優(yōu)點(diǎn),同時(shí)利用了CF卡容量大、體積小和價(jià)格低廉等優(yōu)點(diǎn),給出了高速大容量數據采集的方法,該方法已成功應用于實(shí)際系統中。
評論