一个USB系统采用非对称设计。它是由一台主机、多个下游USB端口和多个外围设备以星型拓扑结构连接而成。层级中可包含额外的USB集线器,允许分支成最多五个层级的树形结构。
一个USB主机可以有多个主机控制器。每个主机控制器提供一个或多个USB端口。一个主机控制器最多可连接127个设备,包括集线器设备。
USB设备是通过集线器串联起来的。总有一个集线器被称为根集线器。根集线器内置在主机控制器中。还有一些特殊的集线器,称为"共享集线器"。这些集线器允许多台计算机访问相同的外围设备。它们通过手动或自动切换PC之间的访问来工作。它们在小型办公室环境中很受欢迎。在网络方面,它们是汇聚而不是分叉的分支。
一个物理USB设备可以有几个逻辑子设备,这些子设备被称为设备功能。一个设备可以提供多种功能,例如,一个网络摄像头(视频设备功能)和一个内置麦克风(音频设备功能)。
USB设备通信是基于管道(逻辑通道)的。管道是指从主机控制器到设备上名为端点的逻辑实体的连接。术语端点有时会被错误地用来指代管道。一个USB设备最多可以有32个活动管道,16个进入主机控制器,16个从控制器出来。
每个端点只能在一个方向上传输数据,要么进入设备,要么离开设备,所以每个管道都是单向的。端点被分组为接口,每个接口与一个设备功能相关联。零端点是一个例外,它用于设备配置,它不与任何接口相关联。
当USB设备首次连接到USB主机时,USB设备枚举过程开始。枚举通过向USB设备发送复位信号开始。在复位信号期间,USB设备的速度由USB设备决定。复位后,主机读取USB设备的信息,然后为该设备分配一个唯一的7位地址。如果主机支持该设备,则加载与该设备通信所需的设备驱动程序,并将该设备设置为配置状态。如果重新启动USB主机,则对所有连接的设备重复枚举过程。
主机控制器会对总线进行流量轮询,通常以循环方式进行,因此,如果没有主机控制器的明确请求,任何USB设备都不能在总线上传输任何数据。
主机控制器
包含主机控制器和根集线器的计算机硬件有一个供程序员使用的接口。它被称为主机控制器设备(HCD),由硬件实现者定义。
对于USB 1.0和1.1,有两种不同的HCD实现,即开放主机控制器接口(OHCI)和通用主机控制器接口(UHCI)。OHCI由康柏、微软和美国国家半导体公司开发,UHCI由英特尔开发。
威盛科技从英特尔那里获得了UHCI标准的授权;所有其他芯片组实施者都使用OHCI。UHCI更多依赖于软件。这意味着UHCI比OHCI的处理器密集度稍高,但制造起来更容易、更便宜。由于有两种不同的实现方式,操作系统厂商和硬件厂商需要在这两种方式上进行开发和测试。这就增加了成本。
USB规范没有规定任何HCD接口,也不涉及这些接口。换句话说,USB定义了通过端口传输数据的格式,但没有定义USB硬件与其所在的计算机进行通信的系统。
在USB 2.0的设计阶段,USB-IF坚持认为只有一种实现。USB 2.0的HCD实现被称为增强型主机控制器接口(EHCI)。只有EHCI可以支持高速(480 Mbit/s)传输。大多数基于PCI的EHCI控制器有其他的HCD实现,称为"伴侣主机控制器",以支持全速(12 Mbit/s),并可用于任何声称是某一类别成员的设备。一个操作系统应该实现所有的设备类别,因此它可以为任何USB设备提供通用的驱动程序。设备类别是由USB实施者论坛的设备工作组决定的。
USB设备类别
设备类别包括:
| 级别 | 使用方法 | 说明 | 例子 |
| 00h | 设备 | 未指定等级0 | 设备类未指定。接口描述符用于确定所需的驱动程序)。) |
| 01h | 介面 | 音频 | 扬声器、麦克风、声卡 |
| 02h | 两者 | 通信和CDC控制 | 以太网适配器、调制解调器、串口适配器 |
| 03h | 介面 | 人机界面设备(HID) | 键盘、鼠标、操纵杆 |
| 05h | 介面 | 物理接口设备(PID) | 力反馈操纵杆 |
| 06h | 介面 | 形象 | 数码相机(大多数相机具有大容量存储功能,可直接访问存储介质)。 |
| 07h | 介面 | 打印机 | 激光打印机、喷墨打印机 |
| 08h | 介面 | 大容量存储 | USB闪存盘、存储卡读卡器、数字音频播放器、外置硬盘。 |
| 09h | 设备 | USB集线器 | 全速轮毂,高速轮毂 |
| 0Ah | 介面 | 疾控中心-数据 | 本类与02h类--通信和CDC控制一起使用。 |
| 0Bh | 介面 | 智能卡 | USB智能卡阅读器 |
| 0Dh | 介面 | 内容安全 | - |
| 0Eh | 介面 | 录像 | 网络摄像头 |
| 0Fh | 介面 | 个人保健 | - |
| DCh | 两者 | 诊断设备 | USB符合性测试设备 |
| E0h | 介面 | 无线控制器 | Wi-Fi适配器,蓝牙适配器 |
| EFh | 两者 | 杂项 | ActiveSync和Palm同步设备 |
| FEh | 介面 | 特定应用 | IrDA桥 |
| FFh | 两者 | 厂商专用 | (该类代码表示设备需要厂商特定的驱动程序。) |
注0类:使用接口描述符中的类信息。定义这个基类是为了在设备描述符中使用,以表明类信息应从设备的接口描述符中确定。