基于PXI Express总线的多通道数字化仪软件技术研究
2017-05-10丁万成付缅言
丁万成,付缅言
(1.中国空空导弹研究院,河南 洛阳 471000; 2.北京航空航天大学 自动化科学与电气工程学院,北京 100191)
基于PXI Express总线的多通道数字化仪软件技术研究
丁万成1,付缅言2
(1.中国空空导弹研究院,河南 洛阳 471000; 2.北京航空航天大学 自动化科学与电气工程学院,北京 100191)
针对各种数字化设备高采样率和高分辨率的测试需求,设计一种基于PXI Express总线的多通道数字化仪;该数字化仪开放性高,灵活性好,模块化强,广泛应用于测控领域中;结合数字化仪开发过程中所面临的关键问题及解决方案,重点从设备驱动程序、接口封装和应用软件三个方面进行分析阐述;首先,深入研究了KMDF设备驱动开发过程中几个关键问题,如配置空间访问、中断处理、DMA数据传输等的运行机制及实现方法;然后,以数字化仪应用需求为背景,阐述了采用.Net平台下三层体系架构的软件总体设计;最后,大量实验测试和结果分析表明,该数字化仪具有较强的可靠性和稳定性,达到预期技术要求和性能指标。
数字化仪;KMDF;PXI Express;三层体系架构
0 引言
随着武器装备数字化、高可靠性的需求,在各种敌我识别、雷达、电子对抗、数字通信与指挥控制系统等数字化设备的测试中,数字化仪已经成为其中必不可少的测试模块。数字化仪就是一种基于计算机技术的具有数字信号实时采集以及处理能力的电子示波器,是用来测量、记录、分析各种瞬时物理信号,并以波形的形式呈现信号与时间关系的电子仪器。由于数字化仪的开放性和模块化等特性,使得其具有灵活添加和修改模块的能力,可与其他模块组成所需的测试平台。根据不同需求并采取对应的软件解决方案,可以满足不同的应用要求。而PXI Express总线作为PXI总线的扩展,具有高数据吞吐量、模块化集成等关键技术优势[1]。因此,基于PXI Express总线数字化仪以其开放性、灵活性、模块化等特性,在测控领域具有广泛的应用[2]。
为了不断提高数字化仪测量的可靠性和稳定性,研究了一种基于PXI Express总线的多通道数字化仪。这种块化信号采集设备具有四个独立通道、高采样分辨率、大数据容量以及高速数据传输等关键技术,包括完整的底层驱动、接口动态链接库和应用分析处理软件。通过测试与验证,该设计达到预期技术要求和性能指标[3]。
1 数字化仪总体设计
基于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]。
2 驱动程序设计与开发
为了减少驱动程序的开发时间,实现更好的稳定性,提高驱动程序的实用性。本设计选用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完成端口线程池来响应底层中断并取数,上层软件负责后续数据显示及处理,中间使用公用缓冲区连接两者。
3 应用软件设计与实现
根据数字化仪设备应用需求,设计了基于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 实验与分析
数字化仪设计完成之后,需进行软硬件联合调试。反复试验并分析实验数据,不断提高数字化仪软硬件设计的稳定性及可靠性。
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 几种不同存储方式对比
5 结论
本文设计实现了一种基于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