奇偶校验码
好的,我们来详细解释一下奇偶校验码。
核心概念
奇偶校验码是最简单、最常用的一种差错检测编码。它的主要目的是检测数据在传输或存储过程中是否发生了单个比特位的错误(即1变成了0或0变成了1)。
基本原理
- 确定数据位: 首先,你有一组原始的数据位(称为信息位),你想发送或存储它们。例如,一个字节的数据(8位)。
- 添加校验位: 在发送或存储之前,在这组原始数据位的后面(或前面,约定即可)额外添加一个比特位,称为奇偶校验位。
- 设定校验规则:
- 奇校验规则: 添加校验位后,整个数据块(原始信息位 + 校验位)中所有值为“1”的比特位的总个数必须是奇数。
- 偶校验规则: 添加校验位后,整个数据块(原始信息位 + 校验位)中所有值为“1”的比特位的总个数必须是偶数。
- 发送/存储: 发送端或写入端将包含原始信息和校验位的完整数据块发送出去或存储起来。
- 接收/读取与校验: 接收端或读取端收到数据块后:
- 计算收到的数据块中所有值为“1”的比特位的实际总个数。
- 根据事先约定好的规则(奇校验还是偶校验),判断这个总数是否符合规则:
- 如果符合(奇校验下总数为奇,偶校验下总数为偶),则认为没有检测到错误(或更准确地说,没有检测到奇数个错误)。
- 如果不符合(奇校验下总数为偶,偶校验下总数为奇),则认为检测到了错误。
关键点与示例
-
校验位的值由信息位决定: 发送端需要计算校验位:
- 对于偶校验:校验位 = 原始数据中“1”的个数是奇数?那么校验位设为“1”(使总数为偶)。原始数据中“1”的个数是偶数?那么校验位设为“0”(保持总数为偶)。
- 对于奇校验:校验位 = 原始数据中“1”的个数是奇数?那么校验位设为“0”(保持总数为奇)。原始数据中“1”的个数是偶数?那么校验位设为“1”(使总数为奇)。
-
示例1(偶校验):
- 原始信息位:
1011001(其中‘1’的个数是4,偶数) - 偶校验规则下,总“1”数需为偶 -> 校验位应设为
0(因为4是偶数,不需要改变) - 发送的完整数据块:
1011001+0=10110010 - 接收方收到
10110010,计算“1”的个数:1+0+1+1+0+0+1+0 = 4(偶数) -> 符合偶校验规则 -> 未检测到错误。
- 原始信息位:
-
示例2(偶校验 + 发生1位错误):
- 发送
10110010(正确) - 传输中第三位出错:
1**0**10010-> 变成了10010010 - 接收方计算
10010010中“1”的个数:1+0+0+1+0+0+1+0 = 3(奇数) - 期望是偶数(偶校验),实际是奇数 -> 检测到错误!
- 发送
-
校验位的放置: 校验位通常添加在信息位的末尾(如上例)或开头,只要发送方和接收方约定好位置即可。
优点
- 简单: 原理易懂,硬件实现成本非常低(几个异或门即可)。
- 开销小: 只增加一个额外的校验位,冗余度低(例如8位数据只需1位校验,开销12.5%)。
- 检测奇数个错误: 能够可靠地检测出数据块中发生的任意奇数个比特位错误(1位、3位、5位...)。
缺点
- 无法检测偶数个错误: 如果数据块中发生偶数个比特位错误(2位、4位、6位...),错误位相互抵消,总“1”个数的奇偶性不会改变,校验无法发现错误。
- 例如(偶校验):发送
10110010(4个‘1’,偶)。传输中第2位和第4位同时出错:1**0**1**0**0010->10000010(2个‘1’,偶)。校验通过,但错误未被检测出来!
- 例如(偶校验):发送
- 无法纠错: 奇偶校验码只能检测错误(且仅限于奇数个),无法确定错误发生在哪一位,因此不具备纠错能力。检测到错误后,通常需要请求重发数据。
- 无法检测突发错误: 虽然能检测奇数个分散错误,但对于连续多位(突发)错误,如果其中错误位总数是偶数,也无法检测。
总结
奇偶校验码是一种简单有效的单个或奇数个比特错误的检测机制,通过添加一个校验位并根据“1”的总个数是奇(奇校验)或偶(偶校验)来实现。它广泛应用于计算机内存(RAM)、串行通信(如UART)、以及其他需要低成本错误检测的场景。然而,它的局限性也很明显:无法检测偶数个错误,也不能纠正错误。在需要更高可靠性的场合,会使用更复杂的检错码(如校验和、CRC)或纠错码(如海明码)。
你需要一个具体的计算例子演示吗?
什么是奇偶校验电路?奇偶校验器是时序逻辑电路吗?
什么是奇偶校验电路?奇偶校验器是时序逻辑电路吗? 奇偶校验电路是一种数字电路,在数据传输过程中用于检测数据是否发生错误。在每个数据字节(通常是8
2023-10-17 16:16:02
STM32的UART奇偶校验注意
STM32的UART奇偶校验注意STM32的UART在初始化时,我们通常用到最多的就是无校验位,1停止位。但是我在项目中也遇到某些芯片通信用的需要奇校验
资料下载
笑过就走
2021-12-28 19:10:25
单片机串口分析起始位停止位奇偶校验位
串口解析串口配置1.波特率2.停止位3.数据位4.奇偶校验位比特率:通讯的频率停止位:可以选择1/1.5/2三个选择数据位:可以选择5/6/7/8四个选择奇偶校验位:可以选择奇
资料下载
h1654155957.9921
2021-11-20 10:36:05
DES使用一个56位的密钥以及附加的8位奇偶校验位详细资料说明
本文档的主要内容详细介绍的是DES使用一个56位的密钥以及附加的8位奇偶校验位详细资料说明。
资料下载
佚名
2021-03-29 14:26:08
CRC校验码并行计算的FPGA实现
用软件实现 CRC 校验码计算很难满足高速数据通信的要求 ,基于硬件的实现方法中 ,有串行经典算法 LFSR 电路 以及由软件算法推导出来的其它各种并行计算方法。以经典的LFSR 电路为基础 ,研究
资料下载
姚小熊27
2021-03-28 09:34:24
FPGA奇偶校验的基本原理及实现方法
在数字电路中,数据的正确性非常重要。为了保证数据的正确性,在传输数据时需要添加一些冗余信息,以便在接收端进行校验。其中一种常用的校验方式是奇偶校验
2023-05-14 14:59:49
增强FIFO模式下的奇偶校验
自昊芯推出专题讲解SCI串口通讯奇偶校验,分为两期讲解,上期主要讲解标准SCI模式下的奇偶校验,本期主要讲解增强FIFO模式下的奇偶校验。
2022-11-02 09:30:56
stm32 usart奇偶校验如何配置
stm32 usart奇偶校验如何配置?或许你在stm32 usart奇偶校验过程中会遇到如下一些坑,stm32 usart偶校验错误标志位以及
2021-07-23 09:55:38
stm32串口奇偶校验
STM32串口通信使用奇偶校验的时候应该设置数据位长度9bit,奇偶校验是硬件完成的,并且stm32用校验位时,数据位要选9位,8位会出现故障可
2021-07-23 09:26:51
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览