《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設計
基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設計
來源:電子技術(shù)應用2011年第12期
何 瓊1,陳 鐵1,程 鑫2
1.武漢軟件工程職業(yè)學院 電子系,湖北 武漢430074; 2.華中科技大學 數(shù)字制造與裝備國家重點實驗室,湖北 武漢430074
摘要: 提出了一種基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設計方案。該方案由底層控制器提供精確采樣時序,保證ADC器件的采樣吞吐;采用支持PCI協(xié)議的DMA方式的數(shù)據(jù)采集機制,優(yōu)化數(shù)據(jù)采集存儲及向上位機交互方式,以確保采集數(shù)據(jù)的高實時性。該方案具有良好的移植性,可應用于采樣速率高、數(shù)據(jù)采集量大、數(shù)據(jù)實時性要求高的數(shù)據(jù)采集系統(tǒng)。
中圖分類號: TN274
文獻標識碼: A
文章編號: 0258-7998(2011)12-0040-04
Design of DMA mode high-speed data acquisition system based on FPGA
He Qiong1,Chen Tie1,Cheng Xin2
1.Department of Electronic,Wuhan Vocational College of Software Engineering,Wuhan 430074,China; 2.State Key Lab of Digital Manufacturing Equipment & Technology,Huazhong University of Science & Technology, Wuhan 430074,China
Abstract: This paper proposes a design scheme of DMA mode high-speed real-time data acquisition system based on FPGA. Bottom layer microcontroller provides precise data sampling timing sequence to ensure ADC sampling throughout. Data sampling mechanism under DMA mode supports PCI interface protocol, which ensures systematic high real-time performance. The scheme has excellent portability, can be applied in the data acquisition system which requires high sampling rate, large amount of data and high real-time performance.
Key words : FPGA;DMA;high-speed;real-time;data acquisition system


    工業(yè)自動化設備的快速發(fā)展,對控制精度的要求越來越高,對數(shù)據(jù)采集的可靠性和實時性的要求也不斷提高。提高數(shù)據(jù)采集系統(tǒng)性能的方法有:(1)采用高性能的ADC器件,配合低噪聲、低靜態(tài)偏移的前端驅(qū)動電路,以達到極高的采樣吞吐和采樣分辨率。目前高端的ADC器件分辨率可達24 bit,采樣率已達40 GS/s[1]。(2)設計數(shù)據(jù)存儲為FIFO,以提高數(shù)據(jù)采樣實時性和數(shù)據(jù)存儲深度。(3)采用高速數(shù)據(jù)通信技術(shù),完成由底層數(shù)據(jù)采集單元到上位計算機的數(shù)據(jù)傳輸,利用上位機軟件平臺進行數(shù)據(jù)的分析處理和多樣化的輸出顯示[2]。數(shù)據(jù)采集系統(tǒng)的性能瓶頸在于高速采樣數(shù)據(jù)實時存儲,以及上下位機間的數(shù)據(jù)傳輸能力。
    針對ADC器件,一般采用微控制器以指令方式控制其執(zhí)行時序,但微控制器的速度有限,而且一般需要3~4條指令完成一次數(shù)據(jù)采樣工作,制約了ADC的采樣吞吐[3]。如目前高性能的浮點型DSP TMS320C6713B的外部總線時鐘也僅為100 MHz[4],難以直接控制超過50 MS/s ADC器件的數(shù)據(jù)采樣或存儲。此外,微控制器對外訪問為標準時序,并不具備針對精密復雜采樣時序ADC器件的能力。而FPGA具有較高的運行主頻,用于控制底層器件的執(zhí)行時序,具備良好的接口能力,能最大限度地保障ADC的采樣率[5]。
    為保證數(shù)據(jù)采樣的實時性,應盡可能減少數(shù)據(jù)實時采集、預處理、存儲和傳輸過程中的時間開銷,需設計高性能的數(shù)據(jù)鏈路,一方面實現(xiàn)高速采樣數(shù)據(jù)的實時存儲,另一方面實現(xiàn)底層數(shù)據(jù)采集單元與上位機之間的數(shù)據(jù)交互。DMA(Direct Memory Access)方式由專用的DMA控制器完成多系統(tǒng)單元之間的快速數(shù)據(jù)交互,包括微處理器內(nèi)核、存儲區(qū)、外部接口等,不占用大量的處理器時間,而且數(shù)據(jù)傳輸速率不受處理器執(zhí)行速度限制,能有效減輕處理器的負擔,提高數(shù)據(jù)傳輸?shù)男?,從而提高系統(tǒng)性能[6]。
    本文提出了一種基于FPGA的DMA方式高速實時數(shù)據(jù)采集系統(tǒng)設計方案:基于FPGA實現(xiàn)高速ADC器件采樣時序控制與實時存儲;采用帶DMA控制器的PCI接口,將數(shù)據(jù)實時傳輸?shù)缴衔粰C;數(shù)據(jù)采集、存儲與傳輸呈流水線方式進行。
