您当前的位置:首页 > 电脑百科 > 硬件技术 > 硬件知识

USB技术浅析

时间:2020-07-30 11:21:10  来源:  作者:

《带你遨游USB世界》中,我们已经初步介绍了USB的整体架构,本文将从以下几个方面继续介绍USB的内容。

  • USB3.0有什么新特性?
  • TYPEC介绍
  • otg识别流程

一、USB3.0

USB是史上定义出的最成功的PC外围互连技术,并且已经迅猛地被引入到CE和Mobile领域。仅仅在2006年,就有超过20亿USB设备出产,而现在已经有超过60亿的USB产品被安装。

而随着技术创新的不断前进,新式设备,媒体格式,以及便宜的大容量存储在不断涌现。他们都要求更高的带宽来维护用户期望的用户体验。高清摄像机将会具有上百GB的存储内容需要迁移到PC端供用户编辑,查看以及打包存储。现有的设备,如数码相机继续创新并增加其容量来容纳更多的非压缩图像。从数码相机里下载上百甚至上千个10MB或者更大的原始图片将会是一个十分耗时的过程,除非传输速率得到提高。此外,用户应用要求在PC和这些不断复杂化的外设之间更高的连接带宽。USB 3.0通过增加更高的传输速率来匹配这些新式应用和设备,从而解决这些需求。

目前市场上有大量在使用的个人电脑只支持USB 2.0。还有USB 2.0外围设备使用数量较多。USB3.0需要保持向后兼容性。从硬件上来看,实际usb3.0和usb2.0已经是两种设备,在A型座的usb口上,我们能明显看到,usb2.0仍旧使用的是GND,D+,D-,VBUS。在3.0中则使用的是一对USB3_TX差分线,USB3_RX差分线,GND,BUS。所以在物理上我们要明确,实际上USB2.0和USB3.0已经不是一个设备。虽然USB3.0仍然延续了大部分2.0的概念。

1.Usb3.0的通讯流程

Usb3.0在框架层级是向后兼容USB 2.0的。在传输的类型上,仍旧是控制传输,中断传输,批量传输,同步传输四种。然而,USB 2.0和超高速协议还是有一些根本性的差异:

1)USB 2.0使用三部分事务交易(令牌,数据和握手),而超高速对这相同的三部分的使用是不相同的。对于输出(OUTs),令牌被列入数据包;而对于输入(INs),令牌则被握手所取代。

2)USB 2.0不支持突发(bursting)而超高速支持连续突发(continuous bursting)。

3)USB 2.0是一个半双工广播(broadcast)总线,而超高速是双重单工(dual-simplex)单播(unicast)总线,这就允许同时进行IN和OUT事务交易。

4)USB 2.0使用轮询模型,而超高速使用异步通知。

5)USB 2.0没有流(Streaming)的能力,而超高速支持对批量端点的流(Streaming)。

我们来看一次IN传输:

主机和设备应遵守传输类型和端点特性的限制。主机通过发送一个确认包(IN)到设备发起一次传输。这个确认包包含了将包路由到预想的端点的寻址信息。主机告诉设备它可以发送的数据包的数量,以及预计从设备接收到的第一个数据包的序列号。作为回应,端点会以适当的序列号发送数据包回主机。确认包还暗含地确认,以前的数据包被成功收到。

请注意,即使主机需要为每个接收到的数据包发送确认包,设备仍然可以发送被请求数量的数据包,而不必等待任何确认包。

超高速输入(IN)事务交易协议中如下图所示。一个超高速总线上的输入(IN)传输由一个或多个IN事务交易组成,并在出现下列任何情况之一时完成:

1)所有的传输数据成功被接收。

2)端点用比端点的最大数据包大小要小的数据包响应。

3)端点回应一个错误。

USB技术浅析

 

Out 传输也类似:

USB技术浅析

 

从上面的模型我们可以看出,相比于usb2.0的轮询式的发包,一方面usb3.0的异步发包模式明显效率提高很多,可以不必等待设备回应,连续发包。另一方面由于usb3.0是点对点的发送数据,所以处在空闲的其他usb设备可以一直保持低功耗状态,直到有数据到来。而在usb2.0的轮询模式上,由于每一个设备都需要对总线上的地址做判断,所以空闲设备无法进入低功耗模式。

