丁萬成,付緬言
(1.中國空空導彈研究院,河南 洛陽 471000; 2.北京航空航天大學 自動化科學與電氣工程學院,北京 100191)
基于PXI Express總線的多通道數字化儀軟件技術研究
丁萬成1,付緬言2
(1.中國空空導彈研究院,河南 洛陽 471000; 2.北京航空航天大學 自動化科學與電氣工程學院,北京 100191)
針對各種數字化設備高采樣率和高分辨率的測試需求,設計一種基于PXI Express總線的多通道數字化儀;該數字化儀開放性高,靈活性好,模塊化強,廣泛應用于測控領域中;結合數字化儀開發過程中所面臨的關鍵問題及解決方案,重點從設備驅動程序、接口封裝和應用軟件三個方面進行分析闡述;首先,深入研究了KMDF設備驅動開發過程中幾個關鍵問題,如配置空間訪問、中斷處理、DMA數據傳輸等的運行機制及實現方法;然后,以數字化儀應用需求為背景,闡述了采用.Net平臺下三層體系架構的軟件總體設計;最后,大量實驗測試和結果分析表明,該數字化儀具有較強的可靠性和穩定性,達到預期技術要求和性能指標。
數字化儀;KMDF;PXI Express;三層體系架構
隨著武器裝備數字化、高可靠性的需求,在各種敵我識別、雷達、電子對抗、數字通信與指揮控制系統等數字化設備的測試中,數字化儀已經成為其中必不可少的測試模塊。數字化儀就是一種基于計算機技術的具有數字信號實時采集以及處理能力的電子示波器,是用來測量、記錄、分析各種瞬時物理信號,并以波形的形式呈現信號與時間關系的電子儀器。由于數字化儀的開放性和模塊化等特性,使得其具有靈活添加和修改模塊的能力,可與其他模塊組成所需的測試平臺。根據不同需求并采取對應的軟件解決方案,可以滿足不同的應用要求。而PXI Express總線作為PXI總線的擴展,具有高數據吞吐量、模塊化集成等關鍵技術優勢[1]。因此,基于PXI Express總線數字化儀以其開放性、靈活性、模塊化等特性,在測控領域具有廣泛的應用[2]。
為了不斷提高數字化儀測量的可靠性和穩定性,研究了一種基于PXI Express總線的多通道數字化儀。這種塊化信號采集設備具有四個獨立通道、高采樣分辨率、大數據容量以及高速數據傳輸等關鍵技術,包括完整的底層驅動、接口動態鏈接庫和應用分析處理軟件。通過測試與驗證,該設計達到預期技術要求和性能指標[3]。
基于PXI Express總線的數字化儀總體上由硬件和軟件組成。
1.1 硬件總體設計
數字化儀硬件主要包括:模擬信號調理、AD采集轉換、數據存儲、邏輯算法控制、PXI Express通信、時鐘管理及電源管理等幾個模塊。其基本工作原理如下所述:SMA接口接收模擬信號,利用AD采集將模擬信號轉換成數字量,并傳輸給控制模塊。在邏輯算法控制模塊中對數據進行壓縮和其他處理,將數據存儲于數據存儲模塊中,并通過PXI Express總線實現與上位機通信。其中,時鐘管理、電源管理模塊分別為數字化儀提供時鐘和電源。數字化儀硬件總體設計如圖 1所示。

圖1 數字化儀硬件總體設計圖
1.2 軟件總體設計
數字化儀軟件可分為應用層軟件(.exe)、驅動接口層動態連接庫(.dll)和WDF驅動軟件(.sys)三個部分[4]。軟件設計框架如圖2所示。