1 數(shù)據(jù)采集系統(tǒng)總體結(jié)構(gòu)
    DMA方式數(shù)據(jù)采集是指數(shù)據(jù)采集過程由底層數(shù)據(jù)采集單元完成,而數(shù)據(jù)采集結(jié)果不經(jīng)過微處理器而被直接寫入系統(tǒng)內(nèi)存。底層數(shù)據(jù)采集單元依照上位機設定而高效運行,對微處理器的依賴程度低,能有效節(jié)省上位機軟件開銷,且數(shù)據(jù)采集實時性高。
    數(shù)據(jù)采集系統(tǒng)的總體架構(gòu)如圖1所示,其中PCI核、DMA控制器與A/D控制器均在FPGA內(nèi)部實現(xiàn)。為實現(xiàn)多路并行采樣,可選用多片A/D器件并行處理的方式,在FPGA的高速狀態(tài)機控制下,完成模擬信號經(jīng)過多片A/D器件流水轉(zhuǎn)換,并將數(shù)據(jù)采樣結(jié)果儲存到由Block RAM構(gòu)建的高速緩沖RAM陣列中,采樣時序由FPGA生成,保證了多路并行采樣的高同步性。

    FPGA采用Altera公司的Cyclone IV系列 EP4CGX150,內(nèi)部帶有6.3 MB嵌入式 Block RAM,支持最高頻率167 MHz的存儲區(qū)訪問,易于設計接口友好的存儲區(qū)[7]。在FPGA內(nèi)部設計了數(shù)據(jù)FIFO用于實現(xiàn)總線速率匹配,PCI總線速率為32 bit、33 MHz,而數(shù)據(jù)采樣流水速率為16 bit、20 MHz。為提高總線利用率,需設計數(shù)據(jù)緩沖來實現(xiàn)不同速率數(shù)據(jù)傳輸之間的速度匹配,而數(shù)據(jù)緩沖的深度取決于采樣數(shù)據(jù)實時性要求。
    采用以上結(jié)構(gòu)具有如下優(yōu)點:(1)底層A/D控制器提供精密采樣時序,保證了ADC器件的采樣吞吐,最大化地保證數(shù)據(jù)采樣的實時性;(2)采用帶DMA控制器的PCI接口與上位機進行數(shù)據(jù)交互,減少了上位機軟件負荷; (3)基于單片F(xiàn)PGA芯片設計,結(jié)構(gòu)簡單而優(yōu)化,可靠性高,可降低成本。
2 數(shù)據(jù)采集系統(tǒng)的實現(xiàn)
2.1 PCI IP核

    PCI總線是獨立于處理器的32 bit或64 bit局部總線,在32 bit/33 MHz時,可達到132 MB/s的帶寬;在64 bit/66 MHz 時,可達到528 MB/s的帶寬[1]。通常PCI總線接口通過專用的PCI橋芯片或帶PCI控制器DSP器件(如TMS320C6205等)實現(xiàn)。
    Altera公司推出的 PCI Compiler 軟件包可以參數(shù)化地生成應用于PCI總線的IP核,基于該IP核可生成符合32 bit/33 MHz PCI 2.2規(guī)范的主從控制器,包含了PCI總線的全部功能,能實現(xiàn)總線協(xié)議的轉(zhuǎn)換,并將復雜的、時序要求高的PCI總線操作,轉(zhuǎn)換成易于使用本地總線(Local 總線)的接口邏輯[6]。
    PCI IP核的結(jié)構(gòu)如圖2所示,包括:(1)配置寄存器:用于保存PCI設備的基本信息;(2)PCI地址數(shù)據(jù)緩存:用于緩存PCI總線上的地址信號;(3)主模式接口控制模塊:負責在主模式(Master)下對PCI總線的操作;(4)從模式接口控制模塊:負責在從模式(Slave)下PCI總線的操作;(5)奇偶校驗器:當數(shù)據(jù)校驗出錯時,生成一個錯誤信息輸出到配置寄存器;(6)本地主模式控制模塊:負責主模式下的本地接口控制邏輯;(7)本地從模式控制模塊:負責從模式下本地接口控制邏輯;(8)本地邏輯接口模塊:負責控制本地端接口的地址、數(shù)據(jù)、控制、字節(jié)使能等[6]。

