文獻標識碼: A
文章編號: 0258-7998(2011)12-0040-04
工業(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.