非常实用FPGA实现CRC校验介绍和代码生成工具

本文详细介绍了CRC校验的原理,包括比特型和字节型算法,并重点解析了CRC参数模型。强调了理解CRC参数模型的重要性,同时推荐了两个实用工具:CRCcalculation(在线CRC计算)和CRCGenerator(FPGA代码生成),帮助读者更好地理解和应用CRC校验。

一、CRC原理。

 CRC校验的原理非常简单,如下图所示,通过下图大家可以通过手算即可求解出CRC校验结果。
其中,生成多项式是利用抽象代数的一些规则推导出来的,而模2加(也就是异或),是对应于有限域的除法。

二、CRC算法。

    通用的算法有比特型算法和字节型算法,我见到的FPGA实现方法多为后者字节型算法。

1、比特型算法。

这种算法,跟手算的差不多,一个时钟周期处理一个bit,速度慢,但消耗的面积小。

可能你会有疑问,本来是第15位(对应于x^15),再移位就是第16位,怎样把第16位转化成低于16位的数?

利用生成多项式就可以了,crc16 : 1+x^2+x^15+x^16,类似于小学数学的约分。
下图为关键的代码。

2、字节型算法。(好理解也好用,实际中采用这种)

  原理是把上面比特型的算法展开,一次性把8个bit的情况都列出来,化简,如下图所示,下图为关键的代码。
  字节型算法的使用方法跟比特型类似,只是一次处理8个bit,算出来的crc,也要留在寄存器里面(LSFR)。

三、CRC参数模型

网上可以下载到多种CRC计算器,右侧有详细的CRC参数模型标识,在使用时,不仅要选择对多项式的类型,也要关注右侧模型信息。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

icekoor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值