USB百科
+ -

USB基础总结

2024-07-10 528 1

USB 历史

通用串行总线 (USB) 是将外围设备连接到主机的标准接口。USB 系统最初是由康柏、数字设备、IBM、英特尔、微软和北方电信等公司设计的,目的是用更简单的架构取代现有的混合连接器系统。

USB 的设计初衷是取代将外围设备连接到主机所需的大量电缆和连接器。USB 的主要目标是使外围设备的添加变得快速而简单。所有 USB 设备都具有一些共同的关键特性,从而实现这一目标。所有 USB 设备在总线上都可以自我识别。所有设备都可热插拔,以实现真正的即插即用功能。此外,一些设备可以从 USB 获得电力,从而无需额外的电源适配器。

为了确保最大程度的互操作性,USB 标准定义了 USB 系统从物理层(机械和电气)到软件层的所有方面。USB 标准由 USB 实施者论坛 (USB-IF) 维护和执行。USB 设备必须通过 USB-IF 合规性测试,才能被视为合规并能够使用 USB 徽标。

USB 1.0 于 1996 年首次推出,但直到 1998 年 USB 1.1 发布后才得到广泛采用。2000 年,USB 2.0 发布,自此成为将设备连接到计算机及其他设备的事实标准。2008 年,USB 规范扩展为 USB 3.0,也称为超[高速] USB。USB 3.0 代表了 USB 底层操作的重大变化。为了简化用户体验,USB 3.0 被设计为即插即用,并向后兼容 USB 2.0。

USB 3.0 规范包含许多重大变化,其中包括:

  • 更高的数据传输速率(高达 5 Gbps)
  • 增加总线功率和电流消耗
  • 改进电源管理
  • 全双工数据通信
  • 链路训练和状态机 (LTSSM)
  • 中断驱动,而不是轮询
  • 流式接口可实现更高效的数据传输

截至 2010 年,USB 标准规定了不同类型的 USB:低速、全速高速和超高速。USB-IF 还发布了其他规范,扩大了 USB 的范围。这些规范包括 On-The-Go (OTG) 和无线 USB。虽然超出了本文档的范围,但可以在 USB-IF 网站上找到有关这些规范的详细信息。

架构概述

USB 是一种主机调度的、基于令牌的串行总线协议。USB 允许在单个 USB 主控制器上连接最多 127 个设备。主机 PC 可以有多个主控制器,这增加了可连接到单台计算机的 USB 设备的最大数量。

设备可以随意连接和断开。主机PC负责根据需要安装和卸载USB设备的驱动程序。

单个 USB 系统由一个 USB 主机和一个或多个 USB 设备组成。系统中还可以有零个或多个 USB 集线器。USB 集线器是一种特殊类型的设备。集线器允许将多个下游设备连接到上游主机或集线器。这样,可以增加物理连接到计算机的设备数量。

USB 设备是连接到主机 PC 的外围设备。USB 设备的功能范围不断增加。设备可以支持一项功能或多项功能。例如,一台多功能打印机通过 USB 连接时可以向主机显示多个设备。它可以显示打印机设备、扫描仪设备、传真设备等。

单个 USB 上的所有设备必须共享总线上可用的带宽。主机 PC 可能有多个总线,每个总线都有自己独立的带宽。大多数情况下,大多数主板上的端口都是成对的,这样每个总线都有两个下游端口。
USB 总线拓扑示例

只能有一个 USB 主机设备。此主机可在单个端口上支持最多 127 个不同的设备。设备层数的上限为 7 层,这意味着最多可以内联连接 5 个集线器。

USB 采用分层星型拓扑结构(图 1)。根层是 USB 主机。所有设备都直接或通过集线器连接到主机。根据 USB 规范,USB 主机最多只能支持七层。

USB 2.0 特定架构

1857134023
图 2:USB 广播
USB 2.0 主机向其下的所有设备广播信息。低速和高速设备只能看到各自速度的流量。全速设备既能看到自己的速度,也能看到低速流量。

USB 2.0 通过单向广播系统工作。当主机发送数据包时,所有下游设备都会看到该流量。如果主机希望与特定设备通信,则必须在令牌数据包中包含该设备的地址。上游流量(来自设备的响应)仅由主机或直接位于主机返回路径上的集线器看到。

