1. UHCI 协议概述

1.1 UHCI 的历史背景

通用主机控制器接口(Universal Host Controller Interface,UHCI)由 Intel 公司在 1996 年提出,是 USB 1.x 时代最早的主机控制器标准之一。其设计目标是以较低的硬件复杂度实现 USB 全速(12 Mbps)和低速(1.5 Mbps)传输,将大部分协议处理负担交由软件(驱动程序)完成,从而降低芯片制造成本。

关键时间节点:
  • 1996 年:Intel 发布 UHCI 规范 v1.0,配合 USB 1.0 标准。
  • 1998 年:USB 1.1 标准发布,UHCI 成为 PC 平台主流全速主机控制器。
  • 2000 年:USB 2.0 标准发布,EHCI 引入高速模式(480 Mbps),UHCI 退居兼容角色。
  • 2008 年之后:xHCI 统一架构逐步取代 UHCI/OHCI/EHCI。

UHCI 的“软件繁、硬件简”哲学与同期 Compaq/微软等主导的 OHCI(Open Host Controller Interface)形成鲜明对比。UHCI 将帧调度、数据拆分/重组、错误重试等逻辑交由驱动层实现,硬件仅提供最基本的 DMA 引擎和寄存器接口。

UHCI 发展时间线 1996 UHCI v1.0 1998 USB 1.1 2000 USB 2.0 2008 xHCI UHCI 在 USB 2.0 时代作为全速/低速兼容控制器与 EHCI 共存 xHCI 最终统一了所有速度等级的控制器接口

1.2 UHCI 在 USB 1.x/2.0 体系中的位置

在 USB 主机控制器体系结构中,UHCI 位于软件栈与物理总线之间,承担以下角色:

  • 链路层管理:负责帧起始包(SOF)生成、帧定时(1 ms 帧周期)、数据包封装/解封装。
  • 传输调度:通过软件维护的帧列表(Frame List)和队列头(Queue Head)描述符,实现等时、中断、控制、批量四种传输类型的轮转调度。
  • DMA 引擎:通过系统总线(PCI/PCIe)直接访问内存中的传输描述符(TD)和数据缓冲区,无需 CPU 逐字节干预。
嵌入式平台注意点:UHCI 在嵌入式系统中通常以 PCI 或 PCIe 端点形式集成在 SoC 中,或通过 FPGA 逻辑实现。其寄存器布局(I/O 映射方式)与 OHCI 的内存映射方式不同,驱动开发时需特别注意基地址获取方式。

UHCI 在 USB 2.0 体系中的典型连接方式如下表所示:

USB 速度 主机控制器 传输速率 UHCI 角色
低速 (Low Speed) UHCI 1.5 Mbps 直接控制
全速 (Full Speed) UHCI 12 Mbps 直接控制
高速 (High Speed) EHCI + UHCI (companion) 480 Mbps 仅兼容全速/低速设备
UHCI 在 USB 2.0 主机控制器体系中的位置 USB 驱动程序栈 (USBD/HCD) EHCI (高速) 480 Mbps UHCI (全速/低速) 12 / 1.5 Mbps OHCI (全速/低速) 12 / 1.5 Mbps USB 2.0 总线 (Root Hub + 物理层) 高速设备 全速设备 低速设备 UHCI 作为 companion 控制器,与 EHCI 共享 Root Hub 端口

1.3 UHCI 与 OHCI / EHCI / xHCI 的对比

四种主机控制器接口在设计哲学、硬件复杂度、调度方式和适用场景上存在显著差异。下表从多个维度进行对比:

对比维度 UHCI OHCI EHCI xHCI
提出者 Intel Compaq / Microsoft / National Semi. Intel Intel
适用速度 全速 (12 Mbps)
低速 (1.5 Mbps)
全速 (12 Mbps)
低速 (1.5 Mbps)
高速 (480 Mbps) 超速 (5/10/20 Gbps)
高速 / 全速 / 低速
硬件复杂度 低(软件承担调度) 中(硬件承担调度) 高 非常高
寄存器访问 I/O 映射 内存映射 内存映射 内存映射
帧周期 1 ms(固定) 1 ms(固定) 125 µs(微帧) 125 µs(微帧)
调度方式 软件通过帧列表 + 队列头 硬件通过端点描述符链表 硬件通过异步/周期列表 硬件通过中断器/传输环
DMA 描述符 传输描述符 (TD) 端点描述符 (ED) + TD iTD / siTD / qTD TRB (Transfer Request Block)
驱动复杂度 高(需实现帧调度) 中 中 低(硬件抽象层完善)
嵌入式平台选型提示:在资源受限的嵌入式系统中,UHCI 的“软件繁”特性意味着 CPU 需要参与更多的协议处理,可能影响实时性。如果系统有充足的硬件加速需求,建议优先考虑集成 xHCI 或 EHCI 的 SoC。但在 FPGA 实现中,UHCI 的逻辑门数最少,适合对成本敏感的场景。

从架构演进角度看,四种控制器的关系可以用以下层次图表示:

UHCI / OHCI / EHCI / xHCI 架构演进对比 UHCI 软件调度 I/O 映射 1 ms 帧 OHCI 硬件调度 内存映射 1 ms 帧 EHCI 高速专用 125 µs 微帧 异步/周期列表 xHCI 统一架构 TRB 描述符 可扩展 关键演进趋势 1. 硬件复杂度递增:UHCI (软) → OHCI (中) → EHCI/xHCI (硬) 2. 调度粒度细化:1 ms 帧 → 125 µs 微帧 → 动态中断器 3. 描述符统一化:TD/ED → qTD → TRB (流式处理)

1.4 本章小结

UHCI 作为 USB 主机控制器接口的早期标准,在 USB 1.x 时代占据主导地位,并在 USB 2.0 时代以 companion 控制器形式继续服务全速/低速设备。其“软件繁、硬件简”的设计哲学降低了硬件成本,但增加了驱动开发复杂度。与 OHCI、EHCI、xHCI 相比,UHCI 在调度方式、寄存器接口、描述符结构等方面均有独特之处,理解这些差异对于嵌入式平台上的驱动移植和 DMA 测试验证至关重要。