USB2.0控制器CY7C68013特点与应用_接口电路论文
关键词:usb2.0 高速模式 端点
本刊今年到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.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”协议后设备再切换到高速工作模式下。详细内容见参考文献第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。
2 ex-usb fx2的主要特点
2.1 芯片结构
ez-usb fx2芯片包括1个8051处理器、1个串行接口引擎(sie)、1个usb收发器、8.5kb片上ram、4kb fifo存储器以及1个通用可编程接口(gpif),如图2所示。fx2是一个全面集成的解决方案,它占用更少的电路板空间,并缩短开发时间。
ez-usb fx2拥有1个独特的架构,其中包括1个智能串行接口引擎(sie)。它执行所有基本的usb功能,将嵌入式mcu解放出来以用于实现专用的功能,并保证其持续的高性能的传输速率。fx2还包括2个通用可编程接口(gpif),允许它“无胶粘接”,即可与任何asic或dsp进行连接,并且它还支持所有通用总线标准,包括ata、utopia、epp和pcmcia。ez-usb fx2完全适用于usb2.0,并向下兼容usb1.1。
fx2有3种封装形式:56脚 sopp、100脚的tqff(薄形四方扁平封装)、128脚的tqfp。引脚数的区别在于输入、输出引脚数的不同,以针对不同的应用要求。
2.2 结构特点
当大部分usb1.1器件都需要微控制器参与数据从端点fifos到应用环境转移,如图3所示。显然,微控制器本身的工作频率在相当程度上限制了带宽的进一步提高。虽然在12mb/s的全速模式下,这种限制并不明显,但当速度提升至480 mb/s时,在成本严格控制下微控制器就必然成为整个系统的带宽并颈。
ez-usb fx2提供了一种独持架构,使usb接口和应用环境直接共享fifo,而微控制器可不参与数据传输但允许以fifo或ram的方式访问这些共享fifo,如图4所示。这种被称之为“量子fifo”(quantum fifo)的处理架构,较好地解决了usb高速模式的带宽问题。
具体来说,如图5所示,usb执行out传输,将ep2端点设成512字节重fifo(如2.3小节所述)。在usb端和外部接口端都并不知道有四重fifo。看来,usb端只要有1个fifo为“半满”,就可以继续发送数据。当胶操作的fifo写“满”时,fx2自动将其转换到外部接口端,排除等候读取;并将usb接口队列中下一个为“空”的fifo转移到usb接口上,供其继续写数据。外部接口端与此类似,只要1有个fifo为“半满”,就可以继续读取数据。当前操作的fifo读“空”时,fx2自动将其转换到usb接口端,排除等候写入;并将外部接口队列中下一个为“满”的fifo转移到外部接口上,供其继续读取数据。
2.3 端点缓存
usb协议定义了端点作为数据的接收器和发送器。主机发送4个bit的地址和1个bit的方向来选择端点,因此usb最多可有32个端点定义:in0~in15和out0~out15。
fx2定义了7个端点,在高速模式下的端点缓存结构如图6所示。ep0in&out、ep1in、ep1out是64byte的端点缓存。ep0是默认的控制传输端点,既是in端点也是out端点。ep1in、ep1out支持块、中断和同步传输。ep0、ep1in和ep1out只能由fx2的固件访问;而ep2、4、6和8无需固件干涉即可同片外互传高速数据。
fx2端点配置方式非常灵活。ep2、4、6和8是大容量高带宽的数据传输端点,可设为in或out端点的一种,能配置成多种形式以适应带宽需要。在图6中,每一列代表1种配置方式。带阴影的方框可包括2、3、4个512或1024字节的缓存,分别表示端点可配置成双重、三重和四重缓存。双缓存是指usb可以读或写1个数据包,而另一个数据包(同一个端点内另一个缓冲存储器中的)可供外部接口操作;三重缓存加了第3个数据包存储器可供usb和外部接口需要的一方使用;四重缓存增加了第4个数据包存储器。多缓存的结构以在读写双方速度相似时有效地改善带宽,平滑带宽抖动,减少双方的互相等待时间。
3 ez-usb fx2的接口方式
fx有2种接口方式:slave fifos和可编程接口gpif。
slave fifos方式是从机方式,外部控制器可像普通fifo一样对fx2的多层缓冲fifo进行读写。fx2的slave fifos工作方式可设为同步或异步;工作时钟可选为内部产生或外部输入;其它控制信号也可灵活地设置为高有效或低有效。
可编程接口gpif是主机方式,可以软件编程读写控制波形,几乎可以对任何8/16 bit接口的控制器、存储器和总线进行数据的主动读写,非常灵活。
4 ez-usb fx2的开发工具
如同ez-usb系列的其它控制器一样,cypress公司对fx2也提供了较为完备的开发套件cy3681。它包括带128脚cy7c68013的硬件开发板和相应的控制面板(control panel)、gpif代码自动生成软件(gpiftool)以及固件方面丰富的例子和大量的帮助文档。可以尽量节省学习时间,加快开发速度。