CRC校验原理和程序

CRC校验是一种广泛用于错误检测的数据传输校验手段,特别是CRC-32在网络通信中广泛应用。原理涉及模2运算法则,包括加、减、乘、除,以及通过信息多项式和生成多项式进行模2除法来计算CRC值。CRC的计算过程是将信息码转换为多项式,除以生成多项式得到余数,从而生成校验码。CRC-32串行计算公式通过逐位运算求得校验码,实现过程中包括异或和左移操作。
摘要由CSDN通过智能技术生成

1、简介

CRC校验是一种在数据通信系统和其它串行传输系统中广泛使用的错误检测手段。通用的CRC标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32标准。

特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

2、原理

2.1 模2运算法则

在CRC运算过程中会使用到模2除法运算。模2运算是一种二进制运算法则,与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种运算。模2运算用“+”表示加法运算,用“-”、“×”或“.”、“/”分别表示减法、乘法和除法运算。与普通四则运算法则不同的是,模2加法是不带进位的二进制加法运算模2减法是不带借位的二进制减法运算。同时,模2乘法在累加中间结果时采用的是模2加法运算;模2除法求商过程中余数减除数采用的是模2减法运算。因此,两个二进制数进行模2加减法运算时,相当于两个二进制数进行按位异或运算,每一位的结果只与两个数的当前位有关。模2除法在确定商时,与普通二进制除法也略有区别。普通二进制除法中,当余数小于除数时,当前位的商为0,当余数大于等于除数时,当前位的商为1。模2除法在确定当前位的商时,只关心余数的首位,首位为1则商为1,首位为0则商为0

1.模2加法的定义:

 0+0=0,0+1=1,1+0=1,1+1=0。

举例如下:

 1010+0110=1100。

2.模2减法的定义:

 0-0=0,0-1=1,1-0=1,1-1=0。

举例如下:

 1010-0110=1100。

3.模2乘法的定义:

 0×0=0,0×1=0,1×0=0,1×1=1。

举例如下:

 1011×101=100111

列竖式计算:

     1011
    × 101
   ——————
     1011
    0000
   1011
   ——————
   100111

其中横线之间的累加过程,采用的是2进制加法,不进位。

4.模2除法:

 0/1=0,1/1=1。

举例如下:
在这里插入图片描述

2.2 CRC实现原理

CRC校验的基本思想是:利用线性编码理论,在发送端根据要发送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(即CRC码),并附在信息码后面,构成一个新的共k+r位的二进制码序列,最后发送出去。在接受端,则根据信息码和CRC码之间所遵行的规则进行校验,以确定传输过程中是否出错,并纠错。一般而言,监督码的位宽r越大,纠错能力就越能,例如,CRC32的纠错能力比CRC16要强。CRC校验获得监督码的方式是,将k位信息码转换成多项式,然后除以一个生成多项式,获得余数即为监督码。

在求解一个k位二进制信息码的CRC之前,首先需要将二进制信息码转换成多项式。一个二进制数序列的各个位是它对应多项式的系数,例如,二进制序列1101对应的多项式为:

  M(x)= X3+X2+X0

通过这种转换方式获得的多项式称为信息多项式。在进行CRC计算时,除了信息多项式之外,还需要有一个生成多项式G(x)。生成多项式G(x)要求次数大于0,并且要求0次幂的系数为1。根据以上约束,以及对纠错能力的要求,人们提出了一些通用的CRC生成多项式,例如:CRC16和CRC32等。

CRC16的生成多项式为:

G(x)= X^16+X^15+X^2+1

CRC32的生成多项式为:

G(x)= X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值