| 摘要:介绍USB2.0协议以及Cypress公司推出的USB2.0控制器CY7C68013。USB2.0协议提供480Mb/s的传输速度,向下完全兼容流行的USB1.1协议。CY7C68013是USB2.0的完整解决方案。该芯片包括带8.5KB片上RAM的高速8051单片机、4KB FIFO存储器以及通用可编程接口(GPIF)、串行接口引擎(SIE)和USB2.0收发器,无需外加芯片即可完成高速USB传输,性价比较高。
关键词:USB2.0 高速模式 端点
本刊2002年到2、3期已对EZ-USB单片机的介绍。本文在此只重点介绍USB2.0的特殊之处以及芯片CY7C68013的主要特点。*
1 USB2.0的主要特点
USB协议的2.0版本于2000年4月推出。支持以下3种速度模式:
低速模式(low speed) 1.5Mb/s;
全速模式(full speed) 12Mb/s
高速模式(high speed) 480Mb/s
USB2.0协议支持现存的所有USB设备,既可以把USB1.1设备插入USB1.1的PC机接口,并且在电气上兼容USB1.1的连接线。
 1.1 数据包
USB传输的数据包的类型用称之为Packet Ids(PIDs)的特定代码来定义。USB包中共有4种PID类型,如表1所列。
表1 USB2.0的数据包类型
| PID类型 |
PID名称 |
| 令牌 |
IN,OUT,SOF,SETUP |
| 数据 |
DATA0,DATA1,DATA2,MDATA |
| 握手 |
ACK,NAK,STALL,NYET |
| 特殊类型 |
PRE,ERR,SPLIT,PIN |
注:黑体字表示USB2.0增加的PID类型。
在全速模式时,每个OUT传输发送OUT数据包,不考虑外设是否处于“忙”状态而不能接收数据。针对这种浪费带宽的情况,在高速模式时推荐使用新的PID类型“PING”。主机先对OUT端点发出个较短的“PING”令牌,访问当前外设是否有数据文凭间来存放OUT的数据包。仅仅当外部设备回答“ACK”时,主机才发送较长OUT数据包。
SETUP邻牌只用于控制传输。它数据包中的前8个字节。通过这8个字节,外设对主机的设备请求进行译码。
SOF令牌代表一个USB帧的开始。
ACK(Acknowlegde)表示成功,数据接收无误。
NAK(Negavite Acknowlegde)表示忙,得发。这并不是出错,USB外设没有应答表示出错。
STALL表示未知错误,外设未能理解主机发出的设备请求,可能是外设端出错,或是主机访问并存在的资源。USB协议提供了从stall状态恢复的方法。
 NYET(Not Yet)类似于ACK,表示数据接收无误,并且指出外设还没准备好接收下一个OUT数据包。NYET PID只用于在高速模式。
其它PID详见参考文献[1]。
1.2 帧结构
USB主机每毫秒向所有的USB设备发送1上SOF包(Start of Frame),以此来提供时间基准。SOF包括1个自增的11位帧序号。FX2随时可以从寄存器中读出这个范围在[0~2047]的帧序号。
地高速模式下(480Mb/s),每个1ms长的帧被分成了8个125μs长的微帧。每个微帧也都由一个SOF包开始。帧序号还是每个毫秒自增1次,所以这8个微帧都含有相同的帧序号。为了区别每个微帧FX2提供1个只读的微帧计数器,并且FX2能在收到SOF包时产生1个中断请求,即在全速模式下1ms/次,高速模式下125μs/次。
1.3 传输类型
为了适用480 Mb/s的高速数据传输,USB.0协议扩大了各种传输类型数据包长度,与USB1.1的对照如表2所列。
表2 USB2.0与USB1.1数据包长度的对照
| 传输类型 |
数据包度/B |
| USB1.1 |
USB2.0 |
| 控制传输 |
8,16,32,64 |
64 |
| 块传输 |
8,16,32,64 |
512 |
| 中断传输 |
1~64 |
1024 |
| 同步传输 |
1023 |
1024 |
1.4 高速模式和全速模式的检测
USB2.0规范要求高速设备必须能在全速模式下枚举。每个高速设备都在全速模式下开始枚举过程。当与主机达成“Chirp”协议后设备再切换到高速工作模式下。详细内容见参考文献[1]第7章。FX2能自动检测高速主机,并切换到高速模式下。
1.5 传输性能分析
以USB硬盘为例分析USB2.0的高速传输性能。 |