欢迎您访问长沙鹏翔电子科技有限公司官方网站

技术与应用

PCIE高速声发射仪/千兆网络声发射仪

技术与应用

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

发布日期:2015-06-16 08:47    浏览次数:

 王留彬,杨润生

(军械工程学,石家庄 050003)
摘要:提出基于PCI 局部总线数据采集系统设计方案,系统采用PCI9054 作为PCI 桥芯片,TLV1572 作为数据转换器,FLEX10K3E作为系统的逻辑控制和数据缓冲芯片.论述PCI 总线数据采集系统接口电路的硬件设计方法,介绍开发PCI设备WDM 驱动程序的基本方法,指出PCI9054 芯片使用中应注意的问题.
关键词:PCI总线;PCI9054 ;WDM 驱动
中图分类号:TP221 文献标识码:A 文章编号:1006-0707(2008)05-0132-03
基于计算机的数据采集系统随着总线技术的发展而得到了广泛的应用,它将模拟量转换成数字量后,再送入计算机或相应的数字信号处理系统,根据不同的需要进行相应的计算和处理得出所需的数据.目前基于PCI 总线的设备已经成为微型计算机的标准设备,大多数的基于微型计算机的专用设备也都是基于PCI 总线的.实现PCI 接口电路一般分为2 种,即使用可编程逻辑器件和使用专用总线接口器件.采用可编程逻辑器件实现接口比较灵活,但需要对总线协议有深入的理解,所以设计周期较长,开发难度大,而采用专用接口器件不仅对协议有良好的支持,而且提供给设计者良好的接口.这些都大大减少了设计者的工作量,能够减少开发时间和成本,并获得较好的数据传输能力.总线接口控制器PCI9054 具有强大的功能和简单的用户接口,为总线接口的开发提供了一种简洁的方法,设计者只需设计出总线接口控制电路,即可实现与总线的高速数据传输.
1  数据采集系统设计
1.1  系统结构及原理
基于PCI 总线数据采集系统的结构如图1 所示,它主要由PCI 接口部分、FPGA 逻辑部分和模数转换部分组成.本设计采用数据采集芯片AD7899 来实现数据的模数转换,用FPGA 实现AD 采集数据的缓冲与采集逻辑控制,PCI9054 在此系统中主要负责根据需要对数据缓冲中的数据快速地读和写.AD 模数转换器将模拟信号转换为8 位数字信号序列;然后经FPGA 转换为宽度16 位的数字信号进行缓冲,当满信号有效时,向系统发出中断请求,系统响应FPGA 的中断请求,通过PCI 总线传输数据.
A/D 转换器采用TI 公司的TLC5510 ,TLC5510 为8bit 、20MS/s的高速并行A/D 转换器.TLC5510 在每个时钟的下降沿采样,该采样点的转换数据经过25个延迟后,在时钟的上升沿输出,也就是每个点的转换时间为25时钟周期,一旦转换流水线启动,则在每个时钟的上升沿都有一个转换数据输出.
FPGA 选用ALTERA 公司的FLEX10K3E ,它是业界第一代嵌入式可编程逻辑器件,其中集成有3000个典型的门(逻辑和RAM)及6 个嵌入阵列块(EAB) ,共提供的2457bit位的RAM .利用可提供串并与并串转换时需要的缓冲区,并可实现块传输等.具有可编程和可在线配置的能力,缩短了设计周期,减少了设计费用.PCI9054 是由美国PLX 公司生产的先进的PCI I/O Accelerator,它采用了先进的PLX 数据管道结构技术,是32位、33 MHz 的PCI 总线主I/O Accelerator .PCI9054 的总线连接包括PCI 总线连接和本地总线连接.对于PCI 总线连接,完全遵守2 .2 版本PCI 规范,PCI9054 提供与PCI 总线之间的无缝连接,因此系统的PCI 开发只需考虑本地总线部分即可[1-3] .
1.2  系统硬件设计
按照总体的设计思想,硬件电路由A/D 转换电路,FPGA逻辑控制及缓冲电路和PCI 接口电路3 部分组成.A/D转换电路只需把从FPGA 转换而得的控制信号接入相应的端口即可,所以下面只对其他2 部分进行介绍.FPGA 电路除包括与AD 芯片和PCI9054 的电路连接外,还要设置配置电路.在FPGA 器件正常工作时,它的配置数据贮存在SRAM 之中,由于SRAM 的易失性,所以每次加电期间,配置数据必须重新构造,将I/O 引脚和寄存器初始化之后便可以正常工作.主要包括4 种配置方式:主动串行、被动串行、被动并行同步和被动并行异步.在本系统中采用主动串行方式,利用EPC1 (PROM)进行配置.PCI9054具体原理如图2所示[4-5] .
PCI9054 提供了3 种物理总线接口:PCI 总线接口、LOCAL总线接口及串行EPROM 接口.PCI 总线接口是PCI9054和PCI 插槽间的连接信号线,包括地址数据复用信号AD[31:0] ,总线命令信号C/BE[3:0] # 和PCI 协议控制信号PAR ,FRAME # ,IRDY # ,TRDY # ,STOP# ,IDSEL ,PERR# 和SERR# .串行EPROM 接口是PCI9054 与EEPROM 的连线.这里有4 根信号线:EESK ,EEDO ,EEDI ,EECS ,串行EEPROM 的数据通过烧写编程的方式,也可以通过本地CPU 直接编程的方式来完成初始化.LOCAL 总线接口是PCI9054 与应用电路的连接.主要包括LA 地址总线、LD 数据总线、LW/R读写信号、BLAST # 、READY # 、ADS # .
1.3  系统软件设计
测试仪功能的实现是靠软硬件结合的方式加以实现的,总体上是在主机软件控制下,软硬件协调一致地完成测试功能.该测试仪软件共分为2 部分,即主机测试软件和设备驱动程序.下面分别予以介绍.主机测试软件是整个测试仪实现测试功能的用户软件,采用面向对象的编程工具C ++ Builder 编写,当数据采集卡通过PCI 插槽插入主机后,打开测试仪电源,主机操作系统将自动加载相应驱动程序,数据采集卡成为主机认可的设备.此时主机与该设备(数据采集卡)建立了通信联系,用户通过应用程序就可以与该设备进行通信.
Windows 环境下常见的驱动程序有以下3 种:VXD 、KMD和WDM .WDM (Win32 Driver Model) ,是Microsoft 公司力推的全新的驱动程序模式,它的运行平台是Windows 98/Me/2000 操作系统,WDM 模式正逐渐成为驱动程序的主流.目前,编写驱动程序比较流行的开发环境有:DDK 系列(Microsoft 公司) 、DriverStudio (NuMega 公司) 和Windriver(WinRiver system 公司) .Windriver 是一个新兴的开发工具,它的特点是使用简单、直观,不需要开发者对硬件知识有较深的理解即可编程.
在Windriver 环境下常采用系统提供的API 函数来写驱动程序,一般PCI 驱动程序分成初始化部分,对硬件资源的访问和具体调用3 个部分.其中后2 个部分对于不同的PCI硬件是基本一致的,其驱动程序的不同只是在于初始化阶段对不同PCI 卡上的不同的硬件资源的锁定,所以我们只是修改接口芯片的生产商ID 号,器件ID 号和相应的寄存器的值就可以将其移植为其他的PCI 硬件的驱动程序.设备驱动程序的基本框架结构:
1) 打开WinDriver 设备;
2) 查找要访问的PCI 设备;
3) 枚举该设备的资源:内存、I/O 、中断;
4) 锁定该设备的资源只能为我们所用,不能被其他程序访问;
5) 访问卡上的资源;
6) 解锁资源,将占用的资源释放掉;
7) 关闭WinDriver 设备.
2  PCI9054 使用中应注意的问题
2.1  引脚PRSNT1 和PRSNT2 的配置
在PCI 金手指上有2 个特殊的引脚PRSNT1 ,PRSNT2 ,它是与PCI 连接器本身相关的,它的用途有2个,其一,用来表明槽位上实际存在1 块板;其二,表明该板的最大功耗.具体如表1 所示.
 由上表可知,PRSNT1 ,PRSNT2 引脚必须至少有一个接地,根据功耗要求选择接地方式.
