2.2、数据校验
一、数据校验的基本原理
-
数据校验的必要性
![image]()
-
校验的基本原理
![image]()
-
码距的概念
![image]()
-
码距与检错或纠错能力的关系
![image]()
-
选择码距要考虑的因素
![image]()
二、奇偶校验
2.1、基本原理

2.2、奇校验的检错方法与电路

2.3、偶校验的检错方法与电路

2.4、奇偶校验的问题
-
奇校验无法检测出奇数个1,并且在传输过程中同时出现偶数位错误的电路,如下所示,如果传输过程中出现了2位错误,并且原序列中有偶数个1,奇校验无法检测出来
![image]()
-
偶校验无法检测出偶数个1,并且在传输过程中同时出现偶数位错误的电路,如下所示,如果传输过程中出现了2位错误,并且原序列中有偶数个1,偶校验无法检测出来
![image]()
-
奇偶校验不能纠正错误(不能定位错误),只能检测错误,无错误结论不可靠,是一种错误检测码
2.5、奇偶校验的码距
奇偶校验的码距为2,所以只能检错1位,不能纠错。
2.6、改进的奇偶校验(二维奇偶校验)

三、CRC校验
3.1、基本原理


模2除运算的示例如下所示:

3.2、生成多项式G(x)=1011时CRC编码、检错和纠错的示例
①、生成多项式G(x)=1011传输序列为1100时CRC编码


②、生成多项式G(x)=1011传输序列为1100时CRC检错
-
CRC的检错(无错误的场景)
![image]()
-
CRC的检错(有错误的场景)
![image]()
-
以4位二进制信息1100为例,生成多项式G(x)=1011,不同数位出错的余数对应表
![image]()
③、生成多项式G(x)=1011传输序列为1100时CRC纠错


3.3、生成多项式G(x)=10011的CRC校验硬件实现

3.4、CRC校验的应用

四、海明校验
4.1、基本原理


由此可以总结得到每个校验位负责校验的数据位:
①、P1校验位负责的数据位有b1,b2,b4,b5,b7;
②、P2校验位负责的数据位有b1,b3,b4,b6,b7;
③、P3校验位负责的数据位有b2,b3,b4;
④、P4校验位负责的数据位有b5,b6,b7。
每个校验位都有对应的指错字,校验位P1 ~ P4分别对应指错字G1 ~ G4,指错字G1 ~ G4的计算规则为:(每个校验位)⊕(每个校验位负责的数据位),指错字G1 ~ G4分别如下:

指错字的目的就是指出海明校验序列的传输当中是否发生了错误,如果这个序列发生错误的话,指错字可以指出具体哪一位发生了错误,
4.2、海明校验编码举例

4.3、海明校验纠错举例(海明编码的二进制序列为01100110000,并且在传输过程中没有发生错误)

4.4、海明校验纠错举例(海明编码的二进制序列为01100110000,在传输过程中发生了错误,传输后的二进制序列为01100110001)

4.5、海明校验的特点
①、无错结论不可靠,比如海明编码的二进制序列为01100110000,在传输过程中发生了错误,传输后的二进制序列为10000110000,虽然指错字G1 ~ G4都等于0,但是并不能保证二进制序列没有发生错误;
②、不能区别是1个bit位出错还是2个bit位出错,比如海明编码的二进制序列为01100110000,在传输过程中发生了错误,出错场景分为2种:
a、传输后的二进制序列为01001110000(发生了2个bit位出错,分别为b1和b2);
b、传输后的二进制序列为01100010000(发生了1个bit位出错,为b3);
以上2种出错的场景中,指错字相同,都是G4=0,G3=1,G2=1,G1=0,因此海明校验不能区别是1个bit位出错还是2个bit位出错。
4.6、海明校验+奇偶校验的电路图












浙公网安备 33010602011771号