跳到主要内容

1.12 奇偶校验发生器、检查器

现代通信大多是数字形式的,即由1和0组成。数字数据通过有线(在有线通信中)或无线方式传输。即使在先进的通信模式中,数据传输过程中也会出现错误(由于噪声)。

最简单的错误是比特损坏,即1可能被传输为0,反之亦然。为了确认接收到的数据是否是预期的数据,我们需要能够在接收端检测错误。在本教程中,我们将学习关于奇偶校验位、偶校验、奇校验、奇偶校验生成器和奇偶校验检查器的知识,并通过实际示例和实际电路进行说明。

什么是奇偶校验位?

奇偶校验位是一种基本的方法,用于检查数字通信和数据存储中的错误,以确保数据的准确性。它是添加到二进制代码字符串中的额外二进制位。在数字系统中,当二进制数据被传输和处理时,数据可能会受到噪声的影响,从而导致数据位中的0变为1,1变为0。

因此,为了使数据中的1的数量为偶数或奇数,会在包含数据的字中添加一个奇偶校验位。包含数据位和奇偶校验位的消息从发送器传输到接收器。在接收端,会计算消息中1的数量,如果与传输的不匹配,就意味着数据中存在错误。因此,奇偶校验位用于在二进制数据传输过程中检测错误。

偶校验和奇校验

数据位和奇偶校验位的总和可以是偶数或奇数。

  • 偶校验:调整奇偶校验位,使得代码中1的总数(包括奇偶校验位)为偶数。如果已经有偶数个1,则奇偶校验位为0;如果有奇数个1,则奇偶校验位为1。
  • 奇校验:调整奇偶校验位,使得1的总数为奇数。如果已经有奇数个1,则奇偶校验位为0;如果是偶数个1,则奇偶校验位设置为1。所有这些错误检测和校正都可以使用异或门(XOR)来完成(因为异或门在输入为偶数个时产生零输出)。

为了产生两位的和,一个异或门就足够了,而为了添加三位,需要两个异或门,如下图所示。

alt text

奇偶校验生成器电路

奇偶校验生成器电路是一种组合逻辑电路,用于在发送端使用。其主要功能是根据所选的奇偶校验方案(偶数或奇数)计算并添加奇偶校验位到数据流中。

  • 该电路以原始数据流(例如,一个字节)作为输入。
  • 它根据所选方案(偶数或奇数奇偶校验)对数据位进行操作。
  • 常用于这些操作的逻辑门包括异或门(XOR)。
  • 该电路的输出是附加了奇偶校验位的原始数据流。

奇偶校验检查器电路

奇偶校验检查器电路位于接收端。其作用是验证接收到的数据流(包括奇偶校验位)的奇偶校验,并检测任何潜在的错误。

  • 该电路接收包含奇偶校验位的整个数据流。
  • 它对接收到的数据(包括奇偶校验位)执行与发送端的奇偶校验生成器相同的计算(基于已知的偶数或奇数奇偶校验方案)。
  • 它将计算出的奇偶校验与接收到的奇偶校验位进行比较。
  • 错误检测
    • 如果计算出的奇偶校验与接收到的奇偶校验位匹配,则表明数据在传输过程中很可能没有被损坏。
    • 如果计算出的奇偶校验与接收到的奇偶校验位不匹配,则表明数据流中可能存在单比特错误。

重要说明:虽然奇偶校验检查对于检测单比特错误非常有效,但它无法确定数据流中错误的确切位置。它只是标记了错误的可能性。

现在,让我们了解数字电子学中的奇偶校验生成器和检查器,包括真值表和公式。

什么是奇偶校验生成器?

在数字电子学中,奇偶校验生成器是一种组合逻辑电路,它接受一个 n1n-1 位的数据,并生成要与比特流一起传输的附加位。这个附加位或额外位被称为奇偶校验位。

在偶数奇偶校验方案中,如果数据流中有偶数个1,则奇偶校验位为‘0’;如果有奇数个1,则奇偶校验位为‘1’。

