高速数据范文10篇

时间:2023-03-14 13:05:42

高速数据

高速数据范文篇1

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

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

通用串行总线(UniversalSerialBus,简称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-USBFX2是一种USB2.0集成微控制器。它的内部集成了USB2.0收发器、串行接口引擎(SIE)、增强的8051微控制器和一个可编程的串行接口。其主要特性如下:

带有加强的8051内核性能,可达到标准8051的5~10倍,且与标准8051的指令完全兼容;集成度高,芯片内部集成有微处理器、RAM、SIE(串行接口引擎)等多个功能模块,从而减少了多个芯片接口部分需要时序配合的麻烦;采用软配置,在外设未通过USB接口接到PC机之前,外设上的固件存储在PC上;而一旦外设连接到PC机上,PC则先询问外设是“谁”(即读设备描述符),然后将该外设的固件下载到芯片的RAM中,这个过程叫做再枚举。这样,在开发过程中,当固件需要修改时,可以先在PC机上修改好,然后再下载到芯片中;具有易用的软件开发工具,该芯片开发系统的驱动程序和固件的开发和调试相互独立,可加快开发的速度。

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.2USB设备驱动程序开发

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(功能设备对象)。在此处理过程中,驱动程序收到一个IRPMNSTARTDE-VICE的IRP,在它之中包括有设备的资源信息。至此,设备被正确配置,驱动程序开始与硬件进行对话。当然,在设备运行过程中,如果设备状态发生变化(拔除、暂停等),PnP管理器也同样发出相应的IRP,以便由驱动程序进行相应的处理。

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

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

3.3应用程序设计

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

动态链接库的工作原理如下:当它收到应用程序开始采样的请求后,首先创建两个线程:采样线程和显示存盘线程。采样线程负责将采样数据写到应用程序提交的内存;而显示存盘线程则负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并显示和存盘。要注意的是:采样线程和显示存盘线程在读写应用程序提交内存时要保持同步。

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

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

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

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

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

高速数据范文篇2

关键词:高速公路;大数据;运营管理

1前言

在高速公路的运营过程中,主要包括经营、养护成本、赔付以及运营安全及企业绩效这六大子系统。在高速公路的运行过程中,这六大子系统有规律的进行着,这种规律可以产生一定的数据,日积月累构成了一个庞大的数据库,被称为高速公路运营的大数据[1]。

2高速公路中大数据的来源

高速公路中的大数据主要有以下几个来源:①高速公路收费系统(ETC):高速公路上都对应着自己的收费站,使用收费站的收费系统可以查询到所有经过车辆的过路费用及车辆信息,日积月累构成了一个庞大的数据库,这个数据可以精确地定位到车辆在高速公路的位置及费用信息;②应用系统数据:监控及结算中心的清账管理系统、12306人工服务系统、收费站的资金查询软件、过桥过路费用管理计算软件等大量数据可以很好的构成高速公路数据库;③传感器数据[2]:高速公路上的路感线圈、标识站以及收费站出入口的RFID传感器,能够感知过往车辆,为数据库提供有效的数据;④视频监控系统的数据:道路中分带及两侧、收费站出入口的视频监控以及隧道路口可以很好的为数据库提供视频支持。以上的数据根据结构性能不同可以分为两大类,结构化数据及非结构化数据[3],结构化数据主要是高速公路收费系统及其相关应用系统产生的数据,这些数据主要是在关系数据库中生成及保存,如SQLServer和Or-acle。而像监控视频、图片等非结构化的数据并没有存放在关系数据可中。目前,非结构化的数据在高速路网中占比高达80%,传统的数据处理应用软件很难完成相应的任务。

3高速公路中大数据的特点

(1)规模大、样式多[4]:高速公路的管理系统所产生的数据种类较多,有以收费系统产生的数据为主的结构化系统,也有监控设备抓拍的静态车牌图片以及传感器等产生的非结构化系统。除此之外养护巡查、交警管制以及高速公路相关联的其他系统信息,如服务区是否正常使用,收费车辆是否按照规定行驶以及周边便道及交叉口是否通畅等问题,以及天气环境、地质或者人为等灾害获得的原始数据。(2)数据密度价值:数据量非常的庞大,但是没有一个很好的规划,这些数据都是没有用的[5]。例如,高速公路监控中心能够在每天,每个小时产生大量的数据及监控视频,一旦发生交通事故及以外灾害,数据只能够显示几秒钟甚至更少的问题,不能够很好的表达当时发生的问题。因此,数据的异常检测应该是路网检测的重点。(3)高效性及高速性:高速公路数据处理必须要做到及时高效,因为事故往往也是发生的时间短,速度快。例如,如果某路段发生交通拥堵,收费站的收费数据要快速到达监控结算中心进行信息处理,系统要及时获得车辆数量等信息,如果时间较长可能会出现人员伤亡等情况[6]。报表生成这种简单的操作并不能够成为大数据分析的主体,传统的数据库技术和各种BI工具可以不重要的数据丢弃,并建立数据集市能对数据进行分析[7],OLAP在目前的软件系统中已经不能够满足数据库的需求,再者数据库具有“面向主题”[8]的特性,这种特性决定了数据库必须是随着时间不断变化的,而这种不稳定的变化难以处理目前多变的环境问题,更不可能在谈及高效和高速等效率特征。

4高速公路运营体系中大数据的应用

4.1在经营系统中的应用。在高速公路经营过程中,主要有收费管理数据、监控中心的视频、照片以及其他与公路相关的运营等数据。这些数据的收集及整理能够分析预测高速公路的经管能力,通过对通行费用、车辆量大小及道路通行状况的分析预测,能够提醒在路上的司机注意避让高峰路段或者选择其他高速绕行方案。再者,在经管中运用大数据还能实现高速公路路段的精准营销。4.2在养护子系统中的应用。在养护管理方面,高速公路也离不开大数据的技术支持。建立智能化的养护数据系统是当前高速公路养护的重点工作,实现高速公路健康状况的实时监测,能够对养护效果起到重点作用。其主要分为以下两个方面:①建立数字化养护安全管理平台。通过GPS、遥感、无人机设备等信息技术的应用,建立原始数据库,并结合计算机语言生成数据库系统,系统能够综合分析道路桥梁的主体结构、附属结构、结构物使用情况、相关设计内容说明、施工资料以及养护管理人员的资料等情况。通过数据能够对结构物目前状况快速分析,一旦有结构物出现损坏,系统能够第一时间通知相应的养护管理人员进行维修和保养;②可以对高速公路实现全寿命周期养护计划。高速公路受环境、车辆等外部因素的影响,使用寿命也有所减弱,通过大数据的应用,能够对这些外部因素进行相应的分析,从而预测高速公路的损坏情况及使用寿命,有助于养护管理人员及时对相应结构物进行实时监控、制定计划并实施维修。4.3在维权子系统中的应用。在维权子系统中的应用主要分两点:①对偷逃通行费用的行为进行识别;②对超载超速车辆的情况进行处理。对偷税漏税的个人及其单位可以建立数据库系统,并运用相应的稽查系统,通过定期的收费数据筛查相应车辆的收费运行记录,对存在或者疑似存在问题的车辆进行标识并上报核实情况,从而提醒有关单位及部门针对这些车辆的实时监控及记录。超载超速车辆可以通过与交警系统共享数据,建立一套完整的超载超速行驶的黑名单系统对其进行控制。4.4在安全管理子系统中的应用。首先,高速公路通行率的提高可以有效降低行驶车辆事故的发生。通过大数据中高速公路的道路状况、车流量、天气状况等信息,给予司机师傅相应提示,可以降低安全事故的发生率;还可以通过车流量、车辆类型等信息对道路引流、车辆分离采取措施,降低道路拥堵,提高通行率。其次,提高高速公路运营处理应急事件的能力水平。通过建立应急预案指挥调度平台,实现对高速公路实时应急处理,在发生事故的第一时间通过平台告知行驶在路上的驾驶员选择避让,并提醒道路救援人员迅速到达事故发生地点,对其进行抢救和现场指挥调度。4.5在运管成本子系统中的应用。高速公路在运营管理中对运营成本进行控制的时候,主要采取以目标成本管理法为主的控制措施:①根据高速公路的经营管理目标,制定相应的成本目标值,对运管成本数据分析的同时采取不同手段对目标进行控制。这种成本控制方法最后还是要根据事后进行核算实际的运营成本;②提高数据采集效率。建立自动化数据分析系统,该系统上可以产生所有的运营业务成本信息、文件流转、流程审批、数据共享和绩效考核,这些复杂的数据信息为成本分析和改进提供了有效证据。

5高速公路大数据应用展望

高速公路大数据的应用对我国高速公路养护及维修都是一大趋势,目前实时分析及数据处理问题还没有一个系统的方式方法。因此,提出以下意见建议供参考:①应建立养护大数据库;②需要打破技术矛盾的制约,不断提高和完善大数据系统的耦合度,相互制约并相互关联,从而使得数据的处理效率能有所提升;③加强培养专门的大数据工程师。行业内也应鼓励优秀的数据系统集成商,和养护及维修结合,开发出效率更高、更全面的大数据养护管理系统。加强培养更专业的大数据处理技术工程师,实现大数据在高速公路运营管理体系中的应用。

参考文献

[1]王艳侨.浅谈基于全寿命周期和大数据理念的高速公路养护管理系统[J].通讯世界,2015(6):15-16.

[2]覃雄派,王会举,杜小勇,王珊.大数据分析———RDBMS与MapReduce的竞争与共生.软件学报,2011(9):32-45.

[3]宋亚奇,周国亮,朱永利.智能电网大数据处理技术现状与挑战.电网技术,2013(4):927-935.

[4]GrobelnikM.Big-datacomputing:Creatingrevolutionarybreakthroughsincommercescienceandsociety.

[5]孟小峰,慈祥.大数据管理:概念、技术与挑战.计算机研究与发展,2013(1):146-169.

[6]窦万春,江澄.大数据应用的技术体系及潜在问题.中兴通讯技术,2013(4).

[7]王珊,王会举,覃雄派,周烜.架构大数据:挑战、现状与展望.计算机学报,2011(10):1741-1752.

高速数据范文篇3

关键词:USB2.0CY7C68013DSP高速数据采集

随着数字信号处理理论和计算机的不断发展,现代工业生产和科学技术研究都需要借助于数字处理方法。进行数字处理的先决条件是将所研究的对象进行数字化,因此数据采集与处理技术日益得到重视。在图像处理、瞬态信号检测、软件无线电等一些领域,更是要求高速度、高精度、高实时性的数据采集与处理技术。现在的高速数据采集处理卡一般采用高性能数字信号处理器(DSP)和高速总线技术的框架结构。DSP用于完成计算量巨大的实时处理算法,高速总线技术则完成处理结果或者采样数据的快速传输。DSP主要采用TI或者ADI公司的产品,高速总线可以采用ISA、PCI、USB等总线技术。目前,使用比较广泛的是PCI总线,虽然其有很多优点,但是存在如下严重缺陷;易受机箱内环境的影响,受计算机插槽数量的地址、中断资源的限制而不可能挂接很多设备等。USB总线由于具有安装方便、高带这、易扩展等优点,其中USB2.0标准有着高达4800bps的传输速率,已经逐渐成为计算机接口的主流。本文介绍一个采用USB2.0接口和高性能DSP的高速数据采集处理系统,主要是为光纤通信中密集波分复用系统的波长检测与调整所设计的,也可以应用于像图像处理、雷达信号处理等相关领域。

1高速数据采集处理系统原理及器件选用

整个高速数据采集处理系统的硬件构成为:高速ADC、高速大容量数据缓冲、高性能DSP和USB2.0接口。系统的原理框图如图1所示。

高性能DSP采用TI公司的TMS320C6000系列定点DSP中的TMS320C6203B;高速ADC采用TI公司的ADS5422,14位采样,最高采样频率为62MHz;PC机接口采用USB2.0,理论最大数据传输速率为480Mbps,器件选用Cypress公司EZ-USBFX2系列中的CY7C68013;数据缓冲采用IDT公司的高速大容量FIFO器件IDT72V2113;程序存储在Flash存储器中,器件选用SST291E010。下面逐一介绍各个器件的主要特性。

(1)TMS320C6203B

TMS320C6203B是美国TI公司高性能数字信号处理器TMS320C6000系列的一种,采用修正的哈佛总线结构,共有1套256位的程序总线、两套32位的程序总线和1套32位的DMA专用总线;内部有8个功能单元可以并行操作,工作频率最大为300MHz,最大处理能力为2400MIPS;内部集成了设备接口,如外部存储器接口(EMIF)、外部扩展总线(XB)、多通道缓冲串口(McBSPs)和主机接口(HPI),与外部存储器、协处理器、主机以及串行设备的连接非常方便。

(2)ADS5422

ADS5422是由美国TI公司生产的高速并行14位模数转换器,其最高采样频率达到62MHz,采样频率为100MHz时,SNR为72dB,SFDR为85dB。模拟信号输入可以是单端输入方式或者差分输入方式,最高输入信号峰峰值为4V,单一5V电源供电。输出数字信号完全兼容3.3V器件,并且提供输入信号满量程标志以及输出数字信号有效标志,从而方便和其它器件的连接。

(3)IDT72V2113

IDT72V2113是由美国IDT公司生产的高速大容量先进先出存储器件(FIFO)。其最高工作频率为133MHz;容量为512KB,可以通过引脚方便地将容量设置成512K×9bit或者256K×18bit两种方式;IDT72V2113可以设置标准工作模式或者FWFT(FirstWordFallThrough)工作模式,并提供全满、半满、全空、将满以及将空等五种标志信号;非常方便进行容量扩展。容量扩展是IDT72V2113的一大特点,扩展方式可分为字长扩展和字深扩展。通过容易扩展可以由多片IDT72V2113形式更大容量的缓冲,并且电路连接简单、可靠。

(4)CY7C68013

CY7C68013是美国Cypress公司推出的USB2.0芯片,是一个全面集成的解决方案,它占用更少的电路板空间,并缩短开发时间。CY7C68013主要结构如下:包括1个8051处理器、1个智能串行接口引擎(SIE)、1个USB收发器、16KB片上RAM(其中包括4KBFIFO)存储器以主1个通用可编程接口(GPIF)。

图3

CY7C68013独特的架构具有如下特点:

①包括1个智能串行的接口引擎(SIE),它执行所有基本的USB功能,将嵌入的MCU解放出来以用于实现其它丰富的功能,以保证持续高速有效的数据传输;

②具有4KB的大容量FIFO用于数据缓冲,当作为从设备时,可采用Synchronous/AsynchronousFIFO接口与主设备(如ASIC,DSP等)连接;当作为主设备时,可通过通用可编程接口(GPIF)形式任意的控制波形来实现与其它从设备连接,能够轻易地兼容绝大多数总线标准,包括ATA、UTOPIA、EPP和PCMCIA等;

③固件软配置,可将需要在CY7C68013上运行的固件,存放在主机上,当USB设备连上主机后,下载到设备上,这样就实现了在不改动硬件的情况下很方便地修改固件;

④能够充分实现USB2.0(2000版)协议,并向下兼容USB1.1。

2高速数据采集处理系统的硬件连接

2.1模拟信号输入电路

ADS5422的模拟信号输入可以采取单端输入方式或者差分输入方式。单端输入方式连接比较简单,但抗噪性能差,所以我们采取差分输入方式,以尽量减少信号噪声以及电磁的干扰,尤其是采用差分输入方式可以将所有偶次谐波通过正反反个输入信号基本上互相抵消。

ADS5422的模拟信号差分输入方式需要同时使用IN和IN引脚,其硬件连接方法如图2所示。图中,首先使用放大器OPA687以及RF变压器将单端信号转换成差分信号,然后输入到ADS5422,其中ADS5422的公共端CM和RF变压器的公共端连接,RF变压器的匝数比应该根据信号确定。为了增强信号的稳定性,在ADS5422每个信号的输入前加上RC低通滤波电路,图2中推荐Rt为50Ω,Rin为22Ω,Cin为10pF,这些元件也可以根据具体的信号进行调整,一般情况下电阻值在10~100Ω之间,电容值在10~200pF之间。

图4

2.2ADS5422与IDT72V2113的连接

虽然ADS5422的供电电压为5V,但其输出的数字信号电平兼容3.3V电平,因此不需要电平转换芯片,只要将ADS5422的数据线与IDT72V2113的数据线相连即可。但是,ADS5422采样和存储采样数据到IDT72V3113中,这两个操作对时序配置要求非常严格,如果两者时序关系配合得不是很好,就会发生数据存储出错或者掉数。如何简单、可靠地实现采样和存储是设计这部分电路的难点。一般的方法是,通过可编程逻辑器件(CPLD或FPGA)来实现ADC与FIFO存储器之间的时序,即由CPLD或FPGA来控制ADC采样和FIFO存储器的写操作。但是,通过仔细查看ADS5422和IDT72V2113的工作时序图,找到了一种简单可靠的实现方法,此方法不需要CPLD或FPGA就可以实现两者的时序配合。

首先分析ADS5422的工作时序图,如图3所示,其中t1为采样时钟上跳沿到输出数据无效之间的时间间隔,即数据保持时间,其大小为3ns。查看IDT72V2113的相关文档可知,对其进行写操作时,数据线的保持时间大于1ns即可满足要求。因此,ADS5422与IDT72V2113之间的时序配合可以采用以下简单的实现方法:ADS5422的采样时钟和IDT72V2113的写时钟采用同一个时钟源,这样,每一个时钟的上跳沿,ADS5422进行模数转换,同时将上个时钟周期内输出的采样数据存储到DT72V2113内部。

2.3C6203B与IDT72V2113的连接

C6203B与IDT72V2113的连接是通过C6203B外部扩展总线(XB)。C6203B的外部扩展总线(XB)宽度为32位,可以实现与同步FIFO无缝连接,可以同时无缝实现四个FIFO写接口或者实现3个FIFO写接口及1个FIFO读接口。通过无缝连接实现FIFO读接口,FIFO必须连接到XCE3上,数据通过DMA方式从IDT72V2113传送到C6203B的片内RAM中,具体连接如图4所示。图4中,4片IDT72V2113经过字长和字深扩展形成2MB的数据输入缓冲,输入数据总线(D0~D15)、输出数据总线(Q0~Q15)、读使能(REN)、读时钟(RCLK)、写使能(WEN)、写时钟(WCLK)和将空标志信号(PAE)是由4片IDT72V2113的相应信号组合形成的;XCE3为外部扩展总线(XB)的空间选择信号,XFCLK为外部扩展总线(XB)的输出时钟,EXT_INT4是C6203B的外部中断信号4,DX0用作通用输出口,控制IDT72V2113的写使能信号。

2.4CY7C68013与C6203B的连接

CY7C68013是一个非常方便的USB2.0实现方案,它提供与DSP或者MCU连接的接口,连接方法有两种:SlaveFIFOs和Master可编程接口GPIF。在本方案中,选用了SlaveFIFOs方式,异步读写。SlaveFIFOs方式是从机方式,DSP可以像读写普通FIFO一样对CY7C68013内部的多层缓冲FIFO进行读写。具体的电路连接如图5所示。FLAGA、FLAGB和FLAGC是CY7C68013内部FIFO的状态标志,C6203B通过通用I/O口来获得FIFO的空、半满(由用户设定半满的阈值)和满等状态信息。C6203B对CY7C68013内部FIFO的选择,以及数据包的提交也是通过通用I/O口来实现。C6203B通过EMIF接口的CE2空间对CY7C68013进行读写操作。工作过程为:DSP通过USB向PC发送数据时,首先查看空、半满和满这三个状态信号,然后向USB写入适当大小的数据,以保证数据不会溢出;PC机通过USB向DSP发送命令字时,USB通过中断方式通知DSP读取命令字。

3USB软件设计

USB接口开发中有相当大的工作量是关于USB软件的开发,USB软件包括三方面的工作:固件(firmware)设计,驱动程序设计和主机端应用程序的设计。

3.1固件设计

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

本方案中的固件设计思路如下:

①使CY7C68013工作于异步从FIFO(AsynchronousSlaveFIFO)模式。相应的寄存器操作为:IFCONFIG=0xCB。

CY7C68013具有多种工作方式,除了可以作为能够产生任意控制波形的主控芯片外,即使作为从设备,也可选择异步还是同步方式。由于DSP的关系,本方案选择异步从方式。

②将4KB的FIFO对应两个端点(EndPoint),即EndPoint2和EndPoint6。相应的寄存器操作为:EP2CFG=0xA0,EP6CFG=0xF2。

EndPoint2与EndPoint6分别对应2KB的内装中FIFO(下文分别称为FIFO2、FIFO6),存放USB需要上传与接收的数据。其中EndPoint2为OUT型,负责从主机接收数据;EndPoint6为IN型,负责向主机发送数据。另外,EndPoint2与EndPoint6均采用批量(BULK)传输方式,这种方式相对于其它USB2.0定义的传输方式具有数据可靠、传输速率高等特点,是最常用的传输方式。

③对FIFO进行配置。相应的寄存器操作为:EP2FIFOCFG=0x11,EP6FIFOCFG=0x0D。

本方案将FIFO2、FIFO6设置成自动方式。这里所谓“自动”,是指在数据的传输过程中,不需要CY7C68013的8051内核参与。如有特殊需要可以设成手动方式,这样8051就可以对数据进行修改,如图6所示。另外还将FIFO配置成16位接口。

④其它操作。为了完善整个USB传输功能,提高固件的健壮性,还必须配以其它设计,这包括FIFO的自动清空复位,个性化命令等功能,在此就不进行详细讨论了。

3.2驱动程序设计

USB系统驱动程序采用分层结构模型,分别为较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线驱动程序模块(USBD)和较低级的主控制器驱动程序模块(HCD)。在上述USB分层模块中,USB函数层(USBD及HCD)由Windows提供,负责管理USB设备驱动程序和USB控制器之间的通信;加载及卸载USB驱动程序;与USB设备通用端点(EndPoint)建立通信并执行设备配置、数据与USB协议框架和打包格式的双向转换任务。目前Windows提供有多种USB设备驱动程序,但并不针对实时数据采集设备,因此USB设备驱动程序需由开发者自己编写。

开发USB设备驱动程序,可采用Numega公司的开发包DriverWorks和Microsoft公司的2000DDK,并以VC++6.0作为辅助开发环境。DriverWorks提供的驱动向导,可根据用户的需要,自动生成代码框架,减少了开发的难度,缩短了开发的周期。但是,Cypress公司为了方便用户开发USB接口,在CY7C68013的开发包中提供了一个通用驱动程序,该程序可不加修改,经DDK编译后直接使用。在本设计方案中,采用的就是这个通用驱动程序。

3.3应用程序设计

主机应用程序是主要实现从高速数据采集处理板该取处理后的数据、存储、显示处理结构以及向数据采集处理板发送控制命令。在Windows2000下,我们使用的应用程序开发工具是VC++6.0。

4系统工作原理

上电后,ADS5422一直工作,采样产生的数据是否存储到IDT72V2113中,由C6203B的DX0引脚状态来决定。C6203B进行初始化,外部扩展总线的XCE3设置为同步FIFO读操作模式。DMA通道0配置为每次传输1帧,每帧1024个半字,同步事件设置为外部中断4,触发极性为高电平,初始化定时器0,定时间隔为22ms。当外部同步信号到来时,启动定时器0,手动启动DMA通道0,同时设置DX0为低电平。ADS5422采样产生的数据开始写入IDT72V2113,当定时器0中断到来时,设置DX0为高电平,关闭IDT72V2113的写使能,采样数据不再存储到IDT72V2113内。随着数据不断写入IDT72V2113,当其内部的数据量大于1023个半字时,IDT72V2113的将空标志信号(PAE)由低电平变为高电平,使得C6203B的外部中断信号有效,从而触发DMA传输,C6203B的DMA通道0通过外部扩展总线(XB)读取1024个半字的数据,存储于内部RAM中,传输结束后向C6203B发送中断,通知C6203B处理数据。C6203B处理完数据后,通过USB2.0接口发送处理结果,然后重新启动DMA通道0,进行下一次DMA传输。如此循环,直到处理完所有数据。当下一个外部同步信号到来时,进行下一轮数据采集处理过程。

高速数据范文篇4

关键词:高速DAC;数据广播分发;电路设计

数据广播分发系统能够将卫星提取精确目标信息和定位信息广播传输给覆盖范围内的地面设备,具有覆盖范围广,不受天气影响等优势,在防灾减灾、应急救援等方面发挥重要的作用。传统广播分发设备采用应答机设计思路,采用低中频调制再进行上变频的方案,单机信息处理流程详见图1所示。整个单机信息流程处理较复杂,不利于单机的小型化和轻量化[1]。

1设计方案

为了优化产品的信息流程,图2给出了一种基于高速(Dig-ital-to-AnalogConverter,DAC)的数据广播分发设备的架构,采用软件无线电数字射频化方案,直接实现S频段信号输出。通过FPGA对接收到的完成空帧填充、经RS编码交织、加扰、扩频调制、滤波、QPSK调制、经高速DAC产生S频段射频信号f0,射频信号经滤波、放大隔离后输出。采用该种方案,利用数字调制及高速数模转换技术,直接实现S频段广播分发射频信号,去掉不必要的射频变频处理等流程,从而减轻单机的体积和重量,满足卫星小型化、轻量化的需求编码调制模块是广播分发设备的核心,包括SRAM型FPGA、高速数模转换芯片(DAC)、BALUN、滤波器、温补放大电路、隔离电路,具体如图3所示。编码调制模块FPGA主要完成指令接收处理、时钟生成与监控、数据自发与接收、帧头判断、RS信道编码与星座映射、多速率成型滤波,数字扩频调制、数据输出,高速数模转换芯片将数字调制信号转换为射频调制信号后输出。

2高速DAC选型

高速数模转换(DAC)芯片是将数字信号转换为模拟信号输出,实现数字调制的关键。其基本的原理框图如下图所示,主要由基准电压、比例网络、二进制开关和输出放大器等4部分组成[2]。N位并行输入信号(bN-1,bN-2,....b1,b0)经过数模转换器为模拟输出电压V0,基准电压为Vr,输入信号与输出电压V0关系如下所示:理想的高速DAC随着输入二进制信号的不断变化,模拟输出量也等间距变化,并且精度可以完全无限高,误差为零。由于实际实现的难度比较大,高速DAC不可能达到这种效果。因此在实际选型过程中,通过一些参数来衡量DAC芯片的性能[2]。在实际芯片选型过程中常常根据分辨率、采样率、微分非线性误差(DifferentialNonlinearityError,DNL)、积分非线性误差(IntegralNonlinearityError,INL)、无杂散动态范围(Spour-iousFreeDynamicRange,SFDR)等参数展开。(1)分辨率DAC的分辨率衡量DAC输出信号分辨率的重要参数,也表示器件能处理的数字信号的位数。(2)采样率DAC的采样率是指器件的最大采样频率。(3)增益误差实际DAC芯片输入输出特性曲线与理想器件曲线的斜率是不同的,存在一定的偏差,增益误差就是两者的偏差。(4)微分非线性误差微分非线性误差表示任意两个相邻数字信号之间经DAC转换后输出模拟信号的差值与理想DAC输出信号的差值的差值,单位是LSB[3]。(5)积分非线性误差积分非线性误差是输入的数字信号经实际DAC转换为相应的模拟信号与经理想DAC转换输出信号的差值,单位为LSB[3]。(6)无杂散动态范围实际的DAC器件输出的信号不只包含有用信号,同时包含噪声、谐波失真、互调失真等,通常采用无杂散动态范围(SFDR)来衡量。SFDR表示输出的杂散分量干扰基正常信号或者导致正常信号失真之前可用的动态范围[4-5]。为了实现S频段扩频调制信号的输出,并同时考虑到星载产品应用,硬件实现上采用的是E2V高速DAC芯片EV10DS10130A,器件的转换速率为3Gsps,分辨率为10位,综合了4:1或者2:1的多路转接器,该器件可根据工作的奈奎斯特域(Nyquistzone)具有不同的输出模式—RTZ、NRZ、NRTZ、RF—最高输出带宽可达6GHz,满足直接S频段射频调制信号的输出。该器件主要技术指标见表1所示,其简化功能框图如图5所示。

3原理分析

广播分发数据送入SRAM型FPGA对其进行编码、扩频调制、滤波后输出至高速DAC。FPGA输出数据为载波fL=f0±BW/2的带通信号,其中,载波频率f0=fs/4,BW为输出扩频信号的带宽。根据傅里叶变换可知,带通信号频谱如图6所示。斜网络正频率部分为我们所需要的正常频谱,竖网络负频率部分为表1现象中的翻转频谱,它与原频谱是实数共轭信号关系,两者成对出现,且以0Hz为轴对称关系。高速DAC主要实现带通信号采样定理,完成数字信号到模拟调制信号的转换,假设芯片的采样频率fs,根据采样定理,调制输出模拟信号频谱以fs/2为区间进行等分,这些区域称为奈奎斯特域。由上图,基带信号在0±BW/2处,通过中频调制、数模转换后会将原始信号搬移至fs±BW/2、2fs±BW/2等多处,每个奈奎斯特区域间的信号与相邻区域成镜像翻转关系。因此合理的设置采用率、利用插值和抽取滤波技术,可直接实现S频段调制信号的直接输出。

4详细设计方案

编码调制FPGA是广播分发设备的核心与关键,实现了数据编码、加扰、扩频调制、多速率输出,是实现直接射频输出的基础,其详细数据处理流程如图8所示,主要完成指令接收处理、时钟生成与监控、数据自发与接收、帧头判断、RS信道编码与星座映射、多速率成型滤波,数字扩频调制、数据输出,高速数模转换芯片将数字调制信号转换为射频调制信号后输出。指令接收处理模块主要是接收遥控指令,可根据指令分别实现多种速率的广播分发模式;时钟生成与监控模块在不同工作模式下对时钟进行不同选择,并将所有时钟信号均映射到FPGA的高速布线网络上。数据自发与接收模块是程序内部可根据指令进行外、内部数据源的切换,内部码元使用PN31数据,FPGA接收从加密模块输出的高速数传通道数据流,进行数据采集并切换到内部时钟域;信道编码模块实现数据的交织、RS编码、加扰和卷积编码,扩频通过数据和伪码进行模2和(即异或)实现,I、Q两路数据分别扩频,扩频后的信号串行输出。寄存器A产生m序列m1,寄存器B产生m序列m2,;生成的GOLD码直接与编码、加扰后数据进行异或实现扩频。最后数据经映射、滤波和调制后输出至高速DAC。

5实现验证

采用该种方案,新数据广播分发设备直接减少了射频变频流程,单机由3个子模块组成,本体尺寸为减少为160mm×120mm×80,单机重量仅为1.5Kg。采用数据广播分发数据接收设备对数据进行接收测试,星座图正常,数据锁定正常,解调、解码正常,详细测试图片见图9所示。

参考文献:

[1]赵东亮等.高速数模转换芯片DAC5682在3G数字中频发射机中的应用[J].通信技术,2009(7).

[2]杨鑫波.12位高速DAC关键电路的研究与设计[D].合肥:合肥工业大学,2013.

[3]郑思喆.12位100MSPS高速2DAC设计[D].大连:大连理工大学,2008.

[4]张晋.高速DAC与正交调制器接口电路设计[J].雷达与对抗,2013(12).

高速数据范文篇5

关键词: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,

FILE_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);