2.突发事务

超高速USB协议允许主机连续发送数据到设备,或者从设备连续接收数据,只要设备可以接收或者发送数据。设备在无需中间确认包(intermediate acknowledgement packet)的情况下可以发送或者接收的包的个数,在该端点的端点伴侣描述符(endpoint companion descriptor)中报告。报告端点的maximum burst size多于一个包的端点被认为是支持"突发"事务。

在进行突发传送时,适用于下面的规则:

1)在接收一个确认包之前,一个突发中可以发送的包个数的最大值,被限制为:端点的最大突发的大小【maximum burst size】(和上一个被端点或主机接收到的ACK TP或ERDY的NumP字段值的最小值,减去端点或主机在被上一个ACK TP确认过的包之后已经发送的包的个数。注意,每当端点被初始化时,主机可以重新将能够发送/接收的最大DPs的个数初始化为端点最大突发的大小【maximum burst size】。

2)突发传送中,每一个独立的包应该有数据包负载长度为maximum packet size。只有突发的最后一个包可以小于报告的maximum packet size。如果最后一个小一些,那么对于短包的规则适用于在突发末尾的短包。

3)突发事务只要ACK TP的NumP字段没被设为0并且每个包都有最大包大小的数据负载,就可以继续。

3. 流传输

流传输是bulk中的一种特殊模式,当设备的配置描述符在配置了 MaxStreams后,就代表设备可支持流传输。

USB技术浅析

 

上图代表一个输入批量管道,这里建立起了大量的流(Streams)。在主机内存中与每个流(Stream)相关的是一个或者多个端点缓冲区(Endpoint Buffers)来接收流数据(Stream data)。在设备端,也有一个相应的特定于命令或者功能的数据,会被传输到主机。

当设备有对特定的流可用的数据时(如图中的G),它就用发送ERDY加上CStream ID作为标签,并且主机会开始发送加有CStream ID标签的IN ACK TP到设备。设备会通过返回与CStream ID相关的功能数据,并且也是加上CStream ID为标签。当主机接收到数据,就用CStream ID来选择一组端点缓冲区(Endpoint Buffers)用来接收数据。

当数据被耗尽,设备终结该流。主机也被允许终结流,如果它用完了端点缓冲区的话。流可以被用来,例如,支持大容量设备(mass storage device)所需要的乱序(out-of-order)数据传输。

一个标准的批量端点有单组端点缓冲区(Endpoint Buffers)与之相关联。流扩展了一个端点可以访问的主机缓冲区个数,从1直到65533。在主机缓冲区和Stream ID之间有一个1:1的映射。

由于流是基于一个标准的批量管道运行,一个错误就会让管道暂停(halt),停止所有的活动。

4. 伴侣描述符

USB3.0描述符与USB2.0基本相同,最主要的区别是每个EP描述符后新增了一个伴侣描述符,用以表明上面所说的设备的“突发事务”和“流传输”的能力:

USB技术浅析

 

5.总结

总结来说USB3.0的最主要的新特性有这几种:

  • 总线速度提高到5Gbps(gen2中提高到10Gbps)
  • 异步的传输模式
  • 突发事务,依赖于异步传输的模式,无需等待设备回应
  • 流传输,依赖于突然事务传输,可以多对一的大量传输

这几种新特性使得USB3.0的传输速率远远高于USB2.0

二、TYPEC

Typec是在usb3.0推出后,为了兼容正反插,高功率充电,以及更强的兼容性而推出的新的硬件接口,最主要的特性为

  • USB Power Delivery技术,最高可支持到20V5A的充电
  • 可集成DisplayPort,可外接屏幕与喇叭(例如可以接入hdmi设备)
  • 抗干扰性,可靠性更强

母头如下图所示:

USB技术浅析

 

公头如下图所示:

USB技术浅析

 

可以看到相比于普通的usb3.0 A座,typec多出了一组tx,rx,以及vconn和cc。其中具体使用情况:

1)多出的tx,rx可以在gen1或gen2中做usb多路输出,可实现数据吞吐量翻倍,同时也可以复用为DisplayPort接口,使得typec可以做视频输出

