一、集线器不只是“分线器”
USB 集线器(USB Hub)的作用是把一个上行端口扩展为多个下行端口,但它的工作方式与加一根分支线缆完全不同:接入同一集线器的所有设备共享上行链路的带宽——USB 2.0(Hi-Speed)集线器上所有下行设备共享同一条 480 Mbps 链路;USB 3.x 集线器则为 SuperSpeed 与 USB 2.0 提供相互独立的上行通道,两类设备各自分享所属通道的带宽,并可同时工作。集线器本身也占用一个设备地址、并参与端口状态管理与供电分配。理解集线器的内部结构,是排查“插上能用但速度不对”“设备时断时续”“提示供电不足”这类现场问题的前提。
从端口角色看,USB 采用定向连接:集线器朝主机一侧的端口为上行端口(UFP),朝设备一侧的端口为下行端口(DFP)。只有下行端口默认向外供电,这种“分层星形”拓扑可以从结构上避免设备之间的互相馈电与过载。
二、层级拓扑:7 层结构与级联上限
USB 拓扑按“层(tier)”划分:主机上的根端口为第 1 层;第 2 至第 6 层为集线器;第 7 层为终端设备。也就是说,从主机到设备之间最多可以串接 5 级集线器。每一级集线器都会引入转发延迟、信号抖动以及电源压降,规范正是用“最坏情况电压降拓扑”来限定级联层数与线缆长度的组合。
| 层级 | 角色 | 说明 |
|---|---|---|
| 第 1 层 | 根端口 | 主机/主控器提供的端口,拓扑起点 |
| 第 2–6 层 | 集线器 | 最多 5 级级联,每级占用一个设备地址 |
| 第 7 层 | 终端设备 | 功能设备,可为全速/低速/高速或 SuperSpeed |
地址空间同样限制了规模:USB 设备地址为 7 位,可用地址共 127 个,其中地址 0 保留用于设备初始枚举。集线器自身也要占用地址,因此实际能挂接的功能设备数要扣除链路上的集线器数量——挂接 50 个集线器时,理论上剩余可用设备数只有 77 个。工业现场“多串口”“多相机”这类高密度接法,往往先被地址数与带宽预算卡住,而不是端口数量。
三、USB 2.0 集线器的内部结构
一个符合 USB 2.0 规范的集线器内部通常包含几部分:
- 中继器(Repeater):负责物理层的位级转发,并在上行与下行之间建立连接。
- 集线器控制器(Hub Controller):处理描述符、端口状态与主机命令。
- 端口状态机:检测插入/移除、过流等事件。
- 事务翻译器(TT):只有高速集线器才具备,用于在高速链路与全速/低速链路之间承担速率转换(纯全速集线器不需要 TT)。
在正常数据传输过程中,集线器对数据流基本是“透明”的:对于高速直通流量,主机发往设备的数据会被广播到所有下行端口,而设备返回的数据只向上行端口转发;经事务翻译器处理的全速/低速分割事务,则由事务翻译器定向转发到目标端口,并不广播到所有端口。集线器唯一不透明的地方是端口状态变化——每个集线器都有一个“端点 1 IN”的中断端点,用于向主机上报下行端口上的插入或移除事件。主机轮询该中断端点得知有新设备后,命令集线器复位对应端口,被复位的新设备回到地址 0,随后主机为它分配一个新的非零地址并完成枚举。这一过程解释了为什么某些不规范设备在集线器后面枚举失败,而直连主机却正常:复位与枚举时序对链路余量更敏感。
四、事务翻译器:单 TT 与多 TT 的差别
当高速(480 Mbps)集线器上行连接高速主机、下行插着全速(12 Mbps)或低速(1.5 Mbps)设备时,两侧的速率并不匹配。USB 2.0 采用“分割事务(split transaction)”机制解决:由主机控制器发起并发送高速的 start-split / complete-split 事务,事务翻译器负责把这些高速分割事务转换为面向全速/低速设备的事务、在内部缓冲数据,并把完成状态回传给主机。这样主机不必等待慢速事务完成,即可继续发送其他高速事务,低速流量也被隔离到一条“虚拟全速总线”上。
规范允许两种 TT 实现方式,并在设备描述符中明示:
| 实现方式 | bDeviceProtocol | bInterfaceProtocol | 带宽特征 |
|---|---|---|---|
| 单 TT(TT/Hub) | 1 | 1 | 所有全速/低速设备共享同一个 12 Mbps 管道 |
| 多 TT(TT/Port) | 2 | 2 | 每个下行端口拥有独立的 12 Mbps 管道 |
需要特别注意的是,多 TT 集线器默认仍以“单 TT”方式工作,只有当主机的集线器驱动支持并主动选择备用设置 1 之后,才会切换到 TT/Port 模式、启用全部 TT。也就是说,硬件具备多 TT 能力,并不等于实际运行在多 TT 状态。
带宽差异是直接的:每个 TT 大约相当于提供 12 Mbps 的 USB 1.1 级带宽,因此单 TT 集线器在经典速率下的带宽上限约为 12 Mbps,而四端口的多 TT 集线器在带宽上相当于四个独立的全速主控并行工作(这是带宽类比:四路全速流量最终仍共享同一条上行高速链路)。工业现场常见的组合是“一个集线器上挂多个 USB 转串口适配器”或“多个 USB 摄像头/音频设备”,如果这些设备都工作在全速模式,单 TT 集线器会让它们互相争抢同一份 12 Mbps,表现为数据丢包、时延抖动;多 TT 集线器可以显著改善,但前提是主机驱动确实启用了 TT/Port 模式。
五、USB 3.x 集线器:两条并行数据通道
USB 3.x 集线器的内部结构与 2.0 时代有本质区别。它在内部封装了一个完整的 USB 2.0 集线器,同时为 SuperSpeed 增加了一套独立的数据通道:以常见的 USB 3.0 Standard-A / Standard-B 连接器为例,连接器与线缆中增加了 SSTX+、SSTX−、SSRX+、SSRX− 以及一根额外的地线,共 9 根线(部分 Micro 型连接器因保留 ID 引脚可有 10 个触点)。两条通道在集线器内部并行工作,仅端口电源控制逻辑是共用的,因此 SuperSpeed 流量与 480/12/1.5 Mbps 的 USB 2.0 流量可以同时进行——这是 USB 2.0 集线器无法做到的。
另一个关键点是:SuperSpeed 事务不能被“翻译”成 USB 2.0 事务,即不存在面向 SuperSpeed 的事务翻译器。USB 3.x 设备在枚举时会检测全线路上是否存在可用的 SuperSpeed 通路;只要主机端口、设备、中间的每一个集线器和每一段线缆中有一个环节不支持,链路就退回 USB 2.0 速率运行。因此,在 USB 3.x 集线器上插入一个全速/低速设备时,它的数据仍然走内部那条 USB 2.0 通道,并受 480 Mbps 共享带宽的约束。
SuperSpeed 还改用了点对点路由:报文头中包含一个 20 位的“路由字符串(route string)”,由 5 个 4 位字段组成,分别对应各级集线器的下行端口号;集线器在枚举时被分配 0 至 4 的“深度”,深度 0 对应第 2 层,深度 4 对应第 6 层。集线器根据自身深度对应的字段决定把下行报文转发到哪个端口,字段值为 0 表示报文的目标是集线器本身。相比 USB 2.0 的广播式转发,点对点路由减少了无关链路上的流量,也让空闲链路可以进入更低的功耗状态。此外,SuperSpeed 集线器内部具备更深的数据缓冲,可以把多个数据包的确认合并成一个,从而不必为每个包单独等待确认。
六、供电预算:unit load 是一切计算的起点
USB 的供电管理不是看“端口能出多少安”,而是以 unit load(单位负载)为单位分配。规范中各档电流上限如下:
| 规格 | 最大电流 | 电压 | 最大功率 |
|---|---|---|---|
| 低功率设备(USB 2.0) | 100 mA(1 unit load) | 5 V | 0.5 W |
| 低功率设备(USB 3.x) | 150 mA(1 unit load) | 5 V | 0.75 W |
| 高功率设备(USB 2.0) | 500 mA(5 unit loads) | 5 V | 2.5 W |
| 高功率设备(USB 3.x) | 900 mA(6 unit loads) | 5 V | 4.5 W |
| 电池充电规范 BC 1.2 | 1.5 A | 5 V | 7.5 W |
集线器自身的供电方式决定了它能为下游设备提供多少电流:
- 总线供电(bus-powered,被动式):集线器完全依靠上行端口取电。按 USB 2.0 规范,总线供电集线器的下行端口最多只能有 4 个——上行 500 mA 中,100 mA 留给集线器自身,其余 100 mA × 4 分给 4 个端口。更关键的是,规范要求总线供电集线器的每个外部端口无论其他端口的电流需求如何,都只能提供 1 个 unit load(SuperSpeed 通道按 150 mA 的 unit load 计算,兼容的 USB 2.0 通道仍按 100 mA 的 unit load 计算)。当插入的设备在描述符中声明需要更多电流时,操作系统会拒绝为该设备完成配置并给出“供电不足”提示,从而避免触发过流;物理层的过流保护仍由集线器或端口电路完成。
- 自供电(self-powered,主动式):集线器使用独立电源,因此可以为每个下行端口提供完整的 500 mA(USB 2.0)或 900 mA(USB 3.x),也能驱动功耗较高的外设。
- 动态供电(dynamic-powered):可以在两种模式间自动切换。从总线供电切到自供电通常不需要与主机重新协商;反过来则可能触发已申请足够功率的设备复位。
需要注意的是,市场上存在大量不符合规范的集线器:它们对主机虚报为“自供电”,实际仍是总线供电;也有不少设备在描述符中低报自身电流。这类产品虽然常常“能用”,但会显著提高供电类故障的排查难度。工业现场更应避免依赖此类器件,尤其是在机柜内、长期无人值守的部署中。
七、常见问题与排查思路
- 速度明显偏低:先确认从主机到设备的整条链路上是否每一段都支持目标速率。USB 3.x 需要主机、设备、全部集线器与线缆都达标;USB 2.0 高速设备若接在只支持全速的集线器后,会自动退回 12 Mbps。
- 同一集线器上多个低速/全速设备互相影响:典型特征是单设备正常、多设备同时工作时性能骤降,多为单 TT 集线器的带宽共享所致。
- 设备被系统拒绝或提示供电不足:检查集线器是否为总线供电,以及设备描述符声明的最大电流是否超过该端口的 1 个 unit load 保证值。
- 级联较多时枚举失败:超过 5 级集线器级联、线缆过长或线径不足导致的电压降,都可能使靠近链末的设备无法稳定枚举。
- 线缆长度:低速 USB 1.1 设备的线缆长度限制为 3 米,全速/高速链路单段通常限制在 5 米以内。集线器可以充当有源中继器,把链路按段延长;USB 3.0(5 Gbps)使用 26 AWG 铜缆时实际可用长度约为 3 米,更高数据速率(10/20 Gbps)模式下可用长度通常更短,需按具体速率与线规评估。多段延长时应优先保证每一段的信号质量,并注意下游段是否需要外部供电。
八、工业应用中的关注点
- 带宽本质是共享的:多端口扩展方案内部本质上仍是集线器结构,端口越多并不意味着总带宽越大,选型时要按“所有端口同时工作”的峰值需求评估上行链路能力。
- 供电余量按最大负载计算:以“每端口最大电流 × 端口数 + 余量”为原则配置外部电源,避免使用总线供电的级联方式。电压降较大的现场应适当提高电源输出电压或缩短线缆。
- 环境与结构:导轨安装、宽温器件、锁扣式连接器、防尘防振在振动与温变较大的现场更为可靠;连接器一旦锁定,可避免因振动导致的瞬时掉线。
- 电气防护:数据线长距离引出机柜时,应按现场要求考虑 ESD、浪涌与共模干扰防护;对地电位差较大的场合,需评估是否需要隔离方案。
- 拓扑规划:尽量减少级联层数,把功耗较大的设备尽量放在靠近主机的层级,并预留地址与带宽余量,便于后期扩容。
九、小结
USB 集线器在数据面上尽量保持透明,真正的复杂性集中在三处:层级与地址带来的拓扑上限、事务翻译器决定的经典速率带宽分配、以及 unit load 体系约束下的供电预算。USB 3.x 通过“内部封装 USB 2.0 集线器 + 独立的 SuperSpeed 通道 + 点对点路由”在保持向下兼容的同时把速率提升了一个数量级。对工控现场的扩展方案而言,把级联层数、带宽共享和供电余量三件事在选型阶段算清楚,通常就能避免绝大多数“时好时坏”的 USB 故障。