水击压力高速采集系统研制

| 收藏本文 下载本文 作者:话多人厌

以下是小编为大家整理的水击压力高速采集系统研制(共含5篇),欢迎阅读与收藏。同时,但愿您也能像本文投稿人“话多人厌”一样,积极向本站投稿分享好文章。

水击压力高速采集系统研制

篇1:水击压力高速采集系统研制

水击压力高速采集系统研制

水击压力数据采集系统是为液体火箭发动机地面试验设计的..阐述了系统设计指标、功能、原理、应用软件开发及系统集成后的调试方法.该系统具有数据采集、信号转换、瞬态参数信号调节、高速采集、数据实时显示及数据分析处理功能.实现了多路参数高速、数据实时显示及数据分析处理,测量精度高,性能稳定可靠,操作简便.能快速响应控制信号,各项性能指标达到了设计要求.

作 者:混平赵政社 刘军 Hun Ping Zhao Zhengshe Liu Jun  作者单位:西安航天动力实验技术研究所,陕西西安,710100 刊 名:火箭推进 英文刊名:JOURNAL OF ROCKET PROPULSION 年,卷(期): 34(4) 分类号:V434.3 关键词:高速采集   信号调节   软件设计  

篇2:基于USB总线的高速数据采集系统

基于USB总线的高速数据采集系统

摘要:介绍了一种基于USB总线的高速数据采集系统,讨论了USB控制器EZ-USB FX2?CY7C68013?的性能及传输方式?给出了该系统的硬件和基于GPIF主控方式实现数据传输的软件设计方法。

关键词:USB;数据采集;EZ-USB FX2;GPIF

1 引言

现代工业生产和科学研究对数据采集的要求日益提高。目前比较通用的是在PC或工控机内安装数据采集卡(如A/D卡及422、485卡)。但这些数据采集设备存在以下缺陷:安装麻烦、价格昂贵、受计算机插槽数量、地址、中断资源的限制,可扩展性差,同时在一些电磁干扰性强的测试现场,可能无法专门对其作电磁屏蔽,从而导致采集的数据失真。

传统的外设与主机的通讯接口一般是基于PCI总线、ISA总线或者是RS-232C串行总线。PCI总线虽然具有较高的传输速度(132Mbps),并支持“即插即用”功能,但其缺点是插拔麻烦,且扩展槽有限(一般为5~6个),ISA总线显然存在同样的问题。RS-232C串行总线虽然连结简单,但其传输速度慢(56kbps),且主机的串口数目也有限。

通用串行总线(Universal Serial Bus,简称USB)是1995年康柏、微软、IBM、DEC等公司为了解决传统总线的不足,而推出的一种新型串行通信标准。该总线接口具有安装方便、高带宽、易扩展等优点,已经逐渐成为现代数据传输的发展趋势。基于USB的数据采集系统充分利用USB总线的上述优点,有效地解决了传统数据采集系统的缺陷。USB的规范能针对不同的性能价格比要求提供不同的选择,以满足不同的系统和部件及相应不同的功能,从而给使用带来极大方便。

(本网网收集整理)

2 系统介绍

2.1 数据采集系统的结构与功能

常见的数据采集系统的硬件总体结构如图1所示。其中数据采集接口卡是硬件部分的核心,它包括A/D转换器、微控制器、USB通信接口等。