2)vconn为typec有源线缆的e-mark供电,进一步可以识别线材的供电能力

3)cc pin为typec的核心功能,usb的主机和设备端可以通过cc pin通讯,以实现pd,dp以及主从模式的切换等各种功能

目前市面上有多种typec的实现方案,如高通是通过自带的typec phy实现,也有独立的typec芯片方案,如fusb302等,但是流程基本类似。

编码格式:

pd3.0开始使用Biphase Mark Coding (BMC)编码格式,这种编码的特点就是,每一个bit周期开始时电平会切换一次,在这个周期内电平如果不切换则表示bit0,如果电平切换了一次,则代表bit1

USB技术浅析

 

1.Power Delivery

目前市场上pd主要分为两种,一种是pd2.0,这种只提供几个固定的电压电流档位,如常见的5V3A,9V3A,12V3A,15V3A,20V3A。另一种是pd3.0,也就是pps,这种除了提供pd2.0的几个电压档位之外,还会提供一个或多个电压电流可调的档位,如:可调电压范围3V21V,可调电流0A6.3A

其流程大概如下:

USB技术浅析

 

以下作为一个例子:

USB技术浅析

 

2. DisplayPort

如前文中所述,typec拥有4对差分信号,上/下行各2对。USB-IF推出了一个Alternate Mode交替模式,支持将USB Type-C线缆转化为其他用途,而DP交替模式就是第一个应用,它可以将其中一些或者全部差分信号通道转化为DisplayPort信号通道,如果还有剩余的差分信号,则可以继续用于USB 3.1高速数据传输。

有了DP交替模式,USB Type-C的实力将会大增,因为它让平板电脑、笔记本产品通过一个迷你接口实现高速数据传输、视频输出、电力供应等功能,带来类似手机那样的“单接口、多功能”的可能性,这比之前通过USB接口输出视频信号的方案更加强大。

以下作为一个例子:

USB技术浅析

 

三、USB3.0 OTG

在usb2.0时代,为了满足移动设备单usb口既可以为主也可以为从的需求,出现了otg功能。Usb2.0的otg是通过micro或miniusb座子上的第5个id pin上的电平来完成识别,当id pin的电平为高,则为从机,当该电平为低时,则为主机。

我们市面上买的otg线,内部电路就是把id pin与GND线相接,以实现otg线插入后,手机可以作为host端

在usb3.0中,id pin的功能同样被强大的typec所取代,主从的识别将通过cc来识别。同时主从双方也可以通过cc的通讯来切换角色。

在usb2.0中,供电方与受电方和设备的主从关系是绑定的,只有host可以给devices供电。usb3.0中则完全不同,两者完全独立,在做host的同时,依旧可以接受供电。解决了“手机没电时,就无法插usb设备”的问题

同时在硬件上,我们需要明确usb 3.0 otg的组成部分

  • usb控制器

控制器负责将处理通讯中,数据的校验,分发,异常处理等主要工作。在usb2.0中我们有诸如“ehci,uhci,ohci,dwc2”等多个不同的控制器ip。其中ehci是同时兼容usb1.0,usb1.1,usb2.0等功能,而uhci,ohci则只能支持到1.1 。dwc2则是拥有otg功能的控制器

在usb3.0中,控制器则只剩了xhci,与dwc3,同样的dwc3也是拥有otg功能。

  • usb phy

Usb phy主要负责实际的物理信号。将串行的usb数据转换成控制器所需要的数据格式。同时,我们usb信号质量也与phy有关,在一定程度上phy可以改善usb眼图,但主要还是靠usb走线

  • typec phy

与usb phy功能类似,只不过处理的是cc pin上的信号。cc信号也可以用独立的芯片,如fusb302等芯片来处理。

1.EXTCON

External Connectors是usb用于状态通知的驱动,当phy收到中断,处理完usb状态后,通过extcon驱动,广播到已监听该extcon的所有驱动

使用devm_extcon_register_notifier来注册监听usb状态变化

使用devm_extcon_dev_register来注册管理usb的状态变化

以下host的识别作为一个例子:

USB技术浅析

 

2.USB3.0 HOST

