CRC校验原理及推导过程

电子常识

2610人已加入

描述

  CRC校验基本原理

  CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。

  CRC检验码的计算

  设信息字段为K位,校验字段为R位,则码字长度为N(N=K+R)。设双方事先约定了一个R次多项式g(x),则CRC码:

  V(x)=A(x)g(x)=xRm(x)+r(x)

  其中: m(x)为K次信息多项式, r(x)为R-1次校验多项式。

  这里r(x)对应的代码即为冗余码,加在原信息字段后即形成CRC码。

  r(x)的计算方法为:在K位信息字段的后面添加R个0,再除以g(x)对应的代码序列,得到的余数即为r(x)对应的代码(应为R-1位;若不足,而在高位补0)。

  循环冗余检验

  循环冗余检验英文名称为Cyclical Redundancy Check,简称CRC。它是利用多项式除法及余数的原理来做错误检测的。它将要发送的数据比特序列当作一个信息多项式u(x)的系数,发送时去除以约定的生成多项式g(x),得到一个余数多项式v(x),将余数多项式加到信息多项式之后发送到接收端,接收端同样用g(x)去除接收到的接收多项式r(x),进行计算,然后把计算结果与由生成多项式g(x)决定的固定序列比较,来检测传输错误。由此可以看出其同时具有循环码和冗余码的特征,所以这种错误检测方法叫循环冗余校验,编码叫循环冗余校验码。

  理论上可以证明循环冗余校验码的检错能力有以下特点:

  (1)可检测出所有奇数位错。

  (2)可检测出所有双比特的错。

  (3)可检测出所有小于、等于校验位长度的突发错。

  CRC码编码

  归纳起来有以下三步骤:

CRC校验

  编码电路有两种方式:

  1,信息位由高位到低位的顺序从循环移位寄存器体左侧依次输入,信息位完全进入循环体后继续输入n−k−1个0,最后循环体中寄存器的值就是余式码字;

CRC校验

  图1 左侧串行输入循环移位寄存器体

  2,信息位由高位到低位的顺序从循环移位寄存器体右侧依次输入,信息位完全进入循环体后寄存器的值就是余式码字。

CRC校验

  图2 右侧串行输入循环移位寄存器体

  注:1,移位寄存器循环体中余式码字低位在左侧,高位在右侧。

CRC校验
CRC校验

  CRC码校验


  CRC码校验的基本原理

  所有的CRC校验都是基于以下这个等式:

CRC校验
CRC校验

  发送端M和G(对某一种确定的CRC校验,其G是固定的)是已知的,CRC计算就是 为了求出校验字段R;接收端M,R,G都是已知的,主要的操作都是为了验证等式是否成立,方法有很多种。

  下表展示了用于被用于一些常用的CRC标准的生成多项式,Hex列表示生成多项式对应的十六进制,MSB(most significant bit,可以理解为最左边的一位)省略,因为该位总是为1:

CRC校验

  发送端和接收端的具体处理方法

  CRC校验码在工程应用过程中相比数学计算稍微有些变化:

  1,在发送端对全0数据包的编码处理。

  数学计算中,当信息字段全部为0时的得到的余式码字也是全零的,但是在工程应用中,当非0信息字段在编码后发送给接收端,在线路传输中出现干扰或者是其他情况的错误,导致接收端收到的全零数据,即信息字段和余式字段都为0。如果在发送端不做特殊处理,在接收端就检验不出来这样的错误数据包。于是,在通信传输时,很多协议规定在发送端对CRC编码时定义一个Key寄存器,对CRC编码进行初始化,定义一个不为0的初值,Key寄存器通常被设置为全1。结合图1、图2来说,就是在信息输入给循环体之前,其D触发器的值为1。

  2,对接收端收到的数据包中拖尾0数据的处理。

  接收端接收到信息字段和余式字段,计算出数据包的余式码字,并与余式字段做比较,就能检测出错误。更简单的做法是,接收端对接收 到的所有数据求余式(包括信息字段和余式字段),如果没有传输错误所得的余式一定为0。但是,余式为0并不一定能够说明数据包没有改变,如果数据包在余式字段后有0增加或者删除的情况出现,就无法被检测出来。

  为了更好的理解公式的推导过程,需要用到1.2节中的几个关于取模运算法则。接收端如何才能识别无差错的传输呢?我们知道在发送侧满足:

CRC校验
CRC校验
CRC校验

  余式值用十六进制表示:C704DD7B。

  到此,关于通信用的CRC校验实现原理除了通信过程中比特流顺序之外,基本上是理顺,使得知其然也知其所以然。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分