……

}

高速数据范文篇6

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

1引言

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

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

2硬件设计

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

CypressSemiconductor公司的EZ-USBFX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(GeneralProgrammableInterface)和主/从端点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进行高速数据传输系统设计时,GPIFwaveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。此时CPU的作用已经非常小了,它只起着下载代码到内部RAM以及在固件中如何触发GPIFwaveforms的作用。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.2AD9238

AD9238是一个双通道的12位A/D转换器,采用单3V供电,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS时,功耗为180mW,40MSPS时,功耗为330mW,65MSPS时,功耗为600mW;具有500MHz3dB带宽的差分输入;片上参考源及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的典型应用电路。

图4AD8138典型应用电路

3软件设计

3.1Windows驱动程序设计

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特性,在开发固件前,首先必须根据实际需要对GPIFwaveform进行编辑。CY7C68013开发工具中带有一个GPIFDesigner,如图5所示,编辑完waveform后,选择Tools->ExporttoGPIF.cFile来输出GPIF.c文件,然后将该文件加入keilc工程进行编译。

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

图5GPIFDesigner

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

voidTD_Init(void)//Calledonceatstartup

{

//settheCPUclockto48MHz

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

SYNCDELAY;

EP2CFG=0XE8;//EP2IN,bulk,size1024,4xbuffered

SYNCDELAY;

EP4CFG=0x00;//EP4notvalid

SYNCDELAY;

EP6CFG=0x00;//EP6notvalid

SYNCDELAY;

EP8CFG=0x00;//EP8notvalid

SYNCDELAY;

FIFORESET=0x80;//setNAKALLbittoNAKalltransfersfromhost

SYNCDELAY;

FIFORESET=0x02;//resetEP2FIFO

SYNCDELAY;

FIFORESET=0x00;//clearNAKALLbittoresumenormaloperation

SYNCDELAY;

EP2FIFOCFG=0x01;//allowcoretoseezerotoonetransitionofautooutbit

SYNCDELAY;

EP2FIFOCFG=0x11;//autooutmode,disablePKTENDzerolengthsend,wordops

SYNCDELAY;

EP6FIFOCFG=0x09;//autoinmode,disablePKTENDzerolengthsend,wordops

SYNCDELAY;

GpifInit();//initializeGPIFregisters

SYNCDELAY;

EP2GPIFFLGSEL=0x02;//ForEP2IN,GPIFusesFFflag

SYNCDELAY;

//globalflowstateregisterinitializations

FLOWLOGIC=FlowStates[19];//00110110b-LFUNC[1:0]=00(AANDB),//TERMA/B[2:0]=110(FIFOFlag)

SYNCDELAY;

FLOWSTB=FlowStates[23];//00000100b-MSTB[2:0]=100(CTL4),not//usedasstrobe

SYNCDELAY;

GPIFHOLDAMOUNT=FlowStates[26];//holddataforonehalfclock(10ns)assuming//48MHzIFCLK

SYNCDELAY;

FLOWSTBEDGE=FlowStates[24];//movedataonbothedgesofclock

SYNCDELAY;

FLOWSTBHPERIOD=FlowStates[25];//20.83nshalfperiod

SYNCDELAY;

//resettheexternalFIFO

OEA|=0x07;;//turnonPA0、PA1、PA2asoutputpin

IOA|=0x07;//pullPA0、PA1、PA2highinitially

IOA&=0xFB;//bringPA2low

EZUSB_Delay(1);//keepPA2lowfor~1ms,morethanenoughtime

IOA|=0x04;//bringPA2highandexitreset

IOA&=0xFC;//bringPA0、PA1lowandenableAD

}

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

