[发明专利]一种可配置CRC码计算方法有效
申请号: | 202111587754.8 | 申请日: | 2021-12-23 |
公开(公告)号: | CN114443347B | 公开(公告)日: | 2022-11-22 |
发明(设计)人: | 伍彬山;周毅;杨唤荣;万江华 | 申请(专利权)人: | 湖南毂梁微电子有限公司 |
主分类号: | G06F11/10 | 分类号: | G06F11/10 |
代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 周长清 |
地址: | 410000 湖南省长沙市芙蓉*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 配置 crc 计算方法 | ||
本发明公开了一种可配置CRC码计算方法,其步骤包括:步骤S1:CRC参数配置;根据所需CRC参数模型,配置CRC配置变量,清空CRC结果变量;步骤S2:参数预处理;对CRC模型的多项式GPOLY以及初始值INIT进行预处理,将参数的最高有效位,即第GW位,对齐到参数变量的最高R位或数据的最高有效位第DW位;步骤S3:数据预处理;步骤S4:计算CRC校验码;将移位后的初始值INIT_PRE与移位后的输入数据DATA_PRE进行按位异或操作,得到INIT_OR_DATA;根据FlipOUT的设置,对CRC计算结果CRCOUT执行翻转操作,得到CRCOUT_Flip。本发明具有原理简单、操作简便、灵活性好等优点。
技术领域
本发明主要涉及到数据通信和数据存储技术领域,特指一种可配置CRC码计算方法。
背景技术
CRC(Cyclic Redundancy Check,循环冗余校验码)是数据通信和数据存储领域中最常用的一种查错校验码。CRC具有检错能力强的特点。据统计,CRC校验码不能发现的错误几率小于0.0047%。同时,CRC具有开销小的特异点,易于用编码器及检测电路实现,远远优于奇偶校验及算术和校验等方式。
CRC算法以二元伽罗瓦域GF(2)多项式算术为数学基础。GF(2)多项式中只有一个变量x,其系数只有0和1。CRC算法将长度为k位的消息对应一个GF(2)多项式M。发送端和接收端约定次数为r的GF(2)多项式P,称为生成多项式。在消息后面加上r个0对应的多项式为M',显然有M'=Mxr。用M'除以P将得到一个次数等于或小于r-1的余数多项式R,其对应的r位数值则为CRC校验码。发送端将k位消息连同r位校验码(也就是M'+R)一起发送出去,接收端用收到的全部k+r位数据对应的多项式除以生成多项式P,判断余数是否为0。如果为0则表示没有差错发生,否则发生了错误。
一个完整的CRC计算模型应该包含以下信息:
·G:生成多项式P的16进制表示。例如:CRC-32的约定多项式是0x04C11DB7(忽略了最高位的1,完整的生成项是0x104C11DB7)。
·GW:生成多项式宽度,即CRC比特数,GW==r。如CRC-8,生成的CRC为8位。
·INIT:CRC初始值,和GW位宽一致
·FlipIN:待测数据的每个字节是否按位反转,True或False。如原始数据3416(0011 01002),如果FlipIN为True,进行翻转之后为2C16(001011002)。
·FlipOUT:在计算后之后,异或输出之前,整个数据是否按位反转,True或False。如计算得到的CRC值为9716(100101112),如果FlipOUT为True,进行翻转之后得到结果E916(111010012)。
·XOROUT:计算结果与此参数异或后得到最终的CRC值,和GW位宽一致。
生成多项式P的选择会影响CRC的校验效果。经过理论推导和长期的实践验证,形成了几十种不同的标准CRC模型。不同的领域会使用不同的CRC校验码。比如,电子通信领域,美信(MAXIM)的芯片DS2401/DS18B20,使用CRC-8/MAXIM模型;SD卡或MMC使用的是CRC-7/MMC模型;Modbus通信使用的是CRC-16/MODBUS参数模型;USB协议中使用的CRC-5/USB和CRC-16/USB模型;STM32自带的硬件CRC计算模块使用的是CRC-32模型,等等。
下表列出了三个标准的CRC计算模型:
除此之外,完成CRC计算还需要指定以下两个处理对象:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南毂梁微电子有限公司,未经湖南毂梁微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111587754.8/2.html,转载请声明来源钻瓜专利网。