文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2011)12-0040-04
工業(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.