CRC的原理与实现

CRC的原理与实现

校验生成多项式是g(x),且g(x)的次数是L,

多项式表示为:g(x)=g0+ g1x1+…+ gLxL,CRC校验用除法电路完成,电路为:

 
 




如果寄存器的状态为R={r0,r1,…rL-1},那么在有新的输入的条件下,新的状态R与R和输入x的关系是:

R={ r0,r1,…rL-1}

rL-1=rL-2+rL-1*gL-1

rL-2=rL-3+rL-1*gL-2

…….

r1=r0+ rL-1*g1

r0=x+ rL-1*g0

可以用矩阵表示为:

R=R*T+[x ,0,0,….0];

T=

0    1    0  ...  0

0    0    1  … 0

………

0    0    0 …   1

gg1   g2  …    gL-1

所以,对于长为信息长度为K,后面接L个0的序列,计算其CRC校验的方法:

第一步:将除法器寄存器清0。

第二步:将K位信息逐步按时钟拍入除法器做除法。并记住此时寄存器状态R

第三步:由于后面输入信息为0,则最终寄存器的状态为:

Rfinal=R*TL,这说明,如果我们预先知道了TL那么后面

这说明,有两个问题:

第一,  对于任意长度的序列,只需要做K次除法就可以得到余式。

第二,  已知K-1次的余式和第K次的输入,就可以得到两个方面,一是K次输入后的余式,二是如果只有K位信息,就直接可以给出校验。如果信息的长度大于K+1位,那么寄存器的信息即可用于求取第K+1拍时的寄存器信息。

所以我们可以采用迭代的方式得到CRC校验。

第一步:将除法寄存器R清0

第二步:根据寄存器R输入x,推算下一拍寄存器状态,并计算出CRC结果

R=R*T+[x ,0,0,….0];

CRCout= R*TL



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值