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