一、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-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 接口的数字摄像机、 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 线缆由四根线组成,其中一根是电源线 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-4 USB 线缆
图9-5 高速外设的 USB 线缆和电阻的连接图
图9-6 USB 主机系统的结构及各部分之间的关系 |