《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2011年第12期
何 瓊1,陳 鐵1,,程 鑫2
1.武漢軟件工程職業(yè)學(xué)院 電子系,,湖北 武漢430074; 2.華中科技大學(xué) 數(shù)字制造與裝備國家重點(diǎn)實(shí)驗(yàn)室,,湖北 武漢430074
摘要: 提出了一種基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)方案,。該方案由底層控制器提供精確采樣時(shí)序,保證ADC器件的采樣吞吐,;采用支持PCI協(xié)議的DMA方式的數(shù)據(jù)采集機(jī)制,,優(yōu)化數(shù)據(jù)采集存儲(chǔ)及向上位機(jī)交互方式,以確保采集數(shù)據(jù)的高實(shí)時(shí)性,。該方案具有良好的移植性,,可應(yīng)用于采樣速率高、數(shù)據(jù)采集量大,、數(shù)據(jù)實(shí)時(shí)性要求高的數(shù)據(jù)采集系統(tǒng),。
中圖分類號(hào): TN274
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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è)自動(dòng)化設(shè)備的快速發(fā)展,對(duì)控制精度的要求越來越高,,對(duì)數(shù)據(jù)采集的可靠性和實(shí)時(shí)性的要求也不斷提高,。提高數(shù)據(jù)采集系統(tǒng)性能的方法有:(1)采用高性能的ADC器件,配合低噪聲,、低靜態(tài)偏移的前端驅(qū)動(dòng)電路,,以達(dá)到極高的采樣吞吐和采樣分辨率。目前高端的ADC器件分辨率可達(dá)24 bit,采樣率已達(dá)40 GS/s[1],。(2)設(shè)計(jì)數(shù)據(jù)存儲(chǔ)為FIFO,,以提高數(shù)據(jù)采樣實(shí)時(shí)性和數(shù)據(jù)存儲(chǔ)深度。(3)采用高速數(shù)據(jù)通信技術(shù),,完成由底層數(shù)據(jù)采集單元到上位計(jì)算機(jī)的數(shù)據(jù)傳輸,,利用上位機(jī)軟件平臺(tái)進(jìn)行數(shù)據(jù)的分析處理和多樣化的輸出顯示[2]。數(shù)據(jù)采集系統(tǒng)的性能瓶頸在于高速采樣數(shù)據(jù)實(shí)時(shí)存儲(chǔ),,以及上下位機(jī)間的數(shù)據(jù)傳輸能力,。
    針對(duì)ADC器件,一般采用微控制器以指令方式控制其執(zhí)行時(shí)序,,但微控制器的速度有限,,而且一般需要3~4條指令完成一次數(shù)據(jù)采樣工作,制約了ADC的采樣吞吐[3],。如目前高性能的浮點(diǎn)型DSP TMS320C6713B的外部總線時(shí)鐘也僅為100 MHz[4],,難以直接控制超過50 MS/s ADC器件的數(shù)據(jù)采樣或存儲(chǔ)。此外,,微控制器對(duì)外訪問為標(biāo)準(zhǔn)時(shí)序,,并不具備針對(duì)精密復(fù)雜采樣時(shí)序ADC器件的能力。而FPGA具有較高的運(yùn)行主頻,,用于控制底層器件的執(zhí)行時(shí)序,,具備良好的接口能力,能最大限度地保障ADC的采樣率[5],。
    為保證數(shù)據(jù)采樣的實(shí)時(shí)性,,應(yīng)盡可能減少數(shù)據(jù)實(shí)時(shí)采集、預(yù)處理,、存儲(chǔ)和傳輸過程中的時(shí)間開銷,,需設(shè)計(jì)高性能的數(shù)據(jù)鏈路,一方面實(shí)現(xiàn)高速采樣數(shù)據(jù)的實(shí)時(shí)存儲(chǔ),,另一方面實(shí)現(xiàn)底層數(shù)據(jù)采集單元與上位機(jī)之間的數(shù)據(jù)交互,。DMA(Direct Memory Access)方式由專用的DMA控制器完成多系統(tǒng)單元之間的快速數(shù)據(jù)交互,包括微處理器內(nèi)核,、存儲(chǔ)區(qū),、外部接口等,不占用大量的處理器時(shí)間,,而且數(shù)據(jù)傳輸速率不受處理器執(zhí)行速度限制,,能有效減輕處理器的負(fù)擔(dān),提高數(shù)據(jù)傳輸?shù)男?,從而提高系統(tǒng)性能[6]。
    本文提出了一種基于FPGA的DMA方式高速實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)方案:基于FPGA實(shí)現(xiàn)高速ADC器件采樣時(shí)序控制與實(shí)時(shí)存儲(chǔ);采用帶DMA控制器的PCI接口,,將數(shù)據(jù)實(shí)時(shí)傳輸?shù)缴衔粰C(jī),;數(shù)據(jù)采集、存儲(chǔ)與傳輸呈流水線方式進(jìn)行,。
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ù)采集單元依照上位機(jī)設(shè)定而高效運(yùn)行,,對(duì)微處理器的依賴程度低,,能有效節(jié)省上位機(jī)軟件開銷,且數(shù)據(jù)采集實(shí)時(shí)性高,。
    數(shù)據(jù)采集系統(tǒng)的總體架構(gòu)如圖1所示,,其中PCI核、DMA控制器與A/D控制器均在FPGA內(nèi)部實(shí)現(xiàn),。為實(shí)現(xiàn)多路并行采樣,,可選用多片A/D器件并行處理的方式,在FPGA的高速狀態(tài)機(jī)控制下,,完成模擬信號(hào)經(jīng)過多片A/D器件流水轉(zhuǎn)換,,并將數(shù)據(jù)采樣結(jié)果儲(chǔ)存到由Block RAM構(gòu)建的高速緩沖RAM陣列中,采樣時(shí)序由FPGA生成,,保證了多路并行采樣的高同步性,。

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

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

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

 

 

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


    當(dāng)多個(gè)通道同時(shí)請(qǐng)求時(shí),,DMA引擎應(yīng)該進(jìn)行優(yōu)先級(jí)仲裁,來判定哪個(gè)通道占據(jù)數(shù)據(jù)傳輸接口,。DMA控制器工作過程如下:(1)上位機(jī)通過DMA控制器接口0向其寄存器寫入配置信息,,包括中斷設(shè)置、DMA傳輸接口配置,、各通道的工作方式設(shè)置,、傳輸數(shù)據(jù)長(zhǎng)度、源地址及目的地址等,。(2)待配置信息寫入完畢,,DMA數(shù)據(jù)傳輸開始。若設(shè)置使用兩個(gè)接口傳輸數(shù)據(jù),,則處于主模式的接口從數(shù)據(jù)源讀取數(shù)據(jù),,經(jīng)過通道內(nèi)部緩存,由另一個(gè)處于主模式的接口寫入目的地址,。(3)某個(gè)通道數(shù)據(jù)傳輸完成后,,會(huì)設(shè)置其控制狀態(tài)寄存器的對(duì)應(yīng)位,若對(duì)應(yīng)中斷沒有被屏蔽,,則DMA引擎通過接口0向微處理器提交中斷,;若在傳輸過程中出現(xiàn)錯(cuò)誤,則控制狀態(tài)寄存器對(duì)應(yīng)位置位,,而DMA引擎同樣會(huì)向微處理器提交中斷,。
2.3 A/D采樣控制及數(shù)據(jù)存儲(chǔ)
    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)減少了功耗而且簡(jiǎn)化了數(shù)據(jù)比較轉(zhuǎn)換邏輯,。TLC5510A實(shí)現(xiàn)流水線方式采樣,,每個(gè)時(shí)鐘周期完成一次數(shù)據(jù)采樣。在FPGA內(nèi)部設(shè)計(jì)了A/D控制器,,負(fù)責(zé)提供ADC器件采樣時(shí)序控制信號(hào),,完成采樣及存儲(chǔ)控制,,將采樣數(shù)據(jù)實(shí)時(shí)寫入數(shù)據(jù)FIFO。值得注意的是:ADC的數(shù)據(jù)采樣結(jié)果會(huì)延遲3個(gè)周期輸出,,則FIFO存儲(chǔ)地址輸出應(yīng)該有對(duì)應(yīng)的延遲時(shí)序,,如圖5所示。將邏輯存儲(chǔ)地址以采樣時(shí)鐘速率延遲3個(gè)周期,,即可生成實(shí)際存儲(chǔ)地址,,而將采樣數(shù)據(jù)存儲(chǔ)到緩存FIFO的對(duì)應(yīng)空間中。

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

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

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