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主机在总线上发布广播信息:“我要关机了,你们大家配合一下。”至于外设会不会配合,那是另外一回事了。

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

    关注

    51

    文章

    7291

    浏览量

    142825
  • 数据传输
    +关注

    关注

    9

    文章

    1511

    浏览量

    63553
收藏 人收藏

    评论

    相关推荐

    请问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 154次阅读
    DTU的多种协议,解锁<b class='flag-5'>数据传输</b>的无限可能

    芯片设计中半双工和全双工数据传输的区别

    在现代通信技术中,半双工和全双工数据传输是两种常见的数据传输方式。本文将为大家详细解析这两种传输方式在芯片设计中的应用和区别,帮助大家更好地理解芯片设计中的通信原理。
    发表于 11-19 11:31 391次阅读

    如何实现MQTT协议数据传输

    如何实现MQTT协议数据传输? 随着物联网技术的不断发展,越来越多的设备和应用需要实现互联互通。而MQTT作为一种轻量级的发布/订阅消息传输协议,在物联网领域应用广泛,成为了许多设备之间数据交互
    的头像 发表于 11-15 17:23 590次阅读

    AXI数据传输读写数据结构

    在 AXI 数据传输过程中,主要涉及到 •窄位宽数据传输(Narrow Transfer) •非对齐传输(Unaligned Transfer) •混合大小端传输(mix-endian
    的头像 发表于 10-31 16:17 613次阅读
    AXI<b class='flag-5'>数据传输</b>读写<b class='flag-5'>数据</b>结构

    什么是USB3.0?usb3.0与usb2.0有什么区别?

    什么是USB3.0?usb3.0与usb2.0有什么区别 USB3.0是指“超级速度USB”,它是一种高速
    的头像 发表于 10-27 14:31 4229次阅读

    USB3.0和USB2.0工业连接器究竟有哪些区别?

    CNLINKO凌科电气连接器知识分享USB3.0和USB2.0工业连接器是用于USB接口设备的两款常用连接器,是数据传输非常重要的手段。相信很多人对这两种连接器的区别都有所知晓,但不一
    的头像 发表于 10-21 08:14 525次阅读
    <b class='flag-5'>USB</b>3.0和<b class='flag-5'>USB2.0</b>工业连接器究竟有哪些区别?

    如何使用FPGA器件和USB通讯实现高速数据传输显示系统的设计

    点击上方 蓝字 关注我们 本文设计的基于FPGA和USB的高速数据传输、记录系统不但具有体积小、功耗低、成本低、使用灵活方便、硬件电路简单、可在线更新等特点;而且还充分利用了微机的资源,因而易开发
    的头像 发表于 09-20 10:00 1765次阅读
    如何使用FPGA器件和<b class='flag-5'>USB</b>通讯实现高速<b class='flag-5'>数据传输</b>显示系统的设计

    如何设置usb传输方式?

    如何设置usb传输方式?  USB(Universal Serial Bus)是一种常见的计算机数据传输接口,它可以连接各种外部设备,例如闪存驱动器、手机、摄影机、打印机等等。使用
    的头像 发表于 09-12 10:34 4282次阅读

    自动气象站:无线数据传输、多场景应用

    自动气象站:无线数据传输、多场景应用
    的头像 发表于 09-06 17:02 380次阅读

    SPI数据传输有哪些方式

    SPI 数据传输可以有两种方式:同步方式和异步方式。 同步方式:数据传输的发起者必须等待本次传输的结束,期间不能做其它事情,用代码来解释就是,调用传输的函数后,直到
    的头像 发表于 07-25 10:54 3245次阅读
    SPI<b class='flag-5'>数据传输</b>有哪些方式

    DMA进行数据传输和CPU进行数据传输的疑问

    求大佬解答,本人正在学习STM32单片机中DMA直接数据存储部分的内容 看了DMA简介后,也上手过实例代码,但是没有实际的项目经验,所以有以下疑问: DMA外设在进行数据传输的操作,是否也是需要经过
    发表于 05-25 17:18

    如何测量ESP8266的数据传输速度?

    AP 的问候”。 现在我想测量数据从 AP 传输到客户端的数据传输速率/速度(不是波特率)。请注意,我使用的是 AT 命令来配置模块,我不是在谈论波特率。 有什么方法可以测量从一个模
    发表于 05-22 06:38

    物联网的数据传输小知识

    在这个万物互联的时代,往往需要关注很多来自终端的数据,那么了解物联网相关的数据传输及联网方式是非常有需要的。
    发表于 05-20 10:06 380次阅读