基于PCI总线模块的多路串行数据采集系统

最新更新时间:2012-04-12来源: 互联网关键字: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总线模块的多路串行数据采集系统

上一篇:基于PROFIBUS-DP现场总线的光电收发器设计
下一篇:EFM32微控制器新添低能量传感器接口

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

基于AT89C51应用系统的串行通信设计
1 引 言 在红外成像技术的电力设备状态检测系统中,基于AT89C51单片机的应用系统,采用美国雷态公司的型号为3iLRL3的非接触式红外测温仪.该测温仪采用的是RS232C串行通信标准接口,该接口在很多通信设备中通用,目前与PC机的直接串行通信也是RS 232C接口。尽管RS232C性能指标并非很好,但还是有广泛的市场支持。串行通信技术在测控系统中占有很重要的地位,只用三根线.就可以方便的在2个数字设备之间进行信息的交换,实现全双工的传送数据,硬件成本低.而且通用性好。 2 串行通信的硬件设计 在所开发的系统中.红外测温仪将检测电力没备的工作和环境温度,通过RS 232C串口传给单片机,同时由单片机控制检测装置的在线
[单片机]
串行通信的基本原理
串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。串口通信程序的流程如下图: 串口信号线的接法 一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。25芯和9芯的主要信号线相同。以下的介绍是以25芯的RS-232C为例。 1、主要信号线定
[模拟电子]
<font color='red'>串行</font>通信的基本原理
多路异步串行通信系统在光纤陀螺组合中的设计与实现
DSP与计算机通信的外部接口主要可划分为串行通信口和并行通信口。串口通信包括采用RS232、RS485/422、USB、IEEE1394等协议的通信,并口通信包括采用IEEE488、IEEE1248等协议的通信。本文主要介绍DSP多路RS232、RS485/422通信系统的设计与实现,并将此系统应用于光纤陀螺三维角速率测量组合中。 1 系统方案设计 1.1 系统框图 图1为DSP多路异步串口通信系统的框图。计算机接收端为通用的数据采集卡,其与DSP之间采用RS485/422协议,通信速率可达 921.6kBPS。光纤陀螺与DSP之间采用RS232协议,通信速率可达115.2kBPS。该系统可以实现DSP与三路RS232设备和一
[嵌入式]
高速USB数据采集系统的设计
    在图像处理、瞬态信号测量等一些高速、高精度的应用中,需要进行高速数据采集。USB 2.0接口以其高速率等优点渐有取代传统ISA及PCI数据总线的趋势,热插拔特性也使其成为各种PC外设的首选接口。EZ-USB FX2是Cypress公司推出的集成USB 2.0的微处理器,它集成了USB 2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。本文将介绍基于EZ-USB FX2系列CY7C68013芯片的高速数据采集系统的设计,该系统具有限幅保护功能,固件和驱动程序的编写简便,能够完成对数据的高速采集和传送。 数据采集系统方案设计     数据采集系统的框图如图1所示,硬件电路如图2所示。其中,A
[嵌入式]
通用串行总线在分组无线网中的应用
    分组无线网(PRN) 分组无线网络控制单元(PRU)     分组无线网(PRN)是一种新型的无线通信网络,是利用分组交换技术共享无线信道的数字通信网络。它采用先进的网络通信协议、动态的网络拓扑组织,使网络具有信道利用率高、组建方便和多跳转换覆盖面广等特点。分组无线网与一般计算机通信网、广域分级无线网和传统的局域网相比,具有机动灵活、组网迅速和抗毁能力强等特点。分组无线网络控制单元(PRU)是分组无线网中的核心设备,它与计算机(数据终端)相连接,进行收发数据交换。计算机可以向PRU发送网络控制命令,也可以设置或查看设备与网络的状态。传统的方法是采用RS-232口进行通信,传输速度十分有限,难以对高速、批量的数据进行快速
[嵌入式]
PIC16C74单片机SPI方式读写串行EEPROM程序
; list p=16C74, st=off ; PORTC PIN DESCRIPTION ; SCK bit 3, SDI bit 4, SDO bit 5, CS bit 7 ; Fosc = 10.0 MHz, thus each instr. cycle = 400ns ;***************Ram Register Definitions******************************* rxdata equ 25h addr equ 26h loops equ 27h ;***************Bit Definitions***************************
[单片机]
技术文章—STOP功能在低噪声数据采集应用中的优势
电磁噪声是指任何一种多余的电磁能量,其强度足以使信号失真。因此,设计高性能数据采集应用或任何具有特别敏感信号路径的系统时,必须克服噪声问题。 在电源方面,由于其基本的工作原理,高效的DC/DC转换器可能成为重要的噪声源。它们既会在转换器的开关频率处产生低频纹波,也会产生因转换器功率级中电压和电流的快速切换而引起的高频噪声。 与开关式稳压器结合使用的降噪技术示例包括额外的过滤无源元件,诸如缓冲电路、铁氧体磁珠和馈通电容器,或在电源路径中包含线性电源,如低压差稳压器。虽然这些方案在大多数应用中都能很好地发挥作用,但它们在效率、解决方案尺寸以及总电源解决方案的成本方面可能会有所权衡,尤其是在如患者监护仪、智能仪表、智能传感器和物
[电源管理]
技术文章—STOP功能在低噪声<font color='red'>数据采集</font>应用中的优势
利用异步通信芯片16C552实现PC机与DSP的串行通讯
摘要:介绍了异步通信芯片16C552的功能、特点、结构和内部寄存器,给出了用16C552芯片实现PC机与DSP串行通讯的方法,同时给出了它们之间的硬件接口电路和软件初始化程序。 关键词:16C552;串行通讯;异步 当实现PC机与DSP的串行通讯时,通常可直接利用DSP的串行通讯接口(SCI)模块和SCI多处理器通讯协议(即空闲线路模式和地址位模式)来在同一串行线路中实现多个处理器之间的通讯,也可以采用SCI异步通讯模式实现串行通讯。这两种方式虽然都能方便地实现串行通讯,但它们都需占用系统较多的硬件和软件资源, 因而不适用于对实时性要求比较高且系统资源紧张的应用场合。笔者在研制电力有源滤波实验系统中,由于采用了异步通讯芯片
[网络通信]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved