FPGA IMPLEMENT 1Gb/10Gb ETH(一.2)

以太网FCS校验/CRC校验

“模2除法”与“算术除法”类似,但它既不向上位借位,也不比较除数和被除数的相同位数值的大小,只要以相同位数进行相除即可。模2加法运算为:1+1=0,0+1=1,0+0=0,无进位,也无借位;模2减法运算为:1-1=0,0-1=1,1-0=1,0-0=0,也无进位,无借位。相当于二进制中的逻辑异或运算。也就是比较后,两者对应位相同则结果为“0”,不同则结果为“1”。

以下内容转载https://blog.csdn.net/qq_35608277/article/details/104432508

计算方法
从计算到原理,更易接受

知识准备
首先学会模2除法,就是异或操作:看例子

å¨è¿éæå¥å¾çæè¿°
按步骤
1选择CRC生成多项式,这个一般提供标准
如在IBM的SDLC(同步数据链路控制)规程中使用的CRC-16(也就是这个除数一共是17位)生成多项式g(x)= x16 + x15 + x2 +1(对应二进制比特串为:11000000000000101);

而在ISO HDLC(高级数据链路控制)规程、ITU的SDLC、X.25、V.34、V.41、V.42等中使用CCITT-16生成多项式g(x)=x16 + x15 + x5 +1(对应二进制比特串为:11000000000100001)。

次幂数字对应第几位,最高位和最低位0位需要为1.因此上述两个均为16+1位,首位为1,中间挑了一位为1.

2做模2除法计算,写除数,被除数,求余数(即为CRC码)
知道一个知识,校验码的位数比生成多项式的位数少1

题目:
已知

           生成式:G(X) = X4 + X3 + 1
        数据:10110011 
求:

        CRC码
解:

    除数:11001(根据生成式写)
    被除数:10110011_0000(末尾补共校验码长度的0,长度除数-1)
计算

å¨è¿éæå¥å¾çæè¿°

所以,校验码为0100
从而,数据为10110011_0100

3作用
数据 10110011_0100如果没错,再除以11001应该是整除的;如果不是整除,那么传输出现了差错。

练习题
假设CRC生成多项式为G(X) = X5 + X4 +X+1,要发送的二进制序列为100101110,求CRC校验码是多少。(答案011010)

关于模2除法,下面的博客讲的通俗易懂:

https://blog.csdn.net/qq_33411687/article/details/82593466

https://blog.csdn.net/weixin_42061048/article/details/80171137

关于CRC算法的数学推导,下面博客讲的通俗易懂:

https://blog.csdn.net/u011388550/article/details/45242725
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值