Usb3.0相比于usb2.0,在usb core层,驱动并没有太大变化,仍旧与原来的流程相同,usb代码的核心数据结构仍然是URB,URB的使用方法也与原来相同:

USB技术浅析

 

区别在于usb hcd之后的代码,xhci中,核心的数据结构为TRB,每一笔数据以一个trb来做交换,在xhci.c中xhci_urb_enqueue进一步判断数据类型,并对stream id以及burst做判断,并提交到控制器中

3. USB3.0 OTG

(1) ConfigFS

在《带你遨游USB世界》中,我们介绍了Android.c的gadget配置方式,在早期时,linux的gadget驱动都是固定功能,即开机后usb功能就已固定,无法改变。而这样的功能,明显无法满足移动设备对于otg功能的需求,因此android推出了android.c和composite.c的复合功能的gadget驱动。

在此之后,android.c的方式沿用了很久,直到linux更新了新的gadget驱动----configfs子系统,满足了移动端的所有需求。相比于android.c,configfs更加灵活,因此替代了android.c。

在新的linux代码中,configfs基本替代了android.c,因此我们对configfs做一定的介绍

启动流程:

USB技术浅析

 

启动后,上层UsbDeviceManager.JAVA通过setprop sys.usb.config的属性来控制gadget功能,例如:

USB技术浅析

 

这其中每个绑定的功能都应gadget中的一个驱动,如mtp对应drivers/usb/gadget/function/f_mtp.c

(2) OTG枚举流程

流程图如下

USB技术浅析

 

Configfs子系统与控制器之间的数据交换是通过struct usb_request *request结构体,一次完整的流程如下:

USB技术浅析