圖2 數字化儀軟件總體結構圖
設備驅動程序是一種使計算機和設備通信的特殊程序,是軟件控制硬件的接口,其性能直接決定整個系統性能。基于PXI-E總線的多通道數字化儀的功能特性,要求其具備處理高速大數據量的能力。為了減小開發和集成的復雜度,本設計選用WDF驅動開發框架,并采用DMA實現高速數據傳輸[5]。
接口層是對驅動各個模塊的封裝,是底層與上層進行通信的橋梁。這部分將遵循接口函數豐富清晰、簡單明了的原則,以動態鏈接庫的形式進行編譯生成。
上層應用程序是指為了完成某些特定任務而被開發運行于操作系統之上的計算機程序,是人機交互的平臺。應用層提供簡潔直觀的用戶界面,以及全面的數據分析處理功能。系統基于.Net通用開發平臺,提供C#語言開發的Win32標準用戶界面程序[6]。
為了減少驅動程序的開發時間,實現更好的穩定性,提高驅動程序的實用性。本設計選用Windows操作系統下一代驅動程序開發模型WDF,并利用其提供的開發內核模式驅動程序KMDF,實現了Windows必須的基本內核模式驅動程序支持功能。
基于KMDF驅動模型開發的PXI Express設備驅動程序結構框架如圖3所示。在主設備模式下,數字化儀設備驅動程序的開發主要有四個關鍵技術難點需要處理。

圖3 KMDF模型驅動框架圖
2.1 配置空間訪問
本課題數字化儀設備硬件采用PEX8311實現PXI Express總線接口[7]。PEX8311在每次系統通電時,需要通過外部EEPROM芯片通過SPI總線為其寫入配置信息[8]。
PEX8311的硬件配置空間需在驅動程序中映射到計算機內存中才可訪問。故需要在驅動初始化回調例程中注冊設備資源分配和釋放回調例程,內存正確映射到系統空間之后就可在需要時調用存儲器訪問函數來讀寫PEX8311寄存器或從本地地址空間的讀取采樣數據。
2.2 中斷處理
中斷是計算機外設主動申請與系統交互的唯一方式。如果不使用中斷方式,則只能使用查詢方式,被動等待系統來查詢自身狀態,所以中斷方式可以提高系統的工作效率。本課題數字化儀設備需要處理兩種類型的中斷請求:本地數據中斷和DMA傳輸完成中斷。
2.3 DMA數據傳輸
DMA傳輸方式無需CPU直接控制傳輸,直接通過DMA控制器為內存與I/O外部設備間開辟一條直接傳送數據的通路,使CPU的效率大為提高。由于數字化儀傳輸的數據量較大,為提高CPU使用效率并同時達到快速傳輸的目的,故采用DMA方式進行數據傳輸[9]。
2.4 驅動接口層
為方便上層應用程序使用,對驅動的操作和通信部分封裝成動態庫。數字化儀各項功能是通過應用程序調用DLL的導出函數來實現的,DLL接口函數封裝了與硬件設備交互的具體細節,只提供統一的接口給應用程序調用。
而動態鏈接庫除了封裝對驅動程序控制交互的細節,為應用程序提供簡潔高效的控制接口外,另外兩個核心功能是:利用Windows完成端口I/O模型結合DMA實現高速數據傳輸,四個通道獨立的環形緩沖區以避免應用程序因不能及時相應而造成的數據丟失現象。
2.4.1 高速數據傳輸
本設計中數字化儀具有4個獨立通道,若4個通道同時全速率工作,則產生的數據量將遠超設備的處理能力。故設計時,需要硬件板卡自身每個通道帶有4M * 32的SDRAM緩存,且不能連續工作過長時間。
系統接收端,在驅動程序中采用DMA結合應用程序使用的Windows完成端口I/O模型,實現數據盡可能的高速傳輸[10-11]。完成端口(IOCP)的建立步驟可總結為:首先,創建一個完成端口內核對象;然后,將設備句柄與I/O完成端口關聯;最后,創建工作者線程。
2.4.2 數據緩存
本設計中數字化儀設備每秒鐘都會產生的大量數據及中斷,應用層軟件無法保證每次中斷都能接收到。為確保數據不丟失,采用如下模型:數據接收采用I/O完成端口線程池來響應底層中斷并取數,上層軟件負責后續數據顯示及處理,中間使用公用緩沖區連接兩者。
根據數字化儀設備應用需求,設計了基于PXI Express總線的多通道數字化儀軟件[12],其功能結構如圖4所示。

