当前位置:首页 > 模拟 > 模拟
[导读]给出了一种基于FPCA实现的PCI总线的多通道同/异步串行数据采集系统的硬件及软件设计方案,同时重点介绍了利用Altera公司的PCI兆核函数来实现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中。因而可极大的提高资源利用率,并可满足大量数据高速传输的要求。上位机应用程序采用中断方式读取数据可大大提高系统的性能。目前,经多次试验,该系统已完全可以满足工程需要。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