果壳中的USB(2)硬件

连接器

设备连接主机的方式叫做上行连接(Upstream ),相应地主机连接设备的方式叫做下行连接(Downstream )。上/下行连接器在物理上不可互连②,从而消除了集线器(例如下行端口连接下行端口)上的非法的回环(Loopback )连接。常见的连接器有两种类型,分别称为 A 型和 B 型,如下所示:

Type A USB Connector
Type B USB Connector

Type A 插头始终面向上行,该接口通常位于主机和集线器上。例如,在计算机的主板和集线器上经常出现。Type B 插头始终面向下行,因此在设备上可以看到。

有趣的是,在某些计算机商店中可以看到 Type A 到 Type A 的直连电缆以及一系列 USB 公/母头转换器。这不符合 USB 规范。Type A 插头连接 Type A 插头唯一的设备是桥接器,桥接器用于将两台计算机连接在一起。其他禁止使用的线缆是 USB 扩展器,其一端有一个插头(Type A 或 Type B),另一端有一个插座。 这些电缆违反了 USB 规范对线缆的长度要求。

USB 2.0 的勘误表中引入了 mini-usb B 连接器。有关这些连接器的详细信息,请参见 Mini-B 连接器工程变更通知( Mini-B Connector Engineering Change Notice)。微型连接器产生的原因是基于一系列电子设备的微型化,例如手机和管理器。目前的 Type B 连接器体积太大,无法轻松集成到这些设备中。

最近刚刚发布了 OTG(On-The-Go)规范,该规范为 USB 添加了设备间的直连功能。这项功能将 USB 主机引入了移动电话和电子记事本,从而包含了针对 mini-A 插头、mini-A 插座 和 mini-AB 插座的规范。我想这些微型 USB 线缆和一系列标准的微型转换器线缆很快会随处可见。

图1 USB 线缆功能定义

USB 线缆使用标准的颜色,从而使制造商之间的线缆功能更加容易识别。标准规定了线缆的各种电气参数。阅读 USB 1.0规范中包含的这部分内容的原始信息将会很有趣。它指定了电气属性,但是第 6.3.1.2 节建议 USB 线缆的包覆层推荐的颜色应该是霜白色——太无聊了!USB 1.1 和 USB 2.0 放宽了要求,建议使用黑色,灰色或自然色。

PCB 设计人员请参考第 6 章中关于标准丝印和引脚排列的规范说明。

电气特性

如果您不是 USB 设备/收发器或 USB 主机/集线器的芯片设计人员,那么对第 7 章关于 USB 电气特性的章节无需太多了解。这里我们简要介绍下要点。

如前所述,USB 使用差分信号来传输数据。它使用 NRZI 进行编码,并进行位填充以确保数据流中有足够的间隔(transition)。在低速和全速设备上,通过将 D+ 拉至 2.8V 以上(同时连接一个拉至地的 15K 欧姆)和 将 D- 降至 0.3V 以下(同时连接一个拉至 3.6V 的 1.5K 的电阻)来传输一位差分“1”,反之,使用相同的下拉电阻/上拉电阻组合,通过将 D+ 降至 0.3V 一下和 D- 拉至 2.8V 以上传输一位差分“0”

接收器将差分“1” 定义为:D+ 高于 D-  200mV,将差分“0” 定义为:D+ 低于 D-  200mV。总线的速度不同,信号的极性会反转。因此,术语 “J” 和 “K” 状态用于表示逻辑电平。在低速时,“J” 状态是差分 0,在高速时,“J” 状态是差分 1。

USB 收发器同时具有差分和单端输出。某些总线状态由 D+,D- 或两者同时表示的单端信号指示。例如,保持时间超过 10ms 的单端 zero 或 SE0 被用于通知设备复位(reset)。SE0 信号通过将 D- 和 D+ 都保持在低电平(<0.3V)产生。如果要使用收发器和 FPGA 作为 USB 设备,单端和差分输出很重要,因为您不能仅对差分输出进行采样。

低速/全速总线的特性阻抗为 90 欧姆(+/- 15%),为 D+ 和 D- 选择阻抗匹配串联电阻时,请务必遵守数据手册。任何一份好的 datasheet 都应指定这些值和容差范围。

高速(480 Mb/s)模式使用 17.78mA 的恒定电流进行信号传输以减少噪声③。

如何区分不同的速率

USB 设备必须通过将 D+ 或 D- 线拉高至 3.3V 来标识其速度。全速设备(如下图所示)通过将上拉电阻连接到 D+ 来标识。这个上拉电阻还被主机或集线器用来检测其端口上是否有设备接入。对于没有上拉电阻的情况,总线认为没有任何设备接入自己。一些设备芯片中内置了该电阻,由固件控制将其打开和关闭;否则则需要配置一个外部电阻。

