当前位置:文档之家› USB协议

USB协议

USB 协议基础及 S3C2410 USB 控制器
一、USB1.1 概述 USB 是 Universal Serial Bus 的简称。它是一种可以同时处理计算机与具有 USB 接口的多种外设之间通信的电缆总线。这些 连接到计算机上的外设共同分享 USB 的带宽。USB 的分时处理机制真正在硬件的意义上实现了计算机外设的即插即用。 如果留心一下当前市场上的计算机外设,大家会发现采用 USB 设备的产品正在逐渐增加。键盘、鼠标、MODEM、游戏杆、音箱、 扫描仪等,以前插在串行、并行等外部扩展接口上的部件,甚至一些以前要连接到计算机内部扩展槽上的设备,都开始以 USB 接 口的接口出现,USB 设备的发展势头正如日中天。 本章将从技术的角度来探讨一下 USB,有关它的部分请参阅 USB1.1 SPEC(www.usb.org) 的相关文章。 一个基于计算机的 USB 系统可以在系统层次上被分为三个部分:即 USB 主机(USB Host)、USB 器件(USB Device)和 USB 的 连接。 所谓 USB 连接实际上是指一种 USB 器件和 USB 主机进行通信的方法。它包括: (1) 总线的拓扑(由一点分出多点的网络形式):即外设和主机连接的模式。 (2) 各层之间的关系:即组成 USB 系统的各个部分在完成一个特定的 USB 任务时,各自之间的分工与合作。 (3) 数据流动的模式:即 USB 总线的数据传输方式。 (4) USB 的“分时复用”:因为 USB 提供的是一种共享连接方式,因而为了进行资料的同步传输,致使 USB 对资料的传输和 处理必须采用分时处理的机。 USB 的总线拓扑如图 9-1 所示,在 USB 的树形拓扑中,USB 集线器(HUB)处于节点(Node)的中心位置。而每一个功能部件都 和 USB 主机形成唯一的点对点连接,USB 的 HUB 为 USB 的功能部件连接到主机提供了扩展的接口。利用这种树形拓扑,USB 总 线支持最多 127 个 USB 外设同时连接到主计算机系统。
图 9-4 USB 线缆
图 9-5 高速外设的 USB 线缆和电阻的连接图
图 9-6 USB 主机系统的结构及各部分之间的关系 当一个 USB 外设初次接入一个 USB 系统时,主机就会为该 USB 外设分配一个唯一的 USB 地址,并作为该 USB 外 设的唯一标识( USB 系统最多可以分配这样的地址 127 个),这称为 USB 的总线枚举( Bus Enumeration )过程。 USB 使用总线枚举方法在计算机系统运行期间动态检测外设的连接和摘除,并动态地分配 USB 地址,从而在硬件 意义上真正实现“即插即用”和“热插拔”。 在所有的 USB 信道之间动态地分配带宽是 USB 总线的特征之一。当一台 USB 外设在连接( Attached )并配置 ( Configuration )以后,主机即会为该 USB 外设的信道分配 USB 带宽;而当该 USB 外设从 USB 系统中摘除 ( Detached )或是处于挂起( Suspended )状态时,则它所占用的 USB 带宽即会被释放,并为其它的 USB 外设所 分享。这种“分时复用”( Scheduling the USB )的带宽分配机制大大地提高了 USB 带宽利用率。 作为一种先进的总线方式,USB 提供了基于主机的电源管理系统。USB 系统会在一台外设长时间(这个时间一般在 3.0ms 以上)处于非使用状态时自动将该设备挂起( Suspend ),当一台 USB 外设处于挂起状态时, USB 总线通过 USB 线缆为该设备仅仅提供 500μA 以下的电流,并把该外设所占用的 USB 带宽分配给其它的 USB 外设。 USB 的 电源管理机制使它支持如远程唤醒这样的高级特性。当一台外设处于挂起状态( Suspended Mode )时,必须先通过
线缆由四根线组成,其中一根是电源线 VBus,一根是地线 GND,其余两根是用于差动信号传输的资料线( D+,D- )。将数据流 驱动成为差动信号来传输的方法可以有效提高信号的抗干扰能力( EMI )。在资料线末端设置结束电阻的思路是非常巧妙的,以 至对于 HUB 来判别所连接的外设是高速外设或是低速外设,仅仅只需要检测在外设被初次连接时, D+ 或 D- 上的信号是高或 是低即可。因为对于 USB 协议来讲,要求低速外设在其 D-端并联一个 1.5kΩ 的接地电阻,而高速外设则在 D+ 端接同样的电 阻。在加电时,根据低速外设的 D- 线和高速外设的 D+ 线所处的状态, HUB 就很容易判别器件的种类,从而为器件配置不同 的信息。图 9-5 表明了一个典型的高速外设的连接状况。为提高数据传输的可靠性、系统的兼容性及标准化程度, USB 协议对 用于 USB 的线缆提出了较为严格的要求。如用于高速传输的 USB 线缆,其最大长度不应超过 5 米,而用于低速传输的线缆则 最大长度为 2 米,每根资料线的电阻应为标准的 90Ω。 USB 系统可以通过 USB 线缆为其外设提供不高于 +5V 、500mA 的总线电源。那些完全依靠 USB 线缆来提供电源的器件被称为 总线供电器件( Bus-powered device ),而自带电源的器件则被称为自供电外设( Self-powered device )。需要注意的是,当一 个外设初次连接时,器件的配置和分类并不使用外设自带的电源,而是通过 USB 线缆提供的电源来使外设处于上电状态。 无论在软件还是硬件层次上,USB 主机都处于 USB 系统的核心。主机系统(图 9-6)不仅包含了用于和 USB 外设进行通信的 USB 主机控制器及用于连接的 USB 接口(SIE),更重要的是主机系统是 USB 系统软件和 USB 客户软件的载体。 总而言之,USB 主机软件系统可以分为三个部分: 1) 客户软件部分( CSW ),在逻辑上和外设的功能部件部分进行资料的交换 2) USB 系统软件部分(即 HCDI),在逻辑和实际中作为 HCD 和 USBD 之间的接口 3) USB 主机控制器软件部分(即 HCD 和 USBD),用于对外设和主机的所有 USB 有关部分的控制和管理,包括外设的 SIE 部 分、 USB 资料发送接收器( Transreceiver )部分及外设的协议层等。
图 9-1 USB 的总线拓扑示意图 一个 USB 系统仅可以有一个主机,而为 USB 器件连接主机系统提供主机接口的部件被称为 USB 主机控制器。 USB 主机控制器 是一个由硬件、软件和固件( Firmware )组成的复合体。一块具有 USB 接口的主板通常集成了一个称为 ROOT HUB (根集线器) 的部件,它为主机提供一到多个可以连接其它 USB 外设的 USB 扩展接口,我们通常在主板上见到的 USB 接口都是由 ROOT HUB 提供的。 USB 器件可以分为两种:即 USB HUB 和 USB 功能器件(Function Device)。作为 USB 总线的扩展部件,USB HUB(图 9-2)必须满足以 下特征: 1) 为自己和其它外设的连接提供可扩展的下行和上行(Downstream and Upstream)埠。 2) 支持 USB 总线的电源管理机制。 3) 支持总线传输失败的检测和恢复。 4) 可以自动检测下行埠外设的连接和摘除,并向主机报告。 5) 支持低速外设和高速外设的同时连接。 从以上要求出发,USB HUB 在硬件上由两部分组成:HUB 应答器( HUB Repeater )和 HUB 控制器( HUB Controller )。 HUB 应 答器响应主机对 USB 外设的设置,以及对连接到它下行端口的 USB 功能部件的连接和摘除( Attached and Detached )的检测、 分类,并将其端口信息传送给主机,它也负责如“总线传输失败检测”这样的错误处理;而 HUB 控制器则提供主机到 HUB 之间 数据传输的物理机制。如同我们所熟知的大多数计算机外设一样, USB HUB 也有一个用来向主机表明自己身份的“BIOS”系统。 这块位于 USB HUB 上的 ROM,通过 USB 特征字使主机可以配置这个 USB HUB,并监控它的每一个埠。 USB 功能器件即可以为主机系统提供某种功能的 USB 器件,如一个 USB ISDN 的调制解调器、或是一只 USB 接口的数字摄像机、
图 9-7 帧开始资料包在 USB 数据传输中的分布
由此可见,对于一个数据传输率为 12Mbps 的外设而言,它每一帧的长度为 12000bit ;而对于低速外设而言,它每一帧的长度 仅有 1500bit。 USB 总线并不关心外设的数据采集系统及其处理的速率,无论对于怎样的资料产生或是接收,它总是以外设所 事先规定的 USB 标准传输率来传输资料。这就要求外设厂商必须在数据采集或接收系统和 USB 协议系统( SIE )之间,设置大 小合适的先入先出模式( FIFO )来对资料进行缓存。 在 USB 系统中,资料是通过 USB 线缆采用 USB 资料包从主机传送到外设或是从外设传送到主机的。在 USB 协议中,把基Hale Waihona Puke Baidu外 设的资料源和基于主机的资料接收软件(或者方向相反)之间的数据传输模式称为信道或管道( Pipe )。信道分为流模式的信道 ( Stream Pipe )和消息模式的信道( Message Pipe )两种。信道和外设所定义的资料带宽、数据传输模式以及外设的功能部件 的特性(如缓存大小、数据传输的方向等)相关。只要一个 USB 外设一经连接,就会在主机和外设之间建立信道。对于任何的 USB 外设,在它连接到一个 USB 系统中,并被 USB 主机经 USB 线缆加电使其处于上电状态时,都会在 USB 主机和外设的协议层之 间首先建立一个称为 Endpoint 0(端点 0)的消息信道,这个信道又称为控制信道,主要用于外设的配置( Configuration )、 对外设所处状态的检测及控制命令的传送等。信道方式的结构使得 USB 系统支持一个外设拥有多个功能部件(用 Endpoint 0、 Endpoint 1...Endpoint n 这样的方法进行标识),这些功能部件可以同时地、以不同的数据传输方向在同一条 USB 线缆上进行 数据传输而互不影响(图 9-8)。比如一个 USB 的 ISDN MODEM ,就可以同时拥有一个上传的信道和一个下载的信道,并能同
USB 的键盘或鼠标等。
图 9-3 一个典型的 USB 功能器件结构框图 USB 的功能器件作为 USB 外设(USB Function),它必须保持和 USB 协议的完全兼容,并可以响应标准的 USB 操作。同样,用 于表明自己身份的“BIOS”系统对于 USB 外设也是必不可少的,这在 USB 外设上被称为协议层。在物理机制上,一个 USB 外 设可以由四部分构成(见图 9-3): 1) 用于实现和 USB 协议兼容的 SIE 部分。 2) 用于内存件特征字、存储实现外设特殊功能程序及厂家信息的协议层( ROM )。 3) 用于实现外设功能的传感器及对资料进行简单处理的 DSP 部分。 4) 将外设连接到主机或 USB HUB 的接口部分。 根据传输率的不同, USB 器件被分为高速和低速两种。低速外设的标准传输率为 1.5Mbps,而高速外设的标准传输率为 12Mbps。 所有的 USB HUB 都为高速外设,而功能部件则可以根据外设的具体情况设计成不同的传输率,如用于视频、音频传输的外设大 都采用 12Mbps 的传输率,而像键盘、鼠标这样的人机输入设备(HID)则设计成低速外设。由于 USB 的数据传输采用资料包的 形式,因而使得连接到主机的所有的 USB 外设可以同时工作而互不干扰。不幸的是,所有这些 USB 外设必须同时分享 USB 协 议所规定的 USB 带宽(这个带宽在 USB 1.0 协议中为 12Mbps ),虽然 USB 的分时处理机制可以使有限的 USB 带宽在各设备之 间动态地分配,但如果两台以上的高速外设同时使用这样的连接方法,就会使它们都无法享用到最高的 USB 带宽,从而降低了 性能。这也正是 Intel 这样的巨头为什幺要推出 USB 2.0 协议的原因(在 USB 2.0 协议中 USB 的总线带宽一下子被提高到了 480Mbps)。 用于实现外设到主机或 USB HUB 连接的是 USB 线缆( 图 9-4 )。从严格意义上讲, USB 线缆应属于 USB 器件的接口部分。USB
主机使该设备“唤醒”( Resume ),然后才可以执行 USB 操作。 USB 的这种智能电源管理机制,使得它特别适合如笔记本计算机之类的设备的应用。 三、USB 的数据传输模式 我们知道,USB 总线是一种串行总线,即它的资料是一个 bit 一个 bit 来传送的。虽然 USB 总线是把这些 bit 形 式的资料打成资料包来传送,但资料的同步也是必不可少的。 USB 1.0/1.1 协议规定, USB 的标准脉冲时钟为 12MHz ,而其总线时钟为 1ms ,即每隔 1ms ,USB 器件应为 USB 线缆产生一个时钟脉冲序列。这个脉冲序列称 为帧开始资料包( SOF,如图 9-7 所示),主机利用 SOF 来同步 USB 资料的发送和接收。
相关主题