基于FPGA高速大容量數(shù)據(jù)采集與存儲系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
大容量數(shù)據(jù)采集與存儲系統(tǒng)在工業(yè)自動(dòng)化生產(chǎn)、國防和軍事監(jiān)控及環(huán)境監(jiān)測等方面被廣泛應(yīng)用。為了能夠完整、準(zhǔn)確地捕獲到各種信號或者故障發(fā)生時(shí)的特征信號,需要對其進(jìn)行狀態(tài)監(jiān)測,并且要求監(jiān)測系統(tǒng)具備長時(shí)間連續(xù)采集和存儲的功能。但是為了支持系統(tǒng)中大量高速數(shù)據(jù)的暫時(shí)存儲,這就需要很大的中間緩存,而專用的高速FIFO芯片價(jià)格昂貴且容量受限,大大增加了商業(yè)成本,因此在實(shí)際應(yīng)用中尋找可靠的、低成本的采集存儲系統(tǒng)是很有必要的。為此本文提出利用FPGA作為橋梁,實(shí)現(xiàn)對SDRAM的控制,從而對采集的數(shù)據(jù)進(jìn)行緩沖,然后存儲到大容量的CF卡中,滿足系統(tǒng)所要求的速度快、實(shí)時(shí)性高、成本低和容易擴(kuò)展等要求;接著詳細(xì)論述了系統(tǒng)各個(gè)功能電路的設(shè)計(jì)思路和具體實(shí)現(xiàn)過程。
1系統(tǒng)方案設(shè)計(jì)
數(shù)據(jù)采集和存儲系統(tǒng)主要由三部分組成:A/D轉(zhuǎn)換器、FPGA的數(shù)據(jù)雙緩沖器和CF卡的存儲。
1)A/D轉(zhuǎn)換器的作用是將所要采集的模擬量轉(zhuǎn)換成數(shù)字量,通過光耦隔離后,由FPGA接收、緩沖、存儲至CF卡。高速A/D轉(zhuǎn)換器采用的是采樣率為250kS/s的16位A/D轉(zhuǎn)換芯片ADS8515,它屬于逐次逼近寄存器型(簡稱SAR型)A/D轉(zhuǎn)換器,其內(nèi)部通常具有采樣保持器,轉(zhuǎn)換速率快。
2)FPGA采用ALTERA公司CycloneⅡ系列的EP2C35F672I8N,靜態(tài)功耗小于0.25W。采用+3.3V、+2.5V、+1.2V分別給不同區(qū)進(jìn)行供電。靈活的I/O控制使得編程簡化,電路設(shè)計(jì)方便。采用AS和JTAG配置模式,配置芯片是EPCS16SI8N,器件的時(shí)鐘配置為50MHz。
FPGA主要利用片外的SDRAM提供數(shù)據(jù)輸出/輸入的雙緩沖作用,之所以選取SDRAM,主要是因?yàn)樵诟鞣N隨機(jī)存取器件中,SDRAM的容量較大,價(jià)格較低,且其數(shù)據(jù)突發(fā)傳輸模式能大大提高存取速度,能夠滿足應(yīng)用的要求。
3)CF卡作用是將A/D采集到的數(shù)據(jù)進(jìn)行存儲,當(dāng)數(shù)據(jù)容量存儲滿時(shí),發(fā)送滿信息,F(xiàn)PGA得到滿信息后,停止對數(shù)據(jù)的采集并提示用戶更換CF卡。
系統(tǒng)工作過程為:系統(tǒng)加電后,F(xiàn)PGA向A/D轉(zhuǎn)換器發(fā)出相應(yīng)控制信號,由于ADC采樣率為250kS/s,為和CF卡存儲速度相匹配,需要一個(gè)FIFO緩存系統(tǒng)。A/D轉(zhuǎn)換器在FPGA的ADC接口控制電路控制下,把模擬信號轉(zhuǎn)換成數(shù)字信號,并將采樣數(shù)據(jù)存入FIFO緩存系統(tǒng)。同時(shí)FPGA查詢CF卡是否有容量,如果CF卡未滿,那么由FPGA的CF卡接口控制邏輯將采樣結(jié)果從FIFO緩存送入CF卡中;當(dāng)CF卡的容量達(dá)到一定程度后,F(xiàn)PGA發(fā)出滿信息,向A/D狀態(tài)機(jī)發(fā)送停止采集的命令,并提示用戶已滿,更換CF卡。
由于把FPGA設(shè)置為特定的自動(dòng)模式,因此FPGA控制A/D采集以及把數(shù)據(jù)送往CF卡的所有操作不需要外部干預(yù),從而保證足夠的數(shù)據(jù)傳輸速率。采樣過程中FPGA的CF卡接口控制邏輯依次取走FIFO中的批量數(shù)據(jù),在進(jìn)行CF卡的數(shù)據(jù)存儲時(shí)A/D仍然持續(xù)轉(zhuǎn)換,F(xiàn)IFO也被持續(xù)寫入轉(zhuǎn)換結(jié)果,避免兩者的沖突。
2硬件設(shè)計(jì)
系統(tǒng)的硬件由模數(shù)轉(zhuǎn)換電路、數(shù)據(jù)采集存儲與傳輸控制電路、接口電路構(gòu)成。
2.1模數(shù)轉(zhuǎn)換電路設(shè)計(jì)
模數(shù)轉(zhuǎn)換電路是整個(gè)系統(tǒng)的重要組成部分,它由差分放大適配電路、A/D轉(zhuǎn)換器構(gòu)成,如圖1所示,其核心器件是A/D轉(zhuǎn)換芯片ADS8515。
圖1 信號適配和模數(shù)轉(zhuǎn)換電路原理圖
模擬輸入信號經(jīng)過由OPA2604和OP604構(gòu)成的差分放大適配電路將信號適配到ADS8515的采集范圍。ADS8515將模擬信號轉(zhuǎn)換為數(shù)字信號。ADS8515的控制信號由FPGA提供,ADS8515在控制信號的作用下,以適當(dāng)?shù)臅r(shí)序完成轉(zhuǎn)換工作。
2.2數(shù)據(jù)采集存儲與傳輸控制電路設(shè)計(jì)
數(shù)據(jù)采集存儲與傳輸控制電路的開發(fā)工作主要集中在FPGA上。FPGA負(fù)責(zé)在CF卡與A/D芯片之間的緩沖與控制,一邊與A/D接口,另一邊與CF卡接口,產(chǎn)生數(shù)據(jù)采集、A/D轉(zhuǎn)換、FIFO所需的全部控制信號,實(shí)現(xiàn)對傳輸數(shù)據(jù)的緩存、讀/寫控制、時(shí)鐘、輸出使能以及對A/D的控制等功能。
2.2.1FPGA內(nèi)部總體設(shè)計(jì)
FPGA設(shè)計(jì)內(nèi)部結(jié)構(gòu)簡圖如圖2所示,由FIFO、CF卡控制狀態(tài)機(jī)、ADC接口控制狀態(tài)機(jī)三部分構(gòu)成。
圖中由左向右的寬箭頭表示數(shù)據(jù)流,ADdata[15..0]是與A/D轉(zhuǎn)換連接的數(shù)據(jù)總線,CFdata[15:0]是與CF卡連接的數(shù)據(jù)總線。單線箭頭表示輸入輸出及FPGA內(nèi)部各個(gè)模塊間的控制信號線。從數(shù)據(jù)流向看,數(shù)據(jù)在ADC接口控制狀態(tài)機(jī)的協(xié)調(diào)下通過ADC接口送入FIFO中,經(jīng)過FIFO的緩沖后,在CF卡控制狀態(tài)機(jī)的協(xié)調(diào)下,數(shù)據(jù)傳輸存儲到CF卡;當(dāng)CF卡存儲滿時(shí),F(xiàn)PGA通過ADC狀態(tài)機(jī)停止A/D的采集,并提示用戶更換CF卡。
2.2.2數(shù)據(jù)雙緩存器FIFO
由于與CF卡接口的數(shù)據(jù)傳輸方式是突發(fā)的數(shù)據(jù)塊傳送,每個(gè)數(shù)據(jù)塊是用很高的速率傳送到CF卡,這樣就必須有緩存把A/D采集來的數(shù)據(jù)先緩存,然后發(fā)送到CF卡進(jìn)行存儲。然而FPGA內(nèi)部的FIFO不足以支持系統(tǒng)中大量數(shù)據(jù)的暫時(shí)存儲,這就要求很大的中間緩存。在本系統(tǒng)中利用FPGA對外部SDRAM的控制,以達(dá)到大量高速存取數(shù)據(jù)的功能。SDRAM選用MICRON公司的MT48LC4M32B2,存儲容量為128MB,數(shù)據(jù)帶寬為32位,內(nèi)部由4個(gè)BANK組成,每個(gè)BANK有4096行和256列。
圖2 數(shù)據(jù)采集與傳輸控制結(jié)構(gòu)示意圖
本文設(shè)計(jì)的FIFO系統(tǒng)由FPGA和SDRAM兩部分組成。其中FPGA內(nèi)部包含F(xiàn)IFO監(jiān)控器、緩沖器、SDRAM控制器三個(gè)模塊。FIFO監(jiān)控器的作用是將SDRAM的狀態(tài)轉(zhuǎn)變成SDRAM控制器的讀、寫信號。若操作為向SDRAM寫數(shù)據(jù),則在SDRAM滿時(shí),F(xiàn)IFO監(jiān)控器送出一個(gè)信號,以阻止寫操作繼續(xù)向SDRAM中寫數(shù)據(jù)而造成溢出;若操作為向SDRAM讀數(shù)據(jù),則在緩沖器已空時(shí),F(xiàn)IFO監(jiān)控器送出一個(gè)信號,以阻止讀操作繼續(xù)從SDRAM中讀數(shù)據(jù)而造成無效數(shù)據(jù)的讀出。FIFO系統(tǒng)的模塊結(jié)構(gòu)如圖3所示。
圖3 FIFO模塊結(jié)構(gòu)示意圖
2.3接口電路設(shè)計(jì)
2.3.1FPGA內(nèi)ADC接口模塊的設(shè)計(jì)
對A/D轉(zhuǎn)換器的編程,主要是FPGA對ADS8515的控制信號進(jìn)行寫邏輯,其接口示意圖如圖4所示。
圖4 A/D轉(zhuǎn)換模塊接口示意圖
2.3.2FPGA內(nèi)CF卡接口控制狀態(tài)機(jī)的設(shè)計(jì)
CF卡有三種訪問方式,分別為I/O模式、Memory模式和TrueIDE模式。本系統(tǒng)采用TrueIDE模式訪問CF卡。需要在電源加電啟動(dòng)時(shí)將OE接地,見圖5,讓CF卡工作在TrueIDE模式。當(dāng)CSEL輸入信號接地時(shí),CF卡工作方式為主模式;CSEL輸入信號接高電平時(shí),CF卡工作方式為從模式。本系統(tǒng)中將CF卡配置成從模式工作方式。當(dāng)采用TrueIDE訪問模式工作時(shí),第3位到第10位地址線接地,WE信號接高電平。
圖5 FPGA與CF卡接口示意圖
3軟件設(shè)計(jì)
CF卡的數(shù)據(jù)存儲以扇區(qū)為基本單位。系統(tǒng)向CF卡寫入一個(gè)扇區(qū)的數(shù)據(jù),如圖6所示。首先根據(jù)控制命令設(shè)定16位工作模式,設(shè)置將寫入的扇區(qū)數(shù)目、相應(yīng)地址和訪問模式,然后發(fā)送寫命令,等待CF卡準(zhǔn)備就緒后,從數(shù)據(jù)緩沖區(qū)SDRAM寫入CF卡中。
圖6 向CF卡寫數(shù)據(jù)流程圖
4結(jié)束語
基于FPGA的高速大容量低成本數(shù)據(jù)采集系統(tǒng)以FPGA作為橋梁,控制片外高速SDRAM緩沖器,以CF卡作為大容量存儲介質(zhì),既利用了FPGA的內(nèi)部資源豐富和設(shè)計(jì)方便的優(yōu)點(diǎn),同時(shí)利用了CF卡容量大、體積小和價(jià)格低廉等優(yōu)點(diǎn),給出了高速大容量數(shù)據(jù)采集的方法,該方法已成功應(yīng)用于實(shí)際系統(tǒng)中。