计算机组成-校验码

码距

同一编码中,任意两个合法编码之间不同二进制位数的最小值
例:
0011与0001的码距为1,一位错误无法识别
校验码中增加冗余位的目的就是增加码距

码距与检查或纠错能力的关系
在这里插入图片描述
1)码距 >= e+1
可检测e个错误
2)码距 >= 2t+1
可纠正t个错误
3)码距 >= e + t + 1
可同时检测e个错误,纠正t个错误(e >= t)
选择码距要考虑的因素
码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大,编码效率低,编码电路也相对复杂;
选择码距必须考虑信息发生差错的概率和系统能容许的最小差错率。

奇偶校验码

1)增加冗余码(校验位)
2)编码:根据有效信息计算校验信息位,使校验位(数据+1位校验信息)中1的个数满足奇/偶校验的要求
特点:
编码和检错简单
编码效率高
不能够检测偶数位错误,无错结论不可靠,是一种错误检测码
不能定位错误,因此不具备纠错能力

改进的奇/偶校验

双向奇偶校验
方块校验
垂直水平校验
可纠正1位错误
可检测出某行(列)上的奇数位
可检出一部分偶数位错误
不能检测出错码分布在矩形四个顶点上的错误

应用

路由器的配置
内存条
同步传输:奇校验。异步传输:偶校验

CRC校验及其应用

基本原理
增加冗余码(校验位)
生成多项式G(x)
收发双方约定一个(r+1)位二进制数,发送方利用G(x)对信息多项式做模2除运算,生成校验码。接收方利用G(x)对收到的编码多项式做模2除运算检测差错以及错误定位。
G(x)应满足的条件
A、最高位和最低位必须为1;
B、当被传送信息(CRC码)任何一位发送错误时,被生成多项式做除后应该使余数不为0;
C、不同位发送错误时,模2除运算后余数不同;
D、对不为0余数继续进行模2除运算应使余数循环;

模2运算规则
a)加减运算(异或运算,加不进位,减不借位)
b)按模2减,求部分余数,不借位
c)上商规则
1.部分余数首位为1时,商为1,减除数;
2.部分余数首位为0时,商为0,减0;
3.当部分余数的位数小于除数的位数时,该余数即为最后余数;
CRC编码方法
a)根据待校验信息的长度k,按照k+r<=2r-1确定校验位r的位数
如对4位信息1100进行CRC编码,根据4+r <= 2r-1
得rmin = 3;
b)根据r和多项式的选择原则,选择位数位r+1的生成多项式G(x)=1011
c)将待校验的二进制信息Q(x)逻辑左移r位,得到Q(X)
d)对Q(X)'按模2运算法则除Q(X),求CRC编码中的r位校验信息
e)用得到的余数替换Q(X)'的最后r位即可得到对应的CRC编码

接收方利用G(X)对收到的有错编码多项式做模2运算
余数不为0说明传输有错

不同位数出错,余数是不一样的
不同生成多项式,对应的相同位出错的余数,是不尽相同的。

一位出错情况下余数的循环特性进行纠错
若余数不为0,一边对余数补0继续做模2除,同时让被检测的校验码循环左移,当余数位101时,出错位也移到A1位置。通过异或运算纠正后继续循环左移和执行余数模2除法,直到修改后的出错位回原位,不需对每一位提供纠正电路。
当位数增多时,循环码校验能有效地降低硬件代价,这是它得以广泛应用的主要原因。

海明校验及其实现

增加冗余码(校验位)
1)设k+r位海明码从左到右依次为第1,2,3,…,k+r位,r位校验位记为Pi(i=1,2,…),分别为位于k+r位海明编码的第2i-1(i=1,2,…,r)位上,其余依次放置被校验的数据位;
2)

发布了20 篇原创文章 · 获赞 5 · 访问量 1778

猜你喜欢

转载自blog.csdn.net/iDestro/article/details/93520389