1、注:垂直奇偶校验能检测出每列中所有奇数个错,但检测不出偶数个的错。方式能检测码组中出现的全部方式能检测码组中出现的全部奇数个差错和大部分偶数个差错。下图中奇数个差错和大部分偶数个差错。下图中标出标出的差错能检测出来,但的差错能检测出来,但O标出的差错同时出现时标出的差错同时出现时则检测不出来。则检测不出来。CRC 循环冗余校验码(循环冗余校验码(CRC)是采用多项式的编码方式,这)是采用多项式的编码方式,这种方法把要发送的数据看成是一个多项式的系数,数据为种方法把要发送的数据看成是一个多项式的系数,数据为bn-1bn-2bn-3blb0(其中为(其中为0或或1),则其对应的多项式为:),则其对
2、应的多项式为:bn-1xn-1+bn-2xn-2+bn-3xn-3+blx1+b0 例如:数据例如:数据10010101可以写为多项式可以写为多项式x7+x4+x2+1。前提:发送方和接受方必须事先商定一个二进制数前提:发送方和接受方必须事先商定一个二进制数g(x)(生成生成多项式多项式)。发送端:计算校验码发送端:计算校验码,将校验码加在数据末尾将校验码加在数据末尾,使这个带校验使这个带校验码的数据能被码的数据能被g(x)除尽。除尽。接收端:收到带校验码的数据后接收端:收到带校验码的数据后,用用g(x)去除它去除它,如果有余数如果有余数,则传输出错。则传输出错。循环冗余较验方法的原理如下:循
3、环冗余较验方法的原理如下:设要发送的设要发送的m位数据对应的二进制多项式为位数据对应的二进制多项式为t(x);发送方和接收方约定一个发送方和接收方约定一个r阶生成多项式阶生成多项式g(x),该生成,该生成多项式的最高次幂为多项式的最高次幂为r,生成码是,生成码是r+1位;位;在要发送的数据块末尾添加在要发送的数据块末尾添加r个个0,t(x)位数增到位数增到m+r,其相对应的多项式其相对应的多项式xr t(x);用用xr t(x)除以除以g(x)获得商)获得商q(x)和余式和余式r(x);令令T(x)=xr t(x)+r(x),T(x)所对应的数据是)所对应的数据是在原数据块的末尾加上余式所对应
4、的数据得到的。在原数据块的末尾加上余式所对应的数据得到的。发送发送T(x)所对应的数据。)所对应的数据。设接收端接收到的数据对应的多项式为设接收端接收到的数据对应的多项式为T(x),将),将T(x)除以)除以g(x),若余式为,若余式为0则认为没有错误,否则认则认为没有错误,否则认为有错。为有错。2、循环冗余码的产生与码字正确性检验例子。、循环冗余码的产生与码字正确性检验例子。例例1.已知:信息码已知:信息码:110011信息多项式信息多项式:t(x)=x5+x4+x+1生成码生成码:11001 生成多项式生成多项式:g(x)=x4+x3+1(r=4)求:循环冗余码和码字。求:循环冗余码和码字
5、。解:解:1)(x5+x4+x+1)*x4的积是的积是x9+x8+x5+x4 对应的码是对应的码是1100110000。2)xr t(x)g(x)(按模按模2算法算法)。由计算结果知冗余码是由计算结果知冗余码是1001,码字就是,码字就是1100111001。1 0 0 0 0 1q(x)g(x)1 1 0 0 1)1 1 0 0 1 1 0 0 0 0t(x)*xr 1 1 0 0 1,1 0 0 0 01 1 0 0 1 1 0 0 1r(x)(冗余码冗余码)例例2.已知:接收码字为已知:接收码字为1100111001,多项式:,多项式:T(x)=x9+x8+x5+x4+x3+1 生成码为生成码为11001,生成多项式:生成多项式:g(x)=x4+x3+1(r=4)求:码字的正确性。若正确,则指出冗余码和信息码。求:码字的正确性。若正确,则指出冗余码和信息码。解:解:1)用码用码字字除以生成码,余数为除以生成码,余数为0,所以码字正确。,所以码字正确。1 0 0 0 0 1q(x)g(x)1 1 0 0 1)1 1 0 0 1 1 1 0 0 1 T(x)1 1 0 0 1,1 1 0 0 1 1 1 0 0 1 0s(x)(余数余数)2)因因r=4,所以冗余码是:,所以冗余码是:1001,信息码是,信息码是:110011