当今世界无疑是一个电子化的世界,各种各样的系统执行着各种各样的功能。这些系统之间需要相互沟通,以实现它们预期的目标。他们采取的行动很大程度上依赖于他们接收/传输的数据。例如,假设我们正在降落一架飞机,并向系统发送0010000以将轮子拖出。
现在,假设我们的位模式沿着通道被损坏,系统接收为0010100。这可能会导致系统要么放弃输入(如果输入无效),要么执行与预期操作完全不同的操作。无论哪种情况,结果都将是灾难,就像我们的一个比特被改变了一样。这个(相当夸张的)示例表明了无错误数据通信的重要性。实现这一点的一种方法是使用平价发电机和跳棋。
奇偶校验是在需要传输的数据流的MSB上附加一个称为奇偶校验位的额外位的一种方法。现在,如何决定是加1还是加0?这取决于我们是否渴望拥有奇偶校验或偶偶校验。
奇校验
这种情况下,发送的比特流中的1的数量(数据位与奇偶位结合)必须保持为奇数。也就是说,假设我们的比特流为1001011,那么奇偶校验将被生成为1,这样产生的比特流(= 11001011)中的1的数量为5,一个奇数。同理,我们可以说,对于1001010的数据序列,奇偶位必须为0。
偶同位
如果我们选择偶数奇偶校验,那么我们需要确保比特流中1的总数,包括奇偶校验位,变成偶数。例如,如果数据字符串是1001011,那么奇偶位将是0;如果它是1001010,那么奇偶位应该是1。
现在,让我们试着设计一个数字电路,它可以帮助我们产生我们的奇偶位。
奇宇称发电机
让我们假设我们有一个3位数据序列(B2B1B0),这需要沟通。表I显示了奇偶校验位(OP),它必须由我们的电路为每个输入位的组合产生。
表我
B2 | B1 | B0 | OP |
0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 0 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 0 |
由此,我们可以求出P用B表示的表达式2B1和B0作为
这意味着我们可以建立一个奇宇称发电机对于三位数据字使用两位XNOR门。实现的设计如图1所示。
即使平价发电机
现在让我们设计一个偶校验(EP)二位数据字B的生成器1B0。相关真值表如表2所示。
表二世
B1 | B0 | EP |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
因此我们有
这就导致了如图2所示的数字电路。
这种类型的奇偶校验的一代被用于SPI总线和UART传输。