《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的DMA方式高速數據采集系統設計
基于FPGA的DMA方式高速數據采集系統設計
來源:電子技術應用2011年第12期
何 瓊1,陳 鐵1,程 鑫2
1.武漢軟件工程職業學院 電子系,湖北 武漢430074; 2.華中科技大學 數字制造與裝備國家重點實驗室,湖北 武漢430074
摘要: 提出了一種基于FPGA的DMA方式高速數據采集系統設計方案。該方案由底層控制器提供精確采樣時序,保證ADC器件的采樣吞吐;采用支持PCI協議的DMA方式的數據采集機制,優化數據采集存儲及向上位機交互方式,以確保采集數據的高實時性。該方案具有良好的移植性,可應用于采樣速率高、數據采集量大、數據實時性要求高的數據采集系統。
中圖分類號: 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


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

    FPGA采用Altera公司的Cyclone IV系列 EP4CGX150,內部帶有6.3 MB嵌入式 Block RAM,支持最高頻率167 MHz的存儲區訪問,易于設計接口友好的存儲區[7]。在FPGA內部設計了數據FIFO用于實現總線速率匹配,PCI總線速率為32 bit、33 MHz,而數據采樣流水速率為16 bit、20 MHz。為提高總線利用率,需設計數據緩沖來實現不同速率數據傳輸之間的速度匹配,而數據緩沖的深度取決于采樣數據實時性要求。
    采用以上結構具有如下優點:(1)底層A/D控制器提供精密采樣時序,保證了ADC器件的采樣吞吐,最大化地保證數據采樣的實時性;(2)采用帶DMA控制器的PCI接口與上位機進行數據交互,減少了上位機軟件負荷; (3)基于單片FPGA芯片設計,結構簡單而優化,可靠性高,可降低成本。
2 數據采集系統的實現
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等)實現。
    Altera公司推出的 PCI Compiler 軟件包可以參數化地生成應用于PCI總線的IP核,基于該IP核可生成符合32 bit/33 MHz PCI 2.2規范的主從控制器,包含了PCI總線的全部功能,能實現總線協議的轉換,并將復雜的、時序要求高的PCI總線操作,轉換成易于使用本地總線(Local 總線)的接口邏輯[6]。
    PCI IP核的結構如圖2所示,包括:(1)配置寄存器:用于保存PCI設備的基本信息;(2)PCI地址數據緩存:用于緩存PCI總線上的地址信號;(3)主模式接口控制模塊:負責在主模式(Master)下對PCI總線的操作;(4)從模式接口控制模塊:負責在從模式(Slave)下PCI總線的操作;(5)奇偶校驗器:當數據校驗出錯時,生成一個錯誤信息輸出到配置寄存器;(6)本地主模式控制模塊:負責主模式下的本地接口控制邏輯;(7)本地從模式控制模塊:負責從模式下本地接口控制邏輯;(8)本地邏輯接口模塊:負責控制本地端接口的地址、數據、控制、字節使能等[6]。

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

 

 

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


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

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

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

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

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 99网站在线观看 | 未成18年禁止观看的免费 | 一个人www视频在线观看 | 欧美日韩亚洲综合 | 亚洲九九视频 | 欧美性猛片xxxxⅹ免费 | 一级毛片aa高清免费观看 | 在线观看精品视频一区二区三区 | 亚洲综合在线成人一区 | 久久亚洲精品中文字幕二区 | 欧美午夜视频一区二区 | 日日做日日摸夜夜爽 | 欧美精品国产一区二区 | 免费看片aⅴ免费大片 | 日本三级香港三级三级人 | 久久久www免费人成看片 | 精品国产麻豆免费网站 | 中文字幕成人网 | 99热.com| 日韩毛片大全 | 中国高清videossex免费 | 一级日韩| 精品视频一区二区三区四区 | 波多野结衣在线观看视频 | 亚洲国产高清视频 | 狠狠操天天操夜夜操 | www.狠狠插| 欧美人禽zozk伦交 | 亚洲午夜精品一区二区 | 日韩在线中文 | 中文字幕日本一区波多野不卡 | 成人综合小说 | 亚洲人成网站在线观看播放动漫 | 亚洲视频在线观看免费视频 | a级毛片视频免费观看 | 天天摸天天做天天爽天天弄 | 国产成人午夜 | 中国一级全黄的免费观看 | 国内精品一区二区三区 | 在线免费观看毛片 | 亚洲精品第一 |