本文主要是介绍CDT规约之CRC8校验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CDT规约中校验码的计算是用的CRC校验。
CRC(Cyclic Redundancy Check)即循环冗余校验码,是一种很常用的校验码。它有很强的检错、纠错能力,并且实现编码和检码的电路比较简单,常用于串行传送中。
CRC的编码思想是将要传送的n位信息位表示成一个报文多项式M(X),用M(X)除以一个预先约定的生成多项式G(x),得到的余式就是所需的循环冗余校验码。
M(X)最高幂次是(n-1)。G(x)是一个(k+1)位的二进制数,最高幂次是k。M(X)左移k位后,除以G(x),会得到k位余数,就是校验位。这里的除法运算是模2除法,即当部分余数首位是1时商取1,反之商取0。然后每一位的减法运算是按位减,不产生借位,实际相当于异或运算。最后得到的CRC校验码一般称为(n+k, n)码。
CRC码存储或传送后,在接收方进行校验过程,以判断数据是否有错,若有错则进行纠错。一个CRC码一定能被生成多项式整除,所以在接收方对码字用同样的生成多项式相除,如果余数为0,则码字没有错误;若余数不为0,则说明某位出错,不同的出错位置余数不同。
在CDT规约中,控制字和信息字都(48,40)码组。生成多项式为
G ( X ) = X 8 + X 2 + X + 1 G(X)=X^8+X^2+X+1 G(X)=X8+X
这篇关于CDT规约之CRC8校验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!