0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于USB 2.0的数据传输方法的分析和介绍

立錡科技 来源:djl 2019-10-10 09:02 次阅读

普通的消费者使用USB设备的时候是不需要了解USB本身到底是怎么回事的,实际上,这样的人对USB到底是怎么回事都是处于无知的状态。无知,同时又享受着USB带来的便利,这种无知其实是很幸福的。

对于工程师来说,无知就常常意味着无能。你没有办法在无知的情况下进行思考,自然也没有办法开展相关的工作,要想把它变成安生立命的基础,或是仅仅满足求知的欲望,那就唯有从了解开始学习,使自己成为有知的状态,然后在遇到问题的时候就有了很好的思考基础,从而能够展开思考并且确定自己应该采取的行动,这样才有可能从中获得正面的结果。

USB的规范既要满足已有应用的需求,又要满足不断增加的带宽要求,就从1.0版本发展到了3.0版本(双向5Gbps),又在2013年进入了3.1时代,最终把它的速度提升到了双向10Gbps的水平。

双向同时进行的通讯是无法和USB 2.0以前的单一总线双向轮流进行的通讯方法兼容的,所以,USB 3.0以后的最大的变化并不是速度提高了,而是变成了双总线的结构:

关于USB 2.0的数据传输方法的分析和介绍


为了持续兼容于过去的标准,很显然,USB 2.0的总线将持续存在下去,我想这种状况将持续到低速设备消亡以后才会发生改变。所以,首先认识USB 2.0的做法将具有比较长久的价值。我们今天关注的重点是USB 2.0以前版本的数据传输方法。

实际有效的数据传输大多是通过二进制的数据表达方式来进行的,由于二进制数据的每个位只有两个状态,其实现方法相对比较简单。对于低速的数据传输来说,用高低不同的电压信号就可以表达一个数据位的两种状态,其驱动电路和接收电路都非常简单。但是,USB是用于不同设备之间的远距离传输的,在这种情况下,用电压传递信号变得很不可靠,所以,它采用了电流传递信号的方法。下图是USB 2.0规范中提供的收发器接口电路示意图:

关于USB 2.0的数据传输方法的分析和介绍


一个典型的USB 2.0收发器就是由这样的接口加上数据串并行转换器、数据时钟恢复电路以及一个ULPI(UTMI+ Low Pin Interface)接口和其它一些辅助电路构成的。

为了在USB总线上传递信息驱动器的内部会有一个电流源(标称值为17.78mA),它被一个高速开关轮流切换引导至D+或D-。当电流被引导至D+时,它就对外表达了一个信号状态J;如果电流被引导至D-,它对外表达的信号状态是K。由J和K组成的信号序列来源于原始数据,它们之间是通过不归零反向编码的方法来进行转换的:

关于USB 2.0的数据传输方法的分析和介绍


如上图所示,以0和1组成的二进制串行数据经过NRZI编码后形成的J/K序列送入前面图中的LS/FS Driver或High Speed Current Driver,其输出就呈现为总线上的连续不断的数据流了。

如果要将电压信号在传输线上进行传输,由于传输线是有阻抗的,其信号幅度会随着线路的延长而衰减,到了接收端,很可能信号幅度已经变得不足以被检出正确的数据了,而电流信号则不会有这个问题。当然了,电流信号的传输也会受到线路阻抗的影响,其脉冲形状也会发生变化,但相对来说就要更好些。
以我的直觉来看,除了传输的可靠性外,采用电流信号传输数据对于及时发现外设的接入和拔出非常有好处。由于发送器的输出是电流源,当没有负载的时候,有电流输出的端子就总是会处于高压状态,而当负载接入的时候,其电压马上就降低了,这是非常方便检测电路的设计的。

要进行通讯,收发两端的同步是非常重要的。同步分为两种,一种是数据位的同步,一种是数据包的同步。

位同步要求收发两侧要有同步运作的时钟,这个时钟的信息是包含在NRZI编码之中的。在数据与NRZI编码的转换过程中,一个为0的数据位将造成NRZI编码的状态发生变化,为1的数据位则不会。编码发生变化的信息是很重要的,它正好对应着信号发生变化的地方,接收端的数据时钟恢复电路利用此信息将与发端同步的时钟恢复出来,然后再延迟一点时间后读入状态信息,就可以得到与发端相同的J/K数据流,再经过反向的NRZI编码,原始数据就可以被恢复出来了。

