- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于PCI总线的数据采集卡的设计与实现
摘要:在虚拟仪器的设计中,选择适合的数据采集系统是很重要的。文章在对各种现成数据采集卡,接口总线的理解对比的基础上,以ADS8412为核心设计了集多路选通、模拟信号调理、A/D转换为一体的模拟信号采集系统,借助CPLD时序控制功能以PCI 9054为核心芯片设计实现厂基于PCI总线的数据采集卡的控制系统,用Builder C++编写了采集卡的动态链接库,利用LabVIEW提供的调用库函数节点,完成了通过动态链接库调用数据采集卡的过程。
关键词:LabVIEW;PCI总线;数据采集;动态链接库
0 引言
LabvIEW是美国NI公司的创新产品,也是目前应用最广、发展最快、功能最强的图形化软件开发集成环境。
数据采集卡是虚拟仪器的重要组成部件,其性能指标直接影响虚拟示波器的采样速率、精度等主要指标。
PCI总线是一个地址/数据、命令/字节选择信号复用的总线,它采用主从信号双向握手的方式来控制数据的传输。PCI总线具有即插即用、兼容性强的特点,能提供32/64位,33/66MHz的DMA(直接内存访问)数据传输方式,使得它工作时不受计算机内存大小的影响,传输速率最高可达133Mb/s,这些特性使得它的应用范围很广,能够适用于多种体系结构,多种工作平台,也很容易升级,为未来的发展留有足够的空间。上述这些优良特性正是本设计选择PCI接口总线的原因。
1 数据采集卡的硬件设计
本系统的总体设计主要包括:采集模块设计、信号调理模块设计、PCI总线接口设计、FIFO数据缓存设计的实现等部分。系统框图如下图1所示。
1.1 信号调理模块设计
信号调理模块实现信号放大、模拟通道选择和差分转换,这部分电路对整个系统至关重要,在设计的过程中应该着重注意降低信号失真,减少系统噪声。
1.2 采集模块设计
模数转换是采集板卡的核心,系统要求采样速度至少在250kHz以上,采样精度16位,动态范围也要求足够宽。综合各因素,选择了ADS 8412芯片。
ADS8412使用外部参考电压工作,与PCI总线接口的原理如图2所示。
本文中设置了8路采集通道,控制时序控制8/1模拟开关依次选通其中一路信号,差分转换电路将单端信号转换成差分信号送入ADS8412中,ADS8412内部自带转换时钟,无需外接。多通道数据采集按照分时采样,即8通道进行轮流采样,只用一路A/D。
1.3 PCI总线接口设计
PCI 9054通过PCI总线与计算机相连,PCI协议和时序由PCI 9054接口芯片完成,这里只需要对PCI9054接口进行设计即可,无需去了解复杂的总线协议,简化了设计的过程,这正是用专用芯片实现总线接口的优点。
PCI接口电路应当完成以下几种功能:地址译码及命令译码;地址产生;控制信号的产生。
实现PCI总线控制器大体有两种方式:使用可编程器件和专用接口芯片。采用EPLD和FPGA等编程逻辑器件的优点在于其灵活的可编程性。专用芯片可以实现完整的PCI主控模块和目标模块接口功能,将复杂的PCI总线接口转换为相对简单的接口。用户可以集中精力于应用设计,而不是调试PCI总线的接口,明显缩短了开发时间。本设计应用PLX公司的PCI 9054实现总线控制器。
PCI接口原理图如图3所示。启动采样后,PCI 9054作为主控设备,利用其DMA通道进行数据传输。当双口SRAM采满1kB数据之后,通过控制时序产生局部总线中断,PCI 9054获得局部总线的控制权后,根据DMA的起始位将1kB的数据读到DMA传输的专用FIFO中,PCI 9054申请占用PCI总线,获得PCI总线的控制权后,将数据写入PCI总线存储空间,从而实现一次采样和传输。
图3中,中断申请是控制时序电路判断FIFO满标志端提出的。响应中断期间PCI总线以DMA方式向上位机传输数据,以便应用程序调用数据进行分析处理。93S66为配置存储器,用于PCI设备卡的识别。图4是PCI接口控制器工作流程图。
2 数据采集过程的实现
2.1 动态链接库的设计
LabVIEW软件本身提供了对端口的操作函数,可以对外设的端口进行读写,而其他对外设的实时控制则需要通过DLL技术来实现。
在本系统中,自行应用硬件芯片设计了数据采集卡,要实现系统中的各个硬件与计算机之间的通信,必须设计相应的动态链接库。DLL库的设计在这里主要包括:设备初始化;确定设备名;创建设备句柄;获取通道信息;等待客户软件信息。
2.2 数据采集过程
先对数据采集卡有关的采样参数设置;采样开始,多路开关对采样通道进行一次扫描,每个通道采样一个点;接着开始A/D转换,转换后的数字信号存到数据缓存区中。重复上述过程直到采集到了所需的采样次数,全部数据顺序存储到缓存区中,需要时从数据采集卡的缓存中读取数据到计算机的内存中进行处理。采集流程如图5所示。
2.3 LabviEW中的动态链接库调用
在LabVIEW的编程状态下,打开Function Palette工具箱中“调用动态链接库功能”,将数据采集卡驱动程序转化为一个图标/连接器,然后在框图程序中就可以调用该模块,通过在其输入端设置相应的参数,在程序运行时,驱动模块启动数据采集卡的工作,并将采集数据返回。图6为动态链接库调用的一个例子。
图6中CLF节点I/O数据类型决定于外输入,采集通道数输入控件“channel”、采集次数输入控件“times”均为32位无符号长整形,对0~5V电压经采集后的输出为双精度浮点型离散的数值,先送入缓存器中存储待用。
4 结论
本文采用硬件芯片设计的数据采集系统,在本地总线的晶振频率为20MHz时,能稳定地达到160Mb/s的采集速率;晶振频率为40MHz时,能稳定的达到200Mb/s的采集速率。
将虚拟仪器技术与各种物理信号的采集、分析及结果显示结合起来为新型仪器的开发提供了一个很好的方向。将先进的仪器开发软件LabVIEW与普通数据采集系统很好地结合起来又将使虚拟仪器技术在各个领域得到更广泛的应用。