基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要: 提出了一種基于FPGA的DMA方式高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)方案。該方案由底層控制器提供精確采樣時(shí)序,保證ADC器件的采樣吞吐;采用支持PCI協(xié)議的DMA方式的數(shù)據(jù)采集機(jī)制,優(yōu)化數(shù)據(jù)采集存儲及向上位機(jī)交互方式,以確保采集數(shù)據(jù)的高實(shí)時(shí)性。該方案具有良好的移植性,可應(yīng)用于采樣速率高、數(shù)據(jù)采集量大、數(shù)據(jù)實(shí)時(shí)性要求高的數(shù)據(jù)采集系統(tǒng)。
關(guān)鍵詞: FPGA;DMA;高速;實(shí)時(shí);數(shù)據(jù)采集系統(tǒng)
工業(yè)自動(dòng)化設(shè)備的快速發(fā)展,對控制精度的要求越來越高,對數(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ù)存儲為FIFO,以提高數(shù)據(jù)采樣實(shí)時(shí)性和數(shù)據(jù)存儲深度。(3)采用高速數(shù)據(jù)通信技術(shù),完成由底層數(shù)據(jù)采集單元到上位計(jì)算機(jī)的數(shù)據(jù)傳輸,利用上位機(jī)軟件平臺進(jìn)行數(shù)據(jù)的分析處理和多樣化的輸出顯示[2]。數(shù)據(jù)采集系統(tǒng)的性能瓶頸在于高速采樣數(shù)據(jù)實(shí)時(shí)存儲,以及上下位機(jī)間的數(shù)據(jù)傳輸能力。
針對ADC器件,一般采用微控制器以指令方式控制其執(zhí)行時(shí)序,但微控制器的速度有限,而且一般需要3~4條指令完成一次數(shù)據(jù)采樣工作,制約了ADC的采樣吞吐[3]。如目前高性能的浮點(diǎn)型DSP TMS320C6713B的外部總線時(shí)鐘也僅為100 MHz[4],難以直接控制超過50 MS/s ADC器件的數(shù)據(jù)采樣或存儲。此外,微控制器對外訪問為標(biāo)準(zhǔn)時(shí)序,并不具備針對精密復(fù)雜采樣時(shí)序ADC器件的能力。而FPGA具有較高的運(yùn)行主頻,用于控制底層器件的執(zhí)行時(shí)序,具備良好的接口能力,能最大限度地保障ADC的采樣率[5]。
為保證數(shù)據(jù)采樣的實(shí)時(shí)性,應(yīng)盡可能減少數(shù)據(jù)實(shí)時(shí)采集、預(yù)處理、存儲和傳輸過程中的時(shí)間開銷,需設(shè)計(jì)高性能的數(shù)據(jù)鏈路,一方面實(shí)現(xiàn)高速采樣數(shù)據(jù)的實(shí)時(shí)存儲,另一方面實(shí)現(xiàn)底層數(shù)據(jù)采集單元與上位機(jī)之間的數(shù)據(jù)交互。DMA(Direct Memory Access)方式由專用的DMA控制器完成多系統(tǒng)單元之間的快速數(shù)據(jù)交互,包括微處理器內(nèi)核、存儲區(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í)存儲;采用帶DMA控制器的PCI接口,將數(shù)據(jù)實(shí)時(shí)傳輸?shù)缴衔粰C(jī);數(shù)據(jù)采集、存儲與傳輸呈流水線方式進(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)行,對微處理器的依賴程度低,能有效節(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ī)控制下,完成模擬信號經(jīng)過多片A/D器件流水轉(zhuǎn)換,并將數(shù)據(jù)采樣結(jié)果儲存到由Block RAM構(gòu)建的高速緩沖RAM陣列中,采樣時(shí)序由FPGA生成,保證了多路并行采樣的高同步性。
FPGA采用Altera公司的Cyclone IV系列 EP4CGX150,內(nèi)部帶有6.3 MB嵌入式 Block RAM,支持最高頻率167 MHz的存儲區(qū)訪問,易于設(shè)計(jì)接口友好的存儲區(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)簡單而優(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總線上的地址信號;(3)主模式接口控制模塊:負(fù)責(zé)在主模式(Master)下對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控制器
針對高帶寬、低延時(shí)和大量數(shù)據(jù)存儲與傳輸需求,設(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)的寄存器。