voidTD_Poll(void)

{

if(GPIFTRIG&0x80)//ifGPIFinterfaceIDLE

{

if(EXTFIFONOTEMPTY)//ifexternalFIFOisnotempty

{

if(!(EP24FIFOFLGS&0x01))//ifEP2FIFOisnotfull

{

if(enum_high_speed)

{

SYNCDELAY;

GPIFTCB1=0x02;//setuptransactioncount(1024//bytes/2forwordwide->0x0100)

SYNCDELAY;

GPIFTCB0=0x00;

SYNCDELAY;

}

else

{

SYNCDELAY;

GPIFTCB1=0x00;//setuptransactioncount(64bytes/2

//forwordwide->0x20)

SYNCDELAY;

GPIFTCB0=0x20;

SYNCDELAY;

}

Setup_FLOWSTATE_Read();//setupFLOWSTATEregistersfor

//FIFOReadoperation

SYNCDELAY;

GPIFTRIG=GPIFTRIGRD|GPIF_EP2;//launchGPIFFIFOREAD

//TransactiontoEP2FIFO

SYNCDELAY;

while(!(GPIFTRIG&0x80))//pollGPIFTRIG.7GPIFDonebit

{

;

}

SYNCDELAY;

}

}

}

}

高速数据范文篇7

【关键词】USB2.0接口DSP高速数据采集系统

