同步通信 VS 异步通信

来源:互联网 发布:python开发入门 编辑:程序博客网 时间:2024/05/17 22:25

    在描述同步通信与异步通信之前,我们先得搞清串行通信的内涵。串行通信是指计算机主机与外设之间,以及主机系统与主机系统之间数据的串行传输。使用串口进行数据传输时,发送和接收的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。而同步通信与异步通信则是串行通信的两种不同方式,分别适合于不同的场合,且各有优缺点。

  • 同步通信

    同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息,由同步字符、数据字符和校验字符(CRC)组成。其中:

    1. 同步字符:位于帧的开头,用于确认数据字符的开始;

    2. 数据字符:在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;

    3. 校验字符:有1到2个,用于接收端对接收到的字符序列进行正确性的校验。

    当接收端确认接收到同步字符后,便在同步时钟的控制下逐位发送/接收。

图1  同步通信格式

    下面以IBM的BSC协议进一步进行说明,该协议规定了10个特殊字符(称为控制字符)作为信息传输的标志。

    其格式为

SYN

SOH

标题

STX

数据块

ETB/ETX

块校验

  (1)SYN:同步字符(Synchronouscharacter),每帧可加1个(单同步)或2个(双同步)同步字符。

  (2)SOH:标题开始(Start of Header)。

  (3)标题:Header,包含源地址(发送方地址)、目的地址(接收方地址)、路由指示。

  (4)STX:正文开始(Start of Text)。

  (5)数据块:正文(Text),由多个字符组成。

  (6)ETB:块传输结束(End of TransmissionBlock),标识本数据块结束。

  (7)ETX:全文结束(End of Text ),全文分为若干块传输。

  (8)块校验:对从SOH 开始,直到ETB/ETX 字段的检验码。

  • 异步通信

    异步通信,是以字符或者字节为单位组成字符帧进行传输。字符帧格式中包括空闲位、起始位、资料位、奇偶校验位、停止位。

    以RS232协议规定为例,异步通信一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始(低电平,逻辑值0),以“停止位”结束,字符之间没有固定的时间间隔要求。字符数据本身由5~8位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平(逻辑值1),这样就保证起始位开始处一定有一个下跳沿,如图:

图2 异步(RS232)通信格式

    接收端在收到起始信号之后只要在一个字符的传输时间内能和发送端保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准,也就是说,异步通信依靠检测起始位来实现发送端与接收端的时钟自同步。这样,只要发送端和接收端协商好字符帧格式和波特率,就可以由各自的时钟来控制数据的发送和接收。

  • 小结

 

同步通信

异步通信

传输格式

面向比特的传输,每个信息帧中包含若干个字符

面向字符的传输,每个字符帧只包含一个字符

时钟

要求接收时钟和发送时钟同频同相,通过特定的时钟线路协调时序

不要求接收时钟和发送时钟完全同步,对时序的要求较低

数据流

发送端发送连续的比特流

发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节

控制开销

控制字符开销较小,传输效率高

字符帧中,假设只有起始位、8个数据位和停止位,整个字符帧中的控制位的开销就达到了20%,传输效率较低

同步方式

从数据中抽取同步信息

通过字符起止的开始位和停止位抓住再同步的机会

通信结点

点对多点

点对点