USB2.0架构详解:从总线拓扑到数据传输
USB2.0架构详解:从总线拓扑到数据传输
USB(Universal Serial Bus)是一种广泛应用于个人电脑和各种外设之间的串行总线标准。USB2.0作为USB标准的重要版本,其架构设计充分考虑了数据传输的效率和设备的兼容性。本文将从总线拓扑、物理接口、健壮性、总线协议、数据流类型、设备特点以及主机硬件和软件等多个维度,全面解析USB2.0的架构特点。
总线拓扑
USB总线采用分层星型拓扑结构,一个USB系统只能有一个主机(Host)。由于时间的限制,USB系统最多可以拓展到7层,其中的集线器(Hub)最多只能级联5层(不包括根集线器)。如图所示,含有Hub的复合设备不能接到第7层。一个USB系统最多支持127个设备。
一个USB主机最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个USB主机最多可以同时支持127个地址。如果一个设备只占用一个地址,那么可最多支持127个USB设备。在实际的USB体系中,如果要连接127个USB设备,必须要使用USB Hub,而USB Hub也是需要占用地址的,所以实际可支持的USB功能设备的数量将小于127。
注:Hub是用来拓展USB接口的设备。
物理接口
USB线缆只需要简单的4线线缆,包括2根电源线和2根数据线。电源电压为5V,可以为设备提供电源,设备本身也可以单独安排电源供电。数据线传输的是差分信号,按速率分为3种:
- 480Mb/s的高速(High-Speed)
- 12Mb/s的全速(Full-Speed)
- 1.5Mb/s的低速(Low-Speed)
健壮性
- USB线上采用差分信号传输数据
- 采用CRC校验数据
- 数据错误重发机制,当数据接收方发现接收到的数据出错了,会要求发送方重新发数据,一包数据最大可发送3次,超过三次,发送方就会将错误报告给上层软件去处理。
总线协议
USB是轮询总线,所有数据传输(Data Transfers)都由主机启动。
大多数总线事务涉及最多三个数据包的传输:
- 主机先发送一个数据包给设备,这个数据包包含数据类型、数据方向、设备地址等信息
- 接收到该数据包的设备根据数据包的内容做出相应处理——接收下一包数据或者向主机发送一包数据
- 接收到数据的主机或者设备向数据发送方发送一包数据,表示数据接收的情况
端点(Endpoint)是USB设备上的数据处理单位。主机发送过来的数据,由端点接收,设备要发送给主机数据,也由端点发送。端点0比较特殊,支持双向,既可以接收,也可以发送,其它端点只能有一个方向。
主机与设备端点(Endpoint)之间的数据传输可以看作是管道(Pipe)模型,这是逻辑上的管道概念,设备上有多个端点,每个端点只能处理规定的数据类型,那么主机就要明确数据是发给哪个端点的,如此主机和每一个端点就有了独立的捆绑关系,在逻辑上类似于在两者之间架设了直连管道传输数据。管道分为流管道(Stream Pipes)和信息管道(Message Pipes)。信息管道(Message Pipes)的数据有规定的格式含义,而流管道(Stream Pipes)没有。
数据流类型(Data Flow Types)
一条管道只能支持一种类型的数据传输,也就是说一个端点只能接受一种类型的数据传输。
USB将数据传输类型分为四种:
- 控制传输(Control Transfers):用于设备连接时的配置处理以及其它管道控制等目的。每个USB设备接入都会使用到该类型传输。
- 批量传输(Bulk Data Transfers):用于大量数据的传输,延迟没有保证。例如打印机、扫描仪都会使用到该类型传输。
- 中断传输(Interrupt Data Transfers):有时间保证的可靠传输。会有延迟,但时间是控制在一定阈值之下的。例如鼠标的使用就涉及到这种类型的数据传输。
- 同步传输(Isochronous Data Transfers):实时传输,数据正确性不保证。一个典型例子就是USB音频设备。
USB将带宽分配给管道,如果设备要求更多的带宽,那设备就需要有更大的空间以便承载数据。
设备特点
每一个设备都有端点0,设备的信息都是通过端口0发送给主机的。设备信息可以分为三类:
- 标准信息:这是所有USB设备都有的一类信息,包括厂商标识、设备类别、电源管理能力、各级描述符。
- 类信息:这个跟标准信息中的设备类别信息相关。
- 厂商信息:USB厂商自定义的内容。
设备主要分为两类:集线类(Hubs)和功能类(Functions),Hub扩展接口数量,Function提供具体功能。
主机硬件和软件
主机是通过主机控制器(Host Controller)和设备通信的,主要做以下几方面的工作:
- 检测设备的插入和移除
- 管理主机和设备之间的控制流
- 管理主机和设备之间的数据流
- 收集状态和活动统计
- 设备供电
系统软件和设备软件的互动有以下几方面:
- 设备枚举和配置
- 同步数据传输
- 异步数据传输
- 电源管理
- 设备和总线管理信息
参考资料:
- Universal Serial Bus Specification Revision 2.0,April 27, 2000