循环冗余检验

#数据链路层##差错检验##循环冗余检验#

·什么是循环冗余检验(Cyclic Redundancy Check, CRC)?

循环冗余检验是一种基于模2运算建立的编码规则,在磁存储和计算机通信方面应用广泛

·首先介绍一下什么是模2运算。模2运算包括模2加减法运算,模2乘法运算,模2除法运算。

模2加减法:简单来说就是两个二进制数的异或运算(0±0=0, 0±1=1, 1±0=1, 1±1=0)

模2乘法运算:即根据模2加法运算求部分积之和,中间不考虑进位

模2除法运算:即根据模2减法求部分余数。上商原则:

①部分首位为1时,商上1,按模2运算减除数

②部分余数首位为0时,商上0,减0;

③部分余数位数小于除数位数时,该余数为最后余数

最后介绍完模2运算,我们进入今天的正题——CRC循环冗余校验

·CRC编码规则

1.(n,k)码

假设CRC码长度n位,其中原始数据含k位,校验位为r位且n=k+r<=2^r。则我们称它为(n,k)码,在CRC中表示n位CRC码中含有k位数据位。

2.编码规则:

1)对于给定的(n,k)码,假设待发送的k位二进制数据用信息多项式M(x)表示,有:M(x)={C_{k-1}}^{}*x^{^{k-1}}+{C_{k-2}}^{}*x^{^{k-2}}+...+{C_{1}}^{}*x^{^{}}+{C_{0}}^{}

2)将M(x)左移r位,可表示成M(x)·2^r。右侧空出的r位用来放置校验位

3)选择一个r+1位的生成多项式P(x),其最高次幂等于r。例如P(x)=X^4+X+1。就对应一个校验码10011.

4)将第二步得到的数M(x)·2^r,按模2运算规则除以生成多项式P(x)所得的余数作为校验码.即

M(x)*2^{r}+R(x)=[Q(x)G(x)+R(x)]+R(x)=Q(x)G(x)这里的运算均为异或运算。R(x)异或运算R(x)=0。

CRC的编码规则即第四步表明CRC码一定能被生成多项式G(x)整除。

CRC的解码规则即是运用上述编码规则的特性。在接收端,把接收端的数据以帧为单位除以同样的除数P(x)。如果余数为0.则这个数据没有错误。如果余数不为0,即不能被整除。则判定这个帧有错误将其丢弃。因此在数据链路层仅使用CRC差错检测技术,则只能做到无差错接受。即“凡是接收数据链路层的帧,我们都能以非常接近于1的概率认为这些帧在传输过程中没有出现差错”。即无差错传输。

  • 39
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值