但是,在处理速度不同的设备时,需要注意一些事项。低速和高速设备与其他速度的流量是隔离的。它们只能看到与自己速度相同的流量。参考图 2,这意味着设备 H2 可以看到设备 H1 的下行流量(反之亦然)。此外,设备 L1 的下行流量将被 L2 看到(反之亦然)。但是,全速设备可以使用一种称为低速过全速的特殊信令模式,看到与自己速度相同的流量以及低速流量。这意味着,使用标准全速信令,F2 可以看到 F1 的下行流量(反之亦然),并且 F1 和 F2 也都可以通过特殊的低速过全速信令看到 L1 或 L2 的下行流量。

USB 3.0 特定架构

USB 3.0 标志着现有 USB 基础设施发生了重大变化,几乎影响了所有级别的协议。本文将简要介绍 USB 3.0 的主要功能。有关详细信息,请参阅 USB-IF 的 USB 规范。

USB 3.0 物理接口

由于 USB 2.0 差分信号的限制,为了能够支持 5 Gbps 数据通信,物理接口进行了升级。除了正常的 USB 2.0 信号外,USB 3.0 电缆和连接器还具有两对额外的差分信号:一对用于发送,一对用于接收,如图 3所示。
185745761677

图 3:USB 3.0 电缆
USB 3.0 电缆的横截面。图片由 USB Implementers Forum 提供

这两个附加对允许通过 USB 3.0 进行全双工通信。由于原始 USB 2.0 线路保持不变,因此 USB 2.0 通信可以与 USB 3.0 并行进行。

USB 3.0 电源

USB 3.0 的许多关键变化涉及 USB 设备的电源和电源管理。

USB 3.0 电源分配

USB 3.0 增加了 USB 设备可用的电量。对于未配置的设备,可提供 150 mA 的电量,而 USB 2.0 中只有 100 mA 的电量。150 mA 被视为一个单位负载。已配置的设备最多可以吸收 6 个单位负载,即 900 mA,与 USB 2.0 中可用的 500 mA 相比有显著增加。增加的电量允许更多设备通过总线供电。

USB 3.0 电源管理

USB 3.0 提供更好的电源管理设施,以更有效地利用电源并有助于降低总体功耗。

链路级电源管理允许主机或设备启动到较低级别电源状态的转换。共有三种低功耗状态可用,如第 4节所述。

在 USB 3.0 中,不再有定期的设备轮询,并且数据包也不再在总线上广播。现在,在 USB 3.0 中,设备可以在空闲时进入低功耗状态,因为它们不再需要管理这些数据包的接收。

低功耗级别可在设备级别和功能级别配置。设备在空闲时可以暂停全部或部分功能,从而降低功耗。

通过延迟容忍消息传递,设备可以向主机报告其延迟容忍度,从而允许主机系统进入低功耗状态,而不会对总线上的 USB 设备产生负面影响。

USB 3.0 物理层

在 USB 3.0 中,物理层指定了超高速 USB 信号的电气特性——信息如何被扰乱和编码,以及其他层使用的特殊信号序列。

以下是一些特定于 SuperSpeed USB 的新技术的简要概述。

接收器终端

USB 3.0 接收器通过将一个小电阻接地来终止传输线。发送器将检查接收器上的这个终端电阻,以此来检测 USB 3.0 接收器的存在。

数据扰码

物理层使用位扰码来减少线路上的电气干扰问题。但是,发送器可以禁用此功能。

8b/10b 编码

8b/10b 编码将 8 位符号映射到 10 位符号,目的是保持较低的差异,同时继续具有足够的边缘转换以进行时钟恢复。

通过利用 10b 提供的增加的数字空间,可以将差异保持在较低水平。由于所有 8b 值仅占用 10b 数字空间的子集,因此可以使用多个 10b 符号对单个 8b 值进行编码。通常,将使用两个不同的 10b 符号对 8b 值进行编码,其中两个 10b 符号具有不同数量的 1 和 0。选择发送的 10b 符号将最小化线路上现有的差异,目标是实现 1 和 0 的净 50/50 分布。例如,如果一条线路的运行差异为 +2 个 1,则线路上的下一个符号将具有包含更多 0 的位模式。

