楊 磊,劉美枝,高 海,黨嬋娟
(山西大同大學物理與電子科學學院,山西大同037009)
基于FPGA和ARM的高速數據采集系統設計
楊 磊,劉美枝,高 海,黨嬋娟
(山西大同大學物理與電子科學學院,山西大同037009)
數據采集是完成信號分析、信息處理的必要前提。能夠對高速數據精確采集、信號實時處理,在現場測控系統中起到至關重要的作用。文章介紹了采用FPGA控制高精度高采樣率的A/D電路對高頻信號實時采集,以ARM處理器做為數據遠程傳輸的控制器,通過DM9000實現高速數據網絡傳輸,將數據存儲在遠程PC端。通過實驗測試表明,該高速數據采集遠程實時存儲系統可以穩定的采集各類高頻信號,能夠廣泛應用于多種現場測控系統,具有極大的應用價值。
FPGA;ARM;高速數據采集
在故障診斷等現場測控系統中,高效采集大量原始數據是提取和分析系統運行過程中各階段不同信號的必要前提,為后續信號處理提供了重要保證。
目前的數據采集系統種類繁多,一般處理器不能同時滿足其高速采集、遠程傳輸存儲和實時并行處理。FPGA(Field Programmable Gate Array)是一種大規?,F場可編程邏輯門陣列,它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有編程器件門電路數有限的缺點[1-2]。FPGA在高速數據采集和并行算法處理方面具有單片機和DSP所不具備的優點。FPGA內部有豐富的可編程邏輯單元、大量的硬件乘法器模塊、充足的I/O引腳資源,以及多個鎖相環(PLL)可以把系統輸入時鐘倍頻到幾百兆赫茲,以提供給系統內部時序電路使用。采用FPGA進行高速數據采集存儲系統設計,具有開發周期短、集成度高、功耗低、工作頻率高(時鐘延時為ns級)、可現場反復編程、可靠性高等一系列優點。FPGA和ARM(Advanced RISC Machines)單獨都可以完成數據采集工作,但是要想同時滿足高速數據的并行采集和同步遠程傳輸存儲,必須把FPGA和ARM有效的結合起來,充分發揮FPGA對高速并行數據的處理優勢,利用ARM與PC機接口實現數據通過以太網實時遠程傳輸,具有成本低、可靠性高、穩定性強的優點。因此,在高速實時測控領域有著非常廣闊的應用前景。
本文設計了基于FPGA+ARM的高速數據采集和遠程傳輸存儲系統。FPGA采用模塊化的設計方法,利用Verilog HDL硬件語言設計A/D模數轉換控制器和16位并行緩存控制器,通過Quartus II和Modelsim對系統的頂層模塊及各子模塊進行功能仿真和時序仿真,靜態時序分析驗證系統設計的合理性。首先FPGA控制AD7622實現32MSPS數據并行采集,然后與ARM進行DMA方式的高速數據傳輸,并在linux內核中移植TCP/IP協議和DM9000網卡的驅動編寫,最后在PC機上設計SOCKET網絡接口,實現高速數據的實時采集和遠程存儲。
高速數據的實時并行采集和存儲是信號分析處理的前提,保證現場測控系統實時高效運行。系統輸入端接入寬帶高頻信號傳感器,利用FPGA實現高速數據采集,ARM處理器實現DMA控制器的高速數據傳輸,輸出端通過TCP/IP網絡協議與PC機實現網絡接口通信,完成高速數據采集與實時存儲[3]。
系統的主要硬件結構包括寬帶高頻傳感器、AD7622數據采集模塊、FPGA數據采集主控模塊、ARM9(S3C2440A)的DMA控制器模塊、DM9000網絡傳輸模塊和PC機數據接收的軟件模塊。系統的基本結構如圖1所示。

圖1 系統基本結構圖
高速數據采集與存儲系統實現的基本功能是利用高頻寬帶傳感器檢測各類高頻信號,經過信號調理電路對采集信號放大、濾波處理。FPGA核心處理器控制AD7622數據采集模塊的初始化設置,以32MSPS速率并行采樣。在ARM的linux內核版本為2.6.25.8操作系統下,配置數據傳輸方式為內存直接存?。―MA)方式,以及DMA控制器的傳輸方式、服務模式和請求方式等;移植TCP/IP協議和編寫DM9000網卡驅動實現高速數據實時傳輸。在PC機端通過SOCKET網絡接口實現數據接收。最終將大容量的數據寫入PC機硬盤的TXT文件中。
系統硬件接口設計如圖2所示。

