UTMI及USB 2.0 PHY高速传输特性分析

作者:残心秀士

转自:http://www.52rd.com/Blog/Detail_RD.Blog_swordlife_17643.html


转载信息来源于网上,再次作为研发信息记录

 

1. 概述

USB2.0利用传输时序的缩短(微帧125us)以及相关的传输技术,将整个传输速度从原来的12Mbps提高到480Mbps,提高了40倍的带宽,为开发高宽带USB接口产品提供条件。USB2.0支持USB1.1的全速(Full Speed)和低速(Low Speed)工作环境,其电气特性在其他文献中有描述[6],这里主要介绍USB2.0高速设备的电气特性以及相关的UTMI接口规范。UTMI全称为 USB2.0 Transceiver Macrocell Interface,此协议是针对USB2.0的信号特点进行定义的,分为8位或16位数据接口。目的是为了减少开发商的工作量,缩短产品的设计周期,降低风险。此接口模块主要是处理物理底层的USB协议及信号,可与SIE整合设计成一专用ASIC芯片,也可独立作为PHY的收发器芯片,下以8位接口为例介绍PHY的工作原理及设计特点。

2. UTMI主要功能及原理

首先,为保证兼容性,PHY应该支持全速和高速工作模式。为此高速集线器(Root Hub或Hub)

需要能够检测设备是高速端口还是全速端口,以作相应的速度模式进行工作。因此,信号接口须实现以下功能:

l 不同速率接口之间的动态传输

l 高速设备检测(HighSpeed Detection Handshake)

l 高速设备断开检测(HS_Disconnect)

l 能传输高速/全速差分信号(要求阻抗匹配)

l 发送和检测高速包开始信号(SYNC)

l 发送和检测高速包结束信号(EOP)

l NRZI编码和位填充(Bit Stuff / Bit Unstuff)

l 支持挂起和复位的操作

图1 USB2.0 PHY 功能模块描述框图

图1描述了UTMI各个功能模块,其工作原理如下:PHY从其他转态(如上电、重启或挂起)转换成工作状态后,首先进行高速设备的连接检测(HS Detection Handshake)(后面再详细叙述),检测完毕后切换成相应的工作模式,然后等待主机和设备进行传输数据流。当接收器在USB数据线D+和D-检测到由主机发送到设备的信号时,首先对信号进行时钟恢复,得到正确同步信号后再送进缓冲区,通过NRZI解码及位反填充后,把串行信号转换成并行信号,最后送到设备SIE进行处理。反之,当设备端的SIE需要发送数据包时,UTMI将按照相反的顺序把已编译好的NRZI串行数据流通过发送器传输给主机。为了降低功耗,UTMI支持挂起功能,其工作状态如图2所示。

图2 UTMI工作状态转换的流程图

3. 各功能模块分析

3.1 Clock Multiplier

本模块产生UTM的本地内部时钟,同时提供一个外部时钟CLK输出给SIE,协议要求时钟频率的误差范围小于10%(±6MHz),时钟输出CLK的精确度达到±500ppm(30.0KHz),并要求在1.4ms内达到稳定时钟频率。

对于8位数据接口,此时的外部时钟CLK输出为60MHz。在高速环境下,一个外部时钟CLK周期即为高速设备传输一个字节数据所需的时间,即( )ms/per Byte;而在全速环境下,5个外部时钟CLK周期为全速环境下传输一位数据所需的时间,即( )ms/per Bit,因此,通常情况下,传输全速一个字节数据的时间为40个外部CLK周期,如果存在位填充,则需要45个周期时间。

2.2 发送及接收器

本文重点介绍高速传输的特点。在高速环境下USB的传输速率为480Mbps,选用这个数值,一方面是可以使用现存的电缆和连接器,另一方面通过对半导体技术的广泛研究与测试,这个速度不仅在生产工艺上没有问题,也与USB 1.1的完全兼容。为了减少噪声和电源抖动对传输的影响,提高传输速度,选择差分电流模驱动方式。

USB2.0的一个最大挑战就是要设计出低的输出阻抗的高性能收发器[7]。在480Mbps传输时,如果路径没有按照性能要求的阻抗结束,就会产生反射。为此,在传输高速信号时,要给电缆匹配一个90Ω的电阻,以消除信号反射,同时电流源在驱动这个低的输出阻抗时也可增加抗噪声性能。当高速驱动器在工作的时候,总线处于空闲状态,两个数据线都处于低电平状态,此时集线器的全速驱动器和设备的全速驱动器在功能上等效成每个都是45Ω电阻(如图3的圆圈所示),合成90Ω的差分电阻产生一个0系数的反射。协议规定全速驱动器的输出阻抗在45Ω±10%,以符合高速收发器的需要。

