提出了一種基于FPGA的DMA方式高速數據采集系統設計方案。該方案由底層控制器提供精確采樣時序,保證ADC器件的采樣吞吐;采用支持PCI協議的DMA方式的數據采集機制,優化數據采集存儲及向上位機交互方式,以確保采集數據的高實時性。該方案具有良好的移植性,可應用于采樣速率高、數據采集量大、數據實時性要求高的數據采集系統。
工業自動化設備的快速發展,對控制精度的要求越來越高,對數據采集的可靠性和實時性的要求也不斷提高。提高數據采集系統性能的方法有:(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總線設置相應的寄存器。
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605984 -
adc
+關注
關注
99文章
6533瀏覽量
545743 -
數據采集
+關注
關注
39文章
6251瀏覽量
114037
原文標題:基于FPGA的DMA方式高速數據采集系統設計方案
文章出處:【微信號:FPGAer_Club,微信公眾號:FPGAer俱樂部】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
基于FPGA器件實現大容量高速存儲系統的方案設計
![基于<b class='flag-5'>FPGA</b><b class='flag-5'>器件</b><b class='flag-5'>實現</b>大容量<b class='flag-5'>高速</b><b class='flag-5'>存儲</b>系統的方案設計](https://file.elecfans.com/web1/M00/C3/6A/pIYBAF8hQ1eARS3CAAEN0etrsYY632.png)
![](https://file1.elecfans.com/web2/M00/84/5B/wKgZomRmBGGAfeuqAAFgiAXiksg387.png)
基于FPGA與DDR2 SDRAM的高速ADC采樣數據緩沖器設計
如何用中檔FPGA實現高速DDR3存儲器控制器?
基于FPGA與ad9252的時序約束高速解串設計
![基于<b class='flag-5'>FPGA</b>與ad9252的<b class='flag-5'>時序</b>約束<b class='flag-5'>高速</b>解串設計](https://file1.elecfans.com//web2/M00/A6/E9/wKgZomUMQTiAdgkWAAAkdAQK2ig728.jpg)
如何使用FPGA設計高速實時數據采集存儲系統的資料概述
![如何使用<b class='flag-5'>FPGA</b>設計<b class='flag-5'>高速</b><b class='flag-5'>實時</b>數據采集<b class='flag-5'>存儲</b>系統的資料概述](https://file.elecfans.com/web1/M00/7E/44/pIYBAFwOLO2AQWQDAACeBJyGtuE188.png)
高速ADC與FPGA的LVDS數據接口中避免時序誤差的設計考慮
![<b class='flag-5'>高速</b><b class='flag-5'>ADC</b>與<b class='flag-5'>FPGA</b>的LVDS數據接口中避免<b class='flag-5'>時序</b>誤差的設計考慮](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
AN-1267: 使用ADSP-CM408F ADC控制器的電機控制反饋采樣時序
![AN-1267: 使用ADSP-CM408F <b class='flag-5'>ADC</b><b class='flag-5'>控制</b>器的電機<b class='flag-5'>控制</b>反饋<b class='flag-5'>采樣</b><b class='flag-5'>時序</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論