圖4 系統功能結構圖
3.1 應用程序架構設計
數字化儀應用軟件采用三層架構設計,即表現層,業務邏輯層,數據訪問層。每一層中的組件能完成對應的功能模塊,同時還提供一些通用組件來完成通用服務。
(1)表現層:實現用戶與系統的交互,提供一組控制接口給用戶選擇,并接收用戶的輸入。同時,將采集的數據信號以波形的形式呈現給用戶。
(2)業務邏輯層:處理所有業務邏輯,對用戶的輸入進行處理。主要工作包括:定義、初始化全局變量;設定數字化儀的工作模式;對采集的數據信息進行分析并提取有用信息;對信號波形進行FFT變換或濾波器處理等。調用數據訪問層接口,并為表現層提供服務。
(3)數據訪問層:該層是對業務邏輯層的擴展,實現對數據的操作。根據不同的數據來源從數字化儀、文件或仿真生成信號中提取數據,反饋給業務邏輯層處理,并將需要保存的數據按照指定格式持久化到本地磁盤文件中。
3.2 功能模塊設計與實現
在應用軟件設計中,采用Windows下的Visual studio 2008開發平臺,基于.Net框架下的WinForm窗體應用程序,整體用戶界面如圖5所示。界面控件選用NI MeasureStudio 8.6工具軟件包[13]。

圖5 數字化儀應用軟件整體界面
主界面采用標簽頁的形式,按照各功能模塊劃分成相應的可浮動調整的工具欄窗口,數字化軟件的各個功能模塊如下:
1)主顯示模塊。本設計中,數字化儀的波形顯示界面上能夠同時顯示四個通道的波形,并以不同的顏色或者線條對選通通道的波形進行區分顯示。每個通道可單獨設置Y軸偏移量,便于同時對比觀察多路信號。
2)采樣控制模塊。可以設定信號的三種來源:數字化儀、仿真數據和文件回放。在采樣控制窗口配置好信號源之后,便可以啟動連續采集或者單次采集進行工作。
3)通道配置模塊。用戶可選擇配置單個通道并靈活地轉換控制通道,使數字化儀的四個通道完全獨立工作且互不干擾。數字化儀配置接口的設計實現主要包括通道的選擇、采樣速率、采樣深度、電平觸發、預采樣使能、中斷觸發等級等參數設置。
4)信號變換分析模塊。包括數字化儀中的波形參數分析與快速傅立葉變換分析。
5)保存反演模塊。在處理有價值的信號時,應用軟件提供了一種數據保存功能,便于用戶在離開信號源時對數據進行分析和處理。本設計中采用文件的形式對數據進行保存。
6)仿真信號生成模塊。便于輔助分析,驗證數字化儀采集分析功能是否正常。
數字化儀設計完成之后,需進行軟硬件聯合調試。反復試驗并分析實驗數據,不斷提高數字化儀軟硬件設計的穩定性及可靠性。
4.1 穩定可靠性測試
主要測試應用軟件與驅動程序之間數據傳輸的穩定性以及數據是否會出現丟失現象。在測試過程中,驅動程序采用Debug版本,在其中打印輸出每次DMA傳輸的數據量,在驅動接口動態庫中輸出接收到的數據量,通過設定不同的采樣深度,對比測試系統的穩定性和可靠性。測試結果如表1所示。

表1 數據傳輸穩定性可靠性測試
從表1可以看出,應用程序與驅動程序之間數據傳輸穩定可靠,無數據丟失現象。
4.2 采樣分析測試
利用函數發生器輸入不同頻率、幅值的信號,同時使用示波器和數字化儀采集信號,進行顯示和分析,并給出相應誤差。經過大量試驗測試與分析,對采樣衰減系數進行微調,最終數字化儀信號復現得到的波形與示波器基本一致[14]。測試數據分析如表2所示。

表2 測試數據分析
4.3 DMA傳輸性能測試
利用DMA并結合DMA公用緩沖區方式可獲得高連續性數據傳輸。在PXI-E總線下經試驗測試,使用共享緩沖區的DMA傳輸速率能達到75~110 MB/s之間,性能變化依賴于數據塊的大小。
4.4 數據存儲壓縮測試
該數字化儀軟件設計,對信號采樣數據保存時采用保存14bit原始采樣值的方式,同時可選擇GZip或Deflate壓縮算法進行壓縮。由測試知,14bit采樣值保存方式比轉換成信號量值時節省約3/4存儲空間,而GZip和Deflate壓縮比基本相同[15]。不同存儲方式對比如表3所示。

