注册登录

基于USB2.0实现GPIF接口的固件、驱动和应用程序的设计

引 言

USB(Universal Serial Bus)是一种通用串行总线,主要用于PC与外围USB设备的互联。近年来,USB接口以其快速、即插即用、使用安装方便等优点逐渐成为现代数据传输的发展趋势。目前,国内外采用USBl.1和USB2.O两种规范。USBl.1主要用于低速传输要求的场合,支持1.5Mb/s和12Mb/s两种传输速率;而USB2.O规范则提供高达480Mb/s的传输速率。尽管如此,在某些对数据传输速度要求很高的系统中,外围设备与USB接口之间在速度上仍存在着不可忽视的传输瓶颈。

Cypress公司生产的USB2.0控制器CY7C68013提供了一种独特的接口方式,即通用可编程接口(GPIF)方式。它与传统接口方式的主要区别有两点:①在数据传输过程中不需要CPU干涉,使得传输速率明显提高,从而可以充分利用USB2.0的传输带宽;②由软件设置读/写控制,其控制方式类似于状态机,提高了传输稳定性。因此,本文介绍的基于USB2.0控制器CY7C68013的GPIF接口设计,就是充分利用了该芯片这一独特的数据传输接口方式,有效地解决了在传统接口方式下USB2.0设备数据传输速度的局限性,大大提高了数据的传输速率。

1 、CY7C68013简介

CY7C68013是Cypress公司的EZ-USB FX2系列芯片。EZ-USB FX2是一款集成USB2.0收发器的微控制器,内部结构如图l所示。该系列芯片集成了USB2.O收发器、串行接口引擎(SIE)、带8.5KB片上RAM的增强型高速8051单片机、4KB FIFO存储器以及通用可编程接口等模块.提供了全面集成的USB解决方案,无需外加芯片即可实现高速USB传输。FX2系列芯片最主要的特点是可以通过USB2.0的通用可编程接口为特定的应用接口编程。另外,CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得以主/从端点FIFO(B/16位数据总线)为ATA、UTOPIA、EPP、PCMCIA、DSP等的外围设备,可以与主机通过CY7C68013无缝、高速地传输数据。另外,CY7C68013内部集成的USB2.O的SIF能完成大部分USB2.O协议的处理工作,从而减少了用户对繁杂的USB协议的处理。

pIYBAF3V5GmAcirWAACNENg79n4291.jpg

2、 硬件设计及原理

在GPIF接口方式设计中,GPIF作为CY7C68013的端点FIFO的内部控制器,在这种方式下,CPU不会干涉数据的传输。CY7C68013的GPIF接口方式如图2所示。

pIYBAF3V5GuAEpu7AAB6DCOd8_o377.jpg

CY7C68013专门为GPIF提供了接口信号(包括16位数据线、输出控制信号CTL、输入控制信号RDY以及地址线ADR),这些信号负责完成USB接口芯片与外围设备或器件(如FPGA、DSP等)的数据读/写控制和传输。以下为GPIF方式下的主要端口功能。

FDO~FDl5(输入/输出):USB主机通过CY7C68013与外部设备进行数据传输的数据线,可以用8位或16位数据线。

CTLO~CTL5(输出):CY7C68013对外部设备进行控制的信号线。

RDY0~RDY5(输入):CY7C68013对外部设备的状态进行检测的信号线。

SDA(双向)、SCL(输出):E2PROM的数据及时钟信号线。

ADR0~ADR8(输出);GPIF为外部设备提供的地址线。

在本设计中,除了重点利用通用可编程接口来实现无缝、高速的传输数据外,还采用了EZ-USBFX2提供的一种独特架构,即“量子FIFO(Quantum FIFO)”处理架构。它能较好地解决带宽问题,图3为其数据传输示意图。当USB执行OUT时,EP2端点被设置为512字节四重FIFO(在USB端和外部接口端,都不知道有四重FIFO),图4为其数据传输原理图。在USB端看来,只要有1个FIFO为“半满”,那么就可以继续发送数据。

pIYBAF3V5GuANpKIAAA7e-XFSow388.jpg

 

pIYBAF3V5GuAVcDPAABfFvOzazo551.jpg

当前操作的FIFO写“满”时,FX2自动将其转换到外部接口端,排除等候读取;并将USB接口队列中下一个为“空”的FIFO转移到USB接口上,供其继续写数据。同时,在外部接口端看来,只要有1个FIFO为“半满”,就可以继续读取数据。当前操作的FIFO读“空”时,FX2自动将其转换到USB接口端,排除等候写入;并将外部接口队列中下一个为“满”的FIFO转移到外部接口上,供其继续读取数据。

3、 软件设计及实现

本设计的软件设计包括:固件程序、驱动程序和应用程序设计。其中,固件程序是整个程序设计的核心,它在设备CPU中运行。GPIF就是在固件中实现的,因此,只有在该程序运行时,外设才能称之为具有给定功能的外部设备。

0条回复

作者
用户头像
文章 0关注 0粉丝 0
发私信
相关文章
联系客服