正文内容 评论(0)
揭秘USB 2.0糟糕的实际传输速度
目前由于设备传输速率限制以及USB 3.0 5Gbps传输带宽的冗余,USAP协议目前并没有急于展开,另外要实现USAP的支持,除了主控设备,终端设备也需要支持USAP,终端设备的芯片设计难度将会加大,这对于闪存等小型存储设备来说成本和体积将会显著增加,不利于产品推广,现有的一些支持USAP的设置仅限于外置存储。
30MB/s成了USB 2.0存储设备的速度门槛
回归到主流的USB 2.0设备上来,前文我们已经提到受到BOT传输协议、编码方式的影响被限制在35MB/s以下,也就是说USB 2.0传输带宽还有不小的提升空间。
USB 2.0使用了NRZI(Non-Return-to-Zero Inverted)编码,它是基于串行传输模式,传输连续的0、1字符串。在RZ(Return-to-zero Code)编码中,正电平代表逻辑1,负电平代表逻辑0,并且每传输完一位数据,信号返回到零电平,也就是说,信号线上会出现3种电平:正电平、负电平、零电平。
而零电平因为是附加的内容浪费传输带宽,所以需要去掉归零,于是就变化成了NRZ(Non-return-to-zero Code)编码。在USB传输中,每个USB数据包,最开始都有个同步域(SYNC),这个域固定为0000 0001,这个域通过NRZI编码之后,就是一串方波,接受者可以用这个SYNC域来同步之后的数据信号。此外,因为在USB的NRZI编码下,逻辑0会造成电平翻转,所以接受者在接受数据的同时,根据接收到的翻转信号不断调整同步频率,保证数据传输正确。
但是,这样还是会有一个问题,就是虽然接受者可以主动和发送者的频率匹配,但是两者之间总会有误差。假如数据信号是1000个逻辑1,经过USB的 NRZI编码之后,就是很长一段没有变化的电平,在这种情况下,即使接受者的频率和发送者相差千分之一,就会造成把数据采样成1001个或者999个1 了。
USB对这个问题的解决办法,就是强制插0,也就是传说中的bit-stuffing。如果要传输的数据中有7个连续的1,发送前就会在第6个1后面强制插入一个0,让发送的信号强制出现翻转,从而强制接受者进行频率调整。接受者只要删除6个连续1之后的0,就可以恢复原始的数据了。
由于强制插0保持发送和接收者频率同步就会造成带宽的浪费,浪费的大小则根据插0的多少而不同。这样USB 2.0 60MB/s的传输带宽就要打折扣了。USB 3.0由于要保证高达5Gbps数据传输的正确性,采用了时下流行的8b/10b编码方式,有效数据利用率为80%,也就是USB 3.0的有效数据传输带宽为500MB/s。
本文收录在
#USB
- 热门文章
- 换一波
- 好物推荐
- 换一波
- 关注我们
-
微博:快科技官方
快科技官方微博 -
今日头条:快科技
带来硬件软件、手机数码最快资讯! -
抖音:kkjcn
科技快讯、手机开箱、产品体验、应用推荐...