高速数据传输和低速/全速数据传输一样,数据流以差分不归零码进行编码,在电缆上成差分信号进行传输。发送的高速信号是由高速电流驱动器完成的。驱动器根据高速环境中相应的J或K信号,向D+和D-数据线分别传送电流大小为17.78mA电流,通过一个22.5Ω的负载(两个45Ω的负载并联接地),在 D+和D-信号线产生一个近似于±400mv的电压,达到高速差分传输的效果。

图3 高速差分信号收发器的基本组件

2.2 HS DLL和FS DLL

本模块包含延时锁相环,可以是DLL,也可以是PLL。其主要功能是对高速或全速传输的数据流进行提取及时钟恢复,达到同步和正确提取数据的目的。可以断定,这个模块是UTMI中的核心模块,它的性能的好坏将决定了UTMI接收数据的正确性。需要进一步了解可以参考文献[8]。

.3.3 MUX / DEMUX

选择全速还是高速传输的数据流。

3.4 NRZI编码/解码

与USB1.1原理相同,以提高信号的抗噪声能力。如图4所示,NRZI为差分不归零制编码,这种编码与常规的不归零制(NRZ)编码的区别在于每个 "0"码处都有跳变、每个"1"码处没有跳变。在NRZI编码中的,信号通过相邻码元极性的跳变来解码,而不是简单的以绝对电平为准,由此可获得更高的抗干扰能力。

图4 NRZI编码方式

3.5 Bit Stuff / Bit Unstuff

对于NRZI编码方式会遇到一个严重的问题,就是若一长串连续的"1"将会导致无电平跳变,逐渐的累积,从而引起机收起最终丢失同步信号,使得读取的时序发生严重的错误。因此,在NRZI编码之间,还需执行所谓的位填充(Bit-stuffing)的工作。在连续的传输6个"1"位,强制在NRZI编码的数据流中加入跳变。这就确保接收器至少可以在每7个位的时间间隔,检测到一次跳变,使接收器和传送的数据保持同步。图5说明了位填充的工作方式。

图5 位填充的工作方式

位填充操作从同步数据段(如图7 所示) 开始,始终贯穿于整个传送过程并严格遵守位填充规则,后面还可以看到高速包的结束EOF也是利用位填充规则来提示数据包结束的。

3.6 串行/并行转换

通过Rx Shift/Hold的寄存器或Tx Shift/Hold寄存器分别将接收的数据或要发送的数据进行相应的串行/并行转换。

3.7 基本控制单元

基本控制单元是为了控制UTMI的工作状态及检测接收数据是否有效。这里主要介绍发射包络探测器(Squelch)。

在低电压信号环境下,为了避免探测电缆上引起的噪声信号作为要传输的信号,就需要运用发射包络探测器(Squelch)来检测总线上的信号是否有效。总线空闲时,高速差分接收器处于静噪状态,当检测到包开始信号后,高速差分接收器被激活,此时当差分信号电平小于100mV时,探测器指示总线上的信号无效;只有当信号电平大于150mV时,探测器才会指示接收的高速差分信有效。但这种方法也可能会带来同步上的延时,即在检测到包络和启动接收器之间最多可能会出现4位的延时,但这个延时并不带来同步的问题[3]。

4. 其他功能分析

4.1高速设备的连接检测(HS Detection Handshake)

前面原理提到,设备在连接、挂起恢复或复位后,都要进行高速设备的连接检测(HS Detection Handshake)。高速设备的连接检测刚开始是在全速信号环境下进行的。通过高速设备和高速集线器之间传输一个握手信号来指示设备是否为高速设备。

如果握手信号传输失败,则默认为全速设备。