圖2 系統硬件接口圖
圖2中,高頻寬帶傳感器的輸出信號直接傳送給A/D數據采集調理電路的信號接收接口,并將兩者共地降低干擾。FPGA工作在100Mhz的時鐘頻率下,控制AD7622的cnvst啟動轉換引腳(低電平表示啟動轉換),實時檢測busy信號的下降沿(高電平表示AD7622正在轉換)。FPGA同時與ARM的系統總線接口通信,在ARM端設計DMA控制器完成高速數據傳輸,其中FPGA的16位并行數據輸出給ARM的數據總線LDATA接口,其它DMA通信用到的信號線包括:DMA外部請求DREQ,DMA外部響應DACK,S3C2440A的存儲器BANK3的使能信號nGCS3和讀寫控制信號nEW、nOE,DMA的數據讀寫時鐘CLKOUT和一次單服務模式DMA開始信號start。通過這些信號控制接口完成FPGA與ARM的DMA方式數據傳輸通信。最后,ARM與PC機通過有線網絡接口實現高速數據實時采集存儲。
FPGA控制高精度高采樣率的ADC電路,在高速數據采集的邏輯設計方面具有容量大、處理速度快、集成度高等優點。邏輯單元LE是FPGA的基本單元,也是衡量其容量性能的最重要指標,FPGA通過四輸入的查找表(16*1RAM)實現組合邏輯的設計,可現場反復編程[4-5]。為了提高FPGA的運算性能,芯片制造商在其內部集成了專用硬件乘法器等硬核[6]。DMA(Direct Memory Access)技術是一種高速的數據傳輸方式,允許在外部設備和存儲器之間、存儲器和存儲器之間等直接傳輸數據。當DMA控制器從數據源(外設和存儲器)將數據讀到數據總線后,會立刻在同一個DMA周期內把數據直接傳送到目標地址單元內,而不需要像CPU那樣先接收后轉發。FPGA控制的數據采集和ARM端控制的DMA方式數據傳輸協同工作,高效完成高速數據采集和實時同步傳輸。
本系統的核心處理器選用Altera公司Cyclone IV系列的FPGA芯片EP40E40F23C6,系統最高工作頻率為400 Mhz。為了保證不失真的數據采集,設計AD7622為2MSPS*16bit的并行轉換模式。FPGA系統時鐘是外部50 Mhz晶振時鐘經過內部PLL倍頻之后得到的100 Mhz,時鐘周期為10 ns。這樣滿足每50個時鐘周期(500 ns)完成一次采樣數據轉換。AD7622的數據采集轉換時序如圖3所示。

圖3 AD7622數據轉換時序圖
配置AD7622為進行連續讀寫轉換。AD7622的轉換過程是:初始化時CNVST信號線為高電平,BUSY信號線為低電平,由FPGA控制CNVST輸出4個周期(t1時間)低電平信號作為AD7622的開始轉換啟動信號,當AD7622內部機制檢測到CNVST的低電平時,令BUSY信號由低電平變為高電平,表示正在進行單次數據的并行轉換,同時PFGA內部以100 Mhz的時鐘頻率檢測BUSY信號由高變低的下降沿,來判斷單次數據轉換完成。利用Quartus II和Modelsim對數據采集模塊進行時序仿真[7],結果如圖4所示。

圖4 Modelsim數據采集模塊時序仿真圖
圖4中,clk為100 Mhz的系統時鐘;reset為復位信號(低電平有效);32MSPS的采樣率下,一個采樣周期為50個時鐘(500 ns),cnvst前4個時鐘周期為低電平;busy在第36個時鐘周期出現下降沿,表示一次數據轉換完成;lock在每次采樣周期結束時為高電平,表示采樣完成;d[15:0]表示16位的AD7622輸出信號;q[15:0]表示FPGA的讀取信號。利用嵌入式邏輯分析儀(SignalTap II Logic Analyzer)對AD7622數據采集卡的測試結果如圖5所示。

