已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA+USB2.0的数据采集和数据下传系统,数据采集和下传的系统结构 USB部分 USB基本概念和特点 EZ-USB FX2 (CY7C68013)简介 EZ-USB FX2 从属FIFO 固件框架和程序 FPGA部分 设备驱动和主机应用程序部分 总结,基于FPGA+USB2.0的数据采集和 数据下传系统,USB数据采集系统,数据采集和下传的系统结构,USB数据下传系统,数据采集和下传的系统结构,USB是通用串行总线(Universal Serial Bus)的缩写。最早是由Compaq、Intel、Microsoft等多家公司于1994年11月共同提出的,其目的是用USB来取代PC现有各种复杂的外围接口,使外围设备的连接具有单一化、即插即用、热插拔、低成本等特点。,USB的基本概念和特点,USB基本概念,USB协议定义了两种连接器:使用在电缆“上游”端的A系列和使用在电缆“下游”端的B系列。各种连接器的引脚和电缆颜色如图:,USB连接器,USB2.0支持三种信道速率:低速的1.5Mb/s,全速的12 Mb/s以及高速的480Mb/s。通常USB传输速率指的是信号或信道支持的位速率,每个USB设备的实际数据传输速率会比理想值低,除了数据之外,信道还需要传输状态控制和错误检查的信号,由于多个USB设备可能分享同一个信道,所以在实际应用中,对于单一传输最大速率,高速模式下为53Mb/s,全速模式下为1.2Mb/s,低速模式下则为800b/s。,USB2.0传输速率,USB主机 任何USB系统中,只有一个主机,主机是USB唯一的主控者,这是USB最基本的概念。USB设备将会等待主机的请求而加以响应。我们通常所用的USB主机设计即PC上位机。 USB方向 由于主机是USB主控者,这样很容易理解USB方向:OUT是指从主机到设备,而IN是从设备的到主机。例如,端点6发送数据到主机,则定义为IN端点 。,USB的主机和方向,批量传输 批量传输是一种突发的传输模式。此种传输方式中,在全速方式时,以8、16、32、64字节信息包传输;高速方式时,以512字节信息包传输。由于其具有自动的错误数据校验机制(CRC),所以批量传输能确保其正确性。使用于大批量数据的连续传输。 控制传输 控制传输用于配置设备,给设备发送命令。当USB设备初次安装时,USB系统软件采用控制数据对设备进行设置。,USB传输类型,中断传输 中断传输数据是少量的,且其数据延迟时间也是有范围的。这种数据可由设备在任何时刻发送。 同步传输 同步数据的建立、传输和使用是连续且实时的,并以稳定的速率发送和接收实时的信息。适用于语音传输等实时性要求高的USB设备。,USB传输类型,EZ-USB FX2简介 Cypress半导体公司的EZ-USB FX2 芯片即CY7C68013,是新一代高速USB系列,可以用USB2.0最大数据传输速率传输数据。该芯片基于EZ-USB FX芯片开发,通过集成的收发器、SIE(串行接口引擎)、8051微控制器,存储器和可编程I/O接口,提供USB2.0支持。,EZ-USB FX2 简介,EZ-USB FX2简化框图,集成的USB收发器连接到USB总线中的D+和D-;串行接口引擎SIE进行译码、编码、错误纠正和位填充,变换USB所需要的信号电平;最终,从USB接口,SIE发送和接收数据。EZ-USB FX2的CPU采用增强8051,提高了运行速度,增强了功能。同时芯片还采用了内部RAM用于程序和数据存取。,FX2共有三种接口工作模式,端口模式、从属FIFO(Slave FIFO)模式和通用可编程接口模式(GPIF)。 端口模式:FX2的CPU(增强型8051)使用特殊功能寄存器来控制I/O管脚的输出,读取或写入等功能。 通用可编程接口模式(GPIF):GPIF作为内部的主控制器与FIFO直接相连,并产生用户可编程的控制信号与外部接口进行通信。,EZ-USB FX2接口模式,从属FIFO模式:在Slave FIFO模式下,外部逻辑或外部处理器直接与FX2端点FIFO相连。在这种模式下,GPIF不被激活,因为外部逻辑可直接控制FIFO。这种模式下,外部主控端既可以是异步方式,也可以是同步方式,工作时钟可选为内部产生或外部输入,其它控制信号也可灵活地设置为高有效或低有效。,EZ-USB FX2接口模式,从FX2的角度来看,端点就是总线上接收或保持传输数据的缓冲区。FX2从OUT端点缓冲区读主机发出的数据,并且向IN端点缓冲区写要传输给主机的数据。 FX2包含了3个64字节的端点缓冲区,加上可定义为不同端点方式的4KB缓冲区空间。 3个64字节缓冲区是共有的,并且被设计成EP0、EP1IN和EP1OUT。其中,EP0是默认的控制端点0,是一个用于IN和OUT数据的单64字节缓冲区双向端点。端点1支持批量传输、中断传输和同步传输,且端点0和端点1只能由FX2的CPU进行访问。4KB可配置的缓冲区用于端点2、4、6、8(EP2、EP4、EP6、EP8)。,EZ-USB FX2端点缓冲区,端点2、4、6和8是大端点,用于高带宽的数据传输。他们能够配置成各种不同的方式,从而适应带宽的要求。如下图:,EZ-USB FX2端点缓冲区,EZ-USB FX2端点缓冲区,从属FIFO模式下,外围设备电路可以像访问普通FIFO一样访问FX2的端点2、端点4、端点6和端点8的端点FIFO,也就是说,端点FIFO被外部控制器所控制。,EZ-USB FX2 从属FIFO,异步方式和同步方式下的时序,异步方式下:SLRD和SLWR是读/写的选通信号; 同步方式下:SLRD和SLWR作为IFCLK时钟引脚的使能信号。,Cypress公司为FX2系列的产品提供了固件框架和固件库,是由Keil C51 C编写的。固件框架和固件库提供了能够完成USB设备基本功能需求的参数和函数,大大提高了开发的效率。固件框架主要包括初始化、处理标准USB设备请求以及USB挂起时的电源管理等。,固件框架,固件框架流程,固件框架完成一个简单的任务循环。首先框架初始化内部的状态变量,然后调用用户初始化函数 。该函数返回后,框架初始化USB接口到未配置状态并使能中断。然后每隔1s进行一次设备重枚举,直到端点0接收到一个配置包(SETUP)。一旦检测到SETUP包,框架将开始交互的任务调度,其任务调度如下: 1.调用用户函数TD_Poll()函数,实现USB外设的主要功能。 2.判断是否有标准设备请求等待处理,如果有,则分析该请求并响应。 3.判断USB内核是否收到USB挂起信号,如果收到,则调用函数TD_Suspend()。该函数成功返回后(返回值为TRUE),再检测是否发生USB唤醒事件。如果未检测到,则处理器进入挂起方式;如果检测到,则调用函数TD_Resume()函数,程序继续运行。如果从TD_Suspend函数返回FALSE,则程序继续运行。,本系统的固件程序设计,由于采用SlaveFIF0模式进行数据高速传输,因此,配置数据接收和发送端点为SlaveFIFO模式,CPU不再参与数据的传输。数据采集系统中,端点FIFO在接收到FPGA输入的信号后,等待PC读取,USB芯片只作为一个数据传输通道。由于FX2的EP2、EP4、EP6、EP8这四个端点共享4KFIFO缓冲区,故在该系统中,将EP6配置成Bulk块传输,大小为512B,2倍缓存,16位工作模式,并设置为AUTOIN模式,而用EP0作为控制参数传递。相反,数据下传系统中,打开EP2端点,同样设置成Bulk块传输,大小为512B,2倍缓存,16位工作模式,并设置为AUTOOUT模式,这样,固件程序就能完成主机和设备的双向数据传输。,固件程序,在自动输入输出模式下,对于IN端点,允许外部逻辑将数据连续传送到FIFO中,不需要外部逻辑或FX2固件程序来打包数据或发送信号到主机来确认;对于OUT端点,允许主机连续填充FIFO,而不需要外部逻辑或FX2固件与每一个引入的包进行握手即提供端点缓存区。因此,在固件程序中,我们只需要完成初始化函数TD_Init的配置,而用户函数TD_Poll程序代码则不是必需的。,固件程序,void TD_Init(void) CPUCS = (CPUCS /激活端点6 IN BULK 512字节 2倍缓存,/config the endpoint6 EP6FIFOCFG = 0x0D; /EP6 AUTOIN =1 ZEROLEN=1 WORDIDE=1 SYNCDELAY; / 配置EP6自动方式 16位模式 /FX2根据包的长度值自动打包并分派IN包,该长度在EP6AUTOINLEN寄存器中 INPKTEND = 0x06; SYNCDELAY; INPKTEND = 0x06; SYNCDELAY; /强制IN包结束 EP6AUTOINLENH = 0x02; SYNCDELAY; EP6AUTOINLENL = 0x00; SYNCDELAY; /set the packet size 512字节 /config the endpoint2 EP2FIFOCFG = 0X11; SYNCDELAY; /EP2 AUTOOUT=1 ZEROLEN=0 WORDIDE=1 OUTPKTEND= 0x82; SYNCDELAY; OUTPKTEND= 0x82; SYNCDELAY; /强制OUT包结束 EP2BCL = 0x80; / 通过写字节计数器来控制EP2OUT SYNCDELAY; EP2BCL = 0x80; SYNCDELAY; void TD_Poll(void) / Called repeatedly while the device is idle ,FPGA控制器实现异步从属FIFO的写,IDLE:当写事件发生时,转到状态1; 状态1:指向IN FIFO,激活FIFOADR1:0,转向状态2; 状态2:如果FIFO满标志为“假”(FIFO不满),则转向 状态3,否则停留在状态2; 状态3:传送总线驱动数据,激活SLWR,转向状态4; 状态4:如果有更多的数据要写,则转向状态2,否则转 向IDLE。,FPGA典型进程如下:,FPGA功能仿真异步FIFO写,FPGA控制器实现异步从属FIFO的读,IDLE:当读事件发生时,转到状态1; 状态1:指向OUT FIFO,激活FIFOADR1:0,转向状态2; 状态2:激活SLOE,如果FIFO空标志为“假”(FIFO不 空),则转向状态3,否则停留在状态2; 状态3:激活SLOE、SLRD,传送总线驱动数据,撤销激 活SLRD(指针加1)和SLOE,转向状态4; 状态4:如果有更多的数据要写,则转向状态2,否则转向 IDLE。,FPGA典型进程如下:,FPGA功能仿真异步FIFO读,在Windows操作环境下,对USB设备进行开发必须以驱动程序作为桥梁。USB主机通过相应的驱动程序来控制外部USB设备,进行数据传输等操作。也就是说,USB驱动程序是主机程序和固件程序的桥梁。Cypress公司为USB芯片提供了通用的驱动程序,用户可以在此基础上直接进行固件的开发,以加速USB设备的开发进度。下面介绍Cypress公司提供的在Visual Studio6.0环境下的通用USB驱动。,USB驱动开发,Cypress为EZ-USB系列USB接口芯片提供了一个完整的开发包 CY3684 EZ-USB FX2LP Development Kit。该开发包里包括了通用的USB驱动程序,可以使用最常用的Visual Studio 6.0访问。Cypress的通用驱动程序包括两个,一个为Cyload.sys,用于固件程序的下载;另一个为CyUSB.sys,用于主机和固件程序的通信 。每个驱动程序使用一个INF文件(设备信息文件)进行引导安装。两个驱动程序的INF文件都可以进行如下自定义的修改: 1.修改设备的VID/PID; 2.修改字符串(包括设备名称、制造商的字符串信息); 3.修改GUID(主机程序获取接口); 4.修改驱动名称。,通用USB驱动,主机应用程序是用于与用户进行接口的。主机应用程序通过USB设备驱动程序和外部USB硬件进行通信,USB固件程序执行所用的硬件操作。本系统以Visual C+为平台开发上位机程序,读写USB设备。在Cypress公司提供的CY3684开发包中,可以使用CYIOCTL控制函数类和CyAPI控制函数类来实现对USB设备的读写。,主机应用程序,在使用Cypress提供的驱动程序基础上,只需上位机程序加入头文件cyioctl.h,然后便可以调用相应的控制函数。Cyioctl接口控制函数只提供了基本的USB控制及传输操作,一般用于USB设备的连接。如果要进行更加详细的控制操作,则需要使用CyAPI控制函数类。,CYIOCTL控制类函数,在上位机程序中加入头文件CyAPI.h和库文件CyAPI.lib即可调用相应的控制函数。 CyAPI控制函数类主要包括8个控制类: 1.块传输端点控制类CCyBulkEndPoint; 2.控制传输端点类CCyControlEndPoint; 3.中断传输端点控制类CCyInterruptEndPoint; 4.同步传输端点控制类CCyIsocEndPoint; 5.设备控制类CCyUSBDevice; 6.配置信息类CCyUSBConfig; 7.端点控制类CCyUSBEndPoint; 8.接口控制类CCyUSBInterface。,CyAPI控制函数类,块传输端点控制类CCyBulkEndPoint主要用于块传输端点。在该类中最常用的函数是BeginDataXfer,其函数原型如下: PUCHAR CCyBulkEndPoint : BeginDataXfer( PCHAR buf, LONG len, OVERLAPPED *ov) BeginDataXfer函数是一个非常好用的异步I/O传输方法。这个函数建立一个数据传输通道,初始化传输,并立刻返回,不用等待传输完毕。,块传输端点控制类CCyBulkEndPoint,设备控制类CCyUSBDevice是一个原始的库入口类指针,其中定义了很多USB设备的各种操作 ,使用前必须首先获得USB设备的句柄,下面介绍常用的成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 篮球租场合同模板
- 2024年品牌代理权标准协议模板版
- 2024年先进起重设备采购与销售协议模板
- 2024年度防水堵漏服务协议版
- 项目设计顾问合同模板
- 单日旅行团体客运服务协议样本版
- 香港工程中标合同模板
- 建筑设备采购合同模板
- 2024年度建筑二次施工协议制定本版
- 自建三层房产买卖合同模板
- 【讲座】初中语文部编本教材解读课件
- 公开课听课教师签到表
- 开展新技术、新项目科室内讨论记录
- 主题班会-同学情教学课件
- 道德与法治《健康看电视》优秀课件
- 泌尿系统完整结构培训课件
- 规培体表肿物切除术
- 新教材北师大版高中数学必修一 2.3函数的单调性和最值 课时练(课后作业设计)
- DB32∕T 943-2006 道路声屏障质量检验评定
- 四年级(上册)综合实践活动课教学案(贵州科学技术出版社)
- 腹泻教学课件
评论
0/150
提交评论