CRC校验
Posted Luella_G
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRC校验相关的知识,希望对你有一定的参考价值。
一、概念
CRC即为循环冗余校验码,是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
二、算法
(1)先选择一个用于在接收端进行进行校验时,对接收的帧进行除法运算的除数。
(2)看所选定的除数的二进制位数,假设为k位,然后在要发送的的数据帧(m位)后加上k-1位“0”,然后用该帧以“模2除法”方式除以除数,所得的余数就是该帧的CRC校验码。注意:余数的位数一定是比除数少一位,不够的在前面补“0”。
(3)把校验码附在原数据帧的末尾,构建成一个新帧发送到接收端,最后在接收端再把这个新帧以“模2除法”的方式除以之前选择的除数。若没有余数,则表明在传输过程中没有出错;否则,则在传输过程中出现了差错。
三、实例
假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,求二进制序列10110011的CRC校验码。
(1)将多项式G(X)变为二进制序列 11001
(2)生成的二进制的位数为5位,则在原数据帧后加4个0,得到新帧 101100110000 ,然后把这个数以“模2除法”方式除以多项式,得到的余数为 0100。
(3)把得到的CRC校验码附在原始帧末尾,得到新帧 101100110100,再把此帧发送到接收端。
(4)接收端接收到的帧以“模2除法”的方式除以之前选择的除数11001,若没有余数则没有差错,否则出现差错。
以上是关于CRC校验的主要内容,如果未能解决你的问题,请参考以下文章