例如,飞利浦半导体有一项叫做 SoftConnectTM 技术。首次连接到总线时,SoftConnectTM 技术允许微控制器在启用上拉速度识别电阻之前初始化 USB 功能设备,用于表明设备已连接到总线。一旦上拉电阻连接到 Vbus,则表明插头插入后便已将设备连接至总线。然后,主机会尝试复位设备,请求描述符——此时微处理器还没有开始初始化 USB 功能设备(usb function device)。

图2 : 全速设备——上拉电阻接 D+
 
图3 : 低速设备——上拉电阻接 D-
 
想必您注意到了,我们还没有提到高速模式速度识别的方法。高速设备将以全速设备(1.5k 至 3.3V)连接的方式来启动。连接成功后,它将在复位期间进行一次高速啁啾(周纠)④,并在集线器支持高速模式的情况下和集线器建立高速连接。如果设备工作在高速模式下,则将上拉电阻移除以平衡线路。

对于兼容 USB 2.0 的设备,没有要求其必须支持高速模式。如果产品对通信速度没有太大需求,则不必支持高速模式,这将可以生产更便宜的设备。如果速度要求不严格,则对于不需要全速模式的低速 USB 1.1 设备也是同样的道理。

A USB 2.0 compliant downstream facing device (Hub or Host) must support all three modes, high speed, full speed and low speed.

但是,高速设备一定不能支持低速模式。它应仅支持全速模式用于初次连接,后续协商成功则支持高速模式。兼容 USB 2.0 的、面向下行的设备(如集线器或主机)必须支持高速、全速和低速三种模式

供电(VBUS)

USB 的优点之一是总线供电——设备从总线处获得电源,而不需要外部插头或其他线缆供电。 但是,许多人在没有充分考虑所有必要标准的情况下就欣然接纳了此选项。

USB 设备在配置描述符中指定了以 2mA 单位表示的功耗,我们将在后面详细介绍。即使设备失去了外部电源,其功耗也无法超过枚举期间指定的功耗。 USB 功能分为三类:

  • 低功率总线供电(Low-power bus powered)功能
  • 高功率总线供电(Low-power bus powered)功能
  • 自供电(Self-powered)功能

低功率总线供电功能的所有功率都从 VBUS 获取,并且最多只能吸收一个单位负载。USB 规范将单位负载定义为 100mA。低功率总线供电功能必须设计为在低至 4.40V、高至 5.25V(在设备的上行插头上测得的 VBUS 电压)范围内都可以工作。对于许多 3.3V 供电得设备,必须使用 LDO 稳压器。

高功率总线供电功能的所有功率都从总线(Bus)获取,并且在配置完成之前不能吸收一个以上的单位负载;配置完成后,如果描述符中有更多功率的要求,则可以消耗 5 个单位负载(最大500mA)。高功率总线功能比须能够在最低 4.40V 电压下进行检测并枚举。在全负载情况下运行时,最低 VBUS 为4.75 V,最高为 5.25V。同上述一样,VBUS 电压在设备的上行插头上测得。

自供电功能可以从总线上获取最多 1 个单位负载,并从外部电源获取其余功率。如果该外部电源发生故障,则必须具有适当的方法从总线上提取不超过1个单位负载。自供电功能的设计更易于符合设计规范,因为功耗相关的问题不大。1 单元总线供电的负载允许在不施加主电源或二级电源的情况下检测和枚举设备。

无论是总线供电还是自供电的 USB 设备都无法驱动其上行端口上的 VBUS。如果 VBUS 丢失,设备将有 10 秒钟的时间,以从用于速度识别的 D+ / D- 的上拉电阻上断开电源。

关于 VBUS 其他需要考虑的是必须限制浪涌电流。USB 规范第 7.2.4.1 节对此进行了概述,但常常被忽略。浪涌电流是导致设备上 VBUS 与 GND 之间的电容量升高的原因。因此,规范规定了设备上的最大去耦电容为 10uF。在电流流过感应 USB 线缆后断开设备时,电缆的开口端可能会产生较大的反激电压。为了避免这种情况,规定了最小 1uF 的 VBUS 去耦电容。 

对于典型的总线供电设备,它汲取的电流不能超过 500mA,这也是合乎规范的。至于复杂的是什么? 也许是挂起模式(Suspend Mode)?

挂起模式(Suspend Mode)

挂起模式在所有设备上都是强制的、必需的。在挂起期间,其他约束将生效。最大挂起电流与单位负载成正比。对于1单位负载的设备(默认),最大挂起电流为500uA,这包括来自总线上拉电阻的电流。在集线器上,D- 和 D+ 均具有 15K 欧姆的下拉电阻。考虑到功耗,器件上的下拉电阻与 1.5K 欧姆上拉串联,在典型的 3.3v VTERM 的情况下,总负载为16.5K欧姆。因此,该电阻就吸收了 200uA 电流。