TheAnalysisandDesignThatUSB2.0ConnectstheHigh-speedDataThatandDSPDonstitutetoCollecttheSystem

AbstractThistextmainlyelaboratedthattheUSB2.0connectsthehigh-speeddatathatandDSPconstitutetocollecttheworkprinciple,structureofthesystemtoconstituteanditdesignswiththerealization.Inordertoattaintherequestofdesign,detailedastoit''''sthesystemconstitutedthechoiceofthemachinepieceandtheconjunctionofthehardwarestomaketheelucidation.ThepointintroducedtechniqueofUSBanditssoftwaredesigns.InthissectiondescribesthehostinterfacesnecessarytofacilitateUSBcommunicationbetweenasoftwareclient,residentonthehost,andafunctionimplementedonadevice.Theimplementationdescribedinthischapterisnotrequired.ThisimplementationisprovidedasanexampletoillustratethehostsystembehaviorexpectedbyaUSBdevice.AhostsystemmayprovideadifferenthostsoftwareimplementationaslongasaUSBdeviceexperiencesthesamehostbehavior.Inthesystemsoftwaredesignprocesstheanalysisofthefamiliarbreakdown.

KeywordsUSB2.0interfacesDSPThehigh-speeddatacollectsthesystem

一绪言

随着数字信号处理理论和计算机的不断发展,现代工业生产和科学技术研究都需要借助于数字处理方法。进行数字处理的先决条件是将所研究的对象进行数字化,因此数据采集与处理技术日益得到重视。在图像处理、瞬态信号检测、软件无线电等一些领域,更是要求高速度、高精度、高实时性的数据采集与处理技术。现在的高速数据采集处理卡一般采用高性能数字信号处理器(DSP)和高速总线技术的框架结构。DSP用于完成计算量巨大的实时处理算法,高速总线技术则完成处理结果或者采样数据的快速传输。DSP主要采用TI或者ADI公司的产品,高速总线可以采用ISA、PCI、USB等总线技术。目前,使用比较广泛的是PCI总线,虽然其有很多优点,但是存在如下严重缺陷:易受机箱内环境的影响,受计算机插槽数量的地址、中断资源的限制而不可能挂接很多设备等。USB总线由于具有安装方便、传输速率高、易扩展等优点,其中USB2.0标准有着高达4800bps的传输速率,已经逐渐成为计算机接口的主流。本设计是一个采用USB2.0接口和高性能DSP的高速数据采集处理系统,主要是为光纤通信中密集波分复用系统的波长检测与调整所设计的,也可以应用于像图像处理、雷达信号处理等相关领域。

二系统原理及器件选用

(一)系统原理及简介

整个高速数据采集处理系统的硬件构成为:高速ADC、高速大容量数据缓冲存储器、高性能DSP和USB2.0接口。系统组成的原理框图如图2-1所示。

外界输入信号经A/D采样后,采集到的数据先保存在高速数据缓存中,数据采集结束后DSP从缓存中读取数据开始信号处理。信号处理的算法已编成程序保存在外部的Flash芯片上,供DSP上电读程序到其内部RAM单元,全速运行程序。信号处理后的数据通过USB2.0接口依次传送到主机方,把数据数值存储在PC机内。

(二)系统组成器件的选择

高性能DSP采用TI公司的TMS320C6000系列定点DSP中的TMS320C6203B;高速ADC采用TI公司的ADS5422,12位采样,最高采样频率为105MHz;PC机接口采用USB2.0,理论最大数据传输速率为480Mbps,器件选用Cypress公司EZ-USBFX2系列中的CY7C68013;数据缓冲采用IDT公司的高速大容量FIFO器件IDT72V2113;程序存储在Flash存储器中,器件选用SST291E010。下面逐一介绍各个器件的主要特性。

1.高速A/D转换器

高速A/D转换器选用美国TI公司生产的高速并行14位模数转换器ADS5422,其最高采样频率达到62MHz,采样频率为100MHz时,SNR(信躁比)为72dB,SFDR(寄生动态范围)为85dB。模拟信号输入可以是单端输入方式或者差分输入方式,最高输入信号峰峰值为4V,单一5V电源供电。输出数字信号完全兼容3.3V器件,并且提供输入信号满量程标志以及输出数字信号有效标志,从而方便和其它器件的连接。

2.高速缓存FIFO

高速缓存是系统中的一个关键环节。IDT72V2113是由美国IDT公司生产的高速大容量先进先出存储器件(FIFO)。其最高工作频率为133MHz;容量为512KB,可以通过引脚方便的将容量设置成512K×9bit或者256K×18bit两种方式;IDT72V2113可以设置标准工作模式或者FWFT(FistWordFallThrough)工作模式,并提供全满、半满、全空、将满以及将空等五种标志信号,非常方便进行容量扩展。

大容量数据存储是高速数据采集系统迫切需要解决的问题,例如,一个20M采样速率、8位的ADC,在一秒钟的时间内所采集到的数据量是20M字节,虽然IDT72V2113的单片容量是512K×9bit,可以很好的满足一般的数据采集系统的需要,但是,对于高速、无间隔的数据采集系统来说,一片的容量是不够的。IDT72V2113便于扩展的特性可以很容易地解决这个问题,而且不需要外部控制电路,连接简单、可靠,很方便电路设计及软件开发。其容量扩展可以分为字长扩展和深度扩展。

IDT72V2113的字长扩展比较简单,只要把各个芯片的控制信号连在一起就可以实现。这里需要注意的是EF/IR和FF/OR两个引脚,在标准模式下这两个管脚的功能为EF和FF,把各个芯片这两个管脚分别相与;在FWFT模式下,这两个管脚功能为IR和OR,把各个芯片的这两个管脚分别相或,这样就可以确保同步读写每一个IDT72V213。

IDT72V2113的深度扩展方式仅适用于FWFT工作模式。其中,传输时钟可以选择写时钟和读时钟中频率较高的那个时钟信号。工作原理为:当有数据写入第一片FIFO中后,其输出允许信号(OR)低有效,从而使第二片FIFO的写使能信号有效;同时,只要第二片FIFO中仍有空间,它的输入允许信号(IR)低有效,从而使第一片FIFO的读使能信号(REN)有效,这样,在传输时钟的驱动下,数据由第一片FIFO向第二片FIFO传送,直到第二片FIFO写满为止,以后的数据将储存在第一片FIFO中。通过深度扩展,两片IDT72V2113可形成容量为1M×9bit的数据缓冲。

IDT72V2113不仅可以通过字长扩展和深度扩展来实现容量扩展,而且可以将两者结合起来,进行更大容量的扩展,如用四片IDT72V2113扩展成容量为1M18bit的数据缓冲。

3.高性能DSP处理器

DSP是整个采集系统的核心。TMS320C6203B是TI公司高性能数字信号处理器TMS320C6000系列的一种,采用修正的哈佛总线结构,共有一套256位的程序总线、两套32位的程序总线和一套32位的DMA专用总线;内部有8个功能单元可以并行操作,工作频率最大为300M,最大处理能力为2400MIPS;内部集成了丰富的设备接口,如外部存储器接口(EMIF)、外部扩展总线(XB)、多通道缓冲串口(McBSPS)和主机接口(HPI),与外部存储器、协处理器、主机以及串行设备的连接非常方便。

TMS320C6203B的DMA控制器有以下特点:共有4个通道,32位寻址能力,可以对存储器映射空间的任何一个区域进行访问;传送数据支持8位、16位和32位字长;灵活的地址产生方式,支持多帧传输方式;每次传输完毕后,可以进行DMA通道的自动初始化;传输操作可以由选择的同步事件触发。DMA寄存器的设置包括以下几个寄存器:通道的主、副控制寄存器,通道的源地址、目的地址寄存器,通道传输计数寄存器,DMA全局地址寄存器,DMA全局索引寄存器,DMA全局计数重载寄存器。

TMS320C6203B的外部扩展总线(XB)宽度为32位,可以连接外部异步设备、异步或同步FIFO、PCI控制器和其他一些外部控制器。外部扩展总线由I/O总线和主机口接口组成。I/O总线有异步I/O工作模式和同步FIFO工作模式,其中同步FIFO模式与标准同步FIFO可以实现无缝连接,可以同时无缝实现四个FIFO写借口或者实现三个FIFO写接口及一个FIFO读接口。通过无缝连接实现FIFO读接口,FIFO必须连接到XCE3空间。

4.USB2.0接口

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

高速数据范文篇8

1CY7C68013芯片

Cypress公司的EZ-USBFX2系列中的CY7C68013,是目前市面上比较少的符合USB2.0标准的USB控制器之一。与其它同类芯片相比,它提供了4KB的FIFO和一个功能十分强大的GPIF(GeneralProgrammableInterface)模块。后者相当于一个可编程状态机,正是由于它的存在,使得CY7C68013比其它同类芯片具有强大的互联能力。CY7C68013芯片的结构,其主要特点如下:

·CY7C68013内部集成了一个增强型的51内核,其指令集与标准的8051兼容,并且在多方面有所改进。例如:最高工作频率可达48MHz,一个指令周期为4个时钟周期,两个UART接口,三个定时计数器,一个I2C接口引擎等。

·CY7C68013提供了一个串行接口引擎(SIE),负责完成大部分USB2.0协议的处理工作,从而大大减轻了USB协议处理的工作量,并且提供了4KB的FIFO保证数据高速传输的需要。

·为了满足与各种不同类型外设的互联需要,芯片中集成了一个GPIF模块,让用户可以按照外设的时序进行波形编辑,而不需要复杂的程序描述,就可以保证GPIF与内部.FIFO的协调工作,实现芯片与高速设备之间的逻辑连接和高速数据传输。这对于开发者来说是相当友好的。笔者就是利用这一特性,实现数据的高速同步采集及传输。

2同步高速数据采集芯片AD7862

2.1AD7862的结构

AD7862是AD公司推出的高速、低功耗、双极性12位的A/D转换芯片,其中包含了两个独立的快速ADC模块(允许同时采样和转换两路信号)、4路模拟输入信号(VAl、VA2、VBl、VB2)、2.5V的内部电压基准以及一个12位的高速并行接口。芯片正常运行时功耗只有60mW,当使用节电方式时,只有50μW,对于自带电源的USB设备这种低功耗无疑是一种优点。该芯片的内部结构如图2所示。每个ADC都有一个两通道的多路选择器,芯片通过地址信号A0分别选通VAl、VA2或VBl、VB2,当一个CONVST信号到来时,同时转换地址A0选中的两路信号。

高速数据范文篇9

关键词:单片机系统高速数据通信EPP

前言

单片机系统中常常需要具备与PC机通信的功能,便于将单片机中的数据传送到PC机中用于统计分析处理;有时又需要将PC机中的数据装入单片机系统中,对单片机程序进行验证和调试。目前常用的通信方式是串行通信,但传输速率太低,以9600bps计算,传输1MB至少需要10min(分钟)以上。并行通信克服了串行通信传输速率低的缺点。标准并行口SPP(StandardParallelPort)方式实现了由PC机向外设的单向传输,但实现PC机接收外设发送的数据则非常麻烦;而增强型并行口EPP(EnhancedParallelPort)协议却很好地解决了这一问题,能够实现稳定的高速数据通信。

一、EPP接口协议介绍

EPP协议最初是由Intel、Xircom、Zenith三家公司联合提出的,于1994年在IEEE1284标准中。EPP协议有两个标准:EPP1.7和EPP1.9。与传统并行口Centronics标准利用软件实现握手不同,EPP接口协议通过硬件自动握手,能达到500KB/s~2MB/s的通信速率。

1.EPP引脚定义

EPP引脚定义如表1所列。

表1EPP接口引脚定义

引脚号SPP信号EPP信号方向说明

1StrobenWrite输出指示主机是向外设写(低电平)还是从外设读(高电平)

2~9Data0~7Data07输入/输出双向数据总线

10AckInterrupt输入下降沿向主机申请中断

11BusynWait输入低电平表示外设准备好传输数据,高电平表示数传输完成

12PaperOut/EndSpare输入空余线

13SelectSpare输入空余线

14AutofdnDStrb输出数据选通信号,低电平有效

15Error/FaultnDStrb输入空余线

16InitializeSpare输出初始化信号,低电平有效

17SelectedPrinternAStrb输出地址数据选通信号,低电平有效

18~25GroundGroundGND地线

2.EPP接口时序

EPP利用硬件自动握手实现主机与外设之间的高速双向数据传输,软件只须对相应端口寄存器进行读/写操作。

(1)EPP写操作时序如图1所示。

CPU实现向外设写数据的操作步骤如下:

①程序对EPP数据寄存器执行写操作;

②nWrite置低;

③CPU将有效数据送到数据总线上;

④nDStrb(nAStrb)变低(只要nWait为低);

⑤主机等待nWait变高,确认数据发送成功;

⑥主机等待nWait变高,确认数据发送成功;

⑦EPP写周期结束。

(2)EPP读操作时序如图2所示。

CPU实现从外设读数据的操作步骤如下:

①程序对相应EPP端口寄存器执行读操作;

②nDStrb(nAStrb)置低(如果nWait为低);

③主机等待nWait为高,确认数据发送成功;

④主机从并行口引脚读取数据;

⑤nDStrb(nAStrb)置高;

⑥EPP读操作周期结束。

3.EPP端口寄存器

EPP接口除了保留SPP的3个端口寄存器以外,还新增了5个端口寄存器,如表2所列。

表2

地址端口名称方向

基地址+0SPP数据端口写

基地址+1EPP状态端口读

基地址+2EPP控制端口写

基地址+3EPP地址端口读/写

基地址+4EPP地址端口读/写

基地址+5EPP数据端口读/写

基地口+6未定义(32位传输)读/写

基地址+7未定义(32位传输)读/写

EPP状态端口寄存器

WAITINTRUSER1USER2USER3××TMOUT

WAIT:Wait状态位(1有效);

INTR:中断请求状态位(1有效);

USER1~USER3:用户自定义;

TMOUT:保留(EPP1.7)超时标志位(EPP1.9)。

EPP控制端口寄存器。

××DIRIRQENASTRBINITDSTRBWRITE

DIR:方向位(1输入,0输出);

IRQEN:中断使能位(1有效);

ASTRB:地址选通位(0有效);

INIT:初始化(1有效);

DSTRB:数据选通位(0有效);

WRITE:读/写状态位(0:写,1:读)。

读取接口状态和控制接口都只须对相应的端口寄存器进行操作。以初始化为例:

读操作初始化:outportb(port+2,0x24);

//port为SPP数据端口地址

写操作初始化:outportb(port+2,0x04);

//port+2为EPP控制端口地址

4.EPP1.7和EPP1.9

EPP接口最先有EPP1.7标准定义,由于硬件厂商的原因,EPP现有两个标准:EPP1.7和EPP1.9,可以在BIOS/设备/并行口(BIOS/PeripheralSetup/ParallelPortMode)方式中进行设置。两者有如下不同点:

(1)EPP状态端口寄存器的最低位bit0,在EPP1.9中定义为TMOUT。在EPP操作时序中,如果PC机数据(地址)选通信号变低后,且在10μs时间内,外设未能将nWait置为低,则TMOUT置为1,表示延时。

(2)EPP1.9标准中,只有当nWait为低时,才能开始一个操作周期;但在EPP1.7中,无论nWait状态如何,nAstrb(nDstrb)都会被置低,从而开始一个新的数据(地址)操作周期。

二、EPP接口传输数据的一个实例

在某单片机系统中,须要将单片机系统中数据存储器的大量数据传输到PC机中进行分析处理。EPP接口(采用EPP1.7标准)硬件电路及软件流程图如图3~图5所示。

GAL译码电路方程式为/O1=/I1*/I2*/I3*I4*/I5,EPP接口选通地址为2000H。当单片机执行如下指令:

MOVDPTR,#2000H

MOVX@DPTR,A

就将寄存器A中的数据锁存到数据总线上,便于PC机利用EPP接口进行读操作。

C语言例程:

#defineSPPDATA0x0378//定义各寄存器地址

#defineSPPSTAT0x0379

#defineSPPCNTL0x037A

#defineEPPADDR0x037B

#defineEPPDATA0x037C

#include<stdio.h>

FILE*fp;

Intdata;

Longi;

intk;

fp=fopen(filename,"wb");//打开要存储数据的文件

outportb(SPPCNTL,0x24);

//向控制端口发00100100代码,初始化为读操作模式for(i=0;i<524288;i++)

{

while(!((inportb(SPPSTAT))&0x80))

//查询是否发送完毕

{}

data=inportb(EPPDATA);//读数据

fputc(data,fp);//将数据存入文件

}

fclose(fp);//关闭文件

单片机汇编语言程序为:

FLAG1BITP1.7;标志位

FLAG2BITP3.4

STADDEQU0000H;要传输数据段的起始地址

NUMEQUFFFFH;要传输数据端的字节个数

COMMUN:MOVDPTR,#STADD

COMM1:MOVXA,@DPTR

PUSHDPH

PUSHDPL

MOVDPTR,#EPP_CE

MOVX@DPTR,A

POPDPL

POPDPH

SETBFLAG1;将P1.7置高

CLRFLAG2;将P3.4置低

JBFLAG1,$;查询P1.7为低,即nDStrb为低,表示PC读操作已完成

SETBFLAG2;将P3.4置高

SETBFLAG1;将P1.7置高

INCDPTR

CJNENUM,COMM1;循环NUM次

RET

实际应用该接口电路,能实现1MB/s的传输速率,并且性能稳定可靠。

如果应用EPP1.9标准,硬件电路不用变动,软件中可以省略对nWait进行判断的环节,速率能接近2MB/s。

高速数据范文篇10

关键词:USB2.0EZ—USBFX2同步数据采集

随着计算机技术的迅速发展,对外部总线速度的要求越来越高。通用串行总线(UniversalSerialBus,即USB总线)凭借其即插即用、热插拔以及较高的传输速率等优点,成为PC机与外设连接的普遍标准。在许多便携式电脑上,已经找不到RS-232接口。迄今为止,常用的USB总线标准有1998年的USBl.1版本和2000年的USB2.0版本。其中1.1版本支持两种传输速率:1.5Mbps和12Mbps,主要应用在低速传输要求的场合;而2.0版本面向高数据率传输的场合,支持480Mbps的传输速度,并向下完全兼容USBl.1协议。在实际应用中,通常会遇到一些突发信号,需要对其进行高速采集,对数据进行高速传输,所以USB2.0标准自然成为首选。以Cypress公司的EZ-USBFX2系列中的CY7C68013芯片作为核心控制器,设计开发了一套符合USB2.0标准的高速同步数据采集器。

1CY7C68013芯片

Cypress公司的EZ-USBFX2系列中的CY7C68013,是目前市面上比较少的符合USB2.0标准的USB控制器之一。与其它同类芯片相比,它提供了4KB的FIFO和一个功能十分强大的GPIF(GeneralProgrammableInterface)模块。后者相当于一个可编程状态机,正是由于它的存在,使得CY7C68013比其它同类芯片具有强大的互联能力。图1是CY7C68013芯片的结构示意图,其主要特点如下:

·CY7C68013内部集成了一个增强型的51内核,其指令集与标准的8051兼容,并且在多方面有所改进。例如:最高工作频率可达48MHz,一个指令周期为4个时钟周期,两个UART接口,三个定时计数器,一个I2C接口引擎等。

·CY7C68013提供了一个串行接口引擎(SIE),负责完成大部分USB2.0协议的处理工作,从而大大减轻了USB协议处理的工作量,并且提供了4KB的FIFO保证数据高速传输的需要。

·为了满足与各种不同类型外设的互联需要,芯片中集成了一个GPIF模块,让用户可以按照外设的时序进行波形编辑,而不需要复杂的程序描述,就可以保证GPIF与内部.FIFO的协调工作,实现芯片与高速设备之间的逻辑连接和高速数据传输。这对于开发者来说是相当友好的。笔者就是利用这一特性,实现数据的高速同步采集及传输。

图1

2同步高速数据采集芯片AD7862

2.1AD7862的结构

AD7862是AD公司推出的高速、低功耗、双极性12位的A/D转换芯片,其中包含了两个独立的快速ADC模块(允许同时采样和转换两路信号)、4路模拟输入信号(VAl、VA2、VBl、VB2)、2.5V的内部电压基准以及一个12位的高速并行接口。芯片正常运行时功耗只有60mW,当使用节电方式时,只有50μW,对于自带电源的USB设备这种低功耗无疑是一种优点。该芯片的内部结构如图2所示。每个ADC都有一个两通道的多路选择器,芯片通过地址信号A0分别选通VAl、VA2或VBl、VB2,当一个CONVST信号到来时,同时转换地址A0选中的两路信号。

2.2AD7862的控制时序

AD7862的控制时序如图3所示。在USB2.0同步高速数据采集器中,利用GPIF实现图3所示的时序控制。其中CONVST是转换开始启动信号,下降沿触发两路ADC开始装换;BUSY信号在CONVST信号触发后;变成并保持为高电子状态,直到两路ADC转换完毕,才又回到低电平;地址A0用于对两路模拟信号的选择,CS信号和RD信号分别是芯片使能信号以及读允许信号。两者第一次同为低电平时,读出第一组ADC转换的数据;在第二次为高电平时,读出第二组ADC转换的数据。使用AD7862值得注意的一点是该芯片提供了电源管理功能,当芯片将第二组数据读出后,CONVST信号继续保持低电平,芯片进入休眠模式。这时芯片的功耗只有50μW。这一点对于现在的便携式设备十分重要。

3同步高速数据采集器的硬件设计

传统的高速数据采集卡一般都采用PCI总线设计,但是笔记本电脑以及大部分便携式设备是没有PCI插槽的。利用USB2.0技术,不仅保证了较高的数据传输率(传输率最大可以达到480Mbps),同时还具有便携和无需外加电源等优点。图4是系统的结构示意图。它的工作原理是:在GPIF模块的控制下,由AD7862对目标进行等间隔采样,然后将采样结果通过GPIF传送到CY7C68013的内部FIFO中缓存;当采集一定量的数据后,CY7C68013自动将数据打包(不需要8051的介入),通过USB总线传输到PC机中进行数据处理。由于有GPIF的硬件支持,CY7C68013中的8051内核只是在很少的时间内,对控制进行了辅助处理,大部分工作由GPIF硬件完成。这样8051还可以与其他外设进行互联等工作。在高速数据采集器上附加了两路RS-232接口,用于将GPS数据和高精度智能测深仪的数据中转到主控计算机上,大大方便了新近推出的笔记本电脑与传统外设之间的联系。因为新近推出的笔记本电脑大多不具有RS-232接口,而那些野外观测仪器大多只能通过RS-232接口进行数据交换。

对于CY7C68013来说,其配置和固件都是软的,存储在外部的E2PROM中,上电时从I2C总线自动装载到片内RAM中,修改起来十分方便,便于固件升级。由于CY7C68013提供了丰富的I/O口,所以进行功能扩展也是很方便的,例如增加一个GPIB数据口等。

4软件设计

USB设备的软件设计包括三方面:固件设计、硬件驱动程序设计以及高级应用程序的设计。

4.1固件(firmware)设计

Cypress公司为CY7C68013提供了一个开发框架,可以在KEILC51环境下开发。由于开发框架的引入,从而大大缩短了用户的研发周期。该框架由以下几部分组成:

(1)FW.C中包含了程序框架的MAIN函数,管理整个51内核的运行,因为Cypress对这个部分的功能进行了精心划分,一般是不用改动的。

图3

(2)用户必须将PERIPH.C实例化,它负责系统周边器件的互联。固件的设计主要针对这个文件,用户必须根据自己系统的需要,实例化这个文件,以实现自己的功能。在这个文件中有几个函数是比较关键的,在这里做一下特别说明:

·TD_Init函数,负责对USB端点进行初始化设置。本设计中将端点6设置为1024个字节,缓存深度为4级,模式设为自动输入方式。

·TD_Poll函数,负责系统中循环任务的处理。它主要是对各个端点的状态进行查询,处理各种OUT或IN端点的交互。值得说明的一点是,这种处理只是辅助性质的,大部分工作由硬件自动完成。

·DR_VendorCmnd函数,主要负责用户自定义命令的译码工作,用户请求通过端点O传输给内核。由于CY7C68013上SIE硬件的支持,用户只需查询固定地址单元即可获得当前的命令代码。

·GPIFINIT.C,其中只有一个Gpiflnit函数;它是GPIF模块的初始化函数,一般在TD_Init函数中调用。这个函数是由Cypress公司提供的一个GPIFDesigner开发工具根据用户设计的波形生成的,用户不需要自己设计波形查询表,减轻了设计者的工作强度。

·DSCR.A51是描述表文件,负责USB设备的描述工作,CY7C68013在上电后自动利用其中的VID和PID取代默认的VID和PID。

·两个包含文件EZUSB.LIB和USBJMPTB.OBJ,前者是EZUSB函数库的二进制文件,后者是USB的中断向量表。

固件调试,使用Cypress提供的EZ-USBcontrolpanel,具体的操作读者可以参考其自带帮助。

4.2驱动程序的设计

驱动程序负责对底层硬件的访问。在本设计的驱动程序开发中,使用的开发工具是Jungo公司的WinDriverv6.03,它支持多种操作系统。利用WinDriver开发的优点是用户不需要了解操作系统内部的具体工作机理,同时也不需要了解各个系统DDK(DevelopingorDebugginginKernel)的开发工具,用户只需使用WinDriver提供的开发平台,即可完成驱动程序的设计工作,剩下的底层细节由WinDriver内核统一处理,从而降低了对开发者编程能力的要求,同时也大大缩短了开发周期。下面就使用WinDriver开发驱动程序的步骤做一个简要说明(以在Windows操作系统下的开发为例):

(1)启动WinDriver的DriverWizard工具;

(2)利用DriverWizard检测硬件是否正常;

(3)在DriverWizard中选择所使用的开发环境,这里使用VB6.0开发环境,并生成驱动程序代码;

(4)对生成的代码进行修改,使其符合系统的需要;

(5)在WinDriver环境的用户模式下,调试驱动程序;

(6)如果程序需要内核访问,以提高驱动程序的效率,进入内核开发。

4.3高级应用程序的设计