基本原理及概念
CRC校验算法是在通信方面常用的一种差错检测的手段。原理是在将原始帧数据发送之前,在n个bit位的原始数据后面再加上通过特定运算得到的k位校验序列,组成新的帧再发送给接受端。接受端会根据原始数据后的校验序列再次进行特定运算,若结果正确,则接受;若结果错误,则丢弃。
我们将上面所述的k位校验序列称为帧检验序列FCS。
特定运算为多项式模2运算。(我更喜欢将它理解为异或运算)
CRC校验算法的重点是如何得到这k位帧检验序列,以及如何进行检测运算。
算法
生成多项式
一般在数据传输之前,发送端与接收端会相互约定好一个除数(也是一个二进制序列,用来进行模2算法)。这个除数就是生成多项式。称为G(X),这个多项式的最高位和最低位必须为1。我们可以定义自己的多项式,也有规定好的。常用的有:
CRC8=X8+X5+X4+1(100110001)
CRC-CCITT=X16+X12+X5+1(1001000000100001)
CRC16=X16+X15+X5+1(11000000000100001)
CRC12=X12+X11+X3+X2+1(1100000001101)
CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1
(10000010011000

CRC校验是一种通信中常见的差错检测方法,通过在数据后附加k位校验序列进行检测。本文介绍了CRC的基本原理,包括生成多项式、模2算法以及计算帧检验序列FCS的过程。在数据发送前,双方约定生成多项式,并对原始数据进行补0和模2运算得到FCS。接收端再用相同方法验证,判断数据是否正确。
最低0.47元/天 解锁文章
9544

被折叠的 条评论
为什么被折叠?



