深入理解USB2.0通信协议——框架概述-Anlogic-安路社区-FPGA CPLD-ChipDebug

深入理解USB2.0通信协议——框架概述

导言

USB,全称为Universal Serial Bus(通用串行总线),是一种用于连接计算机及其外部设备的标准接口。USB接口设计的初衷是为了简化计算机与外部设备之间的连接,并提供一种统一、易用的插拔方式。

本章概述了通用串行总线 (USB) 架构和关键概念USB 1.0发布于1996年,速度为1.5 Mbps。USB 1.1是对USB 1.0的升级,提高了速度至12 Mbps。主要用于连接低速和全速设备,如键盘、鼠标和打印机。USB 2.0于2000年发布,速度为480 Mbps。它是对USB 1.1的显著改进,支持更快的数据传输速度。USB 2.0广泛应用于各种设备,包括移动硬盘、摄像头和音频设备。USB 3.0(也称为SuperSpeed USB)于2008年发布,速度为5 Gbps。它引入了超高速传输,适用于需要更快数据传输速度的设备,如外置硬盘和高分辨率摄像头。USB 3.1于2013年发布,有两个版本:USB 3.1 Gen 1和USB 3.1 Gen 2。USB 3.1 Gen 1速度为5 Gbps,与USB 3.0相同。USB 3.1 Gen 2速度为10 Gbps,提供更快的数据传输速度。USB 3.1也引入了新的Type-C连接器,可反向插入。USB 3.2于2017年发布,有两个版本:USB 3.2 Gen 1×1、USB 3.2 Gen 2×1和USB 3.2 Gen 2×2。USB 3.2 Gen 1×1速度为5 Gbps,与USB 3.0和USB 3.1 Gen 1相同。USB 3.2 Gen 2×1速度为10 Gbps,与USB 3.1 Gen 2相同。USB 3.2 Gen 2×2速度为20 Gbps,是USB 3.1 Gen 2的两倍速度。

1USB总线拓扑

  • USB物理互联是分层的星型结构

  • USB拓扑主要两种大结构,枢纽及线段

  • 枢纽即为每一颗星的中间,如图hub,func及roothub

  • 而线段主要是host与hub、func与func、hub与func、hub与hub之间的点对点连接

  • USB拓扑允许的最大层数为七层,其中包括roothub

  • 七层中,host与device(func)通信,最多可经过5个hub

  • 复合设备占两层,如图6,7层所示,因此如果复合设备连接到第七层则无法使用他

usb host

  • 任何USB设备有且仅有一个host(主机)

  • host的usb接口称之为Host Controller(主机控制器)

  • Root Hub(根集线器)是一个特殊类型的USB集线器,直接连接到计算机系统的Host Controller上,可以为host提供一个或多个连接点

    下图是笔记本(host)的usb接口,也就是usb host

usb device

   usb device(设备)分为两种:usb hub(集线器) 和 usb function(功能)

「USB HUB」USB Hub(集线器)是一种用于扩展计算机上USB端口数量的设备。它允许用户连接多个USB设备到计算机,通过将单个USB端口转换为多个端口的方式。以下是USB Hub的简要说明:

功能:USB Hub的主要功能是扩展USB端口。它允许用户通过一个USB端口连接多个USB设备,如打印机、鼠标、键盘、摄像头等,而无需直接插入计算机的主机端口。

物理连接:USB Hub通常有一个或多个“上游”端口,用于连接到计算机的USB端口,以及多个“下游”端口,用于连接USB设备。通过这种连接,USB Hub成为USB总线上的一个节点。

端口数量:USB Hub的端口数量可以根据型号和设计而异。常见的USB Hub有4、7、10、13等多种端口配置,满足用户连接多个设备的需求。

电源:一些USB Hub提供外部电源适配器,以确保足够的电力供应给连接的USB设备。这对于需要更多电力的设备或大量连接的情况特别有用。


自供电和非自供电:USB Hub可以分为自供电和非自供电两种类型。自供电的Hub能够提供足够的电力给连接的设备,而非自供电的Hub则从计算机获取电力。


热插拔:USB Hub通常支持热插拔,这意味着用户可以在计算机运行时插入或拔出USB设备,而无需重新启动计算机。


下图即为USB HUB,可以作为USB的扩展坞,一个USB接口扩展为3个USB接口


「USB FUNCTION」USB Function(USB功能)是指USB设备扮演的角色,与USB主机(Host)进行通信。USB设备可以是各种外部硬件,如打印机、摄像头、键盘、鼠标、移动设备等。以下是USB Function的简要说明:

USB设备角色:USB设备是USB系统中的一个节点,它充当USB系统中的Function角色。与USB主机相对,USB设备是被动的一方,它响应主机的请求,并执行相应的功能。