在高速数据采集系统中?由于现场输入信号是高频模拟信号,因而信号的变化范围都比较大?如果采用单一的增益放大?那么放大以后的信号幅值有可能超过A/D转换的量程?所以必须根据信号的`变化相应地调整放大器的增益。在自动化程度较高的系统中?希望能够在程序中用软件控制放大器的增益?AD8321正是这样一种具有增益可编程功能的芯片。AD8321是美国AD公司生产的一种增益可编程线性驱动器。它具有频带宽、噪声低、增益可编程且易于与单片机进行串行通信等优点,十分适合在数据采集系统中做前置放大。

经过调理后的信号可送入模/数变换器(ADC)进行A/D变换。笔者选用的ADC是TLC5540,它是一种高速8位模拟数字转换器,能以高达每秒40M的采样速率进行转换,由于采用半闪速结构和CMOS工艺制造,因此功耗和成本很低。其75MHz(典型值)的模拟输入带宽使该器件成为欠采样应用的良好选择。该器件带有内部电阻,可用于从5V电源产生2V满度的基准电压,以减少外部元件数。数字输出置于高阻方式。它仅需要5V电源工作,可由USB总线供电。

由于数据采集接口卡是硬件部分的核心,因此应选择能适用USB协议的合适芯片。EZ-USB FX2是一种USB2.0集成微控制器。它的内部集成了USB2.0收发器、串行接口引擎(SIE)、增强的8051微控制器和一个可编程的串行接口。其主要特性如下:

●带有加强的8051内核性能,可达到标准8051的5~10倍,且与标准8051的指令完全兼容;

●集成度高,芯片内部集成有微处理器、RAM、SIE(串行接口引擎)等多个功能模块,从而减少了多个芯片接口部分需要时序配合的麻烦;

●采用软配置,在外设未通过USB接口接到PC机之前,外设上的固件存储在PC上;而一旦外设连接到PC机上,PC则先询问外设是“谁”(即读设备描述符),然后将该外设的固件下载到芯片的RAM中,这个过程叫做再枚举。这样,在开发过程中,当固件需要修改时,可以先在PC机上修改好,然后再下载到芯片中;

●具有易用的软件开发工具,该芯片开发系统的驱动程序和固件的开发和调试相互独立,可加快开发的速度。

图2 USB接口示意图

2.2 方案选择

FX2有三种可用的接口模式:端口、GPIF主控和从FIFO。

在“端口”模式下,所有I/O引脚都可作为8051的通用I/O口。

在“从FIFO”模式下,外部逻辑或外部处理器直接与FX2端点FIFO相连。在这种模式下,GPIF不被激活,因为外部逻辑可直接控制FIFO。这种模式下,外部主控端既可以是异步方式,也可以是同步方式,并可以为FX2接口提供自己的独立时钟。

“GPIF主控”接口模式使用PORTB和PORTD

构成通向四个FX2端点FIFO( EP2? EP4? EP6和EP8)的16位数据接口。GPIF作为内部的主控制器与FIFO直接相连,并产生用户可编程的控制信号与外部接口进行通信。同时,GPIF还可以通过RDY引脚采样外部信号并等待外部事件。由于GPIF的运行速度比FIFO快得多,因此其时序信号具有很好的编程分辨率。另外,GPIF既可以使用内部时钟,也可以使用外部时钟。故此,笔者选择了GPIF模式。

高速数据采集卡的设计存在两大难点:一是模拟信号的A/D高速转换;二是变换后数据的高速存储及提取。对于第一个问题,由于制造ADC的技术不断进步,这个问题已经得到解决。而对于第二个问题,一般的数据采集系统是将A/D转换后的数据先存储在外部数据存储器中,然后再对其进行处理。对于高速数据采集而言,这种方式将严重影响采集速度,且存储值也会受到很大限制。而改进方案是将A/D转换后的数据直接送至计算机内存,这样,采集速度将大大提高,而且可存储大量数据,以便于下一步的处理。

为了解决同步问题,可以由CPLD产生同步时钟信号提供给ADC和FX2。在本数据采集系统的设计中,CPLD同时还可用于产生不同的控制信号,以便对采样进行实时控制。CPLD是复杂可编程逻辑器件,它包括可编程逻辑宏单元、可编程I/O单元和可编程内部连线。由于CPLD的内部资源丰富,因而可广泛应用在数据采集、自动控制、通讯等各个领域。在本系统的设计中,笔者选用的CPLD是Lattice公司的ispLSI1016。图2所示是其整个USB接口卡的硬件电路图。

3 系统软件设计

该系统软件主要包括USB设备驱动程序、设备固件和应用程序。

3.1 设备固件(Firmware)设计

设备固件是设备运行的核心,可采用汇编语言或C语言设计。其主要功能是控制CY7C68013接收并处理USB驱动程序的请求(如请求设备描述符、请求或设置设备状态,请求或设置设备接口等USB2.0标准请求)、控制芯片CY7C68013接收应用程序的控制指令、控制A/D模块的数据采集、通过CY7C68013缓存数据并实时上传至PC等。

即使外部逻辑或内置的普通可编程接口(GPIF)在没有CPU的任何干涉下能够通过四个大的端点FIFO来处理高速宽带数据,固件还是有如下固定的工作:

●配置端点;

●通过控制端点零来响应主机请求;

●控制和监测GPIF的活动;

●利用USART处理所有的特殊请求任务,如计时器、中断、I/O引脚等。

3.2 USB设备驱动程序开发

USB系统驱动程序采用分层结构模型?分别为较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线驱动程序模块(USBD)和较低级的主控制器驱动程序模块(HCD)。

在上述USB分层模块中,USB函数层(USBD及HCD)由Windows提供,负责管理USB设备驱动程序和USB控制器之间的通信;加载及卸载USB驱动程序;与USB设备通用端点(endpoint)建立通信并执行设备配置、数据与USB协议框架和打包格式的双向转换任务。目前?Windows提供有多种USB设备驱动程序,但并不针对实时数据采集设备,因此需采用DDK开发工具来设计专用的USB设备驱动程序。该设备驱动程序应由初始化模块、即插即用管理模块、电源管理模块以及I/O功能等四个模块来实现。

初始化模块可提供一个DriverEntry入口点以执行大量的初始化函数。

即插即用管理模块用来实现USB设备的热插拔及动态配置。当硬件检测到USB设备接入时,Windows查找相应的驱动程序,并调用它的DriverEn-try例程,同时告诉它添加了一个设备;然后,驱动程序为USB设备建立一个FDO(功能设备对象)。在此处理过程中,驱动程序收到一个IRP MN START DE-VICE 的IRP,在它之中包括有设备的资源信息。至此,设备被正确配置,驱动程序开始与硬件进行对话。当然,在设备运行过程中,如果设备状态发生变化(拔除、暂停等),PnP管理器也同样发出相应的IRP,以便由驱动程序进行相应的处理。

电源管理模块负责设备的挂起与唤醒。

I/O功能实现模块可完成I/O请求的大部分工作。当应用程序提出I/O请求时,它将调用Win32 API函数DeviceIoControl向设备发出命令,然后由I/O管理器构造一个IRP并设置其MajorFunction.域为IRP MJ DEVICE CONTROL。在USB设备驱动程序收到该IRP后?它将取出其中的控制码?并利用一个开关语句查找对应的程序入口。

3.3 应用程序设计

应用程序设计由两个部分组成:动态链接库和应用程序。动态链接库负责与内核态的USB功能驱动程序通信并接收应用程序的各种操作请求,而应用程序则负责对所采集的数据进行实时显示、分析和存盘。

动态链接库的工作原理如下:当它收到应用程序开始采样的请求后,首先创建两个线程:采样线程和显

示存盘线程。采样线程负责将采样数据写到应用程序提交的内存;而显示存盘线程则负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并显示和存盘。要注意的是:采样线程和显示存盘线程在读写应用程序提交内存时要保持同步。

PC机或工控机应用程序是数据实时采集系统的中心?可采用Labview编程。它是当今国际上唯一的编译型图形化编程语言,其特点如下:

(1) 能完成对固体表面速度的实时测量;

(2)主介面与多重窗口结合?可完成数据连续采集、实时统计分析、系统参数设置、信号波形显示、被测参数输出等综合系统功能。

(3)能充分利用Labview开发平台和WINDOWS视窗所提供的良好操作环境?集曲线、图形、数据于一体?可准确描述过程参数的变化。

图3所示是用高速数据采集系统采集通过Lab-view显示的一个波形实例,其输入信号是一个频率为5MHz的正弦波。

4 结束语

随着电子计算机的广泛应用,社会的数字化程度越来越高,数据采集也越来越重要,本系统是一种通用的高速数据采集系统,可用于生物电波、电子学频谱、声波分析等瞬态信号的实时采集和观察等场合。其中基于USB总线的高速数据采集系统具有可靠性高、数据不丢失、抗干扰性强、便于数据传输和处理等优点,因而具有良好的应用前景和很大的实用价值。

篇3:钻探参数数据智能采集系统的研制

钻探参数数据智能采集系统的研制

详细介绍了最新研制成功的`智能钻探测控数据采集系统的设计原则、技术特点、结构、参数设置方法以及测试应用情况.