表3 幾種不同存儲方式對比
本文設計實現了一種基于PXI Express總線的多通道數字化儀,通過對數字化儀功能的分析和研究,重點解決設備驅動程序、接口封裝和應用軟件三個問題。其中,驅動程序開發選用KMDF驅動架構,應用軟件開發是基于.Net技術框架下的三層體系架構的WinFrom應用程序。本設計經過反復試驗,具有較強的可靠性和穩定性,能夠滿足實際工程需求。
[1] 肇 斌,陳護勛. PXI總線及其應用綜述[J]. 計算機與數字工程,2002,30(2): 33-35.
[2] 柏向春. 寬帶高精度數字化儀應用軟件設計[D]. 成都:電子科技大學,2008.
[3] Reeves R D. Windows 7 Device Driver[M]. Pearson Education,2010.
[4] 武安河. Windows 設備驅動程序WDF開發[M]. 北京:電子工業出版社,2009.
[5] 武安河,邰 銘,于洪濤. Windows 2000/XP WDM設備驅動程序開發[M]. 北京:電子工業出版社,2003.
[6] 張 佩,馬 勇,董鑒遠. 竹林蹊徑:深入淺出Windows驅動開發[M]. 北京:電子工業出版,2011.
[7] 黃小紅,李 峰. PEX8311芯片數據傳輸研究[J]. 電子工程師,2007,33(10):64-67.
[8] 王暹昊. 用I/O完成端口設計多線程的服務應用程序[J]. 計算機與現代化,2004,3: 95-97.
[9] 顏建峰,吳 寧. 基于PCI總線的DMA高速數據傳輸系統[J]. 電子科技大學學報,2007,36(5): 858-861.
[10] 王 璋. 基于完成端口模型的大流量服務器開發模式探究[J]. 福建電腦,2007,2:45-46.
[11] 姚章俊,陳蜀宇. 一種高性能環形緩沖區的研究與實現[J]. 計算機工程,2012,38(8).
[12] 李德青. 雙通道數字化儀PXI模塊的研制[D]. 哈爾濱理工大學,2006.
[13] 陳懷松,陳家琪. IOCP 寫服務程序時的關鍵問題研究[J]. 計算機工程與設計,2010(17):3793-3796.
[14] 賴小紅,陳長齡,崔 鵬. 數字存儲示波器中波形參數測試算法研究[J]. 電子測量與儀器學報,2004,18(z2).
[15] 李 明,楊 雷,黎山峰. 不同壓縮算法性能的研究[J]. 通信技術,2009,4:064.
Research on Multi-channel Digitizer Based on PXI Express Bus
Ding Wancheng1, Fu Mianyan2
(1.China Airborne Missile Academy, Luoyang 471000,China;2.School of Automation Science and Electrical Engineering,Beihang University, Beijing 100191,China)
A multi-channel digitizer based on PXI Express bus is designed for high sampling rate and high resolution test requirements of various digital devices. The digitizer, widely used in the field of measurement and control, has high openness, flexibility and modularization. Combined with the digitizer development process faced by the key issues and solutions, the device driver, interface encapsulation and application software of digitizer are researched in this paper. Firstly, several key issues of KMDF device driver development are discussed, such as configuration space access, interrupts handling and DMA data transmission. Secondly, after analyzing the application requirements of digitizer, this paper introduces the three-tier architecture of software design scheme based on .Net platform. At last, the experiment results show that this system has good reliability, stability and achieves the expected technical requirement and performance index.
digitizer; KMDF; PXI Express; three-tier architecture
2017-01-17;
2017-02-10。
丁萬成(1963-),男,河南洛陽人,大學,高級工程師,主要從事系統測試與控制技術方向的研究。
1671-4598(2017)04-0126-04
10.16526/j.cnki.11-4762/tp.2017.04.035
TN06
A