楊 磊,劉美枝,高 海,黨嬋娟
(山西大同大學(xué)物理與電子科學(xué)學(xué)院,山西大同037009)
基于FPGA和ARM的高速數(shù)據(jù)采集系統(tǒng)設(shè)計
楊 磊,劉美枝,高 海,黨嬋娟
(山西大同大學(xué)物理與電子科學(xué)學(xué)院,山西大同037009)
數(shù)據(jù)采集是完成信號分析、信息處理的必要前提。能夠?qū)Ω咚贁?shù)據(jù)精確采集、信號實時處理,在現(xiàn)場測控系統(tǒng)中起到至關(guān)重要的作用。文章介紹了采用FPGA控制高精度高采樣率的A/D電路對高頻信號實時采集,以ARM處理器做為數(shù)據(jù)遠程傳輸?shù)目刂破?,通過DM9000實現(xiàn)高速數(shù)據(jù)網(wǎng)絡(luò)傳輸,將數(shù)據(jù)存儲在遠程PC端。通過實驗測試表明,該高速數(shù)據(jù)采集遠程實時存儲系統(tǒng)可以穩(wěn)定的采集各類高頻信號,能夠廣泛應(yīng)用于多種現(xiàn)場測控系統(tǒng),具有極大的應(yīng)用價值。
FPGA;ARM;高速數(shù)據(jù)采集
在故障診斷等現(xiàn)場測控系統(tǒng)中,高效采集大量原始數(shù)據(jù)是提取和分析系統(tǒng)運行過程中各階段不同信號的必要前提,為后續(xù)信號處理提供了重要保證。
目前的數(shù)據(jù)采集系統(tǒng)種類繁多,一般處理器不能同時滿足其高速采集、遠程傳輸存儲和實時并行處理。FPGA(Field Programmable Gate Array)是一種大規(guī)?,F(xiàn)場可編程邏輯門陣列,它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有編程器件門電路數(shù)有限的缺點[1-2]。FPGA在高速數(shù)據(jù)采集和并行算法處理方面具有單片機和DSP所不具備的優(yōu)點。FPGA內(nèi)部有豐富的可編程邏輯單元、大量的硬件乘法器模塊、充足的I/O引腳資源,以及多個鎖相環(huán)(PLL)可以把系統(tǒng)輸入時鐘倍頻到幾百兆赫茲,以提供給系統(tǒng)內(nèi)部時序電路使用。采用FPGA進行高速數(shù)據(jù)采集存儲系統(tǒng)設(shè)計,具有開發(fā)周期短、集成度高、功耗低、工作頻率高(時鐘延時為ns級)、可現(xiàn)場反復(fù)編程、可靠性高等一系列優(yōu)點。FPGA和ARM(Advanced RISC Machines)單獨都可以完成數(shù)據(jù)采集工作,但是要想同時滿足高速數(shù)據(jù)的并行采集和同步遠程傳輸存儲,必須把FPGA和ARM有效的結(jié)合起來,充分發(fā)揮FPGA對高速并行數(shù)據(jù)的處理優(yōu)勢,利用ARM與PC機接口實現(xiàn)數(shù)據(jù)通過以太網(wǎng)實時遠程傳輸,具有成本低、可靠性高、穩(wěn)定性強的優(yōu)點。因此,在高速實時測控領(lǐng)域有著非常廣闊的應(yīng)用前景。
本文設(shè)計了基于FPGA+ARM的高速數(shù)據(jù)采集和遠程傳輸存儲系統(tǒng)。FPGA采用模塊化的設(shè)計方法,利用Verilog HDL硬件語言設(shè)計A/D模數(shù)轉(zhuǎn)換控制器和16位并行緩存控制器,通過Quartus II和Modelsim對系統(tǒng)的頂層模塊及各子模塊進行功能仿真和時序仿真,靜態(tài)時序分析驗證系統(tǒng)設(shè)計的合理性。首先FPGA控制AD7622實現(xiàn)32MSPS數(shù)據(jù)并行采集,然后與ARM進行DMA方式的高速數(shù)據(jù)傳輸,并在linux內(nèi)核中移植TCP/IP協(xié)議和DM9000網(wǎng)卡的驅(qū)動編寫,最后在PC機上設(shè)計SOCKET網(wǎng)絡(luò)接口,實現(xiàn)高速數(shù)據(jù)的實時采集和遠程存儲。
高速數(shù)據(jù)的實時并行采集和存儲是信號分析處理的前提,保證現(xiàn)場測控系統(tǒng)實時高效運行。系統(tǒng)輸入端接入寬帶高頻信號傳感器,利用FPGA實現(xiàn)高速數(shù)據(jù)采集,ARM處理器實現(xiàn)DMA控制器的高速數(shù)據(jù)傳輸,輸出端通過TCP/IP網(wǎng)絡(luò)協(xié)議與PC機實現(xiàn)網(wǎng)絡(luò)接口通信,完成高速數(shù)據(jù)采集與實時存儲[3]。
系統(tǒng)的主要硬件結(jié)構(gòu)包括寬帶高頻傳感器、AD7622數(shù)據(jù)采集模塊、FPGA數(shù)據(jù)采集主控模塊、ARM9(S3C2440A)的DMA控制器模塊、DM9000網(wǎng)絡(luò)傳輸模塊和PC機數(shù)據(jù)接收的軟件模塊。系統(tǒng)的基本結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)基本結(jié)構(gòu)圖
高速數(shù)據(jù)采集與存儲系統(tǒng)實現(xiàn)的基本功能是利用高頻寬帶傳感器檢測各類高頻信號,經(jīng)過信號調(diào)理電路對采集信號放大、濾波處理。FPGA核心處理器控制AD7622數(shù)據(jù)采集模塊的初始化設(shè)置,以32MSPS速率并行采樣。在ARM的linux內(nèi)核版本為2.6.25.8操作系統(tǒng)下,配置數(shù)據(jù)傳輸方式為內(nèi)存直接存?。―MA)方式,以及DMA控制器的傳輸方式、服務(wù)模式和請求方式等;移植TCP/IP協(xié)議和編寫DM9000網(wǎng)卡驅(qū)動實現(xiàn)高速數(shù)據(jù)實時傳輸。在PC機端通過SOCKET網(wǎng)絡(luò)接口實現(xiàn)數(shù)據(jù)接收。最終將大容量的數(shù)據(jù)寫入PC機硬盤的TXT文件中。
系統(tǒng)硬件接口設(shè)計如圖2所示。
圖2 系統(tǒng)硬件接口圖
圖2中,高頻寬帶傳感器的輸出信號直接傳送給A/D數(shù)據(jù)采集調(diào)理電路的信號接收接口,并將兩者共地降低干擾。FPGA工作在100Mhz的時鐘頻率下,控制AD7622的cnvst啟動轉(zhuǎn)換引腳(低電平表示啟動轉(zhuǎn)換),實時檢測busy信號的下降沿(高電平表示AD7622正在轉(zhuǎn)換)。FPGA同時與ARM的系統(tǒng)總線接口通信,在ARM端設(shè)計DMA控制器完成高速數(shù)據(jù)傳輸,其中FPGA的16位并行數(shù)據(jù)輸出給ARM的數(shù)據(jù)總線LDATA接口,其它DMA通信用到的信號線包括:DMA外部請求DREQ,DMA外部響應(yīng)DACK,S3C2440A的存儲器BANK3的使能信號nGCS3和讀寫控制信號nEW、nOE,DMA的數(shù)據(jù)讀寫時鐘CLKOUT和一次單服務(wù)模式DMA開始信號start。通過這些信號控制接口完成FPGA與ARM的DMA方式數(shù)據(jù)傳輸通信。最后,ARM與PC機通過有線網(wǎng)絡(luò)接口實現(xiàn)高速數(shù)據(jù)實時采集存儲。
FPGA控制高精度高采樣率的ADC電路,在高速數(shù)據(jù)采集的邏輯設(shè)計方面具有容量大、處理速度快、集成度高等優(yōu)點。邏輯單元LE是FPGA的基本單元,也是衡量其容量性能的最重要指標(biāo),F(xiàn)PGA通過四輸入的查找表(16*1RAM)實現(xiàn)組合邏輯的設(shè)計,可現(xiàn)場反復(fù)編程[4-5]。為了提高FPGA的運算性能,芯片制造商在其內(nèi)部集成了專用硬件乘法器等硬核[6]。DMA(Direct Memory Access)技術(shù)是一種高速的數(shù)據(jù)傳輸方式,允許在外部設(shè)備和存儲器之間、存儲器和存儲器之間等直接傳輸數(shù)據(jù)。當(dāng)DMA控制器從數(shù)據(jù)源(外設(shè)和存儲器)將數(shù)據(jù)讀到數(shù)據(jù)總線后,會立刻在同一個DMA周期內(nèi)把數(shù)據(jù)直接傳送到目標(biāo)地址單元內(nèi),而不需要像CPU那樣先接收后轉(zhuǎn)發(fā)。FPGA控制的數(shù)據(jù)采集和ARM端控制的DMA方式數(shù)據(jù)傳輸協(xié)同工作,高效完成高速數(shù)據(jù)采集和實時同步傳輸。
本系統(tǒng)的核心處理器選用Altera公司Cyclone IV系列的FPGA芯片EP40E40F23C6,系統(tǒng)最高工作頻率為400 Mhz。為了保證不失真的數(shù)據(jù)采集,設(shè)計AD7622為2MSPS*16bit的并行轉(zhuǎn)換模式。FPGA系統(tǒng)時鐘是外部50 Mhz晶振時鐘經(jīng)過內(nèi)部PLL倍頻之后得到的100 Mhz,時鐘周期為10 ns。這樣滿足每50個時鐘周期(500 ns)完成一次采樣數(shù)據(jù)轉(zhuǎn)換。AD7622的數(shù)據(jù)采集轉(zhuǎn)換時序如圖3所示。
圖3 AD7622數(shù)據(jù)轉(zhuǎn)換時序圖
配置AD7622為進行連續(xù)讀寫轉(zhuǎn)換。AD7622的轉(zhuǎn)換過程是:初始化時CNVST信號線為高電平,BUSY信號線為低電平,由FPGA控制CNVST輸出4個周期(t1時間)低電平信號作為AD7622的開始轉(zhuǎn)換啟動信號,當(dāng)AD7622內(nèi)部機制檢測到CNVST的低電平時,令BUSY信號由低電平變?yōu)楦唠娖?,表示正在進行單次數(shù)據(jù)的并行轉(zhuǎn)換,同時PFGA內(nèi)部以100 Mhz的時鐘頻率檢測BUSY信號由高變低的下降沿,來判斷單次數(shù)據(jù)轉(zhuǎn)換完成。利用Quartus II和Modelsim對數(shù)據(jù)采集模塊進行時序仿真[7],結(jié)果如圖4所示。
圖4 Modelsim數(shù)據(jù)采集模塊時序仿真圖
圖4中,clk為100 Mhz的系統(tǒng)時鐘;reset為復(fù)位信號(低電平有效);32MSPS的采樣率下,一個采樣周期為50個時鐘(500 ns),cnvst前4個時鐘周期為低電平;busy在第36個時鐘周期出現(xiàn)下降沿,表示一次數(shù)據(jù)轉(zhuǎn)換完成;lock在每次采樣周期結(jié)束時為高電平,表示采樣完成;d[15:0]表示16位的AD7622輸出信號;q[15:0]表示FPGA的讀取信號。利用嵌入式邏輯分析儀(SignalTap II Logic Analyzer)對AD7622數(shù)據(jù)采集卡的測試結(jié)果如圖5所示。
圖5 AD7622數(shù)據(jù)采集硬件測試結(jié)果圖
對AD7622數(shù)據(jù)采集模塊進行驗證,首先將傳感器信號輸出到數(shù)據(jù)采集模塊的輸入端,并把數(shù)據(jù)采集模塊的十六位數(shù)字信號和轉(zhuǎn)換控制信號連接到FPGA的GPIO接口,因為傳感器實際輸出經(jīng)過信號調(diào)理電路濾波、衰減,最終轉(zhuǎn)換信號的幅值為0.9 V左右,滿足AD7622差分輸入范圍。圖5中,經(jīng)過試驗測試采集到的數(shù)字信號以二進制補碼編碼,并以十六進制顯示。由于AD7622的基準(zhǔn)電壓是2.048 V,所以電壓值的最小分辨率是62.5 uV。經(jīng)過換算,十六進制3900H轉(zhuǎn)換成實際模擬電壓是0.912 V,符合高速數(shù)據(jù)采集的設(shè)計要求。
DMA控制器既是一個具有系統(tǒng)總線控制能力的主控部件,又是一個工作方式必須由CPU進行設(shè)置的受控部件。受控部件需要由CPU對它進行工作方式的設(shè)置,以確定通道的選擇、數(shù)據(jù)傳輸模式及類型、內(nèi)存區(qū)域的首地址、地址是遞增或遞減、傳送的總字節(jié)數(shù)等[8]。主控部件掌握總線,可以產(chǎn)生尋址存儲器的地址信號以及進行數(shù)據(jù)讀寫的控制信號。DMA方式傳輸與CPU共享系統(tǒng)總線,對于I/O設(shè)備進行快速數(shù)據(jù)傳輸,必須采用DMA方式實現(xiàn)。
DMA數(shù)據(jù)傳輸?shù)恼w結(jié)構(gòu)如圖6所示。
圖6 DMA數(shù)據(jù)傳輸?shù)恼w結(jié)構(gòu)
DMAC(DMA控制器)是數(shù)據(jù)傳輸?shù)暮诵碾娐?,HOLD和HLDA用于DMA方式請求和響應(yīng)。DMA數(shù)據(jù)傳輸過程一般分為如下四個階段:申請階段、響應(yīng)階段、數(shù)據(jù)傳送階段和傳送結(jié)束階段。
S3C2440A處理器擁有4個獨立通道的DMA控制器,每個DMA通道都有6個源,DMA的觸發(fā)方式分為軟件觸發(fā)和硬件觸發(fā)。本文選用的是DMA通道0,源為nXDREQ0,DMA的操作方式選擇為源設(shè)備和目的設(shè)備都在系統(tǒng)總線上,采用H/W請求模式(硬件請求模式),數(shù)據(jù)的傳輸模式設(shè)置為單服務(wù)傳輸模式。DMA的硬件請求時序圖如圖7所示。
圖7 DMA的硬件請求時序圖
S3C2440A的DMA通道0共有9個控制寄存器,其中6個用于控制DMA傳輸,3個用于監(jiān)視DMA控制器的狀態(tài)。通過在Linux系統(tǒng)中,配置DMA控制寄存器、S3C2440A的存儲器、BNAK選擇控制寄存器和時鐘控制寄存器,繼而控制DMA的運行時鐘CLKOUT、外部響應(yīng)XnDACK的延時、BANK選通信號nGCS的建立時間和延遲時間以及讀寫使能信號nOE的建立時間和延遲時間?;贔PGA和ARM的DMA通信時序圖如圖8所示。
圖8 基于FPGA和ARM9的DMA通信時序圖
圖8中,HCLK是ARM9提供的用于DMA傳輸?shù)臅r鐘100Mhz,XnDREQ是FPGA向ARM9發(fā)送DMA請求的外部信號,XnDACK是ARM9接收到外部DMA請求后的響應(yīng)信號,nGCS是S3C2440A存儲器BANK3的選通信號,nOE是系統(tǒng)存儲單元讀信號的使能端,通過以上方式實現(xiàn)DMA的有效傳輸。
高速數(shù)據(jù)采集存儲子系統(tǒng)利用FPGA和ARM開發(fā)平臺聯(lián)合實現(xiàn),F(xiàn)PGA和ARM采用DMA的方式進行高速數(shù)據(jù)傳輸,并在FPGA內(nèi)部采用雙乒乓緩存的異步FIFO解決數(shù)據(jù)采集和數(shù)據(jù)傳輸?shù)耐竭M行[11]。當(dāng)系統(tǒng)上電啟動時,首先在FPGA內(nèi)部利用Verilog HDL硬件編程語言初始化各端口的值,令FIFO的計數(shù)個數(shù)初值count=0,DMA外部硬件請求端DREQ=1,初始化之后開始數(shù)據(jù)采集,控制AD7622的數(shù)據(jù)轉(zhuǎn)換,把每次轉(zhuǎn)換完成的16位數(shù)字量存在預(yù)先定義的16bit*512的FIFO1,直到FIFO1存滿了之后開始讀,并且令DREQ產(chǎn)生下降沿,計數(shù)器計數(shù)count++,同時實時采集的數(shù)據(jù)存到另一個16bit*512的FIFO2,這樣保證數(shù)據(jù)采集能實時連續(xù)進行。每當(dāng)FPGA發(fā)生一次DREQ的下降沿請求時,ARM的DMA控制器立即檢測到外部請求并申請系統(tǒng)總線,申請成功便產(chǎn)生DACK的下降沿作為DMA的響應(yīng)信號,F(xiàn)PGA在200 Mhz時鐘下檢測DACK的下降沿,同時檢測nGCS和nOE的低有效信號,只有當(dāng)ARM端DMA操作內(nèi)存選通并可以讀寫時,F(xiàn)PGA才把從FIFO讀出的數(shù)據(jù)放到ARM系統(tǒng)總線的數(shù)據(jù)總線端口,其他時刻令數(shù)據(jù)總線端電平為高阻態(tài),保證系統(tǒng)總線讀取數(shù)據(jù)不受污染[9-10]。FPGA內(nèi)部FIFO的讀時鐘是由S3C2440經(jīng)過倍頻配置,通過時鐘輸出引腳CLKOUT提供,時鐘頻率為100 Mhz。直到ARM的DMA操作完成512次(count=512)之后,把count清零,此時FPGA不斷檢測ARM發(fā)送的下次傳送啟動信號start的上升沿,當(dāng)檢測到了下一次啟動傳輸信號,便開始下一個512次DMA的數(shù)據(jù)傳送。FPGA和ARM9實現(xiàn)DMA數(shù)據(jù)傳輸?shù)牧鞒虉D如圖9所示。
圖9 FPGA和ARM9的DMA傳輸流程圖
高速數(shù)據(jù)采集存儲子系統(tǒng)設(shè)計的關(guān)鍵是FPGA與ARM9的DMA通信。FPGA驅(qū)動程序的設(shè)計主要包括:AD7622采集卡的驅(qū)動程序設(shè)計,乒乓緩存FIFO的時序控制,與ARM進行DMA通信的時序控制。ARM系統(tǒng)的重點工作主要包括:Linux系統(tǒng)內(nèi)部存儲器BANK單元的配置,GPIO端口寄存器的配置,DMA相關(guān)寄存器的配置,TCP/IP協(xié)議的移植,DM9000網(wǎng)卡驅(qū)動程序的設(shè)計,PC機接收數(shù)據(jù)是通過SOCKET網(wǎng)絡(luò)接口實現(xiàn)。FPGA和ARM作為一個整體協(xié)同工作,相互配合發(fā)揮各自的優(yōu)勢,完成高速數(shù)據(jù)實時采集,動態(tài)傳輸存儲和控制管理等,為后續(xù)的軟件分析處理提供保障。利用Quartus II內(nèi)部的SingalTap II Analyzer對系統(tǒng)性能進行分析與驗證,系統(tǒng)工作時序圖如圖10所示。
圖10 FPGA與ARM的DMA通信測試時序圖
圖10中,clk為FPGA工作時鐘100 Mhz;reset為復(fù)位信號,低電平有效;data為AD7622的輸出數(shù)據(jù);q為FPGA的采集信號;rereq和wrreq為FIFO的讀寫信號;count_dreq為DMA傳輸數(shù)據(jù)的個數(shù);DREQ、DACK、nGCS、nOE為DMA的傳輸控制信號;其他信號為FPGA內(nèi)部溝通信號。由圖可知,DMA方式的數(shù)據(jù)傳輸滿足32MSPS采樣率下高速數(shù)據(jù)的實時傳輸,達到系統(tǒng)的設(shè)計要求。
本文分析了FPGA和ARM分別在高速數(shù)據(jù)采集和處理方面的優(yōu)缺點,結(jié)合整個系統(tǒng)需要實時同步傳輸數(shù)據(jù),最終采用FPGA做為數(shù)據(jù)采集核心控制器,ARM做為數(shù)據(jù)DMA方式傳輸?shù)目刂破鳎ㄟ^與PC機的網(wǎng)絡(luò)接口連接,實現(xiàn)并行采集和實時同步傳輸。
整個系統(tǒng)的硬件接口的設(shè)計思路具有很強的通用性,也可以廣泛應(yīng)用于各種高速低速信號的采集,用戶方便修改升級,具有很強的實用性。
[1]鄧志陽,曹玉雯,祝海江.一種基于FPGA的超聲信號高速采集與壓縮方法[J].計量技術(shù),2010(1):27-29.
[2]于宗光,魏敬和,王國章.SoC和FPGA技術(shù)未來的發(fā)展趨勢[J].電子與封裝,2006,6(3):1-5.
[3]朱建光,余紅英.基于ARM和FPGA的高速數(shù)據(jù)采集系統(tǒng)[J].伺服控制,2010(3):75-77.
[4]麥曉明,王銳,陳海涵,等.輸電線路無人機巡檢數(shù)據(jù)鏈路通信系統(tǒng)設(shè)計[J].廣東電力,2014,27(4):76-81.
[5]張曉娟.基于FPGA的實時視頻信號處理系統(tǒng)的設(shè)計[D].太原:太原理工大學(xué),2012.
[6]郝宇寧.基于DSP的小波分析在聲發(fā)射信號處理中的應(yīng)用研究[D].南寧:廣西大學(xué),2007.
[7]鄔琦,楊江濤,馬喜宏.基于FPGA的高速信號采集電路的設(shè)計與實現(xiàn)[J].實驗室研究與探索,2015,34(4):124-128.
[8]甘利軍.裝甲車發(fā)動機檢測與故障診斷設(shè)備的研究[D].武漢:武漢理工大學(xué),2009.
[9]張偉,劉爽,王炳義,等.基于ARM的CCD數(shù)據(jù)遠程采集系統(tǒng)設(shè)計[J].微計算機信息,2009,25(4):89-90.
[10]王珊.基于ARM9的近程無人機數(shù)據(jù)采集系統(tǒng)[J].測控遙感與導(dǎo)航定位,2013,43(8):40-43.
[11]施華鈞.高效異步FIFO的設(shè)計實現(xiàn)[D].長沙:湖南大學(xué),2013.
Design of High-speed Data Acquisition System Based on FPGA and ARM
YANG Lei1,LIU Mei-zhi1,GAO Hai1,DANG Chan-juan1
(School of Physics and Electronic Science,Shanxi Datong University,Datong Shanxi,037009)
Data acquisition is the necessary premise to complete signal analysis and information processing.It can be used for accurate data collection and signal processing of high-speed data,which plays a crucial role in the field measurement and control system.
A/D circuit controlled by FPGA with high precision and sampling rate is used to perform real-time acquisition of high freduency signal,ARM processor as the controller of data remote transmission,high-speed data network transmission are realized by DM9000,store the data in the remote PC.The experimental tests show that the high-speed data acquisition remote real-time storage system can gather all kinds of high frequency signal steadily,can be widely used in a variety of field measurement and control system,has a great application value.
FPGA;ARM;high-speed data acquisition
TH86
A
1674-0874(2017)06-0032-05
2017-05-16
楊磊(1988-),男,山西大同人,碩士,助教,研究方向:網(wǎng)絡(luò)化測控。
〔責(zé)任編輯 高彩云〕