zoukankan      html  css  js  c++  java
  • 全双工/半双工/单工,串行通信/并行通信,同步通信/异步通信,电平信号/差分信号,并行接口/串行接口,串口通信

    资料来自网络,侵删。
     
    全双工/半双工:

    全双工(Full Duplex)是指在发送数据的同时也能够接收数据,两者同步进行,这好像我们平时打电话一样,说话的同时也能够听到对方的声音。目前的网卡一般都支持全双工。

    半双工(Half Duplex),所谓半双工是指一段时间内,只有一种动作发生,例如一条窄路,而只有一辆车可以通行,当当前有两辆车相对时,在这种情况下,只有一辆车先开,等到另一辆车的头部再开,这个例子生动地说明了原始半双工。原因。早期对讲机、早期集线器等设备都是基于半双工产品的。随着技术的不断进步,半双工会逐渐退出历史舞台。

    半双工需要“交警”来控制道路的方向,否则如果两个方向的数据同时发送,就会出现“碰撞”了。在网络中,交警被称为"CSMA/CD" 也就是"载波监听多点接入/冲突检查",这是一种用来辅助避免碰撞的访问方法。如果确实发生了碰撞,也要做出正确的反应。

    单工通信是指通信线路上的数据按单一方向传送。

    串行通信/并行通信:
     
    顾名思义,串行就是一个一个走,并行就是一排一排走,童叟无欺。
     
    并行信号就是以并行方式通信的信号,而串行信号就是以串行方式通信的信号。
    串行通信指数据在单条一位宽的传输线上,一比特接一比特地按顺序传送的方式,在早期的定义里也有说只有一根数据线,每个时钟脉冲下只能发送一位数据的方式;
    而在并行通信中一个字节(8位)数据是在8条并行传输线上同时由源端传到目的地,也可以说有多个数据线(几根就是几位),在每个时钟脉冲下可以发送多个数据位(几位的并行口就发送几位)。
    所以早期对串行通信与并行通信的理解为:同样的一个字节数据(8位),串行通信要分8次由低位到高位按顺序一位位地传送,而并行通信由于有8根线路,所以只要一次就可以传送过去,形象的说,把线路(通道)比作道路,能并排开几辆车的就可以说是“并行”,只能一辆一辆开的就属于“串行”了。
     
    串行线路通常是双向的,一条线路用于传输另一条线路用于接收。这是一个全双工链路。半双工链路使用一条线路,在某一时间只有一端可以传输。使用串行链路的最通用因特网协议是PPP。PPP协议是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
    串行通信的特点是:数据位传送,传送按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。串行通信的距离可以从几米到几千米。
    并行链路(如PC机架上的并行打印机端口)在同一时间通过多条线发送数据,比特传输通过八条或更多条线同时进行。并行连接具有吞吐量大的优点,但是为避免位同步问题距离受到限制。
    1、串行传输
    优点:使用的数据线少,在远距离通信中可以节约通信成本。
    缺点:因为每次只能传输一位数据,所以传输速度比较低。
    2、并行传输
    优点:因为可以多位数据一起传输,所以传输速度很快。
    缺点:内存有多少位,就要用多少数据线,所以需要大量的数据线,成本很高

    这是网上引用的,这段话在几年前可以说很完美,串行传输速度慢的原因是技术限制,时钟频率比较低。

    随着技术的发展,时钟频率越来越高,并行导线之间的相互干扰越来越严重。并行接口因为有多条并行且紧密的导线,但时钟频率提高的一定程度时,传输的数据已经无法恢复。而串口因为导线少,线间干扰容易控制,反而可以通过不断提高时钟频率来提高传输速率。

    而且并行设备的成本往往高于串行设备,所以现在许多高速设备都采用串行方式。

    同步通信/异步通信:

    同步和异步的区别:简单来说就是发送方和接收方按照同一个时钟节拍工作就叫同步,发送方和接收方没有统一的时钟节拍、而各自按照自己的节拍工作就叫异步。 (2)、同步通信中,通信双方按照统一节拍工作,所以配合很好;一般需要发送方给接收方发送信息同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。同步通信用在通信双方信息交换频率固定,或者经常通信时。带时钟同步信号传输。如-SPI,IIC通信。 (3)、异步通信又叫异步通知。在双方通信的频率不固定时(有时 3ms 收发一次,有时 3 天才收发一次)不适合使用同步通信,而适合异步通信。异步通信时接收方不必一直在意发送方,发送方需要发送信息时会首先给接收方一个信息开始的起始信号,接收方接收到起始信号后就认为后面紧跟着的就是有效信息,才会开始注意接收信息,直到收到发送方发过来的结束标志。异步通信:不带时钟同步信号。如·UART(通用异步收发器),单总线。

    同步通信与异步通信区别:

    同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;

    异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。

    同步通信效率高,异步通信效率较低。

    同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。

    同步通信可用于点对多点,异步通信只适用于点对点。

    异步通信:异步通信是指通信中两个字符(8位)之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。

    在异步通信中,每接收一个字符,接收方都要重新与发送主同步一次,所以接收端的同步时钟信号并不需要严格地与发送方同步,只要它们在一个字符的传输时间范围内能保持同步即可,这意味着南时钟信号漂移的要求要比同步信号低得多,硬件成本也要低的多,但是异步传送一个字符,要增加大约20%的附加信息位,所以传送效率比较低。异步通信方式简单可靠,也容易实现,故广泛地应用于各种微型机系统中。

    由于数据是二进制的,它可以用线路上的两种状态表示,正电压(通常为+5V)代表二进制的1,负电压(-5V)代表二进制的0。为了正确地读取位,必须使用某种同步和定时方案。异步通信在发送字符的首尾设置起始位和停止位,所以通信双方无需使用同一时钟,字符以一帧一帧的方式发送,每帧以起始位为开始,以停止位为帧的结束。接收器起始位为基准,使用与发送器相同频率的的本地局部时钟即可实现在一个字符内的同步(字符与字符间是异步的),异步通信一般要求收发双方的波特率相同。传输的起始——停止模式意味着对于每一新字符传输都重新开始,这就消除了在上次传输中可能产生的任何定时差异。

      虽然异步技术使用简单,但起始和停止位是额外开销,浪费了带宽。同步通信技术可以发送大数据块,比如说从1500到4096个字节。它在每帧的开始加上同步字符,通信双方必须使用同一时钟,传输时将每N位划分为一个时间片,在同一个时间片内一方发送,一方接收。接收端将检测到的同步字符后的数位当成实际信息来处理。在无信息传送时同步字符后的数位被填充成空字符,因为同步传输不允许有间隙。故同步通信无论是在字符与字符之间,还是在字符内部的位之间都是同步的。以太网使用Manchester信号编码方案,与数据一起发送时钟脉冲。

    电平信号和差分信号

    (1)、电平信号和差分信号是用来描述通信线路传输方式的。也就是说如何在通信线路上表达 1 和 0.

    (2)、电平信号的传输线中有一个参考电平线(一般是 GND),然后信号线上的信号值是由信号线电平和参考电平线的电压差决定。

    (3)、差分信号的传输线中没有参考电平,所有都是信号线。然后 1 和 0 的表达靠信号线之间的电压差。

    总结:电平信号的 2 根通信线之间的电平差异容易受到干扰,传输容易失败;差分信号不容易受到干扰因此传输质量比较稳定,现代通信一般都使用差分信号,电平信号几乎没有了。

    总结 2:看起来似乎相同根数的通信线下,电平信号要比差分信号要快;但是实际还是差分信号快,因为差分信号抗干扰能力强,因此 1 个发送周期更短。

    并行接口和串行接口

    (1)、串行、并行主要是考虑通信线的根数,就是发送方和接收方同时可以传递的信息量的多少

    (2)、譬如在电平信号下,1 根参考电平线+1 根信号线可以传递 1 位二进制;如果我们有 3根线(2 根信号线+1 根参考线)就可以同时发送 2 位二进制;如果想同时发送 8 位二进制就需要 9 根线。

    (3)、在差分信号下,2 根线(彼此差分)可以同时发送 1 位二进制;如果需要同时发送 8 位二进制,需要 16 根线。

    总结:听起来似乎并行接口比串行接口要快(串行接口一次只能发送 1 位二进制,而并行接口一次可以发送多位二进制)要更优秀;但是实际上串行接口才是王道,用的比较广。因为更省信号线,而且对传输线的要求更低、成本更低;而且串行时可以通过提高通信速度来提高总体通信性能,不一定非得要并行。

    总结:异步、串行、差分,譬如 USB 和网络通信更胜一筹。

     
    串口通信:
    串口通信是串行通信里面的异步方式。串行通信是相对于并行通信来说的。串口是一个事实存在的东西,比如DB9接口。
     
     
    同步通信一般是指有一个时钟信号进行数据信号同步。同步通信对接收方来说就相对简单一些。因为有时钟信号在,每一个高低电平变化一下,就去取一下数据就行了。通信速率可以由发送方或者说是主站设备进行控制。通信速度也相对比串口通信快很多。

    在很多设备上,不方便接太多线,比如接8根数据线,也不方便接同步时钟信号(这个后面再说),于是一种异步串行通信就诞生了。

    相对来说,异步串口通信,就只需要一根线就可以发送数据了。在对速率要求不高的情况,使用一根线发送数据是带来大大的方便和实用价值的。

    那么问题来了,怎么样才能保证一根线就能发送正常的数据呢。也就说发送方发送的数据,接收方是怎么知道是什么数据呢。为了能正常发送数据和接收正确的数据,那异步串口通信就需要满足以下几个条件:


    经理:我要用一根线就能传输数据,你来给我定个标准。

    研发:好。

    经理:只有一根线,我怎么知道数据什么时候开始呢。

    研发:就一根线,默认是高电平,那就有一个起始位吧。当检测到有低电平的时候,就是开始有一个字节的数据发送了,起始位之后,先是字节的最低位,传送一个字节。

    经理:可是,就一根线,过来的数据会不会有干扰,容易出错呀。

    研发:行呀,那就在字节数据后再加一个校验位。可以作奇校验,偶校验,1校验,0校验,无校验。

    经理:嗯 ,很不错。有起始位就应该有停止位,那我们就再加个停止位在后面吧。

    研发:。。。。。。。。。

    经理:传输一串数据,对方要怎么知道数据的拆分呢,怎么按时间或频率去解读数据位,校验位呢。

    研发:这样吧,双方约定一个波特率吧,定义一个每个位占用多长的时间,这样双方按这个波特率就可以处理了。

    经理:这个比特率呀。。。

    研发:老板,是波特率。

    经理:我知道,是比特率嘛。

    研发:这个波特率呢,是指1S钟可以传输多个位,也就知道一个位占用多长时间。这样就解决传输的问题了。

    经理:那万一传输过程,数据太快,判断失误停不下来怎么办。

    研发:那就把停止位可以调节为1个停止位或者2个停止位。这样就可以停下来了。

    经理:嗯,听着不错。就这样办吧。

    于是,串口通信就这样出来了。

    在串口的通信参数上,就有了波特率,数据位,停止位,校验位这几个参数来确保串口通信的正确性和稳定上。当然,这只是某个方面保证串口通信的正确性和稳定性,不代表设备间通信的正确性和稳定性。

    串口通信主要为分232,485,422 通信三种方式。


    RS232 电平和 TTL 电平

    (1)电平信号是用信号线电平减去参考线电平得到电压差,这个电压差决定了传输值是 1 还是 0.

    (2)在电平信号时多少 V 代表 1,多少 V 代表 0 不是固定的,取决于电平标准。譬如 RS232电平中-3V~-15V 表示 1;+3~+15V 表示 0;TTL 电平则是+5V 表示 1,0V 表示 0.

    (3)不管哪种电平都是为了在传输线上表示 1 和 0.区别在于适用的环境和条件不同。RS232的电平定义比较大,适合干扰大、距离远的情况;TTL 电平电压范围小,适合距离近且干扰小的情况。

    (4)我们台式电脑后面的串口插座就是 RS232 接口的,在工业上用串口时都用这个,传输距离小于 15 米;TTL 电平一般用在电路板内部两个芯片之间。

    (5)对编程来说,RS232 电平传输还是 TTL 电平是没有差异的。所以电平标准对硬件工程师更有意义,而软件工程师只要略懂即可。(把 TTL 电平和 RS232 电平混接是不可以的)

     

  • 相关阅读:
    Linq的一些常见Demo
    有一名员工发现日历已经7天没有翻了,于是他连着翻了7页,7天的总和刚好是138,问这一天是几号?
    20块钱,1块钱1瓶,两个空瓶子可以换一瓶,问最多可以喝几瓶?
    【转】Java编程之字符集问题研究
    Reset / Validate Buffer
    Article Master Data Deviation
    STAD Parameters
    Linux11.2 MySQL常用命令
    Linux11.1 设置更改Mysql的root密码及连接mysql
    Linux5.10 告警系统
  • 原文地址:https://www.cnblogs.com/RevelationTruth/p/14188575.html
Copyright © 2011-2022 走看看