Asynchronous 起始位与起始字节

Asynchronous 起始位与起始字节,asynchronous,communication,bit,Asynchronous,Communication,Bit,我知道在很多异步通信中,数据包都是以起始位开始的 但起始位只是1或0。如何区分起始位、结束位和最后一个数据包 前。 如果我选择开始位为0,结束位为1。 我收到0(数据流A)10(数据流B)1, 有什么可以阻止我假设存在一个数据流C,它包含“(数据流a)10(数据流B)”的相同内容 有一个起始字节,然后检查数据流中的位组合,不是更方便吗?这将减少开始/结束位之间混淆的可能性。好问题!大多数异步通信还指定一个停止位,它是开始位的补充,确保每个新符号以停止到开始转换开始 示例:让我们传输字符ABC,它

我知道在很多异步通信中,数据包都是以起始位开始的

但起始位只是1或0。如何区分起始位、结束位和最后一个数据包

前。 如果我选择开始位为0,结束位为1。 我收到0(数据流A)10(数据流B)1, 有什么可以阻止我假设存在一个数据流C,它包含“(数据流a)10(数据流B)”的相同内容


有一个起始字节,然后检查数据流中的位组合,不是更方便吗?这将减少开始/结束位之间混淆的可能性。

好问题!大多数异步通信还指定一个停止位,它是开始位的补充,确保每个新符号以停止到开始转换开始

示例:让我们传输字符
ABC
,它们是ASCII 65、66和67:

A = 65 = 0x41 = 0100 0001
B = 66 = 0x42 = 0100 0010
C = 67 = 0x43 = 0100 0011
我们还假设(任意)起始位为
0
,停止位为
1
,数据从MSB传输到LSB。当没有数据传输时,变送器将处于停止(
1
)状态。因此,接收者可能会看到:

Data:   ....1111 0010000011 111 0010000101 0010000111 11111....
         (quiet) ^   A    $     ^    B   $ ^    C   $ (quiet)
对于ASCII图形表示歉意,当通道空闲时,数据由一系列停止(
1
)位组成。当发送器准备发送字符时,它发送一个起始(
0
)位(用
^
标记),后面是字符代码,最后是一个停止(
1
)位(用
$
标记)。它继续发送停止位,直到下一个字符被传输,从另一个开始位开始


我们使用起始位而不是字节的原因是效率。上述方案需要10位(1start+8data+1stop)来传输8位数据,导致(10-8)/8=1/4=25%的开销。如果我们使用开始和停止字节,我们需要为每个字节的数据传输3个字节,这将是(3-1)/1=2=200%的开销。如果开始字节、数据字节和停止字节都是8位,那么我们必须为每个字符传输24位而不是10位,因此发送数据所需的时间几乎是2 1/2倍

以下是启动和停止位通常的工作方式:

  • 发送一个起始位,例如1。这向接收器指示将发送指定数量的数据比特,例如8
  • 发送8位数据
  • 发送一个停止位,例如0。这表示已发送8位数据

  • 如果要发送更多数据,则每个字节必须以开始位启动,以停止位终止。发射机和接收机必须就每个起始位发送的数据位数达成一致,以便接收机能够区分停止位和数据。有时,起始位实际上是多个位,甚至是一个字节,但想法是一样的。当接收器在接收到预先指定数量的数据比特后看到停止比特时,它识别数据帧的结束。有时,在停止位之前发送奇偶校验位,以提供简单的错误检测机制。

    它完全依赖于协议。您可以说,在开始符号之后,您将看到N个符号,或者您将一直阅读,直到遇到停止符号为止

    其中,符号colud可以是任意n位序列(包括位和字节)

    事实上,您的位示例完全适用于使用字节而不是位的协议

    假设您发送00000000流A 11111111 00000000流B 11111111。在这种情况下,您仍可能将其与流C=流A 11111111 00000000流B混淆


    通常使用起始位是因为电压电平变化会触发事件(请参阅中的边缘触发)。另一方面,除了触发事件外,还将使用具有多个位的起始符号来同步两个系统的时钟。PAL信号就是一个例子。

    开始和停止位来自工作日。它们本质上是一种脉冲,需要花费时间才能让机械硬件正常工作。Dos文本文件行以CR LF结束,这实际上导致托架返回第1列,而压板前进一行。我认为这符合顺序,因为CR发生的时间更长,LF可以有效地并行发生

    检测它有点困难。你得看着比特流过去。
    随着时间的推移,您应该能够检测到它,因为数据通常是ASCII码,周围有开始/停止位。通常这不是问题,因为它是由运行端口的处理的。

    人们总是可以定义一个开始字节作为消息开始的指示(ASCII SOH、STX和ETX代码正是用于此目的)。然而,用于连接到数据传输设备(RS232C和更高版本)的标准硬件和协议在较低级别上运行,并且通常不可能也不希望改变这种安排(尤其是通过软件)

    高性能同步数据传输方案,例如用于局域网和广域传输系统的方案,确实使用了复杂的帧标记。帧标记是一种独特的位模式,在消息数据流中从未出现过。通常存在一种特殊的重写规则,该规则基本上“转义”类似位模式的任何数据出现,以便传输设备不会将其视为帧标记。这些转义模式是由接收者重建的,因此发送者和接收者永远不必注意这一点。这些安排使得专用硬件更加重要,例如个人计算机上的典型网络接口卡(现在是主板芯片)

    异步串行通信背景

    将异步串行传输视为字符/数据帧之间的异步传输和t范围内的同步传输是很有用的