新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的海量數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

基于FPGA的海量數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

最近幾年,以其應(yīng)用的靈活方便蓬勃發(fā)展,在通信、航空航天、醫(yī)療設(shè)備、消費(fèi)類電子產(chǎn)品等領(lǐng)域一展身手。使用控制CF的技術(shù)到目前為止還沒有成熟,本文從硬件和軟件角度出發(fā),介紹了與CF卡的接口設(shè)計(jì)、給出了用雙RAM訪問CF卡的編程,并且利用FPGA作為FIFO對AD采集的數(shù)據(jù)進(jìn)行緩沖,然后存儲(chǔ)到大容量的CF卡中。

本文引用地址:http://2s4d.com/article/201706/348866.htm
1系統(tǒng)方案設(shè)計(jì)
數(shù)據(jù)存儲(chǔ)和采集系統(tǒng)主要由三部分組成,CF卡的存儲(chǔ)、FPGA的數(shù)據(jù)雙緩沖器、狀態(tài)寄存器和A/D轉(zhuǎn)換器組成。
1)CF卡數(shù)據(jù)存儲(chǔ),其作用是將AD采集到的數(shù)據(jù)進(jìn)行存儲(chǔ),當(dāng)數(shù)據(jù)容量存儲(chǔ)滿時(shí),發(fā)送滿信息。FPGA得到滿信息后,停止對數(shù)據(jù)的采集并提示用戶更換CF卡。
2)FPGA主要利用內(nèi)部的SRAM提供數(shù)據(jù)輸出/輸入的雙緩沖作用,采用雙緩沖的原因是防止數(shù)據(jù)的溢出和保證數(shù)據(jù)傳輸?shù)倪B續(xù)性。當(dāng)接收到滿信息時(shí),停止AD采集,并做出提示。
3)A/D轉(zhuǎn)換器的作用,是將所要采集的模擬量轉(zhuǎn)換成數(shù)字量;通過濾波和放大后,由FPGA接收、緩沖、存儲(chǔ)至CF卡。高速AD轉(zhuǎn)換器采用的是轉(zhuǎn)換速率為20MHz的MAX1425.
系統(tǒng)工作過程為:系統(tǒng)通過外部一個(gè)按鍵的低電平給數(shù)據(jù)采集系統(tǒng)一個(gè)采樣開始控制命令,F(xiàn)PGA根據(jù)該命令向AD轉(zhuǎn)換器發(fā)出相應(yīng)控制信號;由于ADC采樣率為20MHz,為和CF卡存儲(chǔ)速度相匹配,在FPGA內(nèi)部生成一個(gè)FIFO緩存器。AD轉(zhuǎn)換器在FPGA的ADC接口控制電路控制下,把模擬信號轉(zhuǎn)換成數(shù)字信號,并將采樣數(shù)據(jù)存入FPGA內(nèi)部FIFO緩存。同時(shí)FPGA的查詢CF卡是否有容量,如果CF卡未滿,那么由FPGA的CF卡接口控制邏輯將采樣結(jié)果從FPGA內(nèi)部FIFO緩存送入CF卡中。當(dāng)CF卡的容量達(dá)到一定程度后,F(xiàn)PGA發(fā)出滿信息,向AD狀態(tài)機(jī)發(fā)送停止采集的命令,并提示用戶已滿。由于把FPGA設(shè)置為特定的自動(dòng)模式,因此FPGA控制AD采集以及把數(shù)據(jù)送往CF卡間的所有操作不需要外部干預(yù),從而保證足夠的數(shù)據(jù)傳輸速率。采樣過程中FPGA的CF卡接口控制邏輯依次取走批量數(shù)據(jù)。在進(jìn)行CF卡的數(shù)據(jù)存儲(chǔ)時(shí)AD仍然持續(xù)轉(zhuǎn)換,F(xiàn)PGA內(nèi)部FIFO也被持續(xù)寫入轉(zhuǎn)換結(jié)果。
2硬件設(shè)計(jì)
系統(tǒng)的硬件由模數(shù)轉(zhuǎn)換接口電路、數(shù)據(jù)存儲(chǔ)與傳輸控制電路和接口電路構(gòu)成。
2.1模數(shù)轉(zhuǎn)換電路設(shè)計(jì)
模數(shù)轉(zhuǎn)換接口電路是整個(gè)系統(tǒng)的重要組成部分,它由低通濾波器、多路選擇開關(guān)和AD轉(zhuǎn)換器構(gòu)成。在系統(tǒng)中起這個(gè)作用的核心器件是AD轉(zhuǎn)換芯片MAX1425.
模擬輸入信號分別經(jīng)過由運(yùn)放構(gòu)成的抗混疊低通濾波器去除高頻成分,防止信號產(chǎn)生“混疊現(xiàn)象”。模數(shù)轉(zhuǎn)換器將模擬信號轉(zhuǎn)換為數(shù)字信號。的控制信號由FPGA板提供,在控制信號的作用下,以適當(dāng)?shù)臅r(shí)序完成轉(zhuǎn)換工作。
2.2數(shù)據(jù)采集與傳輸控制電路
數(shù)據(jù)采集與傳輸控制電路的開發(fā)工作主要集中在FPGA上。FPGA負(fù)責(zé)在CF卡與ADC芯片之間的緩沖與控制。一邊與ADC接口,另一邊與CF卡接口,產(chǎn)生數(shù)據(jù)采集、AD轉(zhuǎn)換、FIFO所需的全部控制信號。實(shí)現(xiàn)對傳輸數(shù)據(jù)的緩存、讀/寫控制、時(shí)鐘、輸出使能以及對ADC的控制等功能。
2. 2.1 FPGA內(nèi)部總體設(shè)計(jì)
FPGA設(shè)計(jì)內(nèi)部結(jié)構(gòu)由FIFO、CF卡控制狀態(tài)機(jī)、ADC接口控制狀態(tài)機(jī)三部分構(gòu)成。
從數(shù)據(jù)流向看,數(shù)據(jù)在ADC接口控制狀態(tài)機(jī)的協(xié)調(diào)下通過ADC接口送入FPGA的FIFO中,經(jīng)過FIFO的緩沖后,在CF卡控制狀態(tài)機(jī)的協(xié)調(diào)下,數(shù)據(jù)傳輸?shù)紽PGA外的CF卡;當(dāng)CF卡存儲(chǔ)滿時(shí),F(xiàn)PGA通過ADC狀態(tài)機(jī)停止AD的采集,并提示用戶更換CF卡。
2.2.2數(shù)據(jù)雙緩存器FIFO
FIFO主要由三部分組成:FIFO主體、FIFO讀模塊、FIFO寫模塊。FIFO主體部分利用FPGA內(nèi)部的RAM,通過coregenerator來生成所使用的FIFO.FIFO讀模塊、FIFO寫模塊主要接收外界給出的讀寫開始與停止脈沖信號,轉(zhuǎn)換為讀寫請求信號,給到fifo主體中,同時(shí)讀寫模塊會(huì)處理接口兩邊的時(shí)鐘信號,分別反向后再作為fifo的讀寫時(shí)鐘使用。
與CF卡連接的CF卡接口的數(shù)據(jù)傳輸方式是突發(fā)的數(shù)據(jù)塊傳送,并且數(shù)據(jù)塊的大小可以設(shè)置,每個(gè)數(shù)據(jù)塊是用很高的速率傳送到CF卡,這樣就必須有緩存把AD采集來的數(shù)據(jù)先存緩存,然后發(fā)送到CF卡,進(jìn)行存儲(chǔ)。
2.2.3 FPGA內(nèi)ADC接口模塊設(shè)計(jì)
MAX4125的控制信號都由FPGA產(chǎn)生。
FPGA的工作時(shí)鐘為60MHz,該時(shí)鐘經(jīng)分頻成20MHz提供給MAX4125作為工作時(shí)鐘,同時(shí)也作為FPGA內(nèi)其他邏輯的工作時(shí)鐘。由FPGA內(nèi)狀態(tài)機(jī)控制當(dāng)CS#為低和ADC_Convst為高,MAX4125進(jìn)入采樣保持狀態(tài)。當(dāng)Clock的第一個(gè)上升沿到來,MAX4125開始轉(zhuǎn)換。MAX4125把轉(zhuǎn)換結(jié)果放到數(shù)據(jù)總線上,F(xiàn)PGA開始讀入10位數(shù)據(jù)(FD[15:0]中10一15六位數(shù)據(jù)線懸空,使數(shù)據(jù)線和AD的位數(shù)匹配)。完成一次轉(zhuǎn)換后,當(dāng)ADC_Convst再次為高,開始下一輪轉(zhuǎn)換。
2.2.4 FPGA內(nèi)CF卡接口控制狀態(tài)機(jī)的設(shè)計(jì)CF卡的訪問方式有三種,分別為I/O模式、Memory模式和True IDE模式。本系統(tǒng)采用TrueIDE模式訪問CF卡。需要注意的是當(dāng)主機(jī)電源一直接通時(shí),拔插CF卡將會(huì)使其從原來的True IDE方式重新配置成Memory式。所以要讓CF卡一直工作在True IDE模式,需要在電源加電啟動(dòng)時(shí)將OE輸入信號接地。
當(dāng)CSEL輸入信號接地時(shí),CF卡工作方式為主模式;CSEL輸入信號接高電平時(shí)。CF卡工作方式為從模式。本系統(tǒng)中將CF卡配置成從模式工作方式。
當(dāng)采用TruelDE訪問模式工作時(shí),第3位到第10位地址線需要接地,WE信號需要接高電平。
3軟件設(shè)計(jì)
CF卡的數(shù)據(jù)存儲(chǔ)以扇區(qū)為基本單位。系統(tǒng)讀寫CF卡時(shí)都是以扇區(qū)為單位進(jìn)行的。為了滿足系統(tǒng)對速度和控制連續(xù)性的要求,系統(tǒng)的程序設(shè)計(jì)中,利用FPGA的內(nèi)部資源開辟了兩塊RAM,用于存儲(chǔ)一個(gè)扇區(qū)的數(shù)據(jù),這樣從CF卡讀數(shù)據(jù)到RAM和將RAM中的數(shù)據(jù)讀到被控系統(tǒng)中就成了兩個(gè)相對獨(dú)立的工作過程,這樣既利用了CF卡大容黿的存儲(chǔ)特性又利用了FPGA的工作速度快和內(nèi)部資源豐富的優(yōu)點(diǎn)。
從CF卡讀取一個(gè)扇區(qū)的數(shù)據(jù),首先根據(jù)控制命令設(shè)定16位工作模式、設(shè)置讀取的扇區(qū)數(shù)目、相應(yīng)地址和訪問模;然后發(fā)送讀命令(0x20),等待CF卡準(zhǔn)備就緒后,從數(shù)據(jù)寄存器中連續(xù)讀取一個(gè)扇區(qū)的數(shù)據(jù)放入到數(shù)據(jù)緩沖區(qū)。
4結(jié)束語
基于FPGA的系統(tǒng)采用FPGA作為控制器,CF卡作為大容量存儲(chǔ)介質(zhì)。采用FPGA讀寫CF卡,既利用了FPGA的內(nèi)部資源豐富和設(shè)計(jì)方便的優(yōu)點(diǎn),同時(shí)利用了CF卡容量大、體積小和價(jià)格低廉等優(yōu)點(diǎn),給出了高效讀寫CF卡的方法,該方法已成功應(yīng)用于實(shí)際系統(tǒng)中。
本文創(chuàng)新點(diǎn):用FPGA讀寫控制CF卡,并且通過用雙RAM方式存儲(chǔ)數(shù)據(jù),利用了FPGA的速度快和可以并行處理數(shù)據(jù)的優(yōu)點(diǎn)。大大提高了工作效率。


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