CRC校验

1.概述
CRC(Cyclic Redundancy Check)循环冗余校验码是一种数字通信中的常用信道编码技术。其特征是信息段和校验字段的长度可以任意选定。在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。

2.CRC校验的基本原理:
CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果信息位为n位,检验位为k位,就称为(n+k,n)码。
CRC校验码格式
信息位校验位
N位K位
假设,待编码的有效信息以多项式M(x)表示,将它左移若干位后,用另一个约定的多项式G(x)去除,所产生的余数R(x)就是校验位,有效信息与校验位拼接就构成了CRC码。
当整个CRC码被接收后,仍用约定的多项式G(x)去除,余数为0表明该代码是正确的,若余数不为零表明某一位出错,再进一步由余数值(出错模式)确定出错位置以更正。

3.校验码的编码规则:
  1)首先将原信息码(n bit)左移k位,右侧补零;
  2)运用一个k+1位的生成多项式G(x)用模2除上面的式子,得到的余数就是校验码;
  3)将校验码续接到信息码的尾部,形成CRC码。

4.关于模2运算
  模2运算就是加法不考虑进位,减法不考虑借位,
  1)加法运算:
    0+0=0        0+1=1        1+0=1        1+1=0
  2)减法运算:
    0-0=0        0-1=1        1-0=1        1-1=0
  3)乘法运算
    0×0=0          0×1=0          1×0=0          1×1=1    
  4)除法运算:
    0÷1=0          1÷1=1
 
5.CRC码的计算
掌握了上面的运算规则,您可以尝试计算CRC码了,例如:M(x)=1100, G(x)=1011, (7,4)码
1)M(x)=1100//取信息码
2)M(x)=1100 000//左移位
3)G(x)=1011//取生成多项式
4)R(x)=|M(x)/G(x)|=010//模2除求余数
5)CRC=M(x)+R(x)=1100 010//续接相加

6.CRC码的校验与纠错
      (7,4)码出错模式( G(x)=1011 )

(7,4)码

A1

A2

A3

A4

A5

A6

A7

余数

出错位

正确码

1

1

0

0

0

1

0

000

 

 

 

错误码

1

1

0

0

0

1

1

001

7

1

1

0

0

0

0

0

010

6

1

1

0

0

1

1

0

100

5

1

1

0

1

0

1

0

011

4

1

1

1

0

0

1

0

110

3

1

0

0

0

0

1

0

111

2

0

1

0

0

0

1

0

101

1

如果某一位出错,则余数不为0,对此余数补0后,当做被除数再除下去,余数将按上表的顺序循环。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值