基于CPCI总线的多功能数据采集板卡的设计与实现高华东赵程扈亦越(中国航天空气动力技术研究院北京100074)摘要现代科学技术的发展和工业水平的提高使得电子测量技术对工业生产和产品研发越来越重要。得益于计算机技术的迅猛发展,数字信号处理正逐步代替模拟信号处理而成为信号处理的主流。而将被测量数字化是数字信号处理的先决条件,因此,以AD转换为核心的数据采集成为数字信号处理的首要环节。在工业、农业、航空航天、军事等领域中,数据采集卡都有着极为广泛的应用。本文以FPGA为微处理器,设计并实现了基于CPCI总线的多功能数据采集板卡及其驱动程序与测试程序,克服目前市场上同类产品价格昂贵、功能单一、不易二次开发等缺点,在工程中得到成功应用,并取得良好效果。关键词:数字信号处理CPCIFPGADesignandImplementationofCPCIBusbasedMulti-functionDataAcquisitionDeviceGaoHua-dongZhaoChengHuYi-yue(ChinaAcademyofAerospaceAerodynamicsBeijing100074)AbstractThedevelopmentofmodernscienceandtheimprovementofindustrialtechnologymakeelectronicmeasurementinindustrialproductionandtheproducts’developmentmoreandmoreimportant.Thankstotherapiddevelopmentofcomputertechonology,anologsignalprocessingisgraduallyreplacedbydigitalsignalprocessing.Digitalsignalprocessingprerequisiteistodigitalizethemearand,sothatADconversionasthecoreofdataacquisitionbecomesacriticalpartofdigitalsignalprocessing.Inagriculturalareassuchasaerospace,militaryindustry,thedataacquisitioncardhastheextremelywidespreadapplication.Inthispaper,aMulti-functiondataAcquisitiondeviceanditsdriverwithtestingprocedureshavebeenimplementedbasedonCPCIbus,inwhichFPGAplaysasamicroprocessor.Comparedwithothersimilarproducts,thisdevicethisproductisfullyfunctional,lowcostandmoresuitableforsecondarydevelopmentKeywords:DigitalSignalProcessingCPCIFPGA1、多功能数据采集板卡的硬件电路实现硬件电路包括通道选择及模拟调理电路、采样保持及AD转换电路、数据处理电路、DO输出电路、总线接口电路五个模块。1.1多功能数据采集板卡的设计指标根据工程项目要求,结合成本、开发周期等相关因素,确定本文设计的多功能数据采集板卡技术指标如下:1、AD通道单端为16路,差分为8路;2、位宽为12位;3、采样速率可达110KSA/s;4、输入电压范围为±10V或±5V可选;5、16路数字量输出(CMOS电平);1.2多功能数据采集板卡的总体方案设计多功能数据采集板卡由以下五部分组成[1]:⑴模拟输入通道及调理电路:数据采集卡的模拟输入通道又称作多路转换器(MUX)。一般由半导体器件构成的无触点式电子模拟开关构成。通过模拟开关的控制电路可以来选择任意通道的开合,从而实现多路或单路采集的功能。模拟信号调理电路主要包括增益和滤波两项功能。输入的模拟信号首先通过信号调理器,经过滤波和放大或衰减变成标准信号之后,进入采样保持和AD转换器。⑵采样保持和AD转换:这是数据采集卡的核心电路。采样保持电路将连续的模拟信号变成时间上离散的采样信号。AD转换则将采样信号的幅值用二进制代码来表示。⑶FIFO(先进先出缓冲器):AD转换后的数字值首先通过FIFO。FIFO实现了时钟域的匹配,保证了数据的完整性,有效的减小了数据丢失的可能性。⑷DO输出模块:为了扩展数据采集卡的使用范围,数据采集板卡通常增加DO输出模块,为用户提供数字电平信号。⑸总线接口和控制器:总线接口是各种采集卡与PC相连接的方式,目前数据采集卡的接口方式有:PCI、CPCI、PXI、SCXI、PCMCIA以及USB等。控制器是采样保持、AD转换器等电路的核心。它完成采样保持、AD转换器的控制功能。根据对采样速率的要求,其控制方式分为:无条件采样、中断方式、查询方式和直接存储器存取(DMA)方式。在高速率数据采集卡中,一般都采用DMA控制方式。多功能数据采集板卡的原理框图见图1所示:通道切换电路滤波及电压跟随采样保持及AD转换控制器DO模块总线接口CPCI总线模拟信号图1多功能数据采集板卡原理框图1.3通道切换及滤波电路设计1.3.1通道切换电路设计该设计要求为16路单端、8路差分输入,受总线速率及板卡面积限制,并结合开发成本要求,选用模拟开关进行通道选择,实现对多路模拟信号的“扫描式”采集。在选择模拟开关时,重点考虑切换速率、输入阻抗、信号幅值三个因素。根据以上三个要素,选取两片MPC508作为模拟输入通道的选通芯片。1.3.2滤波及电压跟随电路设计在测试现场,被采模拟信号往往混杂着高频干扰信号,并且为了采集结果的精确性,必须加入抗混叠滤波器。根据奈奎斯特采样定律,fs2fmax,采样后的数字信号才能完整的保留原有模拟信号的信息。该设计中最大采样速率为110K,因此模拟信号的最大频率不超过55K。考虑到工程中被采集信号为低频信号,设计中,认为模拟信号频率不超过1K,因此设计滤波器截止频率fc=2K。针对以上要求,本文设计了压控电压源二阶低通滤波器[4]。电路原理图如图2所示:图2压控电压源二级低通滤波器电路原理1.4采样保持及AD转换电路设计采样保持及AD转换电路设计是数据采集板卡的关键环节,直接影响了数据采集板卡的采集速率、采集精度等性能。本设计中,采用了BB公司生产的ADS774作为AD采集芯片。该芯片为12位精度,最大采样速率为117K,完全满足设计要求。该芯片以其简单的外围电路,良好的抗燥能力和简而易行的控制方式,成为本设计的首选芯片。电路原理图如图3所示:图3AD转换电路实现1.5数据处理电路实现1.5.1微处理器的选择可供选择的微处理器有:DSP,ARM,单片机,FPGA等。FPGA以其较快的处理速度、并行运行的优良特性以及更加方便快捷的操作方式,而成为本设计的首选。结合本设计中数据量、采集速率、工作环境及成本等要素,选用ALTERA公司的EP1C3T144C8作为微处理器。1.5.2数据处理电路实现考虑到设计的可靠性和开发周期,该电路设计采用最小系统设计。最小系统设计包括:FPGA芯片电路设计、电源系统设计、下载电路设计、外部时钟电路R1R2R3R4C1C2uiuo设计和复位电路设计。数据处理电路设计如图4所示。图4数据处理电路设计1.6DO输出模块设计DO模块要求具有较强的驱动能力,因此需要选择达林顿管作为输出芯片。本设计采用了74LS273作为驱动芯片。1.7总线接口电路设计一般的总线接口设计有专用接口芯片和可编程逻辑器件两种设计方法。考虑到稳定性和研发周期,该设计采取专用接口芯片PCI9054进行设计。原理图如图5所示。图5CPCI/PXI总线接口设计多功能数据采集板卡设计框图及实物图见图6、图7。EP1C3T144C8NDB37连接插座PCI总线连接器供电电路74LS273PCI9054AD芯片模拟输入控制信号与数据信号地址数据线控制信号复位电路测试端子74LS27316路数字量输出量程选择电路多路选择器多路选择器IO输出模块AD采集模块配置电路下载电路图6多功能数据采集板卡设计框图图7多功能数据采集板卡实物图2、软件程序设计该设计的软件程序包括三部分:底层FPGA程序设计、驱动程序设计和测试界面程序设计。2.1FPGA底层程序设计FPGA底层程序设计采用硬件描述语言Verilog语言进行设计。该部分的设计核心为有限状态机的设计。在有限状态机设计中采用了同步时序描述状态转移和组合逻辑判断状态转移条件、描述状态转移规律相结合的设计方法,使得状态机达到最优。同时,根据多功能数据采集板卡的采集速率以及CPCI总线的数据传输速率,开辟了存储量为1K的内置FIFO,有效的避免了丢数现象。FPGA程序流程如图8所示。上电复位初始化配置开始采集?YAD转换NRXFIFO满?NY存满?上位机处理中断申请中断TXFIFOYN允许发送?YNDO输出?DO模块图8FPGA程序流程图2.2多功能数据采集卡驱动程序设计微软为了配合用户在Windows2000/XP平台下开发驱动程序,发布了基于WDM的驱动程序框架模型。在某个Windows系统中开发的WDM驱动程序,稍加修改即可在其他系统中编译运行。因此开发PCI设备的驱动程序最好的方案是WDM驱动程序。WDM驱动程序是一种PnP驱动程序,它同时还遵循电源管理协议,并能在Windows98和Windows2000间实现源代码级兼容。WDM驱动程序还细分为类驱动程序(classdriver)和迷你驱动程序(minidriver),类驱动程序管理属于已定义类的设备,迷你驱动程序负责向类驱动程序提供厂商专有的支持。与WindowsNT4.0下设备驱动程序相比,WDM增加了对PnP即插即用协议,电源管理协议,WMI协议的支持[12]。开发WDM驱动程序的方法有三种:(1)使用Microsoft公司Windows2000DDK(MicrosoftWindows2000DriverDevelopmentKit)为开发工具,VC++6.0融合DDKbuild命令方式构造编译环境。(2)使用Compuware公司的DriverStudio。(3)使用Jungo公司的WinDriver。其中,Compuware公司提供的DriverStudio是一套用于简化Windows驱动程序开发、调试及测试的工具包。其中包括:开发普通设备WDM驱动程序的DriverWorks、创建DDK支持的纯C语言的WDM驱动程序框架、支持网络设备驱动程序开发的DriverNetWorks及Windows内核单机调试工具SoftICE。DriverWorks以面向对象(OOP)的方式,将编写WDM驱动程序所需要的内核及访问硬件的函数封装成类。这样,驱动开发者只要在工程向导的指引下,逐步设置必要的参数,最后既可以得到WDM驱动程序框架。然后根据特定设备的访问要求,向类中添加新的类对象和代码既可。DriverWorks是基于VC或者VC.net工程的,经过编译以后即可以得到设备驱动程序。它所用到的函数只不过是对DDK提供的库函数的封装,不会影响代码的执行效率。因此,在开发反射内存板卡时,采用DriverWorks作为开发工具。2.3多功能数据采集卡调试界面设计调试界面采用C#进行设计。C#直接继承了C/C++的功能,这体现在它从C那里继承了基本的语法、许多关键字和运算符,还基于并改进了C++所定义的对象模型。同时类似于Java,C#被设计用来产生可移植的代码。由此可见,C#融合了当今世界上使用最为广泛的三种程序设计语言,还增加自己独有的新技术,为程序设计提供了全新的开发设计平台。测试界面如图9所示。图9多功能数据采集板卡测试界面3、多功能数据采集板卡功能测试多功能数据采集板卡研制成功后,分别进行了