Tags:USB   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
随着苹果公司的MacBook Pro等新品的不断推出,不知不觉中采用的接口已经从雷雳3升级为雷雳4(Thunderbolt4)了。可能很多人都还一头雾水:雷雳接口到底是什么?外观和功能与USB TYPE...【详细内容】
2021-10-27  Tags: USB  点击:(119)  评论:(0)  加入收藏
有很多的图形化工具可以用来创建临场live USB 驱动器。Linux 上的 Etcher可能是最受欢迎的。为此,Ubuntu 也开发了自己的启动盘创建工具。但是,资深 Linux 用户可能更喜欢使用...【详细内容】
2021-09-16  Tags: USB  点击:(66)  评论:(0)  加入收藏
iPhone 一直使用的是独有的 lightning 接口,对于用户来说已非常习惯。 过去我们曾看到不少消息指出,iPhone 可能会将充电接口改换为 USB-C。 不过,从目前的消息来看,苹果的目标...【详细内容】
2021-08-18  Tags: USB  点击:(143)  评论:(0)  加入收藏
大约 92%的人口拥有至少一台计算机设备?在这些设备中,有几个我们通常不会考虑太多的小型 USB 端口。问题是,如果我们不小心,这些端口会聚集大量灰尘和污垢。如果没有正常工作的...【详细内容】
2021-07-26  Tags: USB  点击:(272)  评论:(0)  加入收藏
“USB4”(官方拼写缺少空格,但我们在本文中使用它来反映读者的搜索方式)于2019年首次发布,并被一些电脑所采用,其中包括苹果新推出的M1驱动的 iMac、基于M1的Macbook和Mac Mini...【详细内容】
2021-04-26  Tags: USB  点击:(193)  评论:(0)  加入收藏
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、...【详细内容】
2021-04-02  Tags: USB  点击:(241)  评论:(0)  加入收藏
主机配置问题呈现:使用主机时,发现USB接口全失效,插入的USB设备都使用不了,特别是USB连接的键盘和鼠标也无法识别使用,只能使用PS/2接口的键盘或鼠标。使用使用PS/2接口的键盘或...【详细内容】
2021-01-12  Tags: USB  点击:(226)  评论:(0)  加入收藏
USB接口首先看一看 USB 的接口,当你看到这些接口时,你应该知道,哦,那是 USB 接口。不然学完了USB,USB 接口都不认识那就很尴尬了。 看到这些接口是不是很熟悉?常用的接口有 Type A...【详细内容】
2021-01-07  Tags: USB  点击:(307)  评论:(0)  加入收藏
对于苹果来说2020年是一个不平凡的一年,首次在秋季召开了3场发布会,发布了一系列重磅的产品,常规升级的Apple Watch以及iPad、外观大改的iPhone 12系列,以及最重要的基于苹果自...【详细内容】
2020-11-13  Tags: USB  点击:(191)  评论:(0)  加入收藏
手机充电器是每个手机的“加油站”,这个是毫不夸张的说法,因为手机每天不管比打电话、接听电话、或者是不打电话也没有接听电话,只要有系统或者安装了APP,手机哪怕是出于待机状...【详细内容】
2020-11-10  Tags: USB  点击:(136)  评论:(0)  加入收藏
▌简易百科推荐
首先我们要弄懂什么是“雷电”接口。其实“雷电”本质上和咱们常见的HDMI,DP等一样是一种传输协议的简称,全程英文名叫做Thunderbolt。请注意与其说他是一个接口倒不如说他是...【详细内容】
2021-12-27  小伊评科技    Tags:雷电接口   点击:(2)  评论:(0)  加入收藏
畅谈关于装修的那些事,分享装修的各种经验和知识。大家好,我是畅谈装修,关注我即可了解更多关于装修的那些事!路由器现在已经是居家生活中“不可缺少的伙伴”,没有了它,相信连饭吃...【详细内容】
2021-12-27  畅谈装修    Tags:路由器   点击:(1)  评论:(0)  加入收藏
此前有关厂商销售的显示器上,HDMI 2.1的标示问题闹得沸沸扬扬。按照官方的说法,HDMI 2.0标准已经不存在了,以后只有HDMI 2.1标准,后者的功能是可选的,显示器制造商只要具体说明该...【详细内容】
2021-12-24  超能网    Tags:HDMI   点击:(8)  评论:(0)  加入收藏
声卡本身会包含一个DAC。DAC字面上直接翻译,就是“数字到模拟转换器”。有时候,人们认为声卡的DAC不够好,所以从声卡的数字输出接口,外接独立的DAC,来改善声音。DAC首选的接口是...【详细内容】
2021-12-10  亲爱的客户    Tags:解码器   点击:(15)  评论:(0)  加入收藏
1.为什么要有虚拟内存 在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。 当运行多个程序时,经常会出现以下问题: 1)进程地址空间...【详细内容】
2021-12-08  linux上的码农    Tags:虚拟地址   点击:(21)  评论:(0)  加入收藏
CPU、GPU、FPGA三者能力相加就是芯片的未来!很多粉丝问我,嵌入式方向中的FPGA怎么样?收入如何?前言讲述FPGA前,我们先讲讲当年中兴被制裁的问题。美国前总统特朗普曾经发布过一条...【详细内容】
2021-12-01  一口Linux    Tags:FPGA   点击:(49)  评论:(0)  加入收藏
现在市面上常用的视频线有HDMI线、VGA线、DP线、DVI线,其中HDMI线是用的比较多的,平时直播也有很多朋友会问HDMI相关的问题,今天小泽总结了一些高频的HDMI使用问题,赶紧收藏! 所...【详细内容】
2021-11-25  SAMZHE山泽    Tags:HDMI线   点击:(32)  评论:(0)  加入收藏
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:殇小辛 apple tv 4K使用近2年了,分享下深度使用体验 整个盒子比想象中小很多,放在电视柜里不占空间,还很好看 遥控器顶部区...【详细内容】
2021-11-09  什么值得买    Tags:Apple TV   点击:(31)  评论:(0)  加入收藏
近年来摩尔定律“失速”,使得中央处理器(CPU)的性能增长边际成本急剧上升。有研究数据表明,现在CPU的性能年化增长率(面积归一化之后)仅有3%左右。然而,人们对计算的需求依然爆发性增长。...【详细内容】
2021-11-05  赵广立  中国科学报  Tags:DPU   点击:(44)  评论:(0)  加入收藏
分享屏幕的分辨率与像素点,让大家更加直观了解显示屏清晰度。 分辩率: 分辩率是液晶显示屏像素点排列的密度,密度排列越高,显示的画面就会越清晰。 举例:2K55寸显示屏,显示尺寸为:1...【详细内容】
2021-11-04  深圳盛诚专显科技    Tags:分辨率   点击:(46)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条