2.2  模式选择引脚MODE0 和MODE1 的配置
如果都下拉,是C 模式,即LOCAL 端的地址线和数据线是分开的;如果MODE0 上拉,MODE1 下拉,则是J 模式,即LOCAL 端的地址线和数据线复用.通常采用的是C 模式,可以降低开发难度.
2.3  EEPROM 的EEDI/EEDO 引脚的配置
有这样3 种情况:① 当不安装EEPROM 时,该引脚一定要下拉,用1 kΩ 的下拉电阻即可.此时启动后9054 会按默认的值进行配置;② 当安装空白的EEPROM 时,该引脚需要上拉;③ 当安装烧录好的EEPROM 时,该引脚需要上拉.这里解释一下:卡设计好后,如果没有配置好EEPROM的值,也可以测试卡的硬件,按A 或B 步骤,把卡插在PC的PCI 插槽上,如果硬件设计没有问题,是可以找到卡的.所以设计的时候应将此引脚设计成上下拉,根据需要装上拉或下拉电阻.这可以避免只能等配置好EEPROM 的值后才能测试卡的硬件设计正确与否[6] .
2.4  存储器和I/O 操作
通常PCI 扩展板应该有配置空间、存储器空间和I/O空间3 类资源.空间配置是必需的,根据设计需要,后两种资源可以只包含其中之一.PCI9054 有S0 和S1 两个配置空间,两个配置空间都可以配置成存储器空间和I/O 空间,存储器空间和I/O 空间的配置既有相同之处,也有很大的区别.其相同点为两者都以字节为单位进行空间配置.不同之处有:
1) 存储器空间支持0 ~ 4GB 的空间配置和映射,而I/O空间只支持0 ~256 字节的空间配置和映射;
2) 存储器空间支持8位、16位和32 位总线位宽配置和操作,而I/O 空间只支持32位总线位宽配置和操作;
3) 存储器空间支持单一周期和突发模式读写操作,而I/O 空间只支持单一周期读写操作;
4) 在编写设备驱动程序时,存储器空间用程序指针进行访问,I/O 空间则用专用的函数进行访问.
如果不清楚存储器空间和I/O 空间的异同步,有可能配错相应的寄存器.当计算机重新启动时,很有可能会启动不起来.除此之外,值得注意的是:在配置存储器空间和I/O 空间时,不要将两种硬件资源配置到相同的空间,导致空间重叠,使驱动程序产生误操作.
3  结束语
介绍了运用专用芯片开发PCI 总线系统的过程,并利用相关理论开发了一个基于PCI 总路线的数据采集卡,并说明了PCI9054 的使用方法及设计中应注意的问题,虽然系统相对比较简单,却体现了PCI 总线系统开发的一般步骤,对于PCI 总线系统的开发具有一定的参考意义.