圖5 AD7622數據采集硬件測試結果圖
對AD7622數據采集模塊進行驗證,首先將傳感器信號輸出到數據采集模塊的輸入端,并把數據采集模塊的十六位數字信號和轉換控制信號連接到FPGA的GPIO接口,因為傳感器實際輸出經過信號調理電路濾波、衰減,最終轉換信號的幅值為0.9 V左右,滿足AD7622差分輸入范圍。圖5中,經過試驗測試采集到的數字信號以二進制補碼編碼,并以十六進制顯示。由于AD7622的基準電壓是2.048 V,所以電壓值的最小分辨率是62.5 uV。經過換算,十六進制3900H轉換成實際模擬電壓是0.912 V,符合高速數據采集的設計要求。
DMA控制器既是一個具有系統總線控制能力的主控部件,又是一個工作方式必須由CPU進行設置的受控部件。受控部件需要由CPU對它進行工作方式的設置,以確定通道的選擇、數據傳輸模式及類型、內存區域的首地址、地址是遞增或遞減、傳送的總字節數等[8]。主控部件掌握總線,可以產生尋址存儲器的地址信號以及進行數據讀寫的控制信號。DMA方式傳輸與CPU共享系統總線,對于I/O設備進行快速數據傳輸,必須采用DMA方式實現。
DMA數據傳輸的整體結構如圖6所示。

圖6 DMA數據傳輸的整體結構
DMAC(DMA控制器)是數據傳輸的核心電路,HOLD和HLDA用于DMA方式請求和響應。DMA數據傳輸過程一般分為如下四個階段:申請階段、響應階段、數據傳送階段和傳送結束階段。
S3C2440A處理器擁有4個獨立通道的DMA控制器,每個DMA通道都有6個源,DMA的觸發方式分為軟件觸發和硬件觸發。本文選用的是DMA通道0,源為nXDREQ0,DMA的操作方式選擇為源設備和目的設備都在系統總線上,采用H/W請求模式(硬件請求模式),數據的傳輸模式設置為單服務傳輸模式。DMA的硬件請求時序圖如圖7所示。

圖7 DMA的硬件請求時序圖
S3C2440A的DMA通道0共有9個控制寄存器,其中6個用于控制DMA傳輸,3個用于監視DMA控制器的狀態。通過在Linux系統中,配置DMA控制寄存器、S3C2440A的存儲器、BNAK選擇控制寄存器和時鐘控制寄存器,繼而控制DMA的運行時鐘CLKOUT、外部響應XnDACK的延時、BANK選通信號nGCS的建立時間和延遲時間以及讀寫使能信號nOE的建立時間和延遲時間。基于FPGA和ARM的DMA通信時序圖如圖8所示。

圖8 基于FPGA和ARM9的DMA通信時序圖
圖8中,HCLK是ARM9提供的用于DMA傳輸的時鐘100Mhz,XnDREQ是FPGA向ARM9發送DMA請求的外部信號,XnDACK是ARM9接收到外部DMA請求后的響應信號,nGCS是S3C2440A存儲器BANK3的選通信號,nOE是系統存儲單元讀信號的使能端,通過以上方式實現DMA的有效傳輸。
高速數據采集存儲子系統利用FPGA和ARM開發平臺聯合實現,FPGA和ARM采用DMA的方式進行高速數據傳輸,并在FPGA內部采用雙乒乓緩存的異步FIFO解決數據采集和數據傳輸的同步進行[11]。當系統上電啟動時,首先在FPGA內部利用Verilog HDL硬件編程語言初始化各端口的值,令FIFO的計數個數初值count=0,DMA外部硬件請求端DREQ=1,初始化之后開始數據采集,控制AD7622的數據轉換,把每次轉換完成的16位數字量存在預先定義的16bit*512的FIFO1,直到FIFO1存滿了之后開始讀,并且令DREQ產生下降沿,計數器計數count++,同時實時采集的數據存到另一個16bit*512的FIFO2,這樣保證數據采集能實時連續進行。每當FPGA發生一次DREQ的下降沿請求時,ARM的DMA控制器立即檢測到外部請求并申請系統總線,申請成功便產生DACK的下降沿作為DMA的響應信號,FPGA在200 Mhz時鐘下檢測DACK的下降沿,同時檢測nGCS和nOE的低有效信號,只有當ARM端DMA操作內存選通并可以讀寫時,FPGA才把從FIFO讀出的數據放到ARM系統總線的數據總線端口,其他時刻令數據總線端電平為高阻態,保證系統總線讀取數據不受污染[9-10]。FPGA內部FIFO的讀時鐘是由S3C2440經過倍頻配置,通過時鐘輸出引腳CLKOUT提供,時鐘頻率為100 Mhz。直到ARM的DMA操作完成512次(count=512)之后,把count清零,此時FPGA不斷檢測ARM發送的下次傳送啟動信號start的上升沿,當檢測到了下一次啟動傳輸信號,便開始下一個512次DMA的數據傳送。FPGA和ARM9實現DMA數據傳輸的流程圖如圖9所示。