2.2 DMA控制器
    針對高帶寬、低延時和大量數(shù)據(jù)存儲與傳輸需求,設計了基于PCI IP核的DMA控制器。該DMA控制器是系統(tǒng)中的核心單元,實現(xiàn)高速采樣數(shù)據(jù)向上位機的DMA方式實時傳輸。DMA控制器結(jié)構(gòu)如圖3所示,內(nèi)部寄存器堆定義了DMA控制器的行為,而上位機可通過PCI總線設置相應的寄存器。

 

 

    系統(tǒng)的數(shù)據(jù)鏈路中包含有兩種設置:(1)上位機對PCI IP核配置寄存器的設置,其對應的訪問操作完全遵循標準的PCI總線配置讀寫操作時序;(2)上位機對DMA控制器內(nèi)部寄存器的設置,作為PCI目標地址映射到系統(tǒng)的PCI地址空間,其訪問操作符合PCI Target訪問時序。DMA內(nèi)部寄存器堆被直接映射到上位機的PCI地址空間,其基地址由PCI 核中配置寄存器設定,上位機通過設置DMA寄存器控制DMA的執(zhí)行。PCI IP核完成標準PCI訪問與Local總線訪問之間的時序轉(zhuǎn)換,而DMA控制器按照其寄存器堆的設置,完成各個Local總線設備之間的數(shù)據(jù)傳輸,并通過PCI IP核申請PCI總線,向上位機進行數(shù)據(jù)傳輸。
    DMA控制器設計了兩個通信接口:接口0可以進行主、從模式通信;接口1僅能進行主模式通信。在主模式下,每個通信接口可主動對Local總線進行訪問;而處于從模式時,僅能接收來自Local總線的命令及返回相應的數(shù)據(jù)至Local總線??紤]到總線速率并不一致,即采用FIFO進行數(shù)據(jù)緩沖;A/D采樣數(shù)據(jù)被緩沖到FIFO中,而DMA引擎將讀取該數(shù)據(jù)并發(fā)送到上位機,數(shù)據(jù)存儲和讀取呈流水線方式并行進行,其實時性損耗僅在于DMA引擎啟動延遲。值得注意的是:在上位機連續(xù)發(fā)起對后端的訪問時,需確定上次的Local總線訪問是否已結(jié)束;而當總線速率差異過大時,應該在PCI訪問時序中插入等待周期,以避免造成數(shù)據(jù)丟失。
    DMA引擎支持多通道模式(提供4個通道),可對應多個A/D器件,大大提高了系統(tǒng)數(shù)據(jù)傳輸?shù)牟⑿卸?。每個通道都可在兩個接口之間通信,當兩個接口都處于主模式時,一個接口負責從目標設備讀取數(shù)據(jù),數(shù)據(jù)通過DMA控制器的寄存器緩存,而通過另一個接口寫入目的設備。當多個通道同時收到DMA請求時,如果所訪問的端口不沖突,則每個通道可以各自獨立地通過所訪問的端口資源進行DMA傳輸,從而提高DMA數(shù)據(jù)傳輸?shù)男???紤]到通道對接口訪問可能產(chǎn)生沖突,則需要引入通道優(yōu)先級仲裁機制。多個通道間的仲裁機制如圖4所示。


    當多個通道同時請求時,DMA引擎應該進行優(yōu)先級仲裁,來判定哪個通道占據(jù)數(shù)據(jù)傳輸接口。DMA控制器工作過程如下:(1)上位機通過DMA控制器接口0向其寄存器寫入配置信息,包括中斷設置、DMA傳輸接口配置、各通道的工作方式設置、傳輸數(shù)據(jù)長度、源地址及目的地址等。(2)待配置信息寫入完畢,DMA數(shù)據(jù)傳輸開始。若設置使用兩個接口傳輸數(shù)據(jù),則處于主模式的接口從數(shù)據(jù)源讀取數(shù)據(jù),經(jīng)過通道內(nèi)部緩存,由另一個處于主模式的接口寫入目的地址。(3)某個通道數(shù)據(jù)傳輸完成后,會設置其控制狀態(tài)寄存器的對應位,若對應中斷沒有被屏蔽,則DMA引擎通過接口0向微處理器提交中斷;若在傳輸過程中出現(xiàn)錯誤,則控制狀態(tài)寄存器對應位置位,而DMA引擎同樣會向微處理器提交中斷。