在奇数奇偶校验方案中,如果数据流中有偶数个1,则奇偶校验位为‘1’;如果有奇数个1,则奇偶校验位为‘0’。让我们讨论偶数和奇数奇偶校验生成器。

偶数奇偶校验生成器

假设一个3位消息要与偶数奇偶校验位一起传输。设三个输入 AABBCC 应用于电路,输出位是奇偶校验位 PP。为了生成偶数奇偶校验位 PP,1的总数必须是偶数。

偶数奇偶校验生成器真值表

下图展示了3位消息的偶数奇偶校验生成器的真值表,其中在真值表中1的数量为奇数时,将1作为奇偶校验位放置,以使所有1的数量为偶数。

alt text

3位消息的偶数奇偶校验生成器的卡诺图简化如下:

alt text

从上述奇偶校验检查器真值表中,可以将奇偶校验位的简化表达式写为:

alt text

上述表达式可以通过使用两个异或门来实现。带有两个异或门的偶数奇偶校验生成器的逻辑图如下所示。由该电路生成的3位消息连同奇偶校验位一起传输到接收端,奇偶校验检查器电路在那里检查是否存在错误。

为了生成4位数据的偶数奇偶校验位,需要三个异或门来添加4位,它们的和将是奇偶校验位。

alt text

奇数奇偶校验生成器

假设3位数据要与奇数奇偶校验位一起传输。三个输入为 AABBCCPP 是输出奇偶校验位。为了生成奇数奇偶校验位,总位数必须是奇数。

奇数奇偶校验检查器真值表

在下面给出的真值表中,当真值表中1的总数为偶数时,为了使总位数为奇数,在奇偶校验位中放置1。

alt text

可以使用卡诺图简化奇数奇偶校验生成器的真值表,如下所示:

alt text

该生成器电路的输出奇偶校验位表达式为:

P=A(BC)P = A \oplus (B \oplus C)

上述布尔表达式可以通过使用一个异或门和一个同或门来实现,以设计一个3位奇数奇偶校验生成器。

该生成器的逻辑图如下图所示,其中两个输入应用于一个异或门,该异或门的输出和第三个输入应用于同或门,以产生奇数奇偶校验位。也可以使用两个异或门和一个非门来设计该电路。

alt text

什么是奇偶校验检查器?

奇偶校验检查器是一种逻辑电路,用于检查传输中的可能错误。根据传输端生成的奇偶校验类型,该电路可以是偶数奇偶校验检查器或奇数奇偶校验检查器。当该电路用作偶数奇偶校验检查器时,输入位的数量必须始终是偶数。

偶数奇偶校验检查器

假设在发送端生成了一个3位消息和偶数奇偶校验位。这4位被作为输入应用于奇偶校验检查器电路,该电路检查数据中的错误可能性。由于数据是以偶数奇偶校验传输的,因此在电路中接收到的4位必须具有偶数个1。

如果发生任何错误,接收到的消息将包含奇数个1。奇偶校验检查器的输出用 PECPEC(奇偶校验错误检查)表示。

偶数奇偶校验检查器真值表

下表展示了偶数奇偶校验检查器的真值表,其中如果发生错误,即接收到的四个比特中1的数量为奇数,则 PEC = 1;如果没有错误,即4位消息中1的数量为偶数,则 PEC = 0。

alt text

上述真值表可以通过卡诺图简化,如下所示。

alt text
alt text

上述逻辑表达式可以通过使用三个异或门实现,如下图所示。如果接收到的消息包含五个比特,则需要一个额外的异或门来进行偶数奇偶校验检查。

alt text

奇数奇偶校验检查器

假设在发送端传输了一个3位消息和奇数奇偶校验位。奇数奇偶校验检查器电路接收这4位,并检查数据中是否存在错误。

如果数据中1的总数为奇数,则表示没有错误;如果1的总数为偶数,则表示存在错误,因为数据是以奇数奇偶校验传输的。

奇数奇偶校验检查器真值表