作 者:丁景祥 丁健 DING Jing-xiang DING Jian  作者单位:丁景祥,DING Jing-xiang(煤炭科学研究总院西安研究院,陕西,西安,710054)

丁健,DING Jian(明大网络测控公司,陕西,西安,710048)

刊 名:探矿工程-岩土钻掘工程  ISTIC英文刊名:EXPLORATION ENGINEERING(ROCK & SOIL DRILLING AND TUNNELING) 年,卷(期): 35(1) 分类号:P634.3 关键词:钻探参数   数据采集   测试控制   智能  

篇4:基于USB2.0总线的高速数据采集系统设计

基于USB2.0总线的高速数据采集系统设计

摘要:本文主要介绍支持USB2.0高速传输的EZ-USB FX2单片机CY7C68013,并详细说明用此芯片实现高速数据采集系统和相应的Windows驱动程序及底层固件程序的开发过程。

关键词:CY7C68013  USB2.0  数据采集  固件

1    引言

现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:安装麻烦、价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的缺陷。

2    硬件设计

2.1支持USB2.0高速传输的CY7C68013

Cypress Semiconductor公司的EZ-USB FX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得外围设备和主机通过CY7C68013可以无缝的、高速的.传输数据。为了实现高速的数据传输,CY7C68013CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。图1和图2说明了主机IN和OUT数据传输过程。

