论文部分内容阅读
[摘要]在对基于USB 2.0的数据采集系统的总体结构进行综述的基础上,对系统的固件程序、基于WDM~USB驱动程序及应用程序等部分的设计进行较详细的讨论。
[关键词]USB 数据采集 固件程序 Driverstudio驱动程序
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2009)0210032-01
通用串行总线USB(Universal Serial Bus)是应用在微机领域的新型接口技术,它具有传输速度快、使用方便、连接灵活等优点,USB支持即插即用,并且可以连接多个USB设备,在数据采集系统中得到日益广泛的应用。
一、硬件设计
基于USB2.0总线的数据采集系统由主机应用程序向USB控制器发送采样时控包,进而USB控制器给FPGA触发采集信息:FPGA将采集到的数据信息通过USB控制器发给主机,主机做进一步处理。
(一)支持USB 2.0高速传输的OY7C68013
Cypress半导体推出了世界上首个USB 2.0外设控制器EZ-USB FX2CY7C68013。它包括一个8051处理器,一个串行接口引擎(SIE),一个USB收发器,片上RAM,FIFO存储器及一个通用可编程接口。EZ-USB FX2拥有一个独特的架构,其中包括一个智能串行接口引擎(SIE)。FX2还包括一个通用可编程接口(GPIF),允许它“无胶粘接”,即可与任何ASIC或DSP进行接合,并且它还支持所有通用总线标准。CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得外围设备和主机通过CY7C68013可以无缝的、高速的传输数据。为了实现高速的数据传输,CY7C68013 CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。
(二)端点缓冲区FIFO
FIFO是英文First In First Out的缩写,是一种先进先出的数据缓存器。设备端点实际上是一个USB数据字节不断取空和填满的FIFO。USB控制器端点分为EPO、EPI、EP2、EP4、EP6、EP8。其中EPO、EPl是小端点,是64字节端点,只能被cPU访问。EPO是默认的控制端点0,主机通过端点0发送一串标准设备请求,包括获取状态、获取及设置描述符、设置及获取配置等请求。EP2、EP4、EP6、EP8属于大端点,可以设置2、3、4倍缓冲深度,配置的端点可满足USB 2.0的高速传输请求。特性,描述主机与设备之间的通讯,介绍它的几种传输并在此基础上介绍固件的定义,阐述基本框架以及其固件程序的基本设计。主机通过发送四位地址和一个方向位来选择端点,USB控制器从OUT端点缓冲区读主机发出的数据,并且向IN端点缓冲区写要传输给主机的数据。
(三)接口信号
在利用GPIF进行高速数据传输系统设计时,GPIF waveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。FX2专门为GPIF提供了外围接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。IFCLK(双向时钟信号):IFCLK可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为30MHz或48MHz;当配置为输入时,时钟范围为5-48MHz。GPIFADR[8:0](输出):GPIF使用GPI-FADR信号为外部设备提供地址线,在总线上地址值是自增的。FD[15:0](双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当为16位时,FD[7:0]代表端点FIFO中的第一个字节,FD[15:8]代表第二个字节。CTL[5:0](输出):FX2为外部设备提供了几个控制信号,如读写选通、使能等。DY[5:0](输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。GSTATE[2:0](输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。
二、软件设计
(一)固件程序
固件程序负责初始化各硬件单元,重新配置设备。设备加电后由驱动程序把固件程序从主机下载到USB控制器片内RAM后执行,即“重新枚举”。Cypress公司为CY7C68013提供了一个开发框架,固件框架流程图在固件程序中主要就是实现以下几个函数:TD_Init函数:负责对USB端点进行初始化设置。在该函数中,用户可设置整体状态变量的初始值,并可规定各种端点资源的使用(包括中断)以及配置外围接口的输入/输出等。TD_Poll函数:负责系统中循环任务的处理。它主要是对各个端点的状态进行查询,处理各种OUT或IN端点的交互,完成数据的传输。TD_Resume函数:该函数可在设备被外部唤醒事件唤醒且框架程序恢复处理后被调用。此时,设备将恢复到正常的操作方式。
(二)应用程序
应用程序的主要功能为:启动或停止USB设备、检测USB设备、发送采集命令、采集数据、存储数据、进行后期分析处理等等。
(三)驱动程序
USB设备驱动程序是开发USB外设的一个关键,USB设备驱动程序的主要作用是使操作系统能够识别USB设备,并建立起主机端和设备端之间的通讯。USB驱动程序属于先进的WDM(Win32 Driver Model)驱动程序模式,支持即插即用功能。WDM型驱动程序是内核程序,与标准的Win32用户程序不同,它采用了分层处理的方法。通过它,用户不需要直接与硬件打交道,只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。在Windows操作系统下,开发WDM驱动程序可以使用微软公司的DDK(驱动程序开发包)。DDK提供了创建WDM驱动程序的开发环境,并提供了用于开发Windows 2000和Windows冲驱动程序的头文件、库函数、源代码、各种工具和文档资料。Cypress FX2开发包提供了一个通用的驱动程序,可被用于基于Ez-USB系列芯片的USB设备。该程序可不加修改经DDK编译后直接使用,在应用中可以看到其运行稳定。当然,用户也可以这个驱动程序为起点,创建自己的驱动程序。
三、结束语
本文系统地介绍了基于USB 2.0接口的數据采集系统设计。基于USB2.0的数据采集系统,弥补了传统采集板卡插拔的诸多不足。随着时代的进步,技术的发展,USB技术必将在更广阔的领域得到更深层次的运用。
[关键词]USB 数据采集 固件程序 Driverstudio驱动程序
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2009)0210032-01
通用串行总线USB(Universal Serial Bus)是应用在微机领域的新型接口技术,它具有传输速度快、使用方便、连接灵活等优点,USB支持即插即用,并且可以连接多个USB设备,在数据采集系统中得到日益广泛的应用。
一、硬件设计
基于USB2.0总线的数据采集系统由主机应用程序向USB控制器发送采样时控包,进而USB控制器给FPGA触发采集信息:FPGA将采集到的数据信息通过USB控制器发给主机,主机做进一步处理。
(一)支持USB 2.0高速传输的OY7C68013
Cypress半导体推出了世界上首个USB 2.0外设控制器EZ-USB FX2CY7C68013。它包括一个8051处理器,一个串行接口引擎(SIE),一个USB收发器,片上RAM,FIFO存储器及一个通用可编程接口。EZ-USB FX2拥有一个独特的架构,其中包括一个智能串行接口引擎(SIE)。FX2还包括一个通用可编程接口(GPIF),允许它“无胶粘接”,即可与任何ASIC或DSP进行接合,并且它还支持所有通用总线标准。CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得外围设备和主机通过CY7C68013可以无缝的、高速的传输数据。为了实现高速的数据传输,CY7C68013 CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。
(二)端点缓冲区FIFO
FIFO是英文First In First Out的缩写,是一种先进先出的数据缓存器。设备端点实际上是一个USB数据字节不断取空和填满的FIFO。USB控制器端点分为EPO、EPI、EP2、EP4、EP6、EP8。其中EPO、EPl是小端点,是64字节端点,只能被cPU访问。EPO是默认的控制端点0,主机通过端点0发送一串标准设备请求,包括获取状态、获取及设置描述符、设置及获取配置等请求。EP2、EP4、EP6、EP8属于大端点,可以设置2、3、4倍缓冲深度,配置的端点可满足USB 2.0的高速传输请求。特性,描述主机与设备之间的通讯,介绍它的几种传输并在此基础上介绍固件的定义,阐述基本框架以及其固件程序的基本设计。主机通过发送四位地址和一个方向位来选择端点,USB控制器从OUT端点缓冲区读主机发出的数据,并且向IN端点缓冲区写要传输给主机的数据。
(三)接口信号
在利用GPIF进行高速数据传输系统设计时,GPIF waveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。FX2专门为GPIF提供了外围接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。IFCLK(双向时钟信号):IFCLK可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为30MHz或48MHz;当配置为输入时,时钟范围为5-48MHz。GPIFADR[8:0](输出):GPIF使用GPI-FADR信号为外部设备提供地址线,在总线上地址值是自增的。FD[15:0](双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当为16位时,FD[7:0]代表端点FIFO中的第一个字节,FD[15:8]代表第二个字节。CTL[5:0](输出):FX2为外部设备提供了几个控制信号,如读写选通、使能等。DY[5:0](输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。GSTATE[2:0](输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。
二、软件设计
(一)固件程序
固件程序负责初始化各硬件单元,重新配置设备。设备加电后由驱动程序把固件程序从主机下载到USB控制器片内RAM后执行,即“重新枚举”。Cypress公司为CY7C68013提供了一个开发框架,固件框架流程图在固件程序中主要就是实现以下几个函数:TD_Init函数:负责对USB端点进行初始化设置。在该函数中,用户可设置整体状态变量的初始值,并可规定各种端点资源的使用(包括中断)以及配置外围接口的输入/输出等。TD_Poll函数:负责系统中循环任务的处理。它主要是对各个端点的状态进行查询,处理各种OUT或IN端点的交互,完成数据的传输。TD_Resume函数:该函数可在设备被外部唤醒事件唤醒且框架程序恢复处理后被调用。此时,设备将恢复到正常的操作方式。
(二)应用程序
应用程序的主要功能为:启动或停止USB设备、检测USB设备、发送采集命令、采集数据、存储数据、进行后期分析处理等等。
(三)驱动程序
USB设备驱动程序是开发USB外设的一个关键,USB设备驱动程序的主要作用是使操作系统能够识别USB设备,并建立起主机端和设备端之间的通讯。USB驱动程序属于先进的WDM(Win32 Driver Model)驱动程序模式,支持即插即用功能。WDM型驱动程序是内核程序,与标准的Win32用户程序不同,它采用了分层处理的方法。通过它,用户不需要直接与硬件打交道,只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。在Windows操作系统下,开发WDM驱动程序可以使用微软公司的DDK(驱动程序开发包)。DDK提供了创建WDM驱动程序的开发环境,并提供了用于开发Windows 2000和Windows冲驱动程序的头文件、库函数、源代码、各种工具和文档资料。Cypress FX2开发包提供了一个通用的驱动程序,可被用于基于Ez-USB系列芯片的USB设备。该程序可不加修改经DDK编译后直接使用,在应用中可以看到其运行稳定。当然,用户也可以这个驱动程序为起点,创建自己的驱动程序。
三、结束语
本文系统地介绍了基于USB 2.0接口的數据采集系统设计。基于USB2.0的数据采集系统,弥补了传统采集板卡插拔的诸多不足。随着时代的进步,技术的发展,USB技术必将在更广阔的领域得到更深层次的运用。