电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章接口定义基于PCI总线的数据采集卡设计

基于PCI总线的数据采集卡设计

11-20 14:46:12 | http://www.5idzw.com | 接口定义 | 人气:891
标签:接口技术,微机原理与接口技术,单片机原理与接口技术,http://www.5idzw.com 基于PCI总线的数据采集卡设计,http://www.5idzw.com

  0 引言

  随着计算机软硬件技术和控制、测量技术的不断发展,许多工程技术人员都将PC机作为控制、测量开发的首选平台。而PCI(Peripheral Component Interconnect,即外围部件互连)总线作为一种高性能、通用的局部总线,是目前计算机插卡式外设总线的事实标准。PCI总线具有32/64位总线宽度。地址线和数据线复用,支持猝发传输,传输速率高达132MB/s;系统占用率低,具有较好的兼容性;有完备的即插即用(PnP)管理体制,可同时支持多组外围设备。虽然PCI总线也经历了从PCI、PCI-X到PCI Express的发展,但PCI总线由于存在时间长,开发工具、开发资料众多,在对数据吞吐量要求不是很高的工业控制、测量领域仍有着顽强的生命力。笔者在学习了相关设计资料的基础上,设计了基于PCI总线的数据采集卡,可以完成8路数字量I/O及4路差分14位A/D采集功能。本文将根据笔者的实际经验,介绍PCI接口扩展卡的软硬件设计流程。

  1 PCI总线工作方式简介

  PCI总线标准由intel于1991年提出,后由PCI-SIG(PCI Special Interest Group)接替了PCI规范的发展。PCI总线是一种时分复用的双向应答总线,传输发起方称为主设备,接收方称为从设备。其主要信号定义如下:

  RFAME:由主设备驱动,为低,指示一次传输的开始。

  DEVSEL:由从设备驱动,为低,指示响应传输请求。

  ADO~AD31:地址、数据复用信号。PCI总线的数据传输以帧为单位,每次传输由一个地址周期和多个数据周期组成。首先给出本次传输的首地址,后面紧跟一个或多个4字节宽的数据,连续传输多个数据时,其地址自动递增。

  C/BE0~C/BE3:这4根线在地址传送周期,传输的是总线命令,C/BE0~C/BE3的不同组合指示在AD0~AD31上将要进行何种类型的操作,其代表的总线命令见表1;在数据传送周期,传输的是字节始能信号,用来表示在整个数据期间,AD31~AD0上的哪些字节为有效数据。

  IRDY、TRDY:分别表示主设备准备好和从设备准备好。在传输过程中,只有IRDY和TRDY同时有效,传输才能继续;否则插入等待周期,用于在不同速度的设备之间协调工作。


  表1地址传送周期时。C/BE0~C/BE3所代表的总线命令PRSNT1、PRSNT2:PCI板对电源的请求信息,具体含义见表2。


  将PCI接口卡插入计算机插座,加电后,BIOS会根据PCI接口卡上的配置信息,为其分配相应的I/O端口、存储器空间、中断及DMA等计算机资源。

  2 PCI接口卡的硬件设计

  笔者设计的PCI数据采集卡使用的PCI接口芯片是CH365,CH365可将32位高速PCI总线转换为简便易用的类似于ISA总线的8位主动并行接口,支持240字节的I/O端口映射、32 K字节的存储器映射、扩展ROM以及中断。本数据采集卡仅使用了I/O端口映射及中断功能。本PCI数据采集卡使用MAXIM公司的4通道14位、差分、同时采样ADC:MAX1338,实现A/D转换功能,并将MAX1338的/EOLC引脚与CH365的INT_REQ引脚相连,以便在ADC转换完成后,向PC机发出中断申请。使用两片74HC273作为输出,一片用作8路I/O输出,另一片用作对MAX1338控制命令的输出。使用两片74HC373作为输入,一片用作8路I/O输入,另一片采集MAX1338的状态指示信号。使用TLP521-4对8路I/O输入、输出进行光电隔离。使用74LS138作为地址译码。

  在制作印制板时,CH365的VCC与GND间应就近放置容量为0.1 μF高频、低ESR的多层瓷片电容,连接PCI总线的电源线引脚可以自由选择,但数量不宜少于4对。CH365属于高频数字电路,应该考虑信号阻抗匹配,在设计PCB板时需要参考PCI总线规范。建议CH365的PCI信号线的长度都小于35 mm,尽量走弧线或者45度线,避免直角或者锐角走线,并且尽量将信号走线布在元件面;CH365的PCI时钟线CLK的长度尽量保持在50 mm~65 mm之间,并且不宜靠近其它信号线;在PCB背面保留大面积的接地覆铜,以减少周边信号线的干扰。虽然PCI总线规范推荐使用四层板,但考虑成本等因素,可使用双面板,双面覆铜接地。笔者做的PCI数据采集卡即为双面板,经实验验证在工业现场环境下,该卡能够稳定工作。

  3 PCI接口卡驱动程序及软件设计

  在Windows系统中,为避免因不当的硬件操作而导致系统崩溃,应用程序不再具有直接的硬件访问权,如果要操作硬件,必须借助设备驱动程序。驱动程序主要功能是完成对硬件板卡的内存映像地址、I/O地址的存取,并正确处理来自板卡的硬件中断。

  Microsoft为设备驱动程序的编写提供了“Windows De-vice Drivers Kit”(简称DDK)工具,它包含了驱动开发所需的各种类型的定义和内核函数库。用DDK编制的驱动程序有很高的运行效率,但是开发难度大,测试流程繁琐。为减轻驱动开发者的负担,很多第三方厂商提供了简化驱动开发的软件。如Numega公司的DriverStudio软件,J ungo公司的WinDriver/KernelDriver软件等。尤其是WinDriver/KernelDriver不要求开发者非常熟悉操作系统平台,掌握核心开发、调试知识,即可在几分钟之内开发出相应的驱动程序。但WinDriver的运行效率较低,因此,在对运行效率较高的场合,可使用KernelDriver进行开发,以提高运行效率。

  由于本采集卡的数据吞吐量不高,因此采用WinDri-ver6.21进行驱动程序的开发,其开发过程如下:

  (1)运行Windriver程序,选择"Create a new driver pro-ject”;

  (2)在弹出的“Select Your Device”窗口中,从列表中选择自己的硬件设备。由于CH365的默认厂商标识(Vendor-ID)为4348H,设备标识(DeviceID)为5049H,因此选中“PCI:VendorID 4348 DeviceID5049”的PCI设备(如图1)。


  (3)单击“Generate.INF file”按钮,产生采集卡的驱动安装信息文件。注意:需选中“Automatically Install the INFfile”复选框,以便可以在(4)步中测试采集卡(如图2)。


  (4)在“Define and Test Resources for Your Device”窗口中,设置采集卡的I/O地址及变量名,对于即插即用(Plug-and-play)设备,Windriver会自动发现其所用到的硬件资源(如:I/O范围,存储器范围及中断号等)(如图3)。在此可对采集卡的I/O地址进行读写测试,以便验证硬件设计是否正确。


  (5)在“Select Code Generation Options”窗口中,选中合适的开发语言及开发平台。在此选择“Ms Developer Studic6,5”(即Microsoft VisualC++6/5),以便Windriver生成合适的驱动程序框架及相应的API函数(如图4)。


  (6)保存Windriver产生的驱动开发工程后,Windriver会自动打开相应的开发环境(此处为:Microsoft VisualC++6),以便开发人员进行后续开发。

[1] [2]  下一页

,基于PCI总线的数据采集卡设计