2.1.1 端点缓冲区

FX2包含3个64字节端点缓冲区和4K可配置成不同方式的缓冲,其中3

个64字节的缓冲区为EP0、EP1IN和EP1OUT。EP0作为控制端点用,它是一个双向端点,既可为IN也可为OUT。当需要控制传输数据时,FX2固件读写EP0缓冲区,但是8个

SETUP字节数据不会出现在这64字节EP0端点缓冲区中。EP1IN和EP1OUT使用独立的64字节缓冲区,FX2固件可配置这些端点为BULK、INTERRUPT或ISOCHRONOUS传输方式,这两个端点和EP0

一样只能被固件访问。这一点与大端点缓冲区EP2、EP4、EP6和EP8不同,这四个端点缓冲区主要用来和片上或片外进行高带宽数据传输而无需固件的参与。EP2、EP4、EP6和EP8是高带宽、大缓冲区。它们可被配置成不同的方式来适应带宽的需求。

2.1.2 接口信号

在利用GPIF进行高速数据传输系统设计时,GPIF waveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。此时CPU的作用已经非常小了,它只起着下载代码到内部RAM以及在固件中如何触发GPIF waveforms的作用。FX2专门为GPIF提供了外围接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。

IFCLK(双向时钟信号):IFCLK是一个参考时钟,可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为

30MHz或48MHz;当配置为输入时,时钟范围为5-48MHz。

GPIFADR[8:0](输出):GPIF使用GPIFADR信号为外部设备提供地址线,在总线上地址值是自增的。

