首页 » 技术文章 » 基于PCI总线模块的多通道串行数据采集系统设计

基于PCI总线模块的多通道串行数据采集系统设计

作者:  时间:2010-12-07 10:25  来源:EDN

  23 FAGA逻辑设计

  一个数据采集系统若要稳定可靠地采集数据,都需要设置合适的数据缓冲区,本系统的数据缓冲区由FPGA内部IP核实现。图2所示为FPGA内部的PCI接口及数据缓冲区框图。

  同步串行通信对时钟的同步要求非常严格,设计时应该注意收/发两方必须使用同一时钟来控制数据的传输。另外,PCI_T32内存读写分为单周期模式和突发模式。突发模式即在给出首地址后主设备连续读写多个数据,这在FPGA中需要用户端地址每周期自动增1的操作。

  3 系统软件开发

  31 驱动程序

  PCI设备的硬件资源由Windows操作系统根据PC机中所有设备对资源的占有来统一分配。为了保证系统的安全和稳定性,在Windows2000及其后的微软操作系统中,运行在ring3层的用户应用程序无法直接访问硬件,而必须通过运行于ring0层的设备驱动程序来访问。设备驱动不仅要实现对硬件的操作,还要为用户应用程序提供专用的API函数库,以方便用户实现对硬件的操作访问。

  Windows XP操作系统下的驱动程序一般是基于WDM(Windows Driver Model)模型开发的。该模型中的上层应用程序通过调用Win32 API函数发出对设备的访问请求,IO管理器则根据这个请求构造合适的IRP(IO Request PacketIO请求包),并将其传给设备驱动程序,接着由驱动程序直接访问硬件完成IRP处理,最后由IO管理器把数据和结构返回给应用程序。

  WDM驱动比较常用的有以下三种方法:

  第一种是直接使用Windows DDK(Device Driver Kit,驱动程序开发包)开发的驱动程序面向Windows内核,该方法工作稳定,效率更高。但必须精通Windows内部体系结构及设备驱动程序的体系结构等,因此开发难度较大。

  第二种是使用DriverStudio。此工具软件已经做了很多基础性工作,也进行了一些封装。

  第三种是使用WinDriver,使用该方法时,开发者只需要在用户模式下编写程序来调用它提供的通用驱动即可。其中Drvier Wizard可以进行硬件诊断和自动代码生成。另外还可以将对速度要求较高的模块插入内核运行来获取更好的性能。本系统即采用WinDriver开发方法。

  32 WinDriver中的重要函数

  利用WinDriver开发驱动程序通常有两种方法:第一种是利用Driver Wizard生成的代码进行修改;第二种是直接利用WinDriver提供的API函数来编写自己的程序。本系统即采用这种方法,开发时首先要注意包含所有相关的头文件。其基本驱动程序的结构及API函数如下:

  33 中断实现

  PCI总线的通信方式有查询和中断两种方式。查询方式实现简单,但是难以适应实时性要求较高的场合,而且上位机软件资源占用率过大;中断方式则可克服以上缺点,可以实现数据的实时传输。本系统将数据经过处理后存入RAM,存满一帧数据,硬件便发出中断请求信号,上位机响应中断请求后,即可读取一帧数据。

  要实现中断机制,就要建立一个独立的中断响应线程,并在主函数中完成中断的使能、屏蔽及中断线程的启动。另外,使用WinDriver处理电平中断时,还必须建立传输命令(INTCSR)来应答中断。

  其中断处理过程分为四步:

  第一步,调用WDC_IntEnable(),此函数的功能是分配并初始化WC_INTERRUPT结构体,自动创建中断处理线程,同时在其中包含WD_Int-Wait()函数,作用是使线程休眠直至有中断发生。另外,还可以调用底层API函数InterruptEnable()WD_Enable(),但此时需要由用户自己创建中断线程;

  第二步是中断线程无限循环以等待中断发生。中断发生时,WinDriver在内核中执行传输命令,当操作返回到用户模式时,驱动的用户模式中断处理例程将被调用;之后,中断处理例程返回,但中断等待循环继续;最后在不再使用中断时,调用’WDC_IntDisable()、底层API函数Inter-mptDisable()WD_IntDisable()来关闭中断。

  34 驱动的分发及安装

  驱动的分发是指在目标机上不用安装WinDriver开发包即可应用其开发的设备驱动。需要准备的分发包应包括windrvr6syswindrvr-6infwd921catwaapi921dlldifxapidll、自己的INF(InformaTIon File)等文件,而且即使是自己开发内核驱动。也应包含在内。

  Windows操作系统依靠INF文件来得到即插即用设备的驱动程序信息。WinDriver会自动检测PC机上的即插即用设备。并为相应硬件生成I-NF文件,而且只需稍作修改即可。INF文件可引导系统找到硬件所需要的驱动程序,由WinDriver生成的INF文件中列出了默认的拷贝文件win-drvr6sys。设备驱动可通过工作于内核模式的windrvr6sys访问硬件。之后在目标机上装入驱动分发包及INF文件,即可通过应用程序控制PCI设备。

  4 结束语

  该数据传输系统的PCI接口逻辑和数据传输、处理、缓存等用户逻辑可集成于一片FPGA中。因而可极大的提高资源利用率,并可满足大量数据高速传输的要求。上位机应用程序采用中断方式读取数据可大大提高系统的性能。目前,经多次试验,该系统已完全可以满足工程需要。

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20

高清视频监控FPGA应用迎来小高峰

视频监控  FPGA  2013-06-20
在线研讨会
焦点