精华内容
下载资源
问答
  • 行业资料-电子功用-一种基于串行数据传输方式的链路接口电路
  • 在USB的数据传送的方式下,有4种传输方式:控制(Control)、同步(Isochronous)、中断(Interrupt)、大量(Bulk)。通常所有传送方式下的主动权都在PC边,也就是host边。 (1)控制(Control)方式传送:控制...
  • 实验中,处理机和上位机之间的数据传输距离不小于8m。在这种前提下,计算机上现有的串口、并口显然不能满足要求,而USB2.0接口工作在高速模式时传输距离只有3m,其它诸如以太网传输的实时性难于满足要求,光纤通道...
  • 并行传输数据串行传输数据SATA hard drive connections are faster than older PATA hard drive connections and the same can be said for external cabling standards, but this is counter-intuitive: why ...
    并行传输数据和串行传输数据

    并行传输数据和串行传输数据

    SATA hard drive connections are faster than older PATA hard drive connections and the same can be said for external cabling standards, but this is counter-intuitive: why wouldn’t the parallel transmission be faster?

    SATA硬盘驱动器的连接速度比旧的PATA硬盘驱动器连接要快,对于外部电缆连接标准也可以这么说,但这是违反直觉的:为什么并行传输不会更快?

    Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.

    今天的“问答”环节由SuperUser提供,它是Stack Exchange的一个分支,该社区是由社区驱动的Q&A网站分组。

    问题 (The Question)

    SuperUser reader Modest is curious about the data transfer rates of parallel and serial connections:

    SuperUser阅读器Modest对并行和串行连接的数据传输速率感到好奇:

    Intuitively, you would think that parallel data transmission should be faster than serial data transmission; in parallel you are transferring many bits at the same time, whereas in serial you are doing one bit at a time.

    凭直觉,您会认为并行数据传输应该比串行数据传输快; 并行操作是同时传输许多位,而串行操作是一次传输一位。

    So what makes SATA interfaces faster than PATA, PCI-e devices faster than PCI, and serial ports faster than parallel?

    那么,什么使SATA接口比PATA更快,PCI-e设备比PCI更快,串行端口比并行更快?

    While it’s easy to fall into the reasoning that SATA is newer than PATA, there must be a more concrete mechanism at work than just age.

    虽然很容易得出SATA比PATA更新的理由,但在工作中必须有一种比年龄更具体的机制。

    答案 (The Answer)

    SuperUser contributor Mpy offers some insight into the nature of the transmission types:

    超级用户贡献者Mpy对传输类型的性质提供了一些见解:

    You cannot formulate it this way.

    您不能以此方式制定。

    Serial transmission is slower than parallel transmission given the same signal frequency. With a parallel transmission you can transfer one word per cycle (e.g. 1 byte = 8 bits) but with a serial transmission only a fraction of it (e.g. 1 bit).

    相同的信号频率下,串行传输比并行传输要慢 在并行传输中,您可以每个周期传输一个字(例如1字节= 8位),而在串行传输中,仅传输其一小部分(例如1位)。

    The reason modern devices use serial transmission is the following:

    现代设备使用串行传输的原因如下:

    • You cannot increase the signal frequency for a parallel transmission without limit, because, by design, all signals from the transmitter need to arrive at the receiver at the same time. This cannot be guaranteed for high frequencies, as you cannot guarantee that the signal transit time is equal for all signal lines (think of different paths on the mainboard). The higher the frequency, the more tiny differences matter. Hence the receiver has to wait until all signal lines are settled — obviously, waiting lowers the transfer rate.

      您可以在不增加信号频率并行传输无极限,因为按照设计,从发射器需要的所有信号在接收器在同一时间到达。 这不能保证在高频下使用,因为您不能保证所有信号线的信号传输时间都相等(请考虑主板上的不同路径)。 频率越高,差异越小。 因此,接收器必须等到所有信号线都建立好之后,显然,等待会降低传输速率。

    • Another good point (from this post) is that one needs to consider crosstalk with parallel signal lines. The higher the frequency, the more pronounced crosstalk gets and with it the higher the probability of a corrupted word and the need to retransmit it. [1]

      另一个好处(来自本文)是,需要考虑与并行信号线的串扰。 频率越高,串扰越明显,随之而来的单词损坏和重传的可能性也越高。 [1]

    So, even if you transfer less data per cycle with a serial transmission, you can go to much higher frequencies which results in a higher net transfer rate.

    因此,即使您使用串行传输每个周期传输较少的数据,您也可以使用更高的频率,从而导致更高的净传输速率。

    [1] This also explains why UDMA-Cables (Parallel ATA with increased transfer speed) had twice as many wires as pins. Every second wire was grounded to reduce crosstalk.

    [1]这也解释了为什么UDMA电缆(具有更高传输速度的并行ATA)的导线数是引脚的两倍。 每隔两根导线接地,以减少串扰。

    Scott Chamberlain echoes Myp’s answer and expands upon the economics of design:

    斯科特·张伯伦(Scott Chamberlain)回应了Myp的回答,并扩展了设计经济学:

    The problem is synchronization.

    问题是同步。

    When you send in parallel you must measure all of the lines at the exact same moment, as you go faster the size of the window for that moment gets smaller and smaller, eventually it can get so small that some of the wires may still be stabilizing while others are finished before you ran out of time.

    并行发送时,必须在同一时刻测量所有线路,因为随着速度的加快,该时刻的窗口尺寸会越来越小,最终可能会变得很小,以至于某些电线可能仍在稳定而其他人则在您没时间用完之前就完成了。

    By sending in serial you no longer need to worry about all of the lines stabilizing, just one line. And it is more cost efficient to make one line stabilize 10 times faster than to add 10 lines at the same speed.

    通过串行发送,您无需担心所有线路都稳定下来,只需担心一条线路。 而且,使一条线的稳定速度比以相同速度添加10条线的速度快10倍,具有更高的成本效益。

    Some things like PCI Express do the best of both worlds, they do a parallel set of serial connections (the 16x port on your motherboard has 16 serial connections). By doing that each line does not need to be in perfect sync with the other lines, just as long as the controller at the other end can reorder the “packets” of data as they come in using the correct order.

    诸如PCI Express之类的东西在两全其美方面发挥了最大作用,它们完成了一组并行的串行连接(主板上的16x端口具有16个串行连接)。 通过这样做,只要另一端的控制器可以按照正确的顺序对数据的“数据包”进行重新排序,就不必与其他行完美同步。

    The How Stuff Works page for PCI-Express does a very good explination in depth on how PCI Express in serial can be faster than PCI or PCI-X in parallel.

    PCI-Express的“工作原理”页面对串行PCI Express如何比并行PCI或PCI-X更快提供了很好的深度解释。

    TL;DR Version: It is easier to make a single connection go 16 times faster than 8 connections go 2 times faster once you get to very high frequencies.

    TL; DR版本:一旦到达非常高的频率,使单个连接的传输速度比8个连接的传输速度快2倍就容易了。



    Have something to add to the explanation? Sound off in the the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.

    有什么补充说明吗? 在评论中听起来不对。 是否想从其他精通Stack Exchange的用户那里获得更多答案? 在此处查看完整的讨论线程

    翻译自: https://www.howtogeek.com/171947/why-is-serial-data-transmission-faster-than-parallel-data-transmission/

    并行传输数据和串行传输数据

    展开全文
  • 如果你想使用FPGA从头设计串行数据传输,SPI和UART的底层硬件设计要简单得多,迫不得已再用I2C。 I2C硬件电路特色 I2C的一个特性是总线上的每个器件都必须通过漏极开路(或集电极开路)输出驱动器连接时钟信号...

    我第一次知道I2C总线是1995年,项目中用到电视机高频头(也叫调谐器、Tuner),能够方便买到的高频头要么是飞利浦(Philips)的,要么是日系厂商的,但日系厂商联系起来比较费劲。Tuner其实就是通过I2C总线送控制字来改变其本振频率(LO)选择你需要的频段,当时知道I2C的鼻祖就是飞利浦半导体(NXP-恩智浦半导体的前身),也是第一次使用MC34063这颗后来如同555一样扑街的开关稳压芯片,用来产生高频头所需要的12V DC。

    典型的电视机调谐器,采用I2C来进行调谐

    板子上的器件之间也需要Talk

    器件和器件之间的也需要沟通信息,尤其是需要MCU/DSP等对其它外设进行控制的时候。工程界的大神们基于MCU/DSP开发了一系列的协议比如UART、USART、SPI、I2C、CAN等. . . .每种协议都有各自擅长的地方,也有其局限性,因此要做系统设计的硬件工程师就应该对每种接口协议有大概的认识(即便没有机会吃猪肉,也要知道各种猪是如何跑的),这样才能够帮助你在做方案选择的时候能够选用最合适的协议接口方式,这也是你需要阅读我写的文章的原因。

    在同一个PCB板子上的不同器件之间进行通信最常用的有三种形式 - SPI、I2C和UART,上篇文章我们简单介绍了SPI,今天就来看看I2C,我们先看一下I2C最基本的一些特性,然后再跟其它的通信协议方式进行一下比较。 

    两条通过上拉电阻吊在电源的线,上面可以挂多个器件进行通信

    简约而不简单的I2C总线

    I2C来自于英文inter–integrated circuit,有时也写为IIC,字面意思也可以理解为IC之间进行交流用的,跟SPI对比,I2C没有天生的主、从之分,也就是说挂在两根线(数据线SDA和时钟线SCL)上的所有器件都是生而平等的。这个协议最早由飞利浦半导体推出来,几年后Intel又弄了一个SMBus(系统管理总线)协议,其实基本跟I2C一模一样,算是其扩展吧,一丢丢的差别而已。 

    I2C总线传输时序

    有哲学家说 - 越是看起来简单的东西,背后处理的问题越复杂。I2C其实也是如此,虽然我们看到的是2根线能挂起一大串的器件,但就像一个没有了老师的课堂,没有一个好的管理机制一定会出现乱哄哄的局面,要让任何两个同学之间进行有序地交流,没有明确的协议是肯定会乱掉的。

    最简单的情况就是在这个系统中有1主1仆,但如果有多个仆(从设备)呢?如果多个“从设备”不知道哪个是“主设备”呢?如果出现了多个“主设备”呢?如果一个“主设备”正由“从设备”获取数据,中途由于种种原因突然挂了怎么办呢?一个“从设备”正发着数据挂掉了怎么办呢?一个“主设备”获取了总线使用权用以数据的发送,在释放使用权之前崩溃了怎么办呢? 

    这种看似非常简单的结构其实会遭遇各种可能

    在实际的运行环境中会有各种意外导致系统出现问题,我们在学习使用I2C的时候一定要做到心中有数 - 简单的架构背后有着复杂的结构来保证这个协议的顺利执行,才能让其成为灵活、可扩展、鲁棒、极少管脚的串行通信方案。

    示波器上捕捉到的I2C总线上的数据读取

    I2C协议概要

    以下是I2C的主要特征:

    • 不论总线上挂多少个设备,只需要两根信号线(时钟SCL和数据SDA)就搞定;

    • 两根信号线都通过合适阻值(这个值的正确选取很重要)的上拉电阻连接到正电源上;

    • 每个设备的接口都是通过漏极开路(或集电极开路)的输出驱动连接到时钟和数据信号线上;

    • 每个从设备都有一个7位的地址,可供寻址用。主设备必须知道这些从设备的地址以便同指定的一个从设备进行通信。

    • 所有传输均由“主设备”发起和终止; “主设备”可以将数据写入一个或多个“从设备”或从“从设备”请求数据。

    • 在系统中“主”和“从”不是固定的,任何一个设备都可以作为“主”或“从”,只要它配置了适当的硬件或固件,实际上在嵌入式系统中最常采用的架构就是一个“主设备”向多个“从设备”发送命令或由多个“从设备”采集数据。

    • 数据信号在时钟的下降沿更新,并在上升沿被采样,如下图。

     I2C协议中数据和时钟的时序关系

    • 数据是以一个字节进行传输的,每一个字节跟着1位的握手信号,作为ACK/NACK(应答/无应答)位.

    同UART和SPI相比,I2C有何优势?

    I2C的主要优势如下:

    • 管脚/信号数量少,即便挂了很多的设备,也只用两根线;

    • 可以适应不同的从设备的要求;

    • 可以支持多个主设备;

    • 引入了ACK/NACK功能以提升应对错误的能力

    当然也有一些劣势的地方:

    • 增加了固件和底层硬件的复杂度

    • 增加了协议的负荷,降低了数据传输的吞吐率

    • 需要上拉电阻,会导致如下的后果

      • 限制了时钟的速度

      • 增加了功耗

    由此可以看到I2C比较适合复杂、多样化、需要通信设备灵活扩展的场景;UART比较适合单点对单点的连接,因为UART没有标准的方式来寻址不同的设备或共享管脚。SPI比较适合系统中有一个主设备和少量的从设备,而且每一个从设备都有一个单独的“从设备选择”信号,当总线上有多个设备的时候会需要更多的管脚,布线的难度也会增加,当你需要支持多个主设备的时候,SPI用起来也会非常尴尬。

    如果你需要较高的传输速率,使用I2C就不太合适,SPI能够支持更高的时钟频率,数据负载开销也最小。如果你想使用FPGA从头设计串行数据传输,SPI和UART的底层硬件设计要简单得多,迫不得已再用I2C。

    I2C硬件电路特色

    I2C的一个特性是总线上的每个器件都必须通过漏极开路(或集电极开路)输出驱动器连接时钟信号(缩写为SCL)和数据信号(缩写为SDA)。这也就意味着:

    • 信号缺省始终为逻辑高电平,如果I2C主设备尝试与已失效的从设备通信,则数据信号永远不会进入未定义状态,如果从设备没有驱动信号,它将被读为逻辑高电平。 同样,如果主设备在传输过程中断电,SCL和SDA将返回逻辑高电平,其它设备可以通过观察SCL和SDA在一定时间内逻辑高电平来确定总线是否可用于新的传输。

    • 即使另一个设备试图将它们驱动为高电平,总线上的任何设备都可以安全地将信号驱动为逻辑低电平,这是I2C“时钟同步”或“时钟延长”功能的基础:主器件产生串行时钟,但如果需要,从器件可以将SCL保持为低电平,从而降低时钟频率。

    • 具有不同电源电压的器件可以共存于同一总线上,只要较低电压的器件不会被较高的电压损坏即可。 例如,如果SCL和SDA上拉至5V,3.3V的器件就可以与5V的器件进行通信 - 即使3.3V的器件无法驱动来自典型的推挽输出级的5V,漏极开路的配置可以让逻辑高电压达到5V。

    有电阻R,就会有RC

    由于漏极开路输出驱动器存在着明显的缺点,并不是数字IC的标准配置。电压的变化会受到与特定节点相关的电容充电或放电所需的时间的限制。 SCL和SDA上的上拉电阻限制了充电的电流量 - 也就是说,我们在RC时间常数中可以更多地通过R来控制从逻辑低到逻辑高的转换。

     输出从低到高时向电容充电

    输出从高到低时由电容放电

    从这个图可以看出从低到高的转换比从高到低的转换要慢很多,导致出现常见的I2C锯齿波形:

    由I2C信号线上的上拉电阻以及节点电容引起的上升沿变缓

    下图为示波器上捕捉到的实际的时钟信号波形 - 采用1kΩ的电阻做上拉,即便最小的电容效应(总线上只有两个器件,且很短的PCB走线)的时候I2C时钟信号的低到高以及高到低的变化。

    上拉电阻的值如何选择?

    可见,上拉电阻限制了数据传输的最大时钟速率。实际上,电阻和电容都有影响,我们无法控制电容,因为它主要取决于总线上有多少器件以及这些器件之间互连的方式。那问题来了,考虑到所需的数据传输速率要求以及可能带来的功耗,使用多少值的上拉电阻才最合适?较低的电阻RC时间常数也比较低,但会通过上拉电阻增加从VDD流向地的电流(只要SCL或SDA为逻辑低电平)。

    官方I2C规范(第9页)规定,在达到VDD的70%之前,电压不被视为“逻辑高”。 RC时间常数告诉我们电压达到最终电压的约63%需要多长时间。 因此,为简单起见,我们假设R×C告诉我们信号从接地电压附近上升到逻辑高电压需要多长时间。

    如何计算电容呢? 比较可行的方法是查找总线上每个器件的引脚电容进行粗略估计,然后再添加每英寸PCB走线3pF和每英尺同轴电缆30pF。

    假设我们有50pF的总线电容,按照I2C“标准模式”规范规定 - 最大上升时间为1000ns。

    也就是说上拉电阻可以定为20kΩ,这个值的功耗也比较低,速度如何呢?假设你希望时钟高的时间至少是上升时间的三倍。

    如果167 kHz不够快,您可以降低电阻(以增加功耗为代价),直到达到所需的时钟速度。 (实际上,“标准模式”将时钟速度限制为100 kHz,但可以根据系统需要调整这些规格。)

    当然,这只是粗略的计算,具体的应用中要根据挂在总线上的器件的数量以及电路设计来进行估算,还可以配合示波器上实际的测量进行调整,以满足系统的综合要求。

    典型的数据传输

    下面的时序图为一个典型的I2C传输时序。

    可以看到以下几点:

    • 对应于时钟逻辑高电平部分的虚线提醒我们逻辑高电平(对于SCL和SDA)都是“隐性”状态 - 换句话说,信号通过上拉电阻自然浮动到逻辑高电平。 “主导”状态是逻辑低,因为只有当设备实际将其驱动为低时,信号才会变低。

    • 每一次的传输都是以“起始位”开始,该起始位定义为在SCL为逻辑高电平的时候SDA的下降沿。

    • 传输以“停止位”结束 - 定义为当SCL为逻辑高电平的时候SDA的上升沿。 I2C传输必须以停止位结束,但在生成停止位之前可能会出现多个起始位。

    • 数据在时钟为高时有效,在时钟为低时改变状态; 数字通信系统通常都是边沿驱动的,因此实际上数据在时钟的上升沿被读取,在时钟的下降沿时进行更新。

    • 信息一次一个字节地交换,从最高有效位开始,每个字节后跟一个ACK或NACK。

    • 你可能期望ACK由逻辑高指示,NACK由逻辑低指示,但事实并非如此。 ACK为逻辑低,NACK为逻辑高。 这是必要的,因为高是隐性状态 - 如果“从设备”不工作,信号自然浮动到NACK,同样只有当设备正在运行并准备继续进行传输时,才会发送ACK。

    以下为I2C数据传输的顺序:

    1. 主机生成一个起始位以启动传输。

    2. 主设备发送与其想要通信的从设备相对应的7位地址。

    3. 第一个单字节段中的最后一位是读/写指示符。如果想要从“从设备”读取数据,则“主设备”将该位设置为逻辑高电平; 如果要将数据写入“从设备”,则将其设置为逻辑低电平。

    4. 下一个字节是第一个数据字节,它来自主设备或从设备,具体取决于读/写位的状态。像往常一样,我们有8位数据,从最重要的位开始。

    5. 数据字节之后是ACK或NACK,如果这是读数据传输则由“主设备”生成,如果是写数据传输,则由“从设备”生成。 ACK和NACK可能意味着不同的东西,具体取决于通信设备的固件以及底层的硬件设计。例如,主设备可以使用NACK来表示“这是最后一个数据字节”,或者如果“从设备”知道要发送多少数据,它可以使用ACK来确认数据是否已成功接收。

    6. 传输以“主设备”生成的停止位终止。

    传输多少字节?

    每次传输都是以同样的方式开始:起始位、地址、读/写、ACK/NACK。 之后,任何数量的字节都可以从“主设备”发送到“从设备”或从“从设备”发送到”主设备“,每个字节后跟ACK或NACK。 NACK可以用来表示“停止发送数据!”。例如,“主设备”可能希望从“从设备”(例如温度传感器)接收连续的数据流,每个字节后面都会有ACK,如果“主设备”需要处理其它事情,它可以用NACK告知”从设备“并在它准备就绪时再开始新的传输。

    由于篇幅限制,在此我们不做更详细的介绍,有兴趣的朋友可以阅读Wikipedia中关于I2C的介绍以及该词条下面的参考文章。对该总线的使用以及技术细节有一定程度的了解会帮助我们在实际的设计中更加有效地完成数据的传输设计以及有可能的问题定位。

    一个应用举例 - 下面是我们用小脚丫FPGA做的计算器,我们通过FPGA逻辑实现了I2C的主控制功能,来操作挂在I2C总线上的触摸按键控制器、挂在SPI总线上的LCD显示屏。

    小脚丫FPGA做成的计算器

    计算器的功能框图,3颗触摸控制器挂在I2C总线上

     

    转载 - -电路设计技能公=公众号

    展开全文
  • 介绍了IEEE 1394h串行总线的特点,并以FPGA嵌入式处理器Nios II为控制核心,设计实现了一种1394b高速数据传输系统。阐述了该系统的硬件设计和软件工作流程。实验表明,该系统可靠性高、实时性好、具有广泛的应用价值...
  • 以GMS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器,设计了一个串行数据采集/传输模块,给出了硬件原理图和主要源程序。
  • 并行传输数据和串行传输数据 计算机系统中的并行处理和数据传输模式 (Parallel Processing and Data Transfer Modes in a Computer System) Instead of processing each instruction sequentially, a parallel ...

    并行传输数据和串行传输数据

    Instead of processing each instruction sequentially, a parallel processing system provides concurrent data processing to increase the execution time.

    并行处理系统不是顺序处理每个指令,而是提供并行数据处理以增加执行时间。

    In this the system may have two or more ALU's and should be able to execute two or more instructions at the same time. The purpose of parallel processing is to speed up the computer processing capability and increase its throughput.

    在这种情况下,系统可能具有两个或多个ALU,并且应该能够同时执行两个或多个指令。 并行处理的目的是加快计算机处理能力并提高其吞吐量。

    NOTE: Throughput is the number of instructions that can be executed in a unit of time.

    注意: 吞吐量是单位时间内可以执行的指令数。

    Parallel processing can be viewed from various levels of complexity. At the lowest level, we distinguish between parallel and serial operations by the type of registers used. At the higher level of complexity, parallel processing can be achieved by using multiple functional units that perform many operations simultaneously.

    可以从各种复杂度上查看并行处理。 在最低层次上,我们通过使用的寄存器类型区分并行操作和串行操作。 在较高的复杂度上,可以通过使用同时执行许多操作的多个功能单元来实现并行处理。

    Mapping and Concept of Virtual Memory

    计算机系统的数据传输模式 (Data Transfer Modes of a Computer System)

    According to the data transfer mode, computer can be divided into 4 major groups:

    根据数据传输方式,计算机可分为4大类:

    1. SISD

      可持续发展研究所

    2. SIMD

      SIMD

    3. MISD

      MISD

    4. MIMD

      MIMD

    SISD(单指令流,单数据流) (SISD (Single Instruction Stream, Single Data Stream))

    It represents the organization of a single computer containing a control unit, processor unit and a memory unit. Instructions are executed sequentially. It can be achieved by pipelining or multiple functional units.

    它代表了包含控制单元,处理器单元和存储单元的单个计算机的组织。 指令按顺序执行。 可以通过流水线或多个功能单元来实现。

    SIMD(单指令流,多数据流) (SIMD (Single Instruction Stream, Multiple Data Stream))

    It represents an organization that includes multiple processing units under the control of a common control unit. All processors receive the same instruction from control unit but operate on different parts of the data.

    它代表一个组织,在一个公共控制单元的控制下包括多个处理单元。 所有处理器都从控制单元接收相同的指令,但是对数据的不同部分进行操作。

    They are highly specialized computers. They are basically used for numerical problems that are expressed in the form of vector or matrix. But they are not suitable for other types of computations

    它们是高度专业的计算机。 它们基本上用于以向量或矩阵形式表示的数值问题。 但是它们不适合其他类型的计算

    MISD(多指令流,单数据流) (MISD (Multiple Instruction Stream, Single Data Stream))

    It consists of a single computer containing multiple processors connected with multiple control units and a common memory unit. It is capable of processing several instructions over single data stream simultaneously. MISD structure is only of theoretical interest since no practical system has been constructed using this organization.

    它由一台计算机组成,其中包含与多个控制单元和一个公共存储单元连接的多个处理器。 它能够同时在单个数据流上处理多个指令。 MISD结构仅具有理论意义,因为尚未使用该组织构建实用系统。

    MIMD(多指令流,多数据流 (MIMD (Multiple Instruction Stream, Multiple Data Stream)

    It represents the organization which is capable of processing several programs at same time. It is the organization of a single computer containing multiple processors connected with multiple control units and a shared memory unit. The shared memory unit contains multiple modules to communicate with all processors simultaneously. Multiprocessors and multicomputer are the examples of MIMD. It fulfills the demand of large scale computations.

    它代表能够同时处理多个程序的组织。 它是一台计算机的组织,其中包含与多个控制单元和一个共享存储单元连接的多个处理器。 共享内存单元包含多个模块,可同时与所有处理器通信。 多处理器和多计算机是MIMD的示例。 它满足了大规模计算的需求。

    翻译自: https://www.studytonight.com/computer-architecture/parallel-processing-and-data-transfer

    并行传输数据和串行传输数据

    展开全文
  • 本设计通过模拟开关CD4053将一路单片机串行口收发信号,分时转换成两路串行口,然后使用不同的接口芯片,实现了RS232和485总线同在一个系统下分时完成了通信工作。
  • 串行数据总线由于占用较少的管脚被广泛应用在MCU和外设的连接中,在过去的几十年里,有三种最常用的多线串行数据传输格式SPI、I2C和UART。这3种串行总线的主要区别: SPI - Serial Peripheral Interface...

    串行数据总线由于占用较少的管脚被广泛应用在MCU和外设的连接中,在过去的几十年里,有三种最常用的多线串行数据传输格式SPI、I2C和UART。这3种串行总线的主要区别:

    • SPI - Serial Peripheral Interface(串行外设接口),突出了外设,也就有了主(Master - 控制器)和从(Slave - 外设)之分,在总线中也就只有一个“主人”,其它都是处于服从的位置,也就是Slave,它是一种有时钟信号的同步串行总线,从器件的寻址是靠专用的片选信号线SS来实现的;

    • I2C - Inter-Integrated Circuits(集成电路之间的连接),没有突出主次,也就是所有挂在总线上的器件都是平等的,它也是一种有时钟信号的同步串行总线,每个器件都有自己的地址,两根信号线都需要通过电阻上拉;

    • UART - universal asynchronous receiver/transmitter(通用异步收/发),顾名思义,它是异步串行总线,传输的信号中没有专用的时钟信号线。

    由于很多MCU、外设芯片为了节省管脚,都采用了管脚功能复用的方式,同一个管脚既可以用于SPI,也可以用于I2C,根据具体的器件连接方式进行选用。当器件的管脚配置为I2C的时候,要记住在I2C的两根信号线(SCL、SDA)上一定要有上拉电阻,SPI则不需要。

    今天我们就先来说说SPI:

    SPI(Serial Peripheral Interface - 串行外设接口)是一种用于短距离通信(主要是嵌入式系统中)的同步串行通信接口规范,这种接口由Motorola发明,已经成了一种事实标准。广泛用于各种MCU处理器中,同传感器,串行ADC、DAC、存储器、SD卡以及LCD等进行数据连接。

    几乎所有的微处理器/微控制器都有SPI/I2C和UART接口,而且不止一个

    SPI和I2C也被广泛用于传感器的数字接口连接

    即便FPGA也将SPI和I2C做成了硬化的IP在芯片内

    主要的信号线:

    SPI总线由4根主要的信号线组成以实现数据在主设备(Master)和从设备(Slave)之间的全双工(收、发同时执行)同步(由时钟同步)通信:

    • SCLK:串行时钟(由主设备输出),每个时钟周期将会移出一个新的数据位;

    • MOSI:主设备输出⇒从设备输入,数据由主设备进入从设备,器件A上的MOSI线连接到器件B上的MOSI线。

    • MISO:主设备输入⇐ 从设备输出,数据由从设备送到主设备(或其它从设备,采用菊花链配置),器件A上的MISO线连接到器件B上的MISO线。

    • SS(或SSN): 从设备选中(低电平有效),用于主设备控制从设备用,当该从选择信号线有效的时候表示主设备正在向相应的从设备发送数据或从相应的从设备请求数据。

    SPI端口管脚的名字也有其它的叫法,不同的芯片公司叫法不同,比如:

    • 串行输出: SCLK : SCK, CLK.

    • 主输出 –> 从输入: MOSI:SIMO、SDI(for slave devices)、DI、DIN、SI、MTST.

    • 主输入 ← 从输出: MISO:SOMI、SDO (for slave devices )、DO、DOUT、SO、MRSR.

    • 从选择: SS: SSN、nCS、CS、CSB、CSN、EN、nSS、STE、SYNC.

    主从器件之间的连接及数据传输方式

    基本的主从配置

    SPI允许将数据位从主设备移出到从设备,同时,可以将从设备的位移出到主设备中。

    动画1显示数据从器件A移出到器件B,从器件B移出到器件 A.

    动画2显示了通过一个虚拟的4通道示波器捕捉的两个器件之间SPI的转换 

    由于SPI未标准化,不同厂商的器件具体的定义不同,有的首先传输最高有效位(MSb),有的则是最低有效位(LSb),这需要我们认真阅读用到的相应器件的数据手册,以确定正确的数据处理方式。

    4种传输模式:

    每次数据传输都是先将SSN(有的器件命名为SS,从选择线)被驱动为逻辑低电平时开始。由时钟的极性(CPOL)和相位(CPHA)构成了4种不同的数据传输模式(0,1,2,3),分别对应四种可能的时钟配置。

    • CPOL: 时钟的极性,它控制着时钟信号的初始逻辑状态。

    • CPHA: 时钟相位,它控制了数据转换和时钟转换之间的关系。

    时钟的极性和相位构成了4种不同的可能,也就有4种模式

    在时钟周期的上升沿采样的位在时钟周期的下降沿移出,反之亦然。

    具有非反相时钟极性(即,当从器件选择转换为逻辑低时,时钟处于逻辑低电平):

    • 模式0:配置时钟相位使得数据在时钟脉冲的上升沿采样,并在时钟脉冲的下降沿移出。 这对应于上图中的第一个蓝色时钟轨迹。 请注意,数据必须在时钟的第一个上升沿之前可用。

    • 模式1:配置时钟相位使得数据在时钟脉冲的下降沿采样,并在时钟脉冲的上升沿移出。 这对应于上图中的第二个蓝色时钟轨迹。

    使用反相时钟极性(即,当从器件选择转换为逻辑低时,时钟处于逻辑高电平):

    • 模式2:配置时钟相位,使得数据在时钟脉冲的下降沿采样,并在时钟脉冲的上升沿移出。 这对应于上图中的第一个橙色时钟轨迹。 请注意,数据必须在时钟的第一个下降沿之前可用。

    • 模式3:配置时钟相位,使得数据在时钟脉冲的上升沿采样,并在时钟脉冲的下降沿移出。 这对应于上图中的第二个橙色时钟轨迹。

    由于主设备一般为可以编程各种模式的控制器/处理器或者可以灵活编程的FPGA,因此在使用SPI连接的时候要认真阅读自己选用的从设备的工作模式,以便在时许上满足传输的要求。

    主、从器件连接方式 

    通过多个从片选信号(SSN)配置

    在标准的SPI配置中,主设备可以通过使能相应的从设备,即通过将相应设备的从选择线(SSN或SS)设置为逻辑低电平,通过共享的公共数据线将数据写入各个从设备或由各个从设备中读取数据。 应注意不要同时使能多个从设备,因为返回到主设备的数据将在MISO线路之间的驱动器上产生竞争导致无法进行数据的判读。 在某些应用中不需要将数据返回给主设备,在这种情况下,如果主设备想要将相同的数据发送到多个从设备,则可以同时寻址多个从设备。

    在多从设备选择配置中,每个从设备都需要来自主设备的唯一从设备选择线(SS、SSN或CSn)。如果主设备没有足够的I/O引脚用于所需数量的从设备,则使用解码/解复用器(例如74HC(T)238(3到8线)来实现I/O扩展)。

    菊花链配置

    在这种配置中,数据从一个设备移动到下一个设备, 最终的从设备可以将数据返回给主设备(给FPGA编程的JTAG在给多个器件编程的时候也常用这种方式)。

    在菊花链配置中,所有从设备共享一条公共的从选择线(SS)。 数据从主设备传输到第一个从设备,然后从第一个从设备传输到第二个从设备,依此下去,数据沿着线路级联,直到系列中的最后一个从设备,最后的一个从设备使用其MISO线路将数据传送到主设备。

    这种配置非常适合于主设备的信号引脚有限的场景。

    SPI的优缺点:

    优点:

    • 支持全双工通信

    • 推挽驱动(跟漏极开路正相反)提供了比较好的信号完整性和较高的速度

    • 比I²C或SMBus吞吐率更高

    • 协议非常灵活支持“位”传输

      <ul><li>
      	<p>不仅限于8-bit一个字节的传输</p>
      	</li>
      	<li>
      	<p>可任意选择的信息大小、内容、以及用途</p>
      	</li>
      </ul></li>
      <li>
      <p>异常简单的硬件接口:</p>
      
      <ul><li>
      	<p>一般来讲比I²C或SMBus需要的功耗更低,因为需要更少的电路(包括上拉电阻)</p>
      	</li>
      	<li>
      	<p>没有仲裁机制或相关的失效模式</p>
      	</li>
      	<li>
      	<p>“从设备”采用的是“主设备”的时钟,不需要精确的晶振</p>
      	</li>
      	<li>
      	<p>“从设备”不需要一个单独的地址 — 这点不像I²C或GPIB或SCSI</p>
      	</li>
      	<li>
      	<p>不需要收/发器</p>
      	</li>
      </ul></li>
      <li>
      <p>在一个器件上只用了4个管脚, 板上走线和布局连接都比并行接口简单很多</p>
      </li>
      <li>
      <p>每个设备最多只有一个单独的从设备选择信号(SS、SSN、CSn);其它的都是共享的</p>
      </li>
      <li>
      <p>信号都是单方向的,非常容易进行电流隔离</p>
      </li>
      <li>
      <p>对于时钟的速度没有上限,有进一步提高速度的潜力,很多MCU的SPI传输速率可以高达50Msps,可用于数据采集以及图像的传输。</p>
      </li>
      

    缺点:

    • 相比于I²C总线需要更多的管脚, 即便是只用到3根线的情况下

    • 没有寻址机制,在共享的总线连接时需要通过片选信号支持多个设备的访问

    • 在从设备侧没有硬件流控机制(主设备一侧可以通过延迟到下一个时钟沿以降低传输的速率)

    • 从设备无法进行硬件“应答”(主设备传送的信息无法确定传递到哪里,是否传递成功)

    • 一般只支持一个主设备(取决于设备的硬件构成)

    • 没有查错机制

    • 没有一个正式的标准规范,无法验证一致性

    • 相对于RS-232, RS-485, 或CAN-总线,只能近距离传输

    • 存在很多的变种,很难能够找到开发工具(例如主适配卡)支持这所有的变种

    • SPI不支持热交换(动态地增加一个节点).

    • 如果想使用“中断”,只有通过SPI信号以外的其它信号线,或者采用类似USB1.1或2.0中的周期性查询的欺骗方式

    应用举例:

    小脚丫FPGA学习主板上的DAC、ADC、以及用于图形显示的液晶屏都是通过SPI接口连接的。

    小脚丫FPGA主板的实物照片,外设基本都是通过SPI、I2C以及UART进行连接的

    小脚丫FPGA主板的功能框图

    鉴于此,我们硬件工程师很有必要深入了解SPI、I2C以及UART的技术细节,尤其是传输信号线的连接以及传输的时序要求,争取能够自己通过FPGA来编程实现各种传输总线。

     

    转载 -- 电路设计技能公众号

    展开全文
  • 基于FPGA的具有流量控制机制的高速串行数据传输系统设计.pdf
  • 针对传统ADC/DAC应用中采样数据并行传输存在线间串扰大、同步难等问题,...设计结果表明,这种串行传输方式不仅解决了并行传输所带来的诸多问题,还降低了制板设计时PCB布线的复杂程度、减少了板层数量、节约了成本。
  • 各位客官早,小店今日推出特色套餐“计算机网路基础之数据传输方式”,这道菜可以说是最近一段时间以来最硬的一道特色菜,还望各位走过路过的客官能暂缓脚步,尝一尝!当然了还是免费赠送哦!!! 一、数据传输方式...
  • 关键词 串行A/D转换器 串行数据传输 GMS97C2051单片机 在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最...
  • 为实现工业参数的高速远距离长线传输,应用 FPGA技术,设计并实现了一种基于RS-485总线的高速串行数据传输方法。分析RS-485数据传输的影响因素,阐述系统总体结构,由时钟脉冲传输测试确定了外围接口。利用串行信号的跳...
  • 串行传输和并行传输的概念

    千次阅读 2021-06-26 03:55:23
    串行传输是指数据的二进制代码在一条物理信道上将数据一位一位地依次传输方式;并行传输指的是数据以成组的方式,在多条并行信道上同时进行传输,是在传输中有多个数据位同时在设备之间进行的传输串行传输和并行...
  • 以GMS97C2051单片机为核心,采用TLC254312位串行A/D转换器,设计了一个串行数据采集/传输模块,给出了硬件原理图和主要源程序。
  • 串行通信的三种方式

    千次阅读 2019-10-06 19:27:38
    串口扫盲三:单工/半双工全双工 串行通讯的基本概念:与外界的信息交换称为通讯.基本的通讯方式有并行通讯和串行通讯两种. ...一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯.串行通讯...
  • 一种高速串行的FPGA间数据传输方法.pdf
  • 数据传输主要有三种不同的划分方式。 并行/串行通信; 同步/异步传输; 按数据的不同传输方向可分为单工、半双工、全双工。 1.并行通信和串行通信 (1)并行通信 并行通信是同时传送数据的各个位进行发送or接收的...
  • TI 串行数据 传输距离扩展 芯片组
  • TMS320C54XX系列DSP异步串行数据传输的研究与实现rar,DSP,McBSP,SPI,UART,异步串行收发器,多通道缓冲串行接口
  • Modbus串行传输方式

    千次阅读 2019-04-07 19:11:06
    RTU传输方式传输的数据帧为二进制数据,ASCII传输方式传输的是ASCII码。举例来说要发送 0x31(十进制数)使用RTU直接发送0x31就可以(占用一个byte),而ASCII码传输方式则需要发送0x33和0x31这两个字节(即十六进制...
  •  并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求通讯速率较高的应用场合。  串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路...
  • 首先将所需传输数据整合到AXI总线上,然后采用高速串行总线对数据进行传输,最后搭建FPGA的原型验证平台,通过vivado软件对传输数据进行分析,实现了多片FPGA间数据的高速传输。该方法不仅克服了FPGA原型验证系统...
  • 并行传输串行传输的区别是什么

    千次阅读 2021-06-27 10:23:17
    什么是串行通信串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与...
  • LVDS串行-解串器在电缆数据传输中的性能、电子技术,开发板制作交流
  • 工业标准 NRZ异步串行数据传输格式

    千次阅读 2019-01-20 11:29:14
    在了解NRZ之前,我们先来了解一下RZ 编码(Return-to-zero Code),即归零编码,所谓的归零编码就是在进行编码时每传输完一位数据,信号电平就会返回为0电平(零电平状态),比如正电平代表逻辑1(正电平状态),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,642
精华内容 41,856
关键字:

串行数据传输方式