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

最新更新时间:2010-11-14来源: 国外电子元器件关键字:PCI总线  数据采集  中断处理  核函数 手机看文章 扫描二维码
随时随地手机看文章

O 引言

    目前市面上有多种数据采集卡,但其应用都具有一定的局限性,不可能完全满足用户的需求。本文介绍的数据采集卡可应用于某视频图像采集系统中,数据源发送多路同步串行数据,然后经过数据采集卡传入上位机用以进行后续分析。上位机向外写控制字并转换后以异步串行方式输出。用以控制视频图像的采集。本系统将PCI接口逻辑和其他用户逻辑集成于一片FPGA中,因而大大节省了资源,便于进行串口扩展及其他功能的添加,性能良好,用途广泛。

1 PCI总线

    PCI总线是一种高性能的局部总线,具有32位可升级到64位的、独立于CPU的总线结构。工作频率为33/66 MHz,最高传送速度可达132 MB/s(32位、33 MHz)或528 MB/s(64位、66 MHz)。

    PCI总线定义了Memory(存储器)空间、I/O(输入/输出)空间和配置空间3种地址空间,并具有两种工作模式:其中主模式下的PCI设备具有总线控制权,可以实现DMA传输;而被主设备控制进行通信的称为从模式(TARGET)。

1.1 PCI总线的配置空间

    所有的PCI设备都必须实现配置空间,该空间分为首部区和设备有关区。首部区中的强制性寄存器有:供应商代码(Vendor ID)寄存器用于标明设备制造商),设备代码(Device ID)寄存器(用于指明特定的设备,它由供应商分配),版本识别(Revision ID)寄存器,首部类型(He-ader Type)寄存器和类别寄存器(Class Code)。以上五个寄存器均可用于PCI总线上设备的识别。另外,首部区中还有两种必须实现的寄存器:其中命令寄存器用于存放PCI命令,而设备状态寄存器则用于记录PCI的状态信息。

    操作系统在启动时应判断系统中有多少存储器、以及I/O设备需要多少地址空间,然后建立统一的地址映射关系,这时的PCI设备需要用到基地址寄存器。另外,若要实现中断,还必须设置中断引脚(Interrupt Pin)寄存器和中断线(Interrupt Line)寄存器。

1.2 PCI总线的中断机制

    PCI总线的硬件中断方式分为边沿触发和电平触发,PCI设备为低电平触发(level-sensitive)。PCI总线上有4条中断请求信号线:INTA #、INTB#、INTC#、INTD#,中断引脚寄存器的值01H~04H分别对应4条中断线,单功能PCI设备只能使用INTA#。此外,使用了中断引脚的设备还必须实现中断线寄存器。POST例程(加电自检测程序)在进行系统初始化和配置时还要将中断线信息写入该寄存器。PCI总线中断是可以共享的,这一方面解决了中断资源紧张的问题,但另一方面也会给PCI中断的实现带来麻烦。

2 系统硬件实现

2.1 PCI配置寄存器的设置

    Altera公司的PCI编译器(PCI Compiler)提供有使用Altera器件实现PCI接口设计的完全解决方案。其中包括4种PCI接口兆核函数(PCI IP)及相关测试平台。

    通过PCI编译器的IP工具台或直接编辑生成的兆核函数头文件可以设置并修改PCI的配置空间信息,本系统的主要配置信息如下:

2.2 PCI T32兆核函数的内部结构及外围信号

    PCI Compiler提供的四种PCI IP包括PCI_M64/32、64/32位的主模式接口和PCI_T64/32、64/32位的从模式接口。本系统通过PCI接口与PC机传输32位数据,并由上位机应用程序控制系统工作。故该系统工作于32位从模式,即本系统的PCI接口使用PCI_T32模块来实现,该模块的内部功能及外围信号如图1所示。


    参数配置寄存器(Parameterizde Configuration Registers)是符合PCI规范的所有配置的寄存器,可用于识别设备、控制PCI总线功能、提供PCI总线状态等,PCI侧从模式控制模块(PCI Target Control)用于控制PCI_T32与PCI总线的各种操作,而用户侧从模式控制模块(Local Target Control)则用于控制PCI_T32与用户逻辑的各种操作。

    PCI_T32上PCI总线一侧的信号是符合PCI协议的标准信号,该信号Local侧的信号为Altera PCI IP特有的与用户逻辑接口的信号,起着关键作用。其中:

    l_adi[31:0]为地址/数据输入信号;

    l_dato[31:0]为数据输出信号;

    l_adro [31:0]为地址输出信号,读操作时,可将PCI侧地址/数据信号AD[31:0]上的第一个有效周期(即地址期)的数据输出;

    l_emdo[3:0]为命令输出信号,其位定义及时序符合PCI规范,其为0010时为I/O读操作,为0011时为I/O写操作、为0110时为内存读操作。为0111时为内存写操作,为1010时为配置空间读,为1011时为配置空间写,用户对这组信号进行译码可知其当前PCI总线上设备的操作情况;

    l_irqn为用户中断请求信号,由于PCI总线为低电平中断,所以,用户逻辑若要发出PCI中断请求,就必须将低脉冲送入l_irqn。实验证明,低脉冲持续时间须在4~8μs之间,持续时间过短会出现丢失中断现象,而时间过长时,操作系统又会重复响应同一个中断请求;

    l_tsr[11:0]可用于控制local目标设备状态寄存器,其中D0~D5位分别对应BAR0~BAR5,哪位有效代表哪个BAR被选中;

    l_dxfrn为输出信号,表示local目标设备数据传输成功。

2.3 FAGA逻辑设计

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


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

3 系统软件开发

3.1 驱动程序

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

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

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

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

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

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

3.2 WinDriver中的重要函数

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

3.3 中断实现

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

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

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

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

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

3.4 驱动的分发及安装

    驱动的分发是指在目标机上不用安装WinDriver开发包即可应用其开发的设备驱动。需要准备的分发包应包括windrvr6.sys、windrvr-6.inf、wd921.cat、waapi921.dll、difxapi.dll、自己的INF(Information File)等文件,而且即使是自己开发内核驱动。也应包含在内。

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

4 结束语

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

关键字:PCI总线  数据采集  中断处理  核函数 编辑:金海 引用地址:基于PCI总线模块的多通道串行数据采集系统设计

上一篇:Maxim推出H.264视频压缩方案模/数转换前端
下一篇:最新低功耗 ADC 完美结合宽泛的电源与参考、自动断电以及伪差动输入功能

推荐阅读最新更新时间:2023-10-12 20:18

基于AT89S52的交通灯综合实验设计
随着各种车辆的增多,经常遇到交通堵塞问题,作为交通控制主要工具的交通灯,扮演着重要的角色,本文设计了一种交通灯控制系统综合实验,该系统包括:主控制器AT89S52、键盘模块、数码管显示模块、LED灯模块等,为使学习能综合练习从输入到输出的完整过程。系统中可采用主控器的外部中断功能、定时中断功能、动态扫描功能等,这些功能放入一个程序中,可使学习者能更深刻地理解它们的实际应用。 1 实验的设计目的 (1)通过学习该实验,掌握单片机并行口传输数据的方法,以控制数码管和发光二极管的亮灭。(2)掌握用动态扫描方法解决多位LED共用一个P口显示的问题。(3)通过单片机程序的编写,熟练掌握计数器/定时器和中断的使用方法。(4)通过系统的
[单片机]
基于AT89S52的交通灯综合实验设计
基于RS-485总线的数据采集系统
  1 硬件设计   1.1 系统整体框图   系统实质上是一个集散控制系统,更准确地说是一个远程数据采集系统,系统概念设计图如图1所示,系统整体框架图如图2所示。      1.2 系统模块设计   1.2.1 信号获取模块   系统采集大坝坝内各个方位的形变,这种形变反映出各个方位的压力值。选用NZS - 25系列差阻式应变计,它是一种大量程大应变计,适用于大坝及其他混凝土建筑物内部、钢结构等的应变量测量。它与一般压力传感器的结构不同,是通过测量比值而得到压力值,其基本结构如图3所示。      图3中,R1、R2为敏感电阻,其基准电阻值为40 ,在其
