新型软件在摄谱仪器仪表预设中作用
1 USB数据采集卡原理
1. 1 USB简介
USB即通用串行总线,它支持在主机与各式各样即插即用的外设之间进行数据传输。一个完整的USB总线系统可以分为3个部分: USB总线的主机、USB总线的设备以及它们之间的连接。U SB总线连接外设和主机时,采用菊花链的形式对端点加以扩展,有效地避免了PC机上插槽数量对扩充外设的限制,减少PC机I/O接口的数量。
根据设备对系统资源需求的不同,在USB规范中规定了4种不同的数据传输方式:等时传输方式( I sochronous)、中断传输方式( In terrupt)、控制传输方式( Control)和批( Bulk)传输方式,这些传输方式各有特点,分别用于不同的场所。
USB协议支持两种传输速度,即低速1. 5 M bps和高速12 M bps,而USB2. 0协议的最高传输速率可以到480M bps.并且U SB端口可以输出最大500 mA的电流,可用长达5 m的传输线进行设备连接。
1. 2系统框图
高速数据采集具有系统数据吞吐率高的特点,要求系统在短时间内能够传输并存储采集结果。因此,采集数据的快速存储能力和容量是制约加快系统速度和容许采集时间的主要因素之一。通常在数据采集系统中增加存储器件充当缓存器来满足要求,常用存储器有FIFO、双端口RAM以及静态RAM等,但容量小,已经不能满足高速数据采集系统的需求。目前市场上的SDRAM和DDR SDRAM具有工作频率高、容量大、功耗低的特点,数据线位宽可以达到64 bi,t完全适用于高速数据采集系统。因此,在本设计中采用一个FPGA和SDRAM构成一个大容量的FIFO,从而可有效的避免F IFO溢出,同时也提供了一个低成本的满足高速实时流数据传输的解决方案(系统框图如1所示。)
2 USB数据采集卡硬件设计
2. 1芯片介绍
2. 1. 1 EZ- USB芯片
选用Cypress公司的FX2系列产品CY7C68013,它提供了对USB2. 0的完整解决方案。该芯片包括带8 kByt片内RAM的高速CPU、16位并行地址总线加8位数据总线、I2C总线、4 kByt FIFO存储器以及通用可编程接口( GPIF)、串行接口引擎( SIE)和U SB2. 0收发器。CY7C68013与外设有两种接口方式:可编程接口GPIF和S lave F IFO.FX2的SLAVEFIFO接口可以直接与外部设备无缝连接。它的一个主要的特点是:在AU TOOUT和AUTO IN模式下,数据流从主机传出或者向主机输入不需要经过CPU的处理。这样,低主频的8051CPU将不会影响高带宽的数据流传输。本系统内采用了SLAVEFIFO的AUTO IN传输模式。
2. 1. 2 FPGA芯片
设计中, FPGA采用A ltera公司的CYCLONE芯片EP1C6- Q240.该芯片支持多种不同的I / O标准(包括PCI接口,可连接ASSP和ASIC设备的接口以及串行设备接口等)。实际应用中, FPGA除了与SDRAM构成一个大容量的FIFO以外,还需要完成最为重要的SDRAM的读写控制功能。
2. 1. 3 A /D芯片
采用M axim公司MAX1180, MAX1180是采用差分输入,带有宽带跟踪/保持( Trackand- Hold)的双通道9级流水线型结构的ADCs,采样速率可达到105 MH z.完全满足高速数据采样的要求。
2. 2硬件连接
设计方案中, SDRAM控制器是数据流控制核心,负责数据的高速猝发读/写和定时刷新。当主机启动A /D转换后, SDRAM控制器将采集结果存储到SDRAM存储器中,采集结束后,主机通过USB接口采用DMA传输方式将采集数据读到主机系统中。
设计中采用了8 32M b it的SDRAM,采集数据先送入A /D数据缓存器,由SDRAM控制器读出并写入大容量SDRAM存储器。当A /D转换结束后,板卡修改状态标志或者发出中断请求,主机发出读取命令,SDRAM控制器切换工作状态,把数据从SDRAM中取出,写入输出缓存器,由主机通过总线接口将结果读到系统中。其中, SDRAM控制器负责对SDRAM的定时刷新。SDRAM控制器根据设计,可以对SDRAM执行猝发读写、刷新等12种命令,完成对数据的访问。SDRAM控制器由FPGA编程实现。
A /D转换器的采样时钟同时作为CY7C68013的S lave F IFO模式的读写控制时钟,即CY7C68013的接口时钟连接到IFCLK引脚。SLWR /SLRD是CY7C68013 S lave FIFO的写使能/读允许信号。FPGA向CY7C68013 Slave FIFO提供S lave FIFO输出允许信号SLOE,仅在数据输出时有效。FD < 15: 0>为16位双向数据总线。FIFOADR < 1: 0>为端点FIFO选择信号。具体的硬件连接框图如2所示。
3系统软件设计与实现
本系统软件设计包括:固件程序、驱动程序和应用程序的设计。其中,固件程序是整个程序设计的核心。
3. 1 USB设备固件程序设计
固件程序相对比较复杂,需要用到大量的函数,但基本结构却相对简单,包括下面3个过程:初始化:包括处理器和外围电路的初始化;主函数:包括完成符合设备特定要求的代码;中断处理:包括处理各种中断的程序代码。
设计中采用CY7C68013的端点4接收从主机发来的命令字,然后根据命令字进行相应操作,当端点4接收主机发来命令并进行完相应操作后,在端点8返回主机要求的操作结果或者仅仅返回控制命令执行的状态。接收数据端点6被设置为SLAVEFIFO模式,所以接收FPGA发来的数据,等待主机提取。由于端点6的SLAVEFIFO接口使用了AUTO IN模式,所以数据流由外部FIFO控制器控制,直接传入端点6的F IFO,然后由主机提取。这里CY7C68013仅作为一条数据通道,而CPU并不参与这个过程。所以只要在固件程序的初始化程序段内配置好端点6的SLAVEF IFO接口模式,剩下的传输控制和其它的工作则由FPGA来做。
以下为部分固件程序代码,主要给出了端点6 SLAVEFIFO接口的AUTO IN模式配置程序。
voidTD _In it( void) / /FX2固件的初始化程序段,设置FX2的相应寄存器{ / /设置SLAVEFIFO时钟由外部控制器提供。之前FPGA向IFCLK引脚提供接口时钟IFCONF IG = 0x43; / /FIFO接口时钟由外部控制器提供,最后两位设置FIFO接口模式为SLAVEFIFO SYNCDELAY; / /同步延迟,由FX2技术手册规定EP6FIFOCFG = 0x0D; / /设为AUTO IN方式,允许0长度包,最后一位为1,设置接口为16位SYNCDELAY;EP6CFG= 0xE0; / /EP6方向为输入,块端点,包大小为512字节,双缓存。
SYNCDELAY;PINFLAGSAB= 0x00; / /, FLAGB= FF,为FIFO满标志SYNCDELAY;PINFLAGSCD= 0x00; / /FLAGC= EF,为FIFO空标志, FLAGD= EP2PF SYNCDELAY;FIFOPINPOLAR= 0x00; / /选择引脚极性, 0为低电平有效SYNCDELAY;EP6AUTO INLENH = 0x02; / /和低位寄存器确定传输包大小为512字节/包SYNCDELAY;EP6AUTO INLENL= 0x00;SYNCDELAY;} void TD_Poll( void ) / /此函数在设备运行时反复被调用,主要完成外部FIFO状态检测和数据传输。
{ } BOOL TD_Suspend( void ) / /该函数在设备进入挂起状态前调用{ return( TRUE );} BOOL TD_Resume( void ) / /设备重启后调用{ return( TRUE );}
在程序开始执行后,固件程序会执行以下步骤:第一步,初始化所有的内部状态变量;第二步,调用用户的初始设置函数TD _Init( ),初始化USB总线设备(即数据采集系统)接口为非配置状态,并同时打开中断;第三步, EZ- USB固件程序开始重新枚举设备(R eNum erate),直到收到SETUP包为止;第四步,一旦SETUP包被检测到,固件程序框架就开始进行任务分配。任务分配就是依次重复地执行下面的过程:调用用户函数TDPoll( );检测是否有标准的设备请求,如果有,则执行指令并做出相应的操作;检测USB核是否有USB挂起事件,如果有USB挂起事件,则调用用户程序TD_Suspend( ), TD_Suspend( )返回为真时, USB核检测是否有新开始事件;如果没有USB挂起事件,则使处理器处于挂起状态。当检测到有重新开始的事件, USB核调用用户程序TD_R esum e( ),并继续执行步骤;当TD_Suspend( )返回为假时,则继续执行步骤。
3. 2驱动程序及PC应用程序设计
在W INDOWS平台下, USB驱动程序由3部分组成: USB设备驱动程序、USB总线驱动程序和USB主控制器驱动程序,它们必须遵循W IN32驱动程序模型(WDM )。其中, W INDOWS操作系统已经提供了处于驱动程序栈底的USB总线驱动程序和USB主控制器驱动程序。在USB设备驱动程序开发时,可以利用W in dows DDK ,也可以通过借助一些辅助软件工具,如DriverStudio、W inDriver等。本设计中采用Jungo公司的W inDriver进行驱动程序开发, W inDriver提供的驱动向导,可根据用户的需要,自动生成代码框架,从而简化了驱动程序的开发,且和DDK的结合良好。
在PC机应用程序设计时,采用LabW indows/CV I进行应用程序的设计,以完成虚拟示波器和虚拟频谱分析仪的设计。最终实现的虚拟仪器前面板如3所示,该虚拟仪器可实现示波器和频谱分析仪的功能。
4结束
本文设计的数据采集卡解决了虚拟仪器在实现上的瓶颈制约,完成了外部数据与计算机的高速传输,理论上本数据采集卡可采集50 MH z的外部信号,可完全满足各方面的测量要求。本文中设计的虚拟示波器和虚拟频谱分析仪在实际应用中功能全面,使用方便,在具体运用中用户还可以根据功能需要设计PC机的应用程序,这也正是虚拟仪器的最大优势,即功能可由用户自定义。
【中国粮油仪器在线】部分信息来自互联网,力求安全及时、准确无误,目的在于传递更多信息,并不代表本网对其观点赞同或对其真实性负责。