设备连接到集线器Hub或主机时,全速和高速设备在D+线上有一个1.5KΩ的上拉电阻,由于下拉电阻为15KΩ,D+会加到近似90%的直流电平,当集线器探测到D+的高电平,就认为连接到全速设备。此时,软件就会通过复位命令发送一个RESET信号到集线器,让集线器驱动一个SE0信号(D+和D-都为低电平)超过10ms。高速设备检测到RESET信号后发送一个Chirp K信号给集线器(1~7ms的时间)。集线器的高速接收器若在设备发出Chirp K序列后2.5微秒内检测到,则响应传送一个交替的Chirp K和Chirp J信号序列。设备检测到这6个线性调频脉冲Chirp序列(3个交替的KJ信号对),

集线器将连接端口置入高速启用状态,并从D+断开上拉电阻,启用高速设备终端,设置高速设备默认状态。

若设备在RESET之后没有发出Chirp K信号或者设备没有检测到集线器响应的交替KJ信号序列,则高速设备就继续以全速模式进行操作。图6的事件时序图说明高速设备连接的过程。

图6 HS_Detection_Handshake事件时序图

其中T0时刻表示HS Handshake开始。在T1时刻,设备发送Chirp K信号并在T2时刻结束;下行端口在T3时刻发送KJ交替脉冲序列,若设备在T6时刻接收到下行端口的Chirp信号后,则设备在T7时刻断开D+的上拉电阻,并设置成HS终端及HS缺省状态,等待高速连接检测结束。T8是指总线中止下行端口发送Chirp KJ信号的时刻;T9时刻则表示最早结束总线高速连接检测时刻,或者表示断开D+上拉电阻后,设置HS终端进入HS的缺省工作状态最晚时间。

4.2 高速设备断开检测(HS_Disconnect)

由于高速设备的连接没有上升电压,所以集线器要用不同的方法来检测设备的移除。高速设备在总线空闲时,D+和D-数据线保持低电平,当设备断开时,线上不会检测到明显的变化,但是此时设备的差分终端电阻消失,而高速包还继续从原来设备连接的端口进行传输。当这个包到达没有负载的路径端点时,一个很大的反射会回到集线器接口,使得集线器连接端口的差分电压加倍,当集线器检测到这个双倍电压就可指示设备已经被移除。协议定义,HS_Disconnect一般是在扩展高速信息包结束符后(extended End of High-speed Packet, HSEOP)USB探测集线器的差分电平,若大于等于625mV则表示设备已经解除连接。 4.3 高速包开始和同步序列(SYNC)

因为设备与主机不是分享同一时钟,接收设备无法正确知道传送设备何时会传送一个新的信息包。为此,要让传送和接收同步,每一个信息包都需要一个SYNC作为包开始,达到让接收设备的脉冲与传送的数据同步的目的。在高速环境中,SYNC是32位:15个交替重复的KJ信号对,最后是两个K信号。图7表示高速同步序列和包开始符。

图7 高速模式的SYNC信息包

4.4 高速包结束符(EOP)

高速包结束符检测原理如图8所示,每个包都以EOP序列结束。除了高速帧开始信息包中的高速信息包结束符(extended End of High-speed Packet, HSEOP)是40位外,其他高速信息包结束都是8位。这8位结束符是一个没有位填充的01111111b NRZI的编码。如果前一位是J,高速信息包结束符是KKKKKKKK。反之,如果前一位是K,则高速信息包结束符是JJJJJJJJ。不管那种情况,传输的7个位序列都会引起位填充错误,也就是接收器检测到一个有意的填充错误序列,就知道包结束,即使这不是一个EOP,而是出现了一个真正的位填充错误也不例外。

8 高速传输的包结束符检测

4.5 复位和挂起

设备的复位和挂起信号都是发送一个大于3ms的总线空闲信号,同时在两种状态下高速设备都转换到全速信号环境,因此高速设备必须能够区分这不同两个的事件。当高速设备断开高速电阻并重新连接1.5K 的上拉电阻进入全速模式后,在100ms至875ms之内,总线探测D+和D-数据线的状态来判定总线进入复位还是挂起状态。如果D+和D-都是低电平,即Single-ended 0,则总线在进行复位;如果是D+为高(上拉)、D-为低(下拉),则总线在发送全速空闲信号,指示设备进入挂起状态。

5.结论

本文分析了USB2.0接口高速传输的环境特点及在此模式下8位PHY的工作原理。为确保USB2.0在高速和全速环境下正常工作,对UTMI协议也进行了剖析。文章还对USB传输的差分NRZI编码及如何增强抗噪声能力和确保数据的正确性做了较详尽的分析。本论文对UTMI及USB2.0接口设计有较好的参考价值。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值