[单片机]
基于RS-485总线的<font color='red'>数据采集</font>系统
嵌入式工控(ARM)主板数据采集与控制系统应用方案
嵌入式工控主板通过板载串口、网口等功能,加上良好的人机界面,可以迅速构建现场总线控制系统。具有10/100M以太网接口,使系统能够方便的接入企业信息管理层,实时地实现本地监控或者远程监控;也可以利用以太网传输速率高的特点,作为终端管理单元,连接以太网(DAM-E3000)采集模块和 RS485/232(DAM-3000)采集模块;多串口联网设备;外挂PC104数据采集板卡,实现对现场设备的信号快速采集和实时控制。
[单片机]
嵌入式工控(ARM)主板<font color='red'>数据采集</font>与控制系统应用方案
一种采用PCI软核的轴角数据采集系统
   0引言   在工业控制伺服设备中,实现角度位置量的高精度实时测量和控制是关键性的技术。轴角转换模块是一种角度量/数字转换器,其功能是将旋转变压器及自整角机的模拟信号转换为数字信号,与普通的A/D编码相比,轴角编码采用正、余信号进行编码,抗干扰能力强及转换速度快。随着FPGA技术的发展,在FPGA上能够实现PCI接口。存贮器及逻辑控制功能。由于FPGA具有灵活的可编程性的优点,PCI接口可以依据插卡功能进行最优化,而不必实现所有的PCI功能,这样可以节约系统的逻辑资源,实现紧凑的系统设计。本文介绍采用轴角转换器及Altera公司的FPGA器件实现角度量高速采集的PCI接口板的方法。   1系统硬件设计   轴角数据
[嵌入式]
基于USB 2.0的高速数据采集卡在虚拟仪器中的应用
引言   虚拟仪器,就是在通用计算机平台上,用户根据自己的需求定义和设计仪器的测试功能,与传统仪器相比,虚拟仪器在智能化程度、处理能力、性能价格比、可操作性等方面均具有明显的技术优势。   本文将着重介绍一种新型优良的下位机—基于USB2.0的高速数据采集卡在虚拟仪器中的应用。   本文重点分析的下位机即智能A/D,是虚拟仪器硬件设备中的关键环节。下位机通过特定接口接受来自上位机的指令并向上位机提供自身所处的状态:在收到采集指令后,对传感器发送的模拟电信号进行A/D采样以转化为数字信号,然后将数字信号通过USB接口传给上位机。   本系统的下位机支持2个通道的传感器信号进行A/D转换,其最高采样效率为1
[单片机]
双机通信在CPCI总线上的实现
   在电信、电力、国防等应用领域中,经常要求其所用设备有极高的实时性。当需要在各个设备间进行大容量的信息交换时,传统的网络包交换模式已不能很好地满足实时性的要求。而借助于C PCI 总线,两个设备可以互访对方的 内存 ,具有传输速度快、传输容量大和高可靠性等特点,非常适合大容量的信息传递。国家数字交换系统工程技术研究中心承担的国家863计划项目——“中国第三代移动通信系统”CDMA2000系统集成就选择基于CPCI总线的多SBC平台。各个SBC间的通信效率直接决定了整个系统性能的高低。   目前常用的实时操作系统如VxWorks、Lynx等,都针对CPCI总线实现了消息队列,可用于SBC间的消息通信。但VxWorks、Lynx中
[工业控制]
MCC以太网数据采集卡入驻现货联盟
面向电子行业的特色元器件、组件采购的大型电子交易平台现货联盟宣布,Measurement Computing(以下简称MCC)的4款以太网数据采集卡产品已成功登陆现货联盟网上交易平台。 MCC是一家领先的数据采集方案设计商、制造商和供应商,致力于测试与测量等应用领域。公司设计并制造易于使用、集成和支持的数据采集设备,为编程人员和非编程人员提供丰富的软件相关选项。免费技术支持,使得MCC成为数据采集应用中的首选。 此次入驻现货联盟网上交易平台的产品有以下四个型号可供选择:16位多功能以太网数据采集卡E-1608、基于以太网的8通道热电偶测量设备E-TC、基于以太网的24路数字I/O设备E-DIO24,以及基于USB或以太网的高精度热
[网络通信]
基于A/D芯片AD1674设计的数据采集电路
    摘要: 介绍了基于AD1671芯片设计的数据采集电路,该电路具有查询、中断和DMA三种数据传输功能,并且采用8253定时脉冲和端口写两种A/D启动方式,适合于不同的应用场合。     关键词: A/D转换 8253定时器 DMA方式 随着科学技术的发展,计算机在测量与控制中的应用日益广泛。为了使外部世界的模拟信号与计算机接口,需要进行模/数转换,该转换一般通过A/D芯片来完成。目前市场上出现了各种A/D芯片,且各种A/D芯片具有不同的控制方式和应用条件。对于高速数据采集,最大采样频率取决于A/D的转换时间以及数据的传输时间。提高最大采样频率可通过缩短A/D的转换时间或提高数据的传输速度来实现。如果与
[应用]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved