USB2.0之架构简述

发布于:2024-11-03 ⋅ 阅读:(139) ⋅ 点赞:(0)


  一个USB系统可分解为三部分内容——USB主机(host)、USB设备(device)以及两者之间的内在联系(interconnect)。

内在联系包括四方面:

  • 总线拓扑(Bus Topology)
  • 内部层级关系(Inter-layer Relationships)
  • 数据流模型(Data Flow Models)
  • 时间分配(USB Schedule)

总线拓扑

分层星型拓扑

总线拓扑结构
  USB总线是分层星型拓扑结构,一个USB系统只能有1个主机,由于时间的限制,USB系统最多拓展到7层,其中的hub最多只能级联5层(不包括root hub)。如上图所示,含有hub的复合设备不能接到第7层。一个USB系统最多支持127个设备。

一个 USB HOST 最多可以同时支持 128 个地址,地址 0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个 USB HOST 最多可以同时支持 127个地址,如果一个设备只占用一个地址,那么可最多支持 127 个USB设备。在实际的USB体系中,如果要连接127个USB设备,必须要使用USB HUB,而 USB HUB 也是需要占用地的,所以实际可支持的 USB功能设备的数量将小于 127。

注:hub是用来拓展usb接口的设备。
hub

物理接口

USB线缆

usb线缆
  USB只需简单的4线线缆,2根电源线,2根数据线。其中电源电压为5V,可以为设备提供电源,设备本身也可以单独安排电源供电。数据线传输的是差分信号,按速率分为3种:

  • 480Mb/s的高速(high-speed)
  • 12 Mb/s的全速(full-speed)
  • 1.5 Mb/s的低速(low-speed)

健壮性

  • USB线上采用差分信号传输数据
  • 采用CRC校验数据
  • 数据错误重发机制,当数据接收方发现接收到的数据出错了,会要求发送方重新发数据,一包数据最大可发送3次,超过三次,发送方就会将错误报告给上层软件去处理。

总线协议

  USB是轮询总线,所有数据传输(data transfers)都由主机启动。
  大多数总线事务涉及最多三个数据包的传输。1)主机先发送一个数据包给设备,这个数据包包含数据类型、数据方向、设备地址等信息;2)接收到该数据包的设备根据数据包的内容做出相应处理——接收下一包数据或者向主机发送一包数据;3)接收到数据的主机或者设备向数据发送方发送一包数据,表示数据接收的情况。
  端点(Endpoint)是USB设备上的数据处理单位。主机发送过来的数据,由端点接收,设备要发送给主机数据,也由端点发送。端点0比较特殊,支持双向,既可以接收,也可以发送,其它端点只能有一个方向。
  主机与设备端点(Endpoint)之间的数据传输可以看作是管道(Pipe)模型,这是逻辑上的管道概念,设备上有多个端点,每个端点只能处理规定的数据类型,那么主机就要明确数据是发给哪个端点的,如此主机和每一个端点就有了独立的捆绑关系,在逻辑上类似于在两者之间架设了直连管道传输数据。管道分为流管道(Stream Pipes)和信息管道(Message Pipes)。信息管道(Message Pipes)的数据有规定的格式含义,而流管道(Stream Pipes)没有。
USB通信流

数据流类型(Data Flow Types)

一条管道只能支持一种类型的数据传输,也就是说一个端点只能接受一种类型的数据传输。
USB将数据传输类型分为四种:

  • 控制传输(Control Transfers):用于设备连接时的配置处理以及其它管道控制等目的。 每个USB设备接入都会使用到该类型传输。
  • 批量传输(Bulk DataTransfers):用于大量数据的传输,延迟没有保证。 例如打印机、扫描仪都会使用到该类型传输。
  • 中断传输(Interrupt Data Transfers):有时间保证的可靠传输。会有延迟,但时间是控制在一定阈值之下的。例如鼠标的使用就涉及到这种类型的数据传输。
  • 同步传输(Isochronous DataTransfers):实时传输,数据正确性不保证。一个典型例子就是USB音频设备。

USB将带宽分配给管道,如果设备要求更多的带宽,那设备就需要有更大的空间以便承载数据。

设备特点

每一个设备都有端点0,设备的信息都是通过端口0发送给主机的。设备信息可以分为三类:
标准信息:这是所有USB设备都有的一类信息,包括厂商标识、设备类别、电源管理能力、各级描述符。
类信息:这个跟标准信息中的设备类别信息相关。
厂商信息:USB厂商自定义的内容。

设备主要分为两类:集线类(hubs)和功能类(Functions),hub扩展接口数量,function提供具体功能。

桌面环境中的hub

主机硬件和软件

主机是通过主机控制器( Host Controller)和设备通信的,主要做以下几方面的工作:

  1. 检测设备的插入和移除。
  2. 管理主机和设备之间的控制流。
  3. 管理主机和设备之间的数据流。
  4. 收集状态和活动统计。
  5. 设备供电。

系统软件和设备软件的互动有以下几方面:

  1. 设备枚举和配置
  2. 同步数据传输
  3. 异步数据传输
  4. 电源管理
  5. 设备和总线管理信息

参考资料:

  • Universal Serial Bus Specification Revision 2.0 ,April 27, 2000

网站公告

今日签到

点亮在社区的每一天
去签到