此外,增加的数字空间允许使用某些控制符号,称为 K 符号,它们不映射到任何 8b 数据值。USB 3.0 将这些控制符号用于多种用途,包括:数据包成帧、弹性缓冲区缓解和数据扰频器控制。

训练序列

为了适应所有制造的发射器、电缆和连接器的各种信号特性,超高速接收器必须在连接到发射器时进行训练。此训练序列有助于配置接收器均衡、极性和数据扰频器,以建立成功的通信链路。

扩频时钟

超高速 USB 在其信号传输中采用扩频时钟。这样做的好处是,扩频时钟不会将所有能量都辐射到高电平的小频带中,而是将其能量分散到稍大的频带中,从而降低任何特定频率的峰值电平。这样做是为了满足 EMC 法规。

低频周期信号 (LFPS)

LFPS 信号是在普通超高速数据线上以较低频率(10-50 MHz 而不是 5 Gbps)发送的边带通信。此边带有助于管理两个端口之间链路上总线上的信号启动和低功耗管理。

弹性缓冲装置

USB 3.0 设备不共享完全相同的时钟源。因此,它们必须能够容忍发射器和接收器上的参考时钟之间的微小差异。为了补偿这种差异,接收器实现了弹性缓冲区,根据收到 SKP 有序集时的缓冲区状态,添加或丢弃“虚拟”数据(称为 SKP 有序集)。

USB 3.0 链路层

链路层负责在主机和设备之间建立和维护可靠的通道。此层有许多关键概念:

链接命令

链路命令用于确保数据包的成功传输、链路流控制和链路电源管理。

链路训练和状态机 (LTSSM)

LTSSM 是一个定义链路连接和链路电源管理的状态机。LTSSM 包含 12 种状态:4 种操作链路状态(U0、U1、U2、U3)、4 种链路初始化和训练状态(Rx.Detect、轮询、恢复、热复位)、2 种链路测试状态(环回和合规模式)、SS.Inactive(USB 3.0 无法操作的链路错误状态)和 SS.Disabled(超高速总线被禁用并仅作为 USB 2.0 运行)。图 4列出了 LTSSM 的所有状态,并定义了链路在状态之间的转换方式。
185849556677

图 4:LTSSM 状态机
链路训练和状态机 (LTSSM) 是 USB 3.0 链路层的核心,定义链路连接和链路电源管理状态和转换。图片由 USB 实施者论坛提供

为了使 USB 3.0 设备进入 U0 操作链路状态,必须对链路进行训练,以便同步主机和设备之间的发射器和接收器。

关键 LTSSM 链接状态:

Rx.检测

这是初始通电状态,其中发送器检查接收器终端是否正确,以确定其超高速伙伴是否存在于总线上。检测到终端后,即可开始链路训练。

轮询

在轮询状态期间,两个链路伙伴训练链路以同步它们的通信,为数据传输做准备。

U0

这是正常运行状态,其中启用超高速信号并且发送和接收 5Gb 数据包。

U1、U2、U3

这些是低功耗状态,其中不传输任何 5Gb 数据包。U1、U2 和 U3 唤醒 U0 的时间越来越长,因此允许发送器进入越来越深的睡眠状态。

USB 3.0 协议层

USB 3.0 协议层管理设备之间的数据流,并指定如何使用不同的数据包结构。

原文转自:https://www.totalphase.com/support/articles/200349256-usb-background

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB 设置特性请求SetFeature
ID请求码说明3SET_FEATURE用来启用或激活命令接收者的某些特性SetFeature请求用于设置或使能USB设备、接口或端点的特性值,和CLEAR_FEATURE请求相对应。SetFeature请求同样没有数据阶段。bmRequestType(1)b......
USB音箱 工作抓包分析
USB音响打开Length Phase Data -------- ----- ------------------------------ -------------- CTL ......
USB传输过程中的延迟
USB传输过程中的延迟可分为包间延迟、USB线缆上的延迟和USB集线器延迟。在数据传输时,USB主机和USB设备能够计算整个数据传输时间,这个数据传输的时间由发送方发数据信息包结束时开始计算,直到接收到接收方的应答信号为止。USB包间延迟USB数据传输的包间延迟只存在于一个USB数据流管理中的各......
USB3.2超高速兼容USB2.0数据收发的双总线架构
超高速USB体系和以前的USB版本的功能一致,都是通过USB线缆将USB主机USB外设相连,进行数据交互的。所与连接到该条USB总线上的所有设备在主机控制器协调下,共享带宽。USB总线允许外部设备被接入(attached),配置,使用或移除。USB3.2是双总线架构,其中一条总线用于向后兼容USB2......
USB超高速3.0协议与USB2.0协议的差异
超高速在框架层级是向后兼容 USB 2.0 的。然而, USB 2.0 和超高速协议还是有一些根本性的差异:USB 2.0 使用三部分事务交易(令牌,数据和握手),而超高速对这相同的三部分的使用是不相同的。对于输(OUTs),令牌被列入数据包;而对于输入(INs),令牌则被握手所取代。USB 2.0......
linux下UsbMon-WireShark之USB协议抓取分析
usbmon配置使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko :make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- CONFIG_USB_MON=m M=./drivers/usb/ ......
USB 2.0 协议中J、K、SE0状态的定义
USB 2.0协议中经常会看到以下术语:Chirp K、KJ序列、SE0。这里的状态是根据低速、全速/高速下设备D+和D-上不同的电平信号来决定的。1、J态、K态、SE0,SE1信号转换状态状态Low speed (D+ pull-up)Low speed (D− pull-up)......
USB 设置描述符SetDescriptor
ID请求码说明7SET_DESCRIPTOR修改设备中有关的描述符,或者增加新的描述符SetDescriptoret用于设置USB的描述符,在SetDescriptor请求的数据阶段,主机将向USB设备发送指定的描述符类型 。bmRequestType(1)bRequest(1)wValue(2)w......
USB3.0硬件编码格式-8B/10B编码
1.编码技术基础理论 在高速的串行数据传输中,传送的数据被编码成自同步的数据流,就是将数据和时钟组合成单一的信号进行传送,使得接收方能容易准确地将数据和时钟分离,而且要达到令人满意的误码率,其关键技术在于串行传输中数据的编码方法。 目前, 高速接口正在被广泛应用于包括 SATA、 SAS、 高速......
USB超高速 超高速端点伴随描述符
在接口中描述的每个超高速端点都紧跟着一个超高速端点伴侣描述符( EndpointCompanion descriptor)。这个描述符包含只给超高速端点定义的附加端点特性。这个描述符总是 作 为 配 置 描 述 符 信 息 的 一 部 分 在GetDescriptor(Configuration) ......
为什么我的USB设备如U盘从一个端口换到另一个端口会重新安装驱动?
在 Windows 2000和更高版本的操作系统中,当 USB 设备从一个端口移到另一个端口时,将创建一个新的物理设备对象 (PDO)。 如果硬件报告了唯一的 USB 序列号,则不会创建新的 PDO。若要重复使用同一 PDO 并确保设备不会改变,无论设备是否已重新插入相同的端口或新端口,硬件供应商必......
USB-UAC麦克风 音频控制接口
音频控制接口描述符描述了设备的结构(拓扑结构),并通过特定类请求对音频的控制。UAC麦克风 音频控制接口描述符偏移地址字段长度值描述0bLength10x09接口描术符的长度1bDescriptorType10x04描述符的类型接口描述符2bInterfaceNumber10x00接口ID号3bA......
USB与其它总线相比的优点是什么
USB 的设备可以接在 PC 上的任意的 USB 接口上. 而使用 Hub 还可以扩展使更多的USB设备连接到系统中 USB的Hub 有一个上行的端口(到host) 有多个的下行端口(连接其它的设备). 从而可以使整个的系统可以扩展的连接 127 个外设. 其中 Hub 也算外设.对于US 系统来说......
USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
站内大事
2018年9月,开始筹建,初始为个人博客。2019年11月,网站进行版本更新,并修改站名为字节流, 交将原来个人博客的技术文章重新编辑并入。2019年11月,增加【C/C++技巧】,此为本人原来在公司内部的技术培训内容。2019年11月,增加【NTFS文件系统】和【FAT文件系统】,此为本人原来为公......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!