下图展示了奇数奇偶校验生成器的真值表,其中如果接收到的4位消息中1的数量为偶数(因此发生了错误),则 PEC = 1;如果消息中1的数量为奇数(即没有错误),则 PEC = 0。

alt text

上述真值表中的 PEC 表达式可以通过卡诺图简化,如下所示。

alt text

经过简化后,最终得到 PEC 的表达式为:

PEC=(AB)(CP)PEC = (A \odot B) \odot (C \odot P)

其中,\odot 表示同或运算。

上述奇数奇偶校验检查器的表达式可以通过使用三个同或门实现,如下图所示。

alt text

奇偶校验生成器/检查器集成电路

有多种不同输入配置的奇偶校验生成器/检查器集成电路,例如 5 位、4 位、9 位、12 位等。其中最常用和标准的奇偶校验生成器/检查器集成电路是 74180。

74180 是一个 9 位奇偶校验生成器或检查器,用于检测高速数据传输或数据检索系统中的错误。下图展示了 74180 集成电路的引脚图。

alt text

该集成电路包含从 A 到 H 的八个奇偶校验输入和两个级联输入。有两个输出:偶数和与奇数和。在实现生成器或检查器电路时,未使用的奇偶校验位必须连接到逻辑零,级联输入必须不相等。

如果将此集成电路用作偶数奇偶校验检查器,当发生奇偶校验错误时,“偶数和”输出变低,“奇数和”输出变高。如果将此集成电路用作奇数奇偶校验检查器,输入位数应为奇数,但如果发生错误,“奇数和”输出变低,“偶数和”输出变高。

常见问题解答

  • 奇偶校验检查如何检测错误? 奇偶校验位通过向数据块添加一个额外的位来用于错误检测。这个额外的位被计算以使数据块中1的总数为偶数或奇数(取决于奇偶校验方案)。当数据被接收时,会重新计算奇偶校验。如果它与原始奇偶校验不匹配,则检测到错误。

  • 奇校验和偶校验有什么区别? 奇校验和偶校验的主要区别在于奇偶校验位的期望结果。奇校验需要奇数个1,偶校验需要偶数个1。

  • 哪种逻辑门是奇偶校验检查器? 异或门(XOR)通常用于奇偶校验检查,因为它能够判断两个输入是否不同。

  • 如何使用逻辑门设计一个3位偶数奇偶校验生成器? 3位偶数奇偶校验生成器根据三个输入位(A, B, C)生成一个奇偶校验位。如果输入中1的数量为奇数,则奇偶校验位设置为1;如果1的数量为偶数,则设置为0。为此,我们可以使用异或门。异或门在输入不同时输出1,在输入相同时输出0。

  • 3位奇偶校验检查器的作用是什么? 3位奇偶校验检查器验证接收到的数据的准确性。它计算接收到的3个数据位和奇偶校验位的奇偶校验。如果计算出的奇偶校验与接收到的奇偶校验匹配,则很可能没有错误。否则,它表明传输的数据中可能存在错误。

  • 如何实现一个4位奇偶校验生成器电路? 要实现一个4位奇偶校验生成器电路,使用异或门依次组合输入位。最后一个异或门的输出就是奇偶校验位。以下是实现4位奇偶校验生成器的步骤:

    1. 将输入位 A 和 B 连接到第一个异或门。
    2. 将输入位 C 和 D 连接到第二个异或门。
    3. 将前两个异或门的输出连接到第三个异或门的输入。
    4. 第三个异或门的输出就是奇偶校验位。
  • 什么是奇偶校验位纸牌魔术? 这是一个基于奇偶校验概念的魔术。通过操纵行和列中黑牌的数量,魔术师可以看似预测哪张牌被翻转了。

  • 什么是简单的奇偶校验码? 简单奇偶校验码是一种基本的错误检测方法,它通过在数据块中附加一个奇偶校验位来实现。奇偶校验位的设置是为了确保数据块中1的总数为偶数或奇数。