资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,CRC码的计算,1.什么是CRC码?,循环冗余码校验英文名称为Cyclical RedundancyCheck,简称CRC。它是利用多项式除法及余数的原理来作错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置,接收装置对收到的数据重新计算CRC并与收到的CRC相比较,若两个CRC值不同,则说明,数据通讯,出现错误。,1,2.多项式的生成,CRC码把整个数据块当作一串连续的二进制数据。代数结构可看作是一个报文码多项式,是基于将位串看成是系数为0或1的多项式,一个k位帧可以看成是从,x(k-1)到x(0)的k次多项式的系数序列,,这个多项式的阶数:k-1。,码组与多项式系数序列的对应,,高位(最左边)是x的k-1项系数,下一位是x的k-2项的系数,以此类推,,生成多项式的最高位和最低位必须是1,且,生成多项式必须比该校验和的多项式短。,For example,110101有6位,表示成多项式是x5+x4+x2+0,即它的6个多项式系数分别是1,1,0,1,0,和1。,2,when,采用多项式编码的方法,发送方和接收方必须事先商定一个生成多项式G(x)。要计算m位帧M(x)的校验和,生成多项式必须比该校验和的多项式短。,基本思想是:将校验和加在帧的末尾,使这个带校验和的帧的多项式能被G(x)除尽。当接收方收到带有校验和的帧时,用G(x)去除它,如果有余数,则传输出错。,3,CRC码的计算,由以上分析可知,既然除数是随机,或者按标准选定的,所以CRC校验的关键是如何求出余数,也就是CRC校验码。,下面以一个例子来具体说明整个过程。现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码。具体的计算过程如下(不会作图没办法啦):,(1)首先把生成多项式转换成二进制数,由G(X) = X4 + X3 + 1可以知道(,它一共是5位(总位数等于最高位的幂次加1,即4+1=5),然后根据多项式各项的含义(多项式只列出二进制值为1的位,也就是这个二进制的第4位、第3位、第0位的二进制均为1,其它位均为0)很快就可得到它的二进制比特串为11001。,4,(2)因为生成多项式的位数为5,根据前面的介绍,得知CRC校验码的位数为4(校验码的位数比生成多项式的位数少1)。因为原数据帧10110011,在它后面再加4个0,得到1,然后把这个数以“模2除法”方式除以生成多项式11001,得到的余数,即得CRC校验码为0100。具体操作在黑板上演示。,5,【说明】“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。如100101除以1110,结果得到商为11,余数为1,再如1111=101。,6,总结计算,:只要会把生成多项式按项系数转化为二进制数作为除数,在原帧后补上多项式阶数个0得到的新串作为被除数,做多项式除法时按“模2除法”,相减异或,商到最低位余数即为CRC码,将原帧加上CRC码发送就O啦,!谢谢!,2014-z0,7,
展开阅读全文