由于NRZI编码仅在数据为0的时候发生变化,如果长时间出现连续的1就会造成NRZI编码持续处于一种状态,其中便没有了时钟信息,数据时钟恢复电路的时钟输出就可能失去与发端的同步。为了避免这个问题的发生,USB规范规定:如果数据串中连续出现了6个1,其后就要插入一个为0的数据位。这样就可使接收器在7个数据位的传输时间内至少会看到一次编码信号的状态转换,从而保证其时钟恢复电路不至于丢掉同步状态。当然了,这些插入的数据需要在接收端再把它们消除掉以恢复原始数据。

一个含有多个连续1的原始数据包被插入0后再进行编码的过程如下图所示,其中的Stuffed Bit箭头所指的地方就是新插入的为0的数据位。

关于USB 2.0的数据传输方法的分析和介绍


上图中标识为Sync Pattern的信息被称为同步模板,它们的作用是告诉收方后面的信息就是我要发送的数据包了,所以它们所起的作用就是数据包的同步。如果没有包同步,收方就不会知道信息是从何时开始的,因而不能正确地理解收到的信息。

LS/FS通讯的数据包同步信号是由3个KJ序列紧接2个K状态构成的,如下图所示:

关于USB 2.0的数据传输方法的分析和介绍


高速通讯的同步头要长许多,它包含了15个KJ序列和紧接着的2个K状态,总共有32个信号周期。考虑到高速通讯的速度提高了几十倍,32个信号周期其实并不算太长。

USB总线上需要传递的数据可以分为4种类型:用于控制的数据,设备和主机之间的连接过程就需要传输这种数据(地址、端口编号等);批量数据,主机与打印机、扫描仪之类的外设间的通讯以这类数据为主;中断信息,这种信息的出现时间是不确定的,但又需要系统做出及时的响应,这与MCU应用中的中断信号很类似;同步数据,它们在时序上有严格的要求,而且需要按照一定的节奏进行,一旦不同步,接收方的感觉就会很差,所以在传输时需要安排出足够的带宽与其配合,摄像头、话筒等外设所拾取的信息用这种方式进行传输就比较好。

USB属于轮询总线,所有的通讯都是在主机的控制下进行的,外设只有在收到主机的询问数据包时才可以进行响应,告诉主机自己没有数据或是把它要发送的数据打包发给主机,主机在收到以后要进行回应,至少它得说明收到的信息是否正确吧,所以一次正常的通讯至少会有三个数据包需要传输。

USB规范把一个主机应用和一个设备之间的传输通道称为管道,这种管道并不真实存在,属于一种逻辑实体。由于应用众多,外设也很多,所以可以有很多管道同时存在,这有点像现实中的物流系统的样子。当我向京东下了一个订单的时候,我和京东之间就建立起了一个管道,京东将通过此管道把货物送到我指定的地方,这个管道直到我收到货物、京东也收到确认信息以后才会消失。当我需要京东的后续服务如退货、返修之类的需求时,一条新的管道又会建立起来。而在我做这些事情的时候,也有其他人在和京东之间做着同样的事情。这个物流系统与USB不一样的地方是它不是轮询式的,因为京东不会主动来询问我要不要什么东西。但是,京东为了做成更多的业务,它会想办法吸引我多去它那里选择商品,这又属于广告性质了,这有点像USB主机在总线上发布广播信息:“我要关机了,你们大家配合一下。”至于外设会不会配合,那是另外一回事了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 驱动器
    +关注

    关注

    52

    文章

    8173

    浏览量

    146067
  • 数据传输
    +关注

    关注

    9

    文章

    1856

    浏览量

    64499