连接方式:USB设备通过连接到USB主机来实现通信。连接可以是直接插入计算机的USB端口,也可以是通过USB Hub连接到主机。

数据传输:USB设备与主机之间进行数据传输,可以是从设备到主机的数据传输(上传),也可以是从主机到设备的数据传输(下载)。数据传输可以包括文件传输、设备状态信息等。

电源供应:USB设备通常从主机获取电源,这是USB系统的一项特点。这意味着大多数USB设备无需外部电源适配器,从而简化了设备的使用和连接。

热插拔支持:USB设备通常支持热插拔,这允许用户在计算机运行时插入或拔出USB设备,而无需重新启动计算机。这种灵活性使得用户能够方便地连接和断开设备。

设备类别:USB设备可以属于不同的设备类别,如存储设备、音频设备、视频设备等。每个设备类别都定义了特定的通信协议和数据格式。

驱动程序:为了与USB主机进行通信,USB设备通常需要相应的驱动程序。这些驱动程序由设备制造商提供,用于确保设备与计算机系统之间的正确交互。

总体而言,USB Function是USB系统中的被动角色,代表各种外部设备与USB主机进行通信,实现数据传输、电源供应和其他特定功能。USB的灵活性和广泛应用使得各种设备能够方便地与计算机和其他主机设备连接。

2USB总线协议基本特性

总线轮询

USB是一种轮询总线。这意味着USB主机控制器通过定期轮询的方式启动所有数据传输。主机定期发送USB数据包以描述事务类型、传输方向、USB设备地址和端点号。


总线事务起始数据包

大多数总线事务涉及最多三个数据包的传输。每个事务始于主机控制器按计划发送一个USB数据包,该数据包描述了事务的类型和方向,USB设备地址以及端点号。这个数据包称为“令牌数据包”(token packet)。USB设备通过解码适当的地址字段选择自己。


数据传输方向

在给定的事务中,数据可以从主机传输到设备,也可以从设备传输到主机。数据传输方向在令牌数据包中指定。事务源然后发送一个数据数据包或指示它没有数据要传输。目的地通常会用握手数据包响应,指示传输是否成功。


pipe(管道)模型

USB数据传输模型涉及主机上的源或目的地与设备上的端点之间的通信,被称为“pipe”。有两种类型的pipe:stream(流)和message(消息)。流数据没有USB定义的结构,而消息数据有。Pipes还具有数据带宽、传输服务类型和端点特性(如方向性和缓冲区大小)的关联。管道是在USB主机控制器和USB设备之间建立的通信路径。一个管道实际上是一个抽象的概念,它对应于主机和设备之间数据传输的逻辑通道。每个USB管道与一个特定的端点(ep)相关联,并且可以是输入管道、输出管道或双向管道。一旦设备上电,就会存在一个消息管道,即“Default Control Pipe”,用于访问设备的配置、状态和控制信息。


flow control(流控)

事务调度允许对一些流水管道进行流控制。在硬件级别,通过使用NAK握手来调节数据速率,防止缓冲区出现欠流或溢流情况。当事务被NAK时,在总线时间可用时进行重试。流控制机制允许构建灵活的调度,以适应异构流水管道的并发服务。因此,可以在不同的间隔和具有不同大小的数据包的情况下服务多个流水管道。

3USB各术语关系

USB设备(Device)

USB设备是指可以连接到USB总线上的硬件设备,例如打印机、鼠标、键盘等。每个USB设备都有一个唯一的地址,并且可以包含一个或多个接口。

USB接口(Interface)

USB设备可以包含一个或多个接口,每个接口定义了设备的一种功能。例如,一台多功能打印机可能包含一个接口用于打印、另一个接口用于扫描。每个接口都有一个唯一的标识符。

USB端点(Endpoint)

USB端点是在USB接口中定义的用于数据传输的终端。每个USB端点都有一个唯一的地址,并且可以是输入(IN)端点、输出(OUT)端点或双向(BIDIRECTIONAL)端点。端点有不同的类型,如控制(Control)、批量(Bulk)和中断(Interrupt)。

USB功能(Function)

USB功能是指一个USB设备可以提供的特定操作或服务。一个设备可能包含多个功能,每个功能可以由一个或多个接口组成,一个USB功能(Function)可以包含多个端点(Endpoint)。例如,一个多功能打印机可能包含打印功能和扫描功能两个USB功能。

USB管道(Pipe)

USB管道是主机和设备之间进行数据传输的通道。每个USB管道与一个特定的端点相关联,并且可以是输入、输出或双向。USB管道负责控制和管理数据传输的细节。

关系

USB设备包含一个或多个接口,每个接口包含一个或多个端点,而端点通过管道与主机进行通信。功能是设备提供的具体服务,而管道是数据传输的通道。这种层次结构使得USB系统能够支持多种设备和功能,并通过端点和管道提供了细粒度的数据传输控制。