基于CRC-32的以太网数MAC数据检验(FCS CRC校验)

作者查询了目前的网上中文资料,发现对于crc-32的算法推导以及相关FPGA实现的内容基本没有,作者花了一段时间摸索,将crc-32的算法推导过程以及FPGA的仿真总结了以下,下面是相关内容。

主要内容有:OSI TCP/IP MAC包的相关知识

CRC的计算方式

CRC32的运算要求以及手推算法

verilog代码仿真

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 对于这个问题,我可以回答。根据CRC码的生成多项式G(X) = X4 X 1,我们可以使用除法来求解FCS。将数据1101011011左边填充4个0,得到11010110110000,然后进行除法运算,得到校验序列FCS为0100。 ### 回答2: CRC码的生成多项式G(X)可以表示为:G(X) = X^4 + X + 1。 要求校验序列FCS,可以通过进行CRC校验来生成。 首先,将要发送的数据1101011011的二进制形式表示为D(X) = X^9 + X^8 + X^6 + X^4 + X + 1。 根据CRC校验的步骤,需要进行以下操作: 1. 将数据D(X)左移4位,得到D'(X) = X^13 + X^12 + X^10 + X^8 + X^5 + X^4。 2. 将D'(X)与G(X)进行模2的除法运算,得到余R(X)。即 R(X) = (D'(X) / G(X)) mod 2。 这里的除法运算使用异或操作进行。 执行除法运算,有: X^13 + X^12 + X^10 + X^8 + X^5 + X^4 ⊕ X^4 + X + 1 ---------------------------------------------- =X^13 + X^12 + X^10 + X^5 + X^4 + X + 1 ⊕ X^4 + X + 1 ---------------------------------------------- =X^13 + X^12 + X^10 + X^5 即,余R(X) = X^13 + X^12 + X^10 + X^5。 3. 余R(X)即为校验序列FCS。 所以,校验序列FCS = X^13 + X^12 + X^10 + X^5。 将FCS附加在要发送的数据之后,即可完成CRC校验,并将数据发送。 ### 回答3: 首先,计算数据的二进制表示为1101011011。然后,将数据扩展为14位,添加4个0作为CRC校验位,变为11010110110000。 接下来,用生成多项式G(X)=X^4+X+1对扩展后的数据进行除法运算。首先,将生成多项式左移14位,对齐扩展后的数据,如下图所示: 11010110110000 XOR 100010000001(左移14位) -------------------- 10111010110000 然后,继续操作,如下图所示: 10111010110000 XOR 100010000001(左移11位) -------------------- 110100101000 再次进行操作,如下图所示: 110100101000 XOR 100010000001 (左移8位) ----------------- 10110101000 再次进行操作,如下图所示: 10110101000 XOR 100010000001 (左移5位) ----------------- 1101111000 最后进行最后一次操作,如下图所示: 1101111000 XOR 100010000001 (左移2位) ----------------- 10011101 最后的校验序列FCS为10011101。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值