全面认识USB的技术精髓
时间:12-12
来源:互联网
点击:
图2 SOF数据包的格式
图3 DATA数据包的格式
图4 握手数据包
图5 EOP字段在差模信号中的电压表现
二、USB总线的数据传输模式
在前面我们已经提到,每一个USB信道对应着一个特定的USB传输模式,根据不同的需要,USB外设可以为USB信道指定不同的USB传输模式。USB总线支持四种数据传输模式:
1.控制传输模式(图6),控制传输用于在外设初次连接时对器件进行配置;对外设的状态进行实时检测;对控制命令的传送等;也可以在器件配置完成后被客户软件用于其它目的。Endpoint 0信道只可以采用控制传送的方式。
2.块传送模式(图7),块传送用于进行批量的、非实时的数据传输。如一台USB扫描仪即可采用块传送的模式,以保证数据连续地、在硬件层次上的实时纠错地传送。采用块传送方式的信道所占用的USB带宽,在实时带宽分配中具有最高的优先级。
3.同步传输模式(图8),同步传输适用于那些要求数据连续地、实时地、以固定的数据传输率产生、传送并消耗的场合,如数字录像机等。为保证数据传输的实时性,同步传输不进行数据错误的重试,也不在硬件层次上回应一个握手数据包,这样有可能使数据流中存在数据错误的隐患。为保证在同步传输数据流中致命错误的几率小到可以容忍的程度,而数据传输的延迟又不会对外设的性能造成太大的影响,厂商必须为使用同步传输的信道选择一个合适的带宽(即必须在速度和品质之间做出权衡)。
4.中断传输模式(图9),对于那些小批量的、点式、非连续的数据传输应用的场合,如用于人机交互的鼠标、键盘、游戏杆等,中断传输的方式是最适合的。
图7 块传送的流程
图8 同步传输的流程
图9 中断传输的流程
三、USB外设的组成与结构
本文无意详细论述USB外设(本部分所说的USB外设如无特别说明均指USB功能器件)的设计细节,而只想介绍USB功能器件的一般组成,以此来帮助读者了解USB外设的基本软硬件构成,以便了解USB外设的工作过程和原理。
组成外设的传感器件和DSP因为外设的具体应用各异而有所不同。如对于一台CMOS数字摄像机(如Creative的WebCam),它的CMOS光电耦合器及其DSP部分并不因为使用什么样的接口方式而有所改变(如早期的电脑眼皆采用ECP的并口增强模式来进行图像数据的传输,而现在几乎都是USB接口)。因而本文的重点是阐述USB外设接口的部分,即USB Device Microcontroller(USB器件微控制器)。图10表明了一个USB外设总线接口的详细组成框图。
USB总线是以差模驱动的方式来进行数据传输的,但在数据包发送之前,USB协议规定必须使用NRZI的编码方式来对数据进行编码。当然,在USB外设中,用于解码的器件对外设来说也是必不可少的。NRZI的编码协议其实很简单,它采用的是逢"1"保持,逢"0"跳变的原则(图11),而NRZI的解码则采用相反的操作。
为保证数据流中有足够的信号变化,USB协议规定了Bit stuffing(加填充位)的原则,即如果信号流中连续出现六位以上的数据"1",则每隔六位,必须插入一个"0",然后才进入NRZI编码。图12是一串原始数据及其加填充位后和NRZI编码后的数据格式对比。
图10 USB外设总线接口的详细组成框图
图11 NRZI数据编码
图12 原始数据和加填充位后及NRZI编码后的数据格式对比
SIE(Serial interface Engine)是USB外设最重要的硬件组成部分之一,它主要由四部分组成:
1.硬件上用来完成NRZI编/解码和加/去填充位操作的,NRZI/Bit Buffing和NRZO/Bit Unstuffing的部分;
2.硬件上产生数据的CRC校验码并对数据包进行CRC校验的CRC check & Generator部分;
3.用来将并行数据转化成USB串行数据的并/串转换部分(Packet Encode),将主机发送的USB数据包转化成可以识别的并行数据的串/并转换部分(Packet Decode);
4.检测和产生SOP(即每个数据包的同步字段)和EOP信号的部分。
USB外设使用一片ROM来存储关于该外设工作的一些重要信息,这被称为USB的协议层(Protocol Layer),它不仅存储了诸如厂家识别号、该外设所属的类型(是HUB还是Function,是低速还是高速设备)、电源管理等常规信息,更重要的是还存储了外设的设备类型、器件配置信息、功能部件的描述、接口信息等,其存储方式都采用特征字(Descriptors)的方式。USB主机通过在外设的协议层和主机之间建立Endpoint 0信道、采用控制传输的方式对这些信息进行存取。特征字采用USB协议所规定的结构和代码排列(关于特征字的详细信息请参阅USB协议标准)。厂家也可以在该ROM的剩余空间中存储特定的程序或信息,以帮助外设完成特定的工作。协议层是一台USB外设能够被主机正确识别和配置,并正常工作的前提。可以说,协议层是一台USB外设的固件(Firmware)中心。
我们知道,数据采样率因采样精度和使用的不同场合而不同,如对于音频应用,就可以采用22.05kHz或44.1kHz的采样率,而这个时钟并不和USB标准时钟对应。因而在实际应用中,为保证采集到的数据无丢失地打包和传送,必须在SIE和数据采集部件(对诸如音箱或打印机等外设则为数据消耗部件)之间设立FIFOs,以便对数据进行缓存。对于采用块传送和同步传送的外设而言,FIFOs的作用显得尤为重要。例如一台采用同步传输的USB数字摄像机(现在市场上有很多这种类型的产品),我们假设它的CCD为400×300像素,那么为保证数据正确地压缩、传输和接收,直到以后的解压缩及处理,在动态采集中,FIFOs至少要存储一帧图像,即要求FIFOs有400×300=12KB的容量。
在USB外设中,用于实现和USB线缆无缝连接的USB传输接收部分(Transreceiver)是必不可少的,它不仅要在电气和物理层面上实现和USB线缆的连接,而且要完成对数据包的差模驱动或分离的操作。
以上我们简述了USB外设接口的硬件组成,那么在完成USB数据传输的过程中,这些硬件又是如何配合工作并和位于主机的软硬件交互,以完成数据传输的呢?
前面已经提到,USB总线采用总线列举的方法来标记和管理外设所处的状态,当一台USB外设初次连接到USB系统中后,通过8个步骤来完成它的初始化:
1.USB外设所连接的HUB(ROOT HUB或扩展HUB)检测到所连接的USB外设并自动通知主机,以及它的端口状态的变化,这时外设还处于禁止(Disab
USB技术精 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)