USB技术浅析

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

  • USB3.0有什么新特性?
  • TYPEC介绍
  • otg识别流程
一、USB3.0USB是史上定义出的最成功的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】 。


推荐阅读