CRC循环冗余校验
-
基本原理:
CRC检验原理:
在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),构成一个总长为n=p+r位的二进制序列;
附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏;
因此,通过检查这一关系,就可以实现对数据正确性的检验。
-
计算步骤:
发送方:
(1):确定产生多项式代码序列N,长度最高次幂r;
(2):在p位的二进制数据序列P之后加r个0得到M,长度p+r;
(3):用M对N做模2除法运算取余数代码序列R;
(4):Q后附加R得到C。
接受方:
(1):用C对N做模2除法运算余数为0则传输过程中无错
-
例子:
- 需要发送的信息P为1010001101,产生多项式对应得代码N为110101。
解:
(1)确定产生多项式代码序列N,长度r=5;
(2)M为101000110100000
(3)用M对N做模2除法运算取余数代码序列R为01110;
(4)N为1010001101 01110
接受方:
(1):用C对N做模2除法运算余数为0则传输过程中无错。
-
附加:
模2运算:即按位异或运算(相同为0,相异为1);
生成多项式:
如上述例子,
110101多项式为X^5+X^4+0*X^3+X^2+0*X^1+X^0;
即X^5+X^4+X^2+1;
则r=5。
余数:余数的长度需等于r,不足则在前面补0。
CRC只能判断是否出错,不能判断出错位置