对于许多设备来说,另一个考虑的因素是 3.3V 稳压器。许多 USB 设备工作在电压是 3.3V,以 PDIUSBD11 为例。在平均静态电流约为 600uA 的情况下,线性稳压器的效率通常很低,因此需要更高效、那么价格相应就会更高的稳压器。大多数情况下,您还必须降低或停止微控制器的时钟,这样才能将其挂起电流限制在 500uA 内。

许多开发人员询问 USB-IF(USB Implementor's Forum)超过此限制会带来什么并发问题?这种担心是可以理解的,因为大多数主机和集线器都无法检测小到这种程度的过载。如果消耗 5mA 甚至 10mA 的电流,您还是可以的做到这一点的,但是要知道,这么做您的设备就违反了 USB 规范。在正常操作中,如果您试图超过 100mA 或使用您自定义的允许负载,则出于总线完整性的考虑,请集线器或主机检测到此情况并断开设备的连接。

当然,如果您设计自供电设备,以上这些设计问题就不复存在了。挂起电流对于台式机可能不是太大的问题,但是随着 OTG 规范的引入,我们开始看到 USB 主机内置在了手机和移动处理器中。这些设备中 USB 的功耗会对电池的使用寿命产生不利影响。

进入挂起模式

USB设备进入挂起状态的条件:总线上超过 3.0ms 没有任何活动。然后它有 7ms 的时间来关闭设备,并且不能汲取超过规范中指定的电流,这就意味着必须在总线活动停止后 10ms 内从总线上提取额定挂起电流。为了保持与挂起的集线器或主机的连接,该器件在挂起期间仍必须为其上拉的用于速率选择的电阻供电。

USB 具有 SOF(start of frame)数据包或保活数据包(keep alive),定期在总线上发送,用来防止空闲总线在没有数据的情况下进入挂起模式。

  • 高速总线发送微帧(micro-frames),周期:125.0 µs ± 62.5 ns.
  • 全速总线发生帧(frame),周期:1.000 ms ±500 ns.
  • 低速总线发送保活数据包,即 EOP (End of Packet) ,周期:1ms(不存在低速数据时候)
 

当整个 USB 总线共同进入挂起模式时,使用术语“全局挂起”描述该状态。另外,可以通过向集线器发送一个该设备已连接的命令来挂起某个选定的设备,这称为“选择性挂起”。

当设备收到任何非空闲信号时,它将被唤醒。如果设备启用了远程唤醒⑤,则它可能会向主机发出信号以从挂起状态唤醒。

 

数据信号速率(Data Signalling Rate)

另一个经常被忽视的是 USB 时钟的容差,该内容在USB规范的 7.1.11 节中有指定。

  • 高速数据的时钟频率为 480.00 Mb/s,数据信号容差为 ±500ppm。
  • 全速数据的时钟频率为12.000 Mb/s,数据信号容差为 ±0.25% 或 2500ppm。
  • 低速数据的时钟频率为1.50 Mb/s,数据信号容差为 ±1.5% 或 15,000ppm。

有了这项规定,低速设备就可以用谐振器代替成本较高的时钟器件,进而降低成本,同时这也杜绝了全速或高速设备之外这么做的可能。

 

附录

②注:USB 的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。为了在物理上区分主机和设备, 使用了不同的插头和插座。
③注:USB 的低速和全速模式中,采用的是电压传输模式。而在高速模式下,则是电流传输模式。
⑥USB 主机是如何检测 USB 设备的插入和拨出的?答:USB 集线器端口的两根信号线 D+ 和 D- 的每一根都有 15kΩ 的下拉电阻,而在设备端,在 D+  D-上接了1.5kΩ的上拉电阻,当未插入设备时,即集线器的端口悬空时,两根信号线都被下拉电阻拉到了低电平。当 USB 设备插入时,由于上拉电阻的存在,由 1.5K 的上拉电阻和 15K 的下拉电阻分压,只要信号线中有一根被拉到了高电平,集线器检测到这个状态后,它就报告给 USB 主控制器(或者通过它上一层的集线器报告给 USB 主控制器),这样就检测到设备的插入了。对于全速和高速设备,上拉电阻是接在 D+ 上的,而低速设备则是上拉电阻接在 D- 上的,集线器通过判断哪根线被拉高来区分是低速设备还是全速和高速设备。USB高速设备先是被识别为全速设备,然后通过主机和设备两者之间的数据通讯进一步确认,再切换到高速模式的。在高速模式下,是电流传输模式,这时会将D+上的上拉电阻断开。当USB主机检测设备的插入后,主机将会向设备发出一系列枚举请求,设备作出正确响应来完成USB设备枚举过程。
原文地址:https://www.cnblogs.com/rockyching2009/p/13875075.html