USB系统设计

USB系统设计

USB 的设计架构在拓扑上是不对称的,由主机、多个下游 USB 端口以及以分层星形拓扑连接的多个外围设备组成。层中可以包含 额外的 USB 集线器,从而允许分支为最多五层的树形结构。一个 USB主机可以实现多个主机控制器,并且每个主机控制器可以提供 一个或多个USB端口。最多 127 个设备(包括集线器设备(如果存 在))可以连接到单个主机控制器。 USB 设备通过集线器串联链接 。内置于主机控制器中的一个集线器是根集线器。

物理 USB 设备可能由多个称为设备功能的逻辑子设备组成。单 个设备可以提供多种功能,例如,带有内置麦克风(音频设备功能 )的网络摄像头(视频设备功能)。这种器件称为复合器件。另一 种方法是复合设备,其中主机为每个逻辑设备分配一个独特的地址 ,所有逻辑设备都连接到一个内置集线器,该集线器连接到物理 USB 电缆。

示意图:设备内部有多个端点,每个端点都通过逻辑管道连接 到主机控制器。每个管道中的数据沿一个方向流动,尽管进出主机 控制器的数据是混合的。

USB 设备通信基于管道(逻辑通道)。管道是从主机控制器到 逻辑实体的连接,在设备上找到并命名为端点。由于管道与端点一 一对应,因此这些术语有时可以互换使用。一个 USB 设备最多可以 有 32 个端点(16 个输入,16 个输出),但很少有这么多。端点是 由设备在初始化期间(物理连接后称为“枚举”的时 期)定义和编号的,因此相对永久,而管道可以打开和关闭。
 


USB 端点实际上驻留在连接的设备 上:到主机的通道称为管道

 

管道有两种类型:流管道和消息管道。消息管道是双向的,用 于控制传输。消息管道通常用于向设备发出简短的命令和状态响应 ,例如由总线控制管道编号 0 使用。流管道是连接到单向端点的单 向管道,它传输使用同步、中断或批量传输的数据:

• 等时传输:以某种保证的数据速率(通常但不一定是尽 可能快)但可能会丢失数据(例如,实时音频或视频)。
• 中断传输:需要保证快速响应(有限延迟)的设备(例如, 指点设备和键盘)。
• 批量传输:使用所有剩余可用带宽进行大量零星传输,但不 保证带宽或延迟(例如文件传输)。

管道的端点可通过主机在想要启动数据传输会话时发送的 TOKEN 数据包中指定的元组(device_address、 endpoint_number)进行寻址。如果数据传输的方向是从主机到端 点,则主机发送具有所需设备地址和端点号的OUT分组(TOKEN分 组的特化)。如果数据传输的方向是从设备到主机,则主机发送 IN 数据包。如果目的地端点是单向端点,其制造商指定的方向与 TOKEN数据包不匹配(例如,制造商指定的方向是IN,而TOKEN 数据包是OUT数据包),则忽略TOKEN数据包。否则,它被接受并 且数据事务可以开始。另一方面,双向端点接受 IN 和 OUT 数据包 。

端点被分组为接口,每个接口与单个设备功能相关联。端点 0 是一个例外,它用于设备配置,不与任何接口关联。由独立控制的 接口组成的单一设备功能称为复合设备。复合设备仅具有单个设备 地址,因为主机仅将设备地址分配给功能。


计算机正面的两个 USB 标准 A 插 座

 

当 USB 设备首次连接到 USB 主机时,USB 设备枚举过程就会 启动。枚举首先向 USB 设备发送复位信号。 USB 设备的数据速率 在复位信号期间确定。复位后,主机读取USB设备的信息,并为设 备分配一个唯一的7位地址。如果主机支持该设备,则加载与该设备 通信所需的设备驱动程序,并将该设备设置为已配置状态。如果 USB 主机重新启动,则会对所有连接的设备重复枚举过程。

主机控制器将流量引导至设备,因此,如果没有主机控制器的 明确请求,任何 USB 设备都无法在总线上传输任何数据。在 USB 2.0 中,主机控制器通常以循环方式轮询总线的流量。每个 USB 端 口的吞吐量由 USB 端口或连接到该端口的 USB 设备的较慢速度决 定。

高速 USB 2.0 集线器包含称为事务转换器的设备,可在高速 USB 2.0 总线与全速和低速总线之间进行转换。当高速 USB 2.0 集 线器插入高速 USB 主机或集线器时,它会以高速模式运行。然后, USB 集线器使用每个集线器一个事务转换器来创建路由到集线器上 所有全速和低速设备的全速/低速总线,或者使用每个端口一个事务 转换器来创建每个端口的隔离全速/低速总线。集线器上的端口。

由于每个 USB 3.0 主机中有两个独立的控制器,因此无论连接 到该主机的 USB 2.0 或更早版本的设备如何,USB 3.0 设备都会以 USB 3.0 数据速率进行传输和接收。早期设备的操作数据速率以传 统方式设置。