目录
1、CRC calculation 非常棒的在线CRC计算网站,可以设定初始值,可以配置位正反;(CRC calculation)
2、CRC Generator 非常不错的CRC FPGA代码生成网站 OutputLogic.com » CRC Generator
一、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参数模型标识,在使用时,不仅要选择对多项式的类型,也要关注右侧模型信息。

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

被折叠的 条评论
为什么被折叠?