圖9 FPGA和ARM9的DMA傳輸流程圖
高速數據采集存儲子系統設計的關鍵是FPGA與ARM9的DMA通信。FPGA驅動程序的設計主要包括:AD7622采集卡的驅動程序設計,乒乓緩存FIFO的時序控制,與ARM進行DMA通信的時序控制。ARM系統的重點工作主要包括:Linux系統內部存儲器BANK單元的配置,GPIO端口寄存器的配置,DMA相關寄存器的配置,TCP/IP協議的移植,DM9000網卡驅動程序的設計,PC機接收數據是通過SOCKET網絡接口實現。FPGA和ARM作為一個整體協同工作,相互配合發揮各自的優勢,完成高速數據實時采集,動態傳輸存儲和控制管理等,為后續的軟件分析處理提供保障。利用Quartus II內部的SingalTap II Analyzer對系統性能進行分析與驗證,系統工作時序圖如圖10所示。

圖10 FPGA與ARM的DMA通信測試時序圖
圖10中,clk為FPGA工作時鐘100 Mhz;reset為復位信號,低電平有效;data為AD7622的輸出數據;q為FPGA的采集信號;rereq和wrreq為FIFO的讀寫信號;count_dreq為DMA傳輸數據的個數;DREQ、DACK、nGCS、nOE為DMA的傳輸控制信號;其他信號為FPGA內部溝通信號。由圖可知,DMA方式的數據傳輸滿足32MSPS采樣率下高速數據的實時傳輸,達到系統的設計要求。
本文分析了FPGA和ARM分別在高速數據采集和處理方面的優缺點,結合整個系統需要實時同步傳輸數據,最終采用FPGA做為數據采集核心控制器,ARM做為數據DMA方式傳輸的控制器,通過與PC機的網絡接口連接,實現并行采集和實時同步傳輸。
整個系統的硬件接口的設計思路具有很強的通用性,也可以廣泛應用于各種高速低速信號的采集,用戶方便修改升級,具有很強的實用性。
[1]鄧志陽,曹玉雯,祝海江.一種基于FPGA的超聲信號高速采集與壓縮方法[J].計量技術,2010(1):27-29.
[2]于宗光,魏敬和,王國章.SoC和FPGA技術未來的發展趨勢[J].電子與封裝,2006,6(3):1-5.
[3]朱建光,余紅英.基于ARM和FPGA的高速數據采集系統[J].伺服控制,2010(3):75-77.
[4]麥曉明,王銳,陳海涵,等.輸電線路無人機巡檢數據鏈路通信系統設計[J].廣東電力,2014,27(4):76-81.
[5]張曉娟.基于FPGA的實時視頻信號處理系統的設計[D].太原:太原理工大學,2012.
[6]郝宇寧.基于DSP的小波分析在聲發射信號處理中的應用研究[D].南寧:廣西大學,2007.
[7]鄔琦,楊江濤,馬喜宏.基于FPGA的高速信號采集電路的設計與實現[J].實驗室研究與探索,2015,34(4):124-128.
[8]甘利軍.裝甲車發動機檢測與故障診斷設備的研究[D].武漢:武漢理工大學,2009.
[9]張偉,劉爽,王炳義,等.基于ARM的CCD數據遠程采集系統設計[J].微計算機信息,2009,25(4):89-90.
[10]王珊.基于ARM9的近程無人機數據采集系統[J].測控遙感與導航定位,2013,43(8):40-43.
[11]施華鈞.高效異步FIFO的設計實現[D].長沙:湖南大學,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-),男,山西大同人,碩士,助教,研究方向:網絡化測控。
〔責任編輯 高彩云〕