收藏 人收藏

    评论

    相关推荐

    Micro USB接口数据传输速率分析

    Micro USB接口的数据传输速率分析,可以从以下几个方面进行: 一、Micro USB版本与传输速率 Micro
    的头像 发表于 11-27 10:05 73次阅读

    PCIe数据传输协议详解

    、网卡和声卡等,以实现高效的数据传输。以下是对PCIe数据传输协议的介绍: 一、PCIe协议的基本概念 PCIe协议定义了一系列规范和要求,以实现在主机系统和外围设备之间高效、可靠地进行数据
    的头像 发表于 11-26 16:12 214次阅读

    socket 数据传输效率提升技巧

    在现代网络应用中,数据传输效率是衡量系统性能的关键指标之一。对于使用socket进行数据传输的应用,优化传输效率不仅可以提升用户体验,还能降低成本。 1. 选择合适的传输层协议 TCP
    的头像 发表于 11-12 14:34 216次阅读

    LORA模块的数据传输速率

    有所不同。以下是关于LoRa模块数据传输速率的一些关键点: 数据传输速率的可变性 : LoRa技术允许在不同的数据速率下操作,以适应不同的应用需求。速率可以从几百比特每秒(bps)到几
    的头像 发表于 10-31 17:03 606次阅读

    是德万用表USB 接口数据传输

    )接口是一种通用、高速、方便的接口标准,它使得不同设备之间的数据传输变得简单、快捷和高效。在本文中,我们将重点介绍是德万用表的USB接口数据传输特性和应用。 是德万用表的
    的头像 发表于 10-22 16:56 183次阅读
    是德万用表<b class='flag-5'>USB</b> 接口<b class='flag-5'>数据传输</b>

    网络数据传输速率的单位是什么

    网络数据传输速率的单位是 bps(bit per second) ,即比特每秒,也可以表示为b/s或bit/s。它表示的是每秒钟传输的二进制数的位数。比特(bit)是计算机中数据量的单位,也是信息论
    的头像 发表于 10-12 10:20 951次阅读

    高速串行总线,数据传输离不开它!#高速串行总线 #电路知识 #数据传输

    电路数据传输
    安泰仪器维修
    发布于 :2024年08月20日 15:42:00

    SDIO支持哪些数据传输模式?

    1、当 SDIO 时钟频率为 25 MHZ 时,总线速度可达多少? 还是 832MBPS? 2、SDIO 支持哪些数据传输模式? --1 位、2 位、3 位或 4 位? 3、哪个 SDIO 引脚具有中断功能? --DAT[0]? [1]?[2]?[3]?
    发表于 07-22 06:37

    边OTG边充电芯片如何实现充电与数据传输并行?

    边OTG边充电芯片实现充电与数据传输并行的功能,主要依赖于其内部的设计和与USB Type-C接口标准的结合。
    的头像 发表于 07-14 10:35 518次阅读

    GMSL技术 实现高带宽、低延迟和高可靠性数据传输# ADI# GMSL# 汽车# 数据传输

    adi数据传输电机
    Excelpoint世健
    发布于 :2024年05月17日 16:34:25

    3针M5公头接口速度和数据传输效率怎样

      德索工程师说道在电子设备和系统的连接与通信中,接口的速度和数据传输效率是衡量其性能的重要指标。3针M5公头接口作为一种常见的连接标准,其速度与数据传输效率直接影响到设备的性能和使用体验。本文将对3针M5公头接口的速度和数据传输
    的头像 发表于 05-13 17:46 344次阅读
    3针M5公头接口速度和<b class='flag-5'>数据传输</b>效率怎样

    通过iap的方式对stm32f405进行升级,usb dfu数据传输出错的原因?

    想通过iap的方式对stm32f405进行升级,用usb传输 dfu格式; 在数据传输过程中,发现源文件和传到设备上的数据匹配不起来,有人遇到过吗??求助!!!! 是
    发表于 04-28 08:56

    请问NFC数据传输如何保证数据安全?

    NFC数据传输如何保证数据安全
    发表于 04-07 06:18

    ST25R3911B板的有数据传输功能的micro USB数据线是必须专用的,还是都可以用?

    ST25R3911B板的有数据传输功能的micro USB数据线是必须专用的,还是都可以(只要有数据传输功能的micro USB
    发表于 03-20 06:23

    DTU的多种协议,解锁数据传输的无限可能

    。本文将详细介绍DTU的多种协议,看看它们如何帮助我们更好地完成数据传输工作。1.Modbus协议:这是一种常用于工业领域的通信协议,被广泛用于连接PLC、温控器
    的头像 发表于 03-01 11:00 758次阅读
    DTU的多种协议,解锁<b class='flag-5'>数据传输</b>的无限可能