基于CPCI总线的数据采集卡及其驱动程序设计(1)
2015-02-03 01:09
导读:计算机应用论文论文,基于CPCI总线的数据采集卡及其驱动程序设计(1)样式参考,免费教你怎么写,格式要求,科教论文网提供的这篇文章不错:
摘 要 介绍了一种基于CPCI总线的高速数据采集卡硬件及其WDM驱动
摘 要 介绍了一种基于CPCI总线的高速数据采集卡硬件及其WDM驱动程序设计方法,详细说明了计算机通过驱动程序与数据采集卡硬件进行高速数据交换的方法,利用DriverWorks完成了满足高速数据传输要求的WDM驱动程序设计,实现了数据采集卡与主机内存之间数据传输的DMA方法。 关键词 数据采集;WDM ;CPCI;DriverWorks;DMA1 引言

|
CPCI总线机械特性上有VME总线的坚固特性,在数据传输方面采取与PCI一致的传输方法。高速数据采集系统中,总线数据传输能力要求强,数据采集系统采用CPCI总线,极大提高了数据采集卡的数据传输能力。为了充分发挥CPCI总线数据传输快、高可靠的优势,要解决好基于CPCI总线的数据采集卡与计算机主机之间的通信问题。Windows2000操作系统对CPCI总线提供良好的支持,该操作系统下,驱动程序的编写基于一种新的驱动模型WDM(Windows Driver Model),WDM为Windows98/2000/XP操作系统的设备驱动程序的设计提供了统一的框架。本文介绍的基于CPCI总线的高速数据采集卡用于某数字化仪(Digitizer)中,借助用DriverWorks开发的WDM设备驱动程序,用户应用程序和数据采集卡之间相互通信,实现主机命令的即时传送和板卡采集数据的高速传输。2 硬件系统设计 针对不同的应用要求,CPCI接口卡设计采用的设计方案,一是使用PCI专用接口芯片与FPGA相结合的方案,专用接口芯片完成从PCI总线到本地用户总线的转接;FPGA灵活的转换逻辑时序,以适应不同的外设时序要求;二是采用可编程逻辑器件实现通用PCI总线接口,很多生产可编程逻辑器件的厂商都提供经过严格测试的PCI接口功能模块,由用户进行简单的组合设计即可。考虑到开发周期,本CPCI数据采集卡采用前一种设计方法,用PCI专用接口芯片实现。系统硬件组成如图1所示。 本数据采集卡PCI接口芯片选用PLX公司的PCI9054, PCI9054提供两个独立的可编程DMA控制器,有两个DMA通道,每个通道均支持Block(块传输)和Scatter/Gather(散/集传输)的DMA方式,PCI总线端支持32位/33MHz;本地端可编程实现8、16、32位数据宽度,传输速率最高可达到132M字节/秒。本地总线端时钟最高可达50MHz,支持复用(J模式)和非复用的32位地址/数据(C模式)。PCI9054工作方式有:直接主模式,直接从模式和DMA模式。直接主模式由本地处理器访问PCI总线上的I/O接口和计算机内存资源,本地处理器发起数据的传输。直接从模式指PCI总线作为主控设备发起对本地总线资源的访问,包括对本地处理器的控制和对本地内存的访问。DMA模式支持PCI总线与本地总线之间的突发传输。PCI9054实现了PCI总线到局部端总线的转接,用该芯片做设计时,不必对PCI规范作全面深入理解,方便用户在设计时专注于具体功能的实现。 本设计中PCI9054设置为非复用的32位地址/数据,即C模式,采用直接从模式和DMA方式分别传输主机命令和数据采集卡采集到的数据;可编程逻辑器件FPGA里边配置一个FIFO作为缓冲器,当主机向数据采集卡发送命令时,FIFO作为命令数据的缓冲器,命令数据发送完毕,引起DSP的一个中断,DSP从FIFO里读出命令数据,对命令解析,完成实际的硬件操作;当主机要读取数据采集卡采集到的数据时,DSP对SRAM中数据作预处理,上传到FPGA里边配置的FIFO中,这时FIFO作为数据采集卡上传数据的缓冲器,当FIFO数据满时,引起PCI中断,通知上层应用程序读取数据。EEPROM中存放设备号,厂商号以及本地总线的基地址空间,I/O空间,中断控制信号等信息,初始化时,系统将EEPROM配置参数装入PCI配置寄存器,并根据本地总线对内存,I/O端口和中断的需求统一划分,自动分配系统资源。3 数据采集卡WDM驱动程序设计3.1 WDM模型(Windows Driver Model)简述 WDM模型(Windows Driver Model) 是微软公司为Windows98和Windows2000的驱动程序设计的一种架构,在WDM驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个为功能驱动程序,它了解硬件工作的所有细节,负责初始化I/O操作,处理I/O操作完成时所带来的中断事件,为用户提供与设备相适合的控制方式;另一个驱动程序为总线驱动程序,它负责管理硬件与计算机的连接,总线驱动程序由操作系统提供。Window2000 系统结构图如图2所示,应用程序调用Windows子系统Win32 API,这个调用由系统服务接口作用到I/ O 管理器,I/ O 管理器进行必要的参数匹配和操作安全性检查,然后由这个请求构造出合适的IRP(I/O Request Package) 。IRP是DDK定义的一个数据结构,具有丰富的成员,对于单层驱动程序,直接接受并执行这个请求包,完成对硬件的操作,从而完成I/ O请求工作,并将执行的结果通过I/ O 管理器返回应用程序;对于多层驱动则将驱动程序分成若干层,每层驱动再把I/ O 请求划分成更简单的请求,以传给更下层的驱动执行。