摘要:介绍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 高速模式 端点
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的高速传输性能。图1为USB2.0与硬盘接口的带宽分析。
每分转速7200带有2MB缓存的ATA100硬盘,接口数据传输速率可达100MB/s,可持续的有效传输速率只有39MB/s。
USB2.0在每个上微帧中最大可传输13个块传输包,而每个微帧长固定为125μs,所以其最大传输速率为:512×13×8×1000=53MB/s。