FD[15:0](双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当16位时,FD[7:0]代表端点FIFO

中的第一个字节,FD[15:8]代表第二个字节。

CTL[5:0](输出):FX2为外部设备提供了几个控制信号,如读写选通、使能等。

RDY[5:0](输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。

GSTATE[2:0](输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。

2.2   AD9238

AD9238是一个双通道的12位

A/D转换器,采用单3V供电,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS时,功耗为180mW,40MSPS时,功耗为330mW,65MSPS时,功耗为600mW;具有500MHz 3dB带宽的差分输入;片上参考源及SHA;灵活的模拟输入范围:1Vp-p~2Vp-p;适用于:超声波设备,射频通讯,电池电源仪器,低价示波器等。本系统采用20MSPS的AD9238,可充分发挥USB在高速传输模式下的数据传输优势。

2.3   数据采集系统

该数据采集系统整个框图如图3所示,该系统由以下几部份组成:USB控制器、FIFO、CPLD、AD9238以及数据采集前端电路。

图3 数据采集系统框图

CPLD主要是控制时序,时钟分频等。FIFO主要是起着高速数据缓冲作用,当FIFO半满时,数据开始向USB主机发送。我们采用的是同步FIFO,时钟信号接IFCLK,当FIFO的/RD信号和/OE信号有效时,每个IFCLK上升沿就输出一个数据;当FIFO的/WR信号有效时,IFCLK上升沿就读进一个数据。AD9238的20MHz时钟信号是通过CPLD分频所得。当程序使能AD9238的/OEB_A和/OEB_B信号时,AD9238双通道开始进行数据采集并向FIFO写数据。

系统前端的调理电路采用的是AD公司的AD8138,该放大器具有较宽的模拟带宽(320MHz,-3dB,增益1),而且可以实现将单端输入变成差分输出的功能。此项功能在现代高速模数变换电路中非常有用,因为几乎所有的高速A/D芯片都要求模拟信号为差分输入,虽然部分芯片的手册中提到对于单端输入信号也可使用,但这样一来会使A/D转换结果的二次谐波增大,降低信噪比(SNR)。AD8138很好的解决了这个问题,用户可以很容易的将单端信号转换成差分输出而不必使用变压器,并且它的输入阻抗高达6MΩ,可以直接与输入信号相连而省略隔离放大器,大大精简了电路结构。图4为AD8138的典型应用电路。

图4  AD8138典型应用电路

3

; 软件设计

3.1 Windows驱动程序设计

USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。

Cypress公司提供了完整的CY7C68013驱动程序源码、控制面板程序及固件的框架,这大大提高了用户开发的进度。用户只需稍加修改或不需任何修改即可使用所带驱动程序,软件开发者大量的时间主要集中在应用程序和固件的开发。本文所述的数据采集系统驱动程序就在原来的基础上进行了简单的修改来满足我们的需要。根据我们自己的需求,一般只需修改DeviceIoControl例程,如我们主要增加了控制数据传输函数、启动和停止AD、复位FIFO等,即IOCTL_START_AD、IOCTL_STOP_AD、IOCTL_RESET_FIFO。

3.2 底层固件设计

要实现USB2.0的高带宽数据传输,必须使用它特有的GPIF特性,在开发固件前,首先必须根据实际需要对GPIF waveform进行编辑。CY7C68013开发工具中带有一个GPIF Designer,如图5所示,编辑完waveform后,选择Tools->Export to GPIF.c File来输出GPIF.c文件,然后将该文件加入keil c工程进行编译。

由于CY7C68013的EP2、EP4、EP6、EP8四个端点共享4K FIFO缓冲区,所以在该系统中,我们将EP2配置成4K的缓冲区,并设置为IN。用EP1OUT作为AD的控制参数传递,如启动和停止AD数据输出、复位FIFO等。在固件程序中,最重要的就是TD_Init和TD_Poll()两个函数。

图5 GPIF Designer

在TD_Init()中主要完成GPIF相应寄存器的初始化,如下:

void TD_Init(void)             // Called once at startup

{

// set the CPU clock to 48MHz

CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);

SYNCDELAY;

EP2CFG = 0XE8;     // EP2IN, bulk, size 1024, 4x buffered

SYNCDELAY;

EP4CFG = 0x00;     // EP4 not valid

SYNCDELAY;

EP6CFG = 0x00;     // EP6 not valid

SYNCDELAY;

EP8CFG = 0x00;     // EP8 not valid

SYNCDELAY;

FIFORESET = 0x80;  // set NAKALL bit to NAK all transfers from host

SYNCDELAY;

FIFORESET = 0x02;  // reset EP2 FIFO

SYNCDELAY;

FIFORESET = 0x00;  // clear NAKALL bit to resume normal operation

SYNCDELAY;

EP2FIFOCFG = 0x01; // allow core to see zero to one transition of auto out bit

&

nbsp;SYNCDELAY;

EP2FIFOCFG = 0x11; // auto out mode, disable PKTEND zero length send, word ops

SYNCDELAY;

EP6FIFOCFG = 0x09; // auto in mode, disable PKTEND zero length send, word ops

SYNCDELAY;

GpifInit ; // initialize GPIF registers

SYNCDELAY;

EP2GPIFFLGSEL = 0x02; // For EP2IN, GPIF uses FF flag

SYNCDELAY;

// global flowstate register initializations

FLOWLOGIC = FlowStates[19];      // 0011 0110b - LFUNC[1:0] = 00 (A AND B), //TERMA/B[2:0]=110 (FIFO Flag)

SYNCDELAY;

FLOWSTB = FlowStates[23];        // 0000 0100b - MSTB[2:0] = 100 (CTL4), not //used as strobe

SYNCDELAY;

GPIFHOLDAMOUNT = FlowStates[26]; // hold data for one half clock (10ns) assuming //48MHz IFCLK

SYNCDELAY;

FLOWSTBEDGE = FlowStates[24];    // move data on both edges of clock

SYNCDELAY;

FLOWSTBHPERIOD = FlowStates[25]; // 20.83ns half period

SYNCDELAY;

// reset the external FIFO

OEA |= 0x07;     // turn on PA0、 PA1、 PA2 as output pin

IOA |= 0x07;     // pull PA0、 PA1、 PA2 high initially

IOA &= 0xFB;     // bring PA2 low

EZUSB_Delay (1); // keep PA2 low for ~1ms, more than enough time

IOA |= 0x04;     // bring PA2 high and exit reset

IOA &= 0xFC;     // bring PA0、 PA1 low and enable AD

}

在TD_Poll()中主要完成外部FIFO状态的检测和数据的传输,主要程序部分如下:

void TD_Poll(void)

{

if ( GPIFTRIG & 0x80 )                  // if GPIF interface IDLE

篇5:基于USB2.0的高速同步数据采集系统设计

基于USB2.0的高速同步数据采集系统设计

摘要:介绍基于USB2.0协议、最多可四路同步采样的高速同步数据采集系统。其单通道采样速度620ksps,四通道同时采样速度可达180ksps。USB接口控制及通信芯片采用Cypress公司FX2系列中的CY7C68013,通过对其可编程接口控制逻辑的合理设计和芯片内部FIFO的有效运用,实现了数据的高速连续采样。

关键词:USB2.0协议同步数据采集CY7C68013可编程控制接口FIFO

USB(UniversalSerialBus)总线是INTEL、NEC、MICROSOFT、IBM等公司联合提出的一种新的串行总线接口规范。为了适应高速传输的需要,2000年4月,这些公司在原1.1协议的基础上制订了USB2.0传输协议,已超过了目前IEEE1394接口400Mbps的传输速度,达到了480Mbps。USB总线使用简单,支持即插即用PnP(PlugAndPlay),一台主机可串连127个USB设备。设备与主机之间通过轻便、柔性好的USB线缆连接,最长可达5m,使设备具有移动性,可自由挂接在具有USB接口的运行在Windows98/NT平台的PC机上。USB总线已被越来越多的标准外设和用户自定义外设所使用,如鼠标、键盘、扫描仪、音箱等。

笔者结合设备检测中数据采集的实际需要,设计了该高速同步数据采集系统。该系统最多可四路同步采样,单通道采样速度可达620ksps,四通道同时采样速度可达180ksps。USB接口控制芯片采用Cypress公司FX2系列中的CY7C68013,通过对其可编程接口控制逻辑的合理设计和芯片内部FIFO的有效运用,实现了数据的高速连续采样和传输。

1基本原理

该采集系统总体框架分三部分:主机(能支持USB2.0协议的PC机)、内部包含CPU及高速缓存的USB接口控制芯片(CY7C68013)和高速同步采样芯片(MAX115),如图1所示。其数据传输分两部分:控制信号传输和采集数据传输。控制信号方向为由主机到外设,由外设CPU控制,数据量较小;采集到的数据由外设到主机,数据量较大。为了保证较高的传输速度,不经过CPU。系统基本操作过程为:主机给外设一个采样控制信号,FX2根据该信号向A/D转换器送出相应控制信号,即采样模式控制字;之后由A/D转换器自主控制转换,并将各通道采样数据存入其片内缓存。一旦转换完成,由A/D的完成位向FX2的可编程控制接口发读采样结果信号;然后由可编程接口的控制逻辑依次将各通道采样结果从A/D的缓存读入FX2的内部FIFO。当FIFO容量达到指定程度后,自动将数据打包传送给USB总线。期间所有操作不需要CPU的干预。采样过程中接口控制逻辑依次取走批量数据,在打包传送时A/D仍持续转换,内部FIFO也持续写入转换结果。只要内部FIFO写指针和读指针位置相差达到指定的值就立即取走数据。从而保证了同步连续高速采集的可靠性。

2硬件部分

2.1芯片介绍

CY7C68013属于Cypress公司的FX2系列产品,它提供了对USB2.0的完整解决方案。该芯片包括带8KB片内RAM的高速CPU、16位并行地址总线+8位数据总线、I2C总线、4KBFIFO存储器以及通用可编程接口(GPIF)、串行接口引擎(SIE)和USB2.0收发器。在代码的编写上,与8051系列单片机兼容,且速度是标准8051的3~5倍。

CY7C68013与外设有两种接口方式:可编程接口GPIF和SlaveFIFOs。

可编程接口GPIF是主机方式,可以由软件设置读写控制波形,灵活性很大,几乎可以对任何8/16bit接口的控制器、存储器和总线进行数据的主动读写,使用非常灵活。SlaveFIFOs方式是从机方式,外部控制器可象对普通FIFO一样对FX2的多层缓冲FIFO进行读写。FX2的SlaveFIFOs工作方式可设为同步或异步;工作时钟为内部产生或外部输入可选;其它控制信号也可灵活地设置为高有效或低有效。笔者在设计中采用主机方式。

MAX115是美信公司的高速多通道同步采样芯片。含有两组4路同步通道,共8个输入端。采样精度为12位,采样模式由采样控制字决定,可灵活地在两组中的1~4个通道间选择。采样时,各通道转换结果先存入其内部相对应的4个12bit存储单元,各通道都转换完后再一起取走。

2.2电路原理及设计

考虑CY7C68013与MAX115接口时,采样模式不同,控制波形有所差别,笔者选择主机方式即可编程控制接口(GPIF)。

GPIF是FX2端点FIFO的内部控制器。在这种方式下,接口内核可产生6个控制输出端(CTL0~CTL5)和9根线的地址(GADR[8:0])输出,同时可以接收6个外部输入(RDY0~RDY5)和2个内部输入。FX2有4个波形描述符控制各个状态。这些波形描述符可以动态地配置给任何一个端点FIFO。例如,

一个波形描述符可以配置为写FIFO,而另一个配置为读FIFO。FX2的固件程序可以把这些描述符配置给四个FIFO中的`任意一个,配置后,GPIF将依据波形描述符产生相应的控制逻辑和握手信号给外界接口,满足向FIFO读写数据的需要。GPIF的数据总线既可以是单字节宽(8位FD[7:0])也可以是双字节宽(16位FD[15:0])。每个波形描述符包含了S0~S6七个有效状态和一个空闲状态。在每个有效状态对应的时间段里,经过预先设置,GPIF可以做以下几件事情:(1)驱动(使为高或低)或悬浮6个输出控制端;(2)采样或驱动FIFO的数据总线;(3)增加GPIF地址总线的值;(4)增加指向当前FIFO指针的值;(5)启动GPFIWF(波形描述符)中断。除此之外,在每个状态,GPIF可以对以下几个信号中任意两个进行采样,它们是:(1)RDYX输入端;(2)FIFO状态标志位;(3)内部RDY标志位;(4)传输计数中止标志位。把其中两个信号相与、相或或者相异或,根据结果跳转到其它任意一个状态或延迟1~256个IFCLK时钟周期。当然也可以根据输入端的信号进行跳转或延迟。GPIF波形描述符通常用Cepress公司的GPIF工具(GPIFTOOL)进行配置。它是一个可运行于Windows平台的应用程序,与FX2的开发包一起发布。

在这种方式下,所有的读写及控制逻辑通过CY7C68013的GPIF以软件编程的方式实现,且控制逻辑的变换方便灵活(只需要改变接口的一个配置寄存器的值)。电路连接如图2所示。

本数据采集系统只用到了两个输出控制CTL0、CTL1和一个外部输入RDY0,它们分别接MAX115的CONVST#、WR#和INT#。数据总线用双字节,其中FD0~FD11接MAX115的数据输入端D0~D11,FD12和FD13接控制字输入端的A2和A3,FD0和FD1复用做控制字输入端的A0和A1。MAX115的采样基准时钟由FX2的输出时钟经三分频得到,为16MHz。对应四种数据传输方式(八种不同的采样模式),GPIF的控制及握手信号波形有所不同。四通道同步采样的时序图如图3所示。

在第一个判决点,若采样数据已准备就绪,MAX115传给GPIF一个负脉冲信号RDY0;根据此信号,波形按顺序转入2、3、4、5状态,使指向内部FIFO的指针在每个时钟上升沿加1,依次读取四个数据,取完数据后利用CTL0的上升沿启动下一次采样。若在状态1时没有出现负脉冲,则直接跳转到状态6,之后重复执行此波形描述符。

三通道同步采样时,读取数据的状态只需要持续三次。其它采样模式控制波形的设计依此类推。

2.3固件程序设计

固件程序是指运行在设备CPU中的程序。只有在该程序运行时,外设才能称之为具有给定功能的外部设备。固件程序负责初始化各硬件单元,重新配置设备及A/D采样控制。固件代码的存储位置有三种:第一种是存在主机中,设备加电后由驱动程序把固件下载到片内RAM后执行,即“重新枚举”;第二种方法是把固件代码固化到一片EEPROM中,外设加电后由FX2通过I2C总线下载到片内RAM后自动执行;最后一种方法是把程序固化到一片ROM中,使之充当外部程序存储器,连在FX2三总线上。笔者选用第一种方式,这种方式便于系统的调试和升级。固件程序框图如图4所示。

3用户程序和驱动程序

3.1驱动程序的编写

该系统需要两个驱动程序,即通用驱动和下载固件的驱动。通用驱动完成与外设和用户程序的通信及控制;而下载固件的驱动则只负责在外设连接USB总线后把特定的固件程序下载到FX2的RAM中,使FX2的CPU重启,模拟断开与USB总线的连接,完成对外设的重新设置。主机根据新的设置安装通用驱动程序,重新枚举外设为一个新的USB设备。

通用驱动程序一般不需要重新编写,用Cypress公司已经编好的驱动ezusb.sys;而下载固件的驱动则必须定做,其详细操作过程见参考文献[2]。

3.2用户程序的编写

用户程序是系统与用户的接口,它通过通用驱动程序完成对外设的控制和通信。在编写用户程序时,首先要建立与外设的连接,然后才能实施数据的传输。启动采样后,为了保证不丢失数据,用户程序应该建立一个新的工作线程专门获取外设传来的数据。程序中主要用到两个API函数:CreateFile()和DeviceIoControl()。CreateFile()取得设备句柄后,DeviceIoControl()根据该句柄完成数据传输。程序代码简要如下:

hDevice=CreateFile(″\\\\.\\EZUSB-0″)

GENERIC_READ|GENERIC_WRITE,

FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

F

ILE_ATTRIBUTE_NORMAL,

NULL);

If(hDevice==INVALID_HANDLE_VALUE)

{

Application->MessageBoxA(“无法创建设备,请确认设备是否连上!”,NULL,IDOK);

}

else

{

DeviceIoControl(

hDevice,

IOCTL_EZUSB_BULK_WRITE,

&blkctl,

sizeof(BULK_TRANSFER_CONTROL),

&inBuffer,//定义的数据缓冲区

sizeof(inBuffer),

&nBytes,

NULL);

……

}

程序框图如图5所示。

在该高速同步数据采集系统的设计中,CY7C68013芯片灵活的接口和可编程特性简化了外部硬件的设计,提高了系统的可靠性,也利于PCB板的制作与调试。另外,USB设备的可热插拔特性使得该系统具有便携式的特点,使用方便,无需关机重启或打开机箱进行安装。该数据采集系统已成功地应用于某型雷达的便携式故障检测与维修系统,取得了良好的效果。

地震智能数据采集系统

基于VXI总线的高速风洞脉动压力测试与分析系统

小功率电弧等离子体发动机实验数据采集系统

循环水系统应急事故预案

低轼耗数据采集系统的USB接口设计

数字化城市管理系统的采集和建库分析论文

轴流式压气机参数采集系统的设计与实现

基于移动GIS的数字城管数据采集系统架构与实现

职场正能量励志小故事:一杯水的压力

PCI-8361BN数据采集卡在光纤电容液滴分析系统中的应用

水击压力高速采集系统研制(精选5篇)

欢迎下载DOC格式的水击压力高速采集系统研制,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

热门推荐

HOT

猜你喜欢

NEW
点击下载本文文档