2.3 A/D采樣控制及數(shù)據(jù)存儲
    TLC5510A是CMOS 8 bit精度、20 MS/s采樣速率的ADC器件,采用Semi-flash架構(gòu)[8],支持5 V單電源供電,典型功耗為130 mW,包含內(nèi)部采樣保持電路、高阻抗的并行接口以及內(nèi)部采樣參考。Semi-flash架構(gòu)減少了功耗而且簡化了數(shù)據(jù)比較轉(zhuǎn)換邏輯。TLC5510A實現(xiàn)流水線方式采樣,每個時鐘周期完成一次數(shù)據(jù)采樣。在FPGA內(nèi)部設計了A/D控制器,負責提供ADC器件采樣時序控制信號,完成采樣及存儲控制,將采樣數(shù)據(jù)實時寫入數(shù)據(jù)FIFO。值得注意的是:ADC的數(shù)據(jù)采樣結(jié)果會延遲3個周期輸出,則FIFO存儲地址輸出應該有對應的延遲時序,如圖5所示。將邏輯存儲地址以采樣時鐘速率延遲3個周期,即可生成實際存儲地址,而將采樣數(shù)據(jù)存儲到緩存FIFO的對應空間中。

    上位機通過設置采樣序列,可完成特定采樣率的若干次采樣(通過設置采樣存儲深度),且采樣數(shù)據(jù)被無延遲地存儲入數(shù)據(jù)FIFO,A/D控制器隨后申請DMA傳輸,在DMA控制器的作用下,該采樣數(shù)據(jù)高效傳輸至上位機。
3 實驗平臺與結(jié)果分析
    為了驗證本文介紹的高速實時數(shù)據(jù)采集系統(tǒng)性能,建立如圖6所示的實驗平臺。上位機提供設備驅(qū)動程序,實現(xiàn)對數(shù)據(jù)采集卡的初始化,能對端口進行讀寫操作、中斷設置和響應及中斷調(diào)用,以及對內(nèi)存的直接讀寫等。驅(qū)動設備基于Driver Studio完成,其包含完善的源代碼生成工具以及相應的類庫和驅(qū)動程序樣本,提供了在VC++下進行驅(qū)動程序開發(fā)的支持。

    接觸傳感器CIS(Contact Image Sensor)廣泛用于掃描儀、清分機以及其他機器視覺應用中。本實驗平臺中采用山東華菱電子公司的LT2R183N-090723傳感器,該器件最大支持1 440×800的圖像掃描分辨率,傳感器信號采用三路式模擬信號輸出方式。自行設計的數(shù)據(jù)采集卡與上位機共同構(gòu)成了本文所介紹的數(shù)據(jù)采集系統(tǒng),系統(tǒng)中包含3個并行的TLC5510a 器件,以實現(xiàn)對CIS器件三路輸出的采樣。圖7為CIS傳感器輸出的圖像信號波形,圖8為采用SignalTap II工具獲取的數(shù)據(jù)存儲時序。

    本系統(tǒng)完全支持8 MS/s采樣率的DMA方式數(shù)據(jù)存儲與傳輸。目前,數(shù)據(jù)采集系統(tǒng)的性能瓶頸在于CIS傳感器輸出速率較低(最大10 MHz,試驗中采用8 MHz),但本文討論的方法理論上支持最高66 MS/s采樣速率的應用。
    本文提出了一種基于FPGA的DMA方式數(shù)據(jù)采集系統(tǒng)設計方案,數(shù)據(jù)采集結(jié)果不經(jīng)過微處理器而直接被寫入系統(tǒng)內(nèi)存,而采樣時序定義由底層控制提供,確保了ADC器件的采樣吞吐;采用帶DMA控制器的PCI接口與上位機進行數(shù)據(jù)交互,既減少了上位機軟件負荷,又最大限度地保證了采樣數(shù)據(jù)的實時性。即使進一步提高A/D器件采樣速率,本架構(gòu)依然適用。本數(shù)據(jù)采集系統(tǒng)已應用于高速圖像采集中,具有良好的移植性,可應用于采樣速率高、數(shù)據(jù)采集量大、數(shù)據(jù)實時性要求的數(shù)據(jù)采集系統(tǒng)。
參考文獻
[1] 唐林波,趙保軍,韓月秋.超高速數(shù)據(jù)采集與處理系統(tǒng)的設計及應用[J].系統(tǒng)工程與電子技術(shù),2005,27(7):1203-1206.
[2] 羅偉林.基于USB2.0的高速數(shù)據(jù)采集系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學,2008.
[3] 肖金球,馮翼,仲嘉霖.高速多路實時數(shù)據(jù)采集處理系統(tǒng)設計[J].計算機工程,2004,30(24):180-182.
[4] Texas Instruments Incorporated.Floating-point digital signal   processor(DSP):TMS320C6713B.2006:13-73.
[5] 鄧慶緒,寧寶鋒,金曦,等.基于局部動態(tài)可重構(gòu)技術(shù)的多通道數(shù)據(jù)采集系統(tǒng)[J].小型微型計算機系統(tǒng),2010,9(9):1778-1883.
[6] 張浩,徐寧儀,周祖成.基于PCI Core的鏈式DMA控制器設計[J].電子技術(shù)應用,2005,31(3):11-13.
[7] Altera Incorporated. Cyclone IV device handbook,volume 1. 2010:15-29.
[8] Texas Instruments Incorporated.TLC5510,TLC5510A high-speed analog-to-digital converters handbook.1999:1-4.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。