详解_数据校验(奇偶校验、CRC校验、海明校验)

一、基本概念

在信息传输中,由于多种原因,可能造成数据出现错误。信息接收方常常需要对接收到的信息进行数据校验(检错和纠错)。常用的数据校验方法有奇偶校验、CRC校验、海明校验等。

1.码距的概念:
  • 两个二进制数的码距:两个二进制数进行位的异或运算后,得到的二进制数里,位值为1的个数,也就是两个二进制数对应位位值不相同的个数。
  • 编码的最小码距:同一编码中,任意两个合法编码之间不同二进数位数(即码距)的最小值。
  • 码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大,编码效率越低。编码时,选择码距必须考虑信息发生差错的概率和系统能容许的最小差错率。
2.校验编码

校验编码:在原始的二进制数(有效数据)中按照一定原则增加冗余项(校验数据)得到新的数据,并作为实际传输中的数据。即,通过增加校验位,进而增加码距,以便校验数据。

3.码距和校验的关系
  1. 在一个码组内为了检测e个错位的误码,要求最小码距d应该满足: d>=e+1;
  2. .在一个码组内为了纠正t个错位的误码,要求最小码距d应该满足: d>=2t+1。

码距与校验能力的关系

二、奇偶校验

1.基本原理

奇偶校验(Parity Check)利用在信息后面附加一个奇偶校验位来进行校验。
事先通信双方约定是采用奇校验还是偶校验,假设采用偶校验,则发送方在信息后面附加一位使所有信息(包括校验位)中一共有偶数个1,在接收方检验信息中1的个数,若为奇数个则判定出错。

优点:编码简单,实现方便;
缺点:码距为2,只能检错不能纠错,当发生偶数个错误时,不能检测出来。
奇偶校验

2.双向奇偶校验

为此,发展出了二维的双向奇偶校验。将要发送的d位数组成m行n列的二维矩阵,并使用m+n+1个校验位编码。码距上升为4,可纠正1位错误。
在这里插入图片描述

三.CRC校验

循环冗余编码(Cyclic Redundancy Check,又称多项式编码)是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。相比于奇偶校验码只能校验一位错误,循环冗余校验码(CRC)的检错能力更强,可以检测出多处错误。

1.模2除运算规则

在这里插入图片描述
在这里插入图片描述

2.基本原理

在这里插入图片描述
在这里插入图片描述

3.编码方法

在这里插入图片描述
在这里插入图片描述

4.检错方法

在这里插入图片描述

5.纠错方法

基本方法:根据特定码制、特定生成多项式确定一个出错余数表,即CRC码不同位的出错在验证时都会得到不同的余数,对照余数表就可以确定是哪一位出错了。
循环纠错法
在这里插入图片描述
但这都只是一位出错的纠错,多位纠错就不太清楚了。

四、海明校验

1.基本原理

海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以也仅用于信道特性比较好的环境中,如以太局域网。它的检错、纠错基本思想如下:
(1)将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码。
(2)在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校验组,或者多个出错的校验组的共同校验位,得出具体的出错比特位。
(3)对错误位取反来将其纠正。
在这里插入图片描述
在这里插入图片描述

2.确定校验码位置

海明码的校验码的位置必须是在2n次方位置(n从0 开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n次方位置。

3. 确定校验码

校验位置选择原则:第i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。确定每个校验码所校验的比特位:
P1校验码位校验的码字位为:第1位(也就是P1本身)、第3位、第5位、第7位、第9位、第11位、第13位、第15位,……。
P2校验码位校验的码字位为:第2位(也就是P2本身)、第3位,第6位、第7位,第10位、第11位,第14位、第15位,……。
最后每组通过异或逻辑运算(与偶校验原理一样),使每组的运算结果为0,即可得出第i位校验码的值。
在这里插入图片描述

4. 编码举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.特点分析

在这里插入图片描述
在这里插入图片描述

总结

还在学习,有待补充。
有问题请留言。

参考资料

  • 计算机组成原理_华科https://www.icourse163.org/course/HUST-1003159001
  • 详解差错控制之码距、检错与纠错
    https://blog.csdn.net/suchto/article/details/7382366?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
  • 差错检测和纠错技术
    https://blog.csdn.net/dillon2015/article/details/54290068
  • CRC差错校验原理及实例
    https://blog.csdn.net/qq_35409955/article/details/71698920
  • 史上最通俗的海明码编码计算、检错和纠错原理解析
    https://blog.csdn.net/lycb_gz/article/details/35976723
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值