CN114942861A - Crc计算方法、装置、计算机设备及存储介质 - Google Patents
Crc计算方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114942861A CN114942861A CN202210282970.XA CN202210282970A CN114942861A CN 114942861 A CN114942861 A CN 114942861A CN 202210282970 A CN202210282970 A CN 202210282970A CN 114942861 A CN114942861 A CN 114942861A
- Authority
- CN
- China
- Prior art keywords
- data
- polynomial
- result
- lookup table
- crc calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明实施例公开了CRC计算方法、装置、计算机设备及存储介质。所述方法包括:获取多项式,以得到多项式的值;根据所述多项式的位数生成初始数据;根据所述初始数据以及多项式的值生成查找表;存储所述查找表至寄存器内;获取待处理数据;根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;输出所述计算结果。通过实施本发明实施例的方法可实现兼顾了计算的速度与面积,多项式的位数和值都是可配置的,待处理的数据位数可配置。
Description
技术领域
本发明涉及CRC校验技术领域,更具体地说是指CRC计算方法、装置、计算机设备及存储介质。
背景技术
在数据存储和数据通讯领域,为了保证数据的正确,需要采用检错的手段,而CRC(循环冗余校验,Cyclic Redundancy Check)是其中最著名的一种检错手段,同其他差错检测方式一样,通过在要传输的k比特数据D后添加(n-k)比特FCS(又称帧检验序列,FrameCheck Sequence)形成n比特的传输帧T,再将其发送出去;其特点是检错能力强,开销小,易于用编码器及检测电路实现,CRC的原理虽然众说周知,但是其类型是多种多样的,它有着各种CRC多项式,从CRC-8到CRC-32,可以让CRC适应各种应用场合,但是,当前社会上的CRC都有着一定的不足之处,有的CRC结构简单,像LFSR(线性反馈移位寄存器,linearfeedback shift register),面积很小,但其所需的时间较长,而像现存的大部分并行CRC计算方法,像查表法其CRC多项式多是不可配置的,如果实现多个多项式的查表法,则像其他的并行方法的面积又过大,不利于应用。
因此,有必要设计一种新的方法,实现兼顾了计算的速度与面积,多项式的位数和值都是可配置的,待处理的数据位数可配置。
发明内容
本发明的目的在于克服现有技术的缺陷,提供CRC计算方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:CRC计算方法,包括:
获取多项式,以得到多项式的值;
根据所述多项式的位数生成初始数据;
根据所述初始数据以及多项式的值生成查找表;
存储所述查找表至寄存器内;
获取待处理数据;
根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;
输出所述计算结果。
其进一步技术方案为:所述根据所述多项式的位数生成初始数据,包括:
根据所述多项式的位数生成全为一且位数与所述多项式的位数相同的数据,以得到多位数;
将所述多位数按照所述多项式的位数进行拆分,形成初始数据。
其进一步技术方案为:所述根据所述初始数据以及多项式的值生成查找表,包括:
求取所述初始数据与所述多项式的值的异或结果,以形成查找表。
其进一步技术方案为:所述根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果,包括:
对所述待处理数据按照八位数为一组进行划分,形成若干个待计算数据;
根据所述待计算数据与所述查找表确定对应的查表结果;
对所述查表结果进行异或,以得到异或结果;
将所有待计算数据对应的异或结果进行CRC计算,以得到计算结果。
其进一步技术方案为:所述根据所述待计算数据与所述查找表确定对应的查表结果,包括:
根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果。
其进一步技术方案为:所述根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果,包括:
确定所述待计算数据内每位数据的数值;
根据数据的数值对所述查找表中相同位数上的数据按照设定规则进行设置,以得到查表结果。
其进一步技术方案为:所述设定规则为数据的数值为一时,取出所述查找表中相同位数上的数据,作为查表结果;数据的数值为零时,输出32’h00000000,作为查表结果
本发明还提供了CRC计算装置,包括:
多项式获取单元,用于获取多项式,以得到多项式的值;
初始数据生成单元,用于根据所述多项式的位数生成初始数据;
查找表生成单元,用于根据所述初始数据以及多项式的值生成查找表;
存储单元,用于存储所述查找表至寄存器内;
数据获取单元,用于获取待处理数据;
计算单元,用于根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;
输出单元,用于输出所述计算结果。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过输入的多项式生成初始数据,并以初始数据和多项式的值生成查找表,根据该查找表对待处理数据进行CRC计算,可以对多项式进行配置,而且查找表生成时计算量不大,实现兼顾了计算的速度与面积,多项式的位数和值都是可配置的,待处理的数据位数可配置。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的CRC计算方法的应用场景示意图;
图2为本发明实施例提供的CRC计算方法的流程示意图;
图3为本发明实施例提供的CRC计算方法的子流程示意图;
图4为本发明实施例提供的CRC计算方法的子流程示意图;
图5为本发明实施例提供的CRC计算方法的子流程示意图;
图6为本发明实施例提供的CRC计算方法的流程示意图;
图7为本发明实施例提供的CRC计算装置的示意性框图;
图8为本发明实施例提供的CRC计算装置的初始数据生成单元的示意性框图;
图9为本发明实施例提供的CRC计算装置的计算单元的示意性框图;
图10为本发明实施例提供的CRC计算装置的查表结果确定子单元的示意性框图;
图11为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的CRC计算方法的应用场景示意图。图2为本发明实施例提供的CRC计算方法的示意性流程图。该CRC计算方法应用于芯片中。通过获取多项式,将查找表的生成放在软件中生成,在计算CRC计算之前,先根据提供的多项式生成查找表,将其输入寄存器中,由此可以根据输入的查找表,来进行CRC的计算,不仅多项式的值可以变化,多项式的位数也可以由用户自己进行选择,实现了CRC的并行可配置的计算,查找表的生成不需要在软件中进行多次计算,当要生成N+1位多项式的查找表时,只需要进行N次的异或计算,实现兼顾了计算的速度与面积,多项式的位数和值都是可配置的,待处理的数据位数可配置。
图2是本发明实施例提供的CRC计算方法的流程示意图。如图2所示,该方法包括以下步骤S110至S170。
S110、获取多项式,以得到多项式的值。
在本实施例中,多项式是由用户输入的CRC多项式,从多项式内便可得到多项式对应的值。
S120、根据所述多项式的位数生成初始数据。
在本实施例中,初始数据是指位数与多项式的位数一致且全为一的数据拆分形成的八个数据。
在一实施例中,请参阅图3,上述的步骤S120可包括步骤S121~S122。
S121、根据所述多项式的位数生成全为一且位数与所述多项式的位数相同的数据,以得到多位数。
在本实施例中,多位数是指全为一且位数与所述多项式的位数相同的数据。
S122、将所述多位数按照所述多项式的位数进行拆分,形成初始数据。
在CRC的模二除法中有:F(x)=M(x)⊕N(x);F(x)%g(x)=M(x)%g(x)⊕N(x)%g(x);其中,F(x)为输入的数据即初始数据,g(x)为生成多项式的值,比如,对于任意一个8位数的F(x),可以把它表示为:b70000000⊕0b6000000⊕00b500000⊕000b40000⊕0000b3000⊕00000b200⊕000000b10⊕0000000b0;也就是说拆分成位数对应的数为1的多个数据。
S130、根据所述初始数据以及多项式的值生成查找表。
在本实施例中,查找表是指用于供CRC计算所用的表格。
具体地,求取所述初始数据与所述多项式的值的异或结果,以形成查找表。
举个例子:对于任意一个8位数的F(x),将b70000000称为M(7),0b6000000称为M(6)以此类推,那么可知:F(x)%g(x)=M(7)%g(x)⊕M(6)%g(x)⊕M(5)%g(x)⊕M(4)%g(x)⊕M(3)%g(x)⊕M(2)%g(x)⊕M(1)%g(x)⊕M(0)%g(x);在进行N次计算后,生成一个N*N的查找表,其本质是将全一的N位数据对于N+1位多项式的CRC校验码分成N行,其中,将0位为1,其它位全为0的数与多项式异或的值作为表的第一行,将N位为1,其他位全为0的数与多项式异或的值作为表的第N行。
S140、存储所述查找表至寄存器内。
将查找表存储于寄存器内,便于后续从寄存器调取该查找表对待处理数据进行CRC计算。
S150、获取待处理数据。
在本实施例中,待处理数据是指需要进行CRC计算的数据,可以为8位数、32位数、64位数等。
S160、根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果。
在本实施例中,计算结果是指根据查找表对待处理数据进行CRC计算所得的结果。
在一实施例中,请参阅图4,上述的步骤S160可包括步骤S161~S164。
S161、对所述待处理数据按照八位数为一组进行划分,形成若干个待计算数据。
在本实施例中,待计算数据是指从待处理数据的最后一位数开始,按照八位数为一组的方式进行划分,形成多个子数据。
S162、根据所述待计算数据与所述查找表确定对应的查表结果。
在本实施例中,查表结果是指根据待计算数据的数值对查找表进行设置后形成的结果。
具体地,根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果。
在一实施例中,请参阅图5,上述的步骤S162可包括步骤S1621~S1622。
S1621、确定所述待计算数据内每位数据的数值;
S1622、根据数据的数值对所述查找表中相同位数上的数据按照设定规则进行设置,以得到查表结果。
具体地,所述设定规则为数据的数值为一时,取出所述查找表中相同位数上的数据,作为查表结果;数据的数值为零时,输出32’h00000000,作为查表结果,此时无需查表。
在对数据进行计算时,计算结果为crc_i=data[n-1]⊕data[n-2]⊕…⊕data[0];当待计算数据的第i位为1时,取出查找表中第i行的数据,当输入的数据的第i位为0时,则将查找表的结果视为0,数据和查找表的行数都是从0开始计算,比如输入数据的第2位为0,则将data[2]置零。在判断N次后,便可以计算的到最后的结果,该N一般是8,在本实施例中,以待处理数据的8位为一组进行判断,这样的话既可以有效减少硬件的面积,同时又可以兼顾计算的速度,在最后的计算模块测试中,8位待处理数据的CRC可以在2个周期得到结果,16位待处理数据的CRC可以在3个周期得到结果,24位待处理数据的CRC可以在4个周期得到结果,32位待处理数据的CRC可以在5个周期得到计算结果。
当待处理数据的数据位数比校验码的位数大时,比如计算64位数据的32位数据时,需要先对前32位的数据进行计算,对于后面输入的32位数据,需要先将其与前32位数据计算得到的结果先进行一次按位的异或,然后对异或的结果进行CRC计算,最后得到的结果就是64位数据的32位CRC。
S163、对所述查表结果进行异或,以得到异或结果。
在本实施例中,异或结果是指对待计算数据的所有查表结果进行异或形成的结果。
S164、将所有待计算数据对应的异或结果进行CRC计算,以得到计算结果。
在本实施例中,如图6所示,举个例子:整个方法的流程为:当确定待处理数据后,先计算x=待处理数据位数/多项式的位数,若x是一个有余数的数,则设置x=[待处理数据位数/多项式的位数]+1,否则x=待处理数据位数/多项式的位数,此时多项式的位数一般为8位、16位、24位以及32位,当多项式的位数为8位时,设定n=0;当多项式的位数为16位时,设定n=1;当多项式的位数为24位时,设定n=2;当多项式的位数为32位时,设定n=3;在配置时输入x=X,当待处理数据输入时,先判断x=X,若是,则将待处理数据输入至数据寄存器内进行处理,再根据待处理数据划分后形成的待计算数据,对待计算数据的第N位至第N+7位的数值来确定查表结果,在再将这些查表结果进行异或,形成异或结果后,判断N是否大于0,当N不大于0时,将该异或结果暂存,再判断N是否等于n,当N等于n,则可输出异或结果;当N不等于n,表明查表结果未齐全,N=N+1,再执行对待计算数据的第N位至第N+7位的数值来确定查表结果;当N大于0,则将暂存的异或结果与上一次异或结果进行再次异或,以更新当前的异或结果,并执行判断N是否等于n;另外,当x不等于X时,则将当前的待计算数据与上一次张村结果异或,并作为待计算数据输入至数据寄存器内进行处理,并执行对待计算数据的第N位至第N+7位的数值来确定查表结果;且当x等于0,则设置x=X,并判断x是否等于X,当x不等于0,则设置x=x-1,并执行判断x是否等于X。
S170、输出所述计算结果。
上述的CRC计算方法,通过输入的多项式生成初始数据,并以初始数据和多项式的值生成查找表,根据该查找表对待处理数据进行CRC计算,可以对多项式进行配置,而且查找表生成时计算量不大,实现兼顾了计算的速度与面积,多项式的位数和值都是可配置的,待处理的数据位数可配置。
图7是本发明实施例提供的一种CRC计算装置300的示意性框图。如图7所示,对应于以上CRC计算方法,本发明还提供一种CRC计算装置300。该CRC计算装置300包括用于执行上述CRC计算方法的单元,该装置可以被配置于服务器中。具体地,请参阅图7,该CRC计算装置300包括多项式获取单元301、初始数据生成单元302、查找表生成单元303、存储单元304、数据获取单元305、计算单元306以及输出单元307。
多项式获取单元301,用于获取多项式,以得到多项式的值;初始数据生成单元302,用于根据所述多项式的位数生成初始数据;查找表生成单元303,用于根据所述初始数据以及多项式的值生成查找表;存储单元304,用于存储所述查找表至寄存器内;数据获取单元305,用于获取待处理数据;计算单元306,用于根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;输出单元307,用于输出所述计算结果。
在一实施例中,请参阅图8,所述初始数据生成单元302包括多位数生成子单元3021以及拆分子单元3022。
多位数生成子单元3021,用于根据所述多项式的位数生成全为一且位数与所述多项式的位数相同的数据,以得到多位数;拆分子单元3022,用于将所述多位数按照所述多项式的位数进行拆分,形成初始数据。
在一实施例中,所述查找表生成单元303,用于求取所述初始数据与所述多项式的值的异或结果,以形成查找表。
在一实施例中,如图9所示,所述计算单元306包括数据划分子单元3061、查表结果确定子单元3062、异或子单元3063以及结果计算子单元3064。
数据划分子单元3061,用于对所述待处理数据按照八位数为一组进行划分,形成若干个待计算数据;查表结果确定子单元3062,用于根据所述待计算数据与所述查找表确定对应的查表结果;异或子单元3063,用于对所述查表结果进行异或,以得到异或结果;结果计算子单元3064,用于将所有待计算数据对应的异或结果进行CRC计算,以得到计算结果。
在一实施例中,所述查表结果确定子单元3062,用于根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果。
在一实施例中,如图10所示,所述查表结果确定子单元3062包括数值确定模块30621以及设置模块30622。
数值确定模块30621,用于确定所述待计算数据内每位数据的数值;设置模块30622,用于根据数据的数值对所述查找表中相同位数上的数据按照设定规则进行设置,以得到查表结果。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述CRC计算装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述CRC计算装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图11所示的计算机设备上运行。
请参阅图11,图11是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是服务器,其中,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图11,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种CRC计算方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种CRC计算方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
获取多项式,以得到多项式的值;根据所述多项式的位数生成初始数据;根据所述初始数据以及多项式的值生成查找表;存储所述查找表至寄存器内;获取待处理数据;根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;输出所述计算结果。
在一实施例中,处理器502在实现所述根据所述多项式的位数生成初始数据步骤时,具体实现如下步骤:
根据所述多项式的位数生成全为一且位数与所述多项式的位数相同的数据,以得到多位数;将所述多位数按照所述多项式的位数进行拆分,形成初始数据。
在一实施例中,处理器502在实现所述根据所述初始数据以及多项式的值生成查找表步骤时,具体实现如下步骤:
求取所述初始数据与所述多项式的值的异或结果,以形成查找表。
在一实施例中,处理器502在实现所述根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果步骤时,具体实现如下步骤:
对所述待处理数据按照八位数为一组进行划分,形成若干个待计算数据;根据所述待计算数据与所述查找表确定对应的查表结果;对所述查表结果进行异或,以得到异或结果;将所有待计算数据对应的异或结果进行CRC计算,以得到计算结果。
在一实施例中,处理器502在实现所述根据所述待计算数据与所述查找表确定对应的查表结果步骤时,具体实现如下步骤:
根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果。
在一实施例中,处理器502在实现所述根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果步骤时,具体实现如下步骤:
确定所述待计算数据内每位数据的数值;根据数据的数值对所述查找表中相同位数上的数据按照设定规则进行设置,以得到查表结果。
其中,所述设定规则为数据的数值为一时,取出所述查找表中相同位数上的数据,作为查表结果;数据的数值为零时,输出32’h00000000,作为查表结果。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
获取多项式,以得到多项式的值;根据所述多项式的位数生成初始数据;根据所述初始数据以及多项式的值生成查找表;存储所述查找表至寄存器内;获取待处理数据;根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;输出所述计算结果。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述多项式的位数生成初始数据步骤时,具体实现如下步骤:
根据所述多项式的位数生成全为一且位数与所述多项式的位数相同的数据,以得到多位数;将所述多位数按照所述多项式的位数进行拆分,形成初始数据。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述初始数据以及多项式的值生成查找表步骤时,具体实现如下步骤:
求取所述初始数据与所述多项式的值的异或结果,以形成查找表。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果步骤时,具体实现如下步骤:
对所述待处理数据按照八位数为一组进行划分,形成若干个待计算数据;根据所述待计算数据与所述查找表确定对应的查表结果;对所述查表结果进行异或,以得到异或结果;将所有待计算数据对应的异或结果进行CRC计算,以得到计算结果。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述待计算数据与所述查找表确定对应的查表结果步骤时,具体实现如下步骤:
根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果。
在一实施例中,所述处理器在执行所述计算机程序而实现所述根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果步骤时,具体实现如下步骤:
确定所述待计算数据内每位数据的数值;根据数据的数值对所述查找表中相同位数上的数据按照设定规则进行设置,以得到查表结果。
其中,所述设定规则为数据的数值为一时,取出所述查找表中相同位数上的数据,作为查表结果;数据的数值为零时,输出32’h00000000,作为查表结果。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.CRC计算方法,其特征在于,包括:
获取多项式,以得到多项式的值;
根据所述多项式的位数生成初始数据;
根据所述初始数据以及多项式的值生成查找表;
存储所述查找表至寄存器内;
获取待处理数据;
根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;
输出所述计算结果。
2.根据权利要求1所述的CRC计算方法,其特征在于,所述根据所述多项式的位数生成初始数据,包括:
根据所述多项式的位数生成全为一且位数与所述多项式的位数相同的数据,以得到多位数;
将所述多位数按照所述多项式的位数进行拆分,形成初始数据。
3.根据权利要求2所述的CRC计算方法,其特征在于,所述根据所述初始数据以及多项式的值生成查找表,包括:
求取所述初始数据与所述多项式的值的异或结果,以形成查找表。
4.根据权利要求1所述的CRC计算方法,其特征在于,所述根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果,包括:
对所述待处理数据按照八位数为一组进行划分,形成若干个待计算数据;
根据所述待计算数据与所述查找表确定对应的查表结果;
对所述查表结果进行异或,以得到异或结果;
将所有待计算数据对应的异或结果进行CRC计算,以得到计算结果。
5.根据权利要求4所述的CRC计算方法,其特征在于,所述根据所述待计算数据与所述查找表确定对应的查表结果,包括:
根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果。
6.根据权利要求5所述的CRC计算方法,其特征在于,所述根据所述待计算数据内的每位数据与所述查找表进行按位查找,以得到查表结果,包括:
确定所述待计算数据内每位数据的数值;
根据数据的数值对所述查找表中相同位数上的数据按照设定规则进行设置,以得到查表结果。
7.根据权利要求6所述的CRC计算方法,其特征在于,所述设定规则为数据的数值为一时,取出所述查找表中相同位数上的数据,作为查表结果;数据的数值为零时,输出32’h00000000,作为查表结果。
8.CRC计算装置,其特征在于,包括:
多项式获取单元,用于获取多项式,以得到多项式的值;
初始数据生成单元,用于根据所述多项式的位数生成初始数据;
查找表生成单元,用于根据所述初始数据以及多项式的值生成查找表;
存储单元,用于存储所述查找表至寄存器内;
数据获取单元,用于获取待处理数据;
计算单元,用于根据所述查找表对所述待处理数据进行CRC计算,以得到计算结果;
输出单元,用于输出所述计算结果。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210282970.XA CN114942861A (zh) | 2022-03-22 | 2022-03-22 | Crc计算方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210282970.XA CN114942861A (zh) | 2022-03-22 | 2022-03-22 | Crc计算方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114942861A true CN114942861A (zh) | 2022-08-26 |
Family
ID=82906198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210282970.XA Pending CN114942861A (zh) | 2022-03-22 | 2022-03-22 | Crc计算方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114942861A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115987460A (zh) * | 2023-03-21 | 2023-04-18 | 深圳华锐分布式技术股份有限公司 | 基于校验码的数据传输方法、装置、设备及介质 |
-
2022
- 2022-03-22 CN CN202210282970.XA patent/CN114942861A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115987460A (zh) * | 2023-03-21 | 2023-04-18 | 深圳华锐分布式技术股份有限公司 | 基于校验码的数据传输方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0280013B1 (en) | Device for verifying proper operation of a checking code generator | |
US8468439B2 (en) | Speed-optimized computation of cyclic redundancy check codes | |
US7590916B2 (en) | Cyclic redundancy checking value calculator | |
JP2005102213A (ja) | メッセージのcrcを計算するための方法 | |
US7243289B1 (en) | Method and system for efficiently computing cyclic redundancy checks | |
Sheng-Ju | Implementation of cyclic redundancy check in data communication | |
US9685979B2 (en) | Circuitry and method for generating cyclic redundancy check signatures | |
CN103795502A (zh) | 一种数据帧校验码生成方法和装置 | |
CN113300716A (zh) | 循环冗余校验码的生成方法、设备以及计算机可读介质 | |
JPH0728227B2 (ja) | Bch符号の復号装置 | |
US8015478B2 (en) | Data processing | |
CN114942861A (zh) | Crc计算方法、装置、计算机设备及存储介质 | |
Wang et al. | Reliable and secure memories based on algebraic manipulation correction codes | |
US7266760B1 (en) | Method and apparatus for calculating cyclic redundancy checks for variable length packets | |
CN117014017A (zh) | 一种基于高位宽数据计算多项式除法余数的crc计算方法 | |
US8984385B1 (en) | Systems and methods for cyclic redundancy check implementation | |
US20030041300A1 (en) | Universal device for processing Reed-Solomon forward error-correction encoded messages | |
JP3245290B2 (ja) | 復号方法とその装置 | |
EP3420640A1 (en) | Methods and apparatus for performing reed-solomon encoding | |
US20030159101A1 (en) | Cyclic redundancy code generator | |
CN116048868A (zh) | 代码生成方法、装置、设备和存储介质 | |
CN114911647A (zh) | 多项式可配的并行crc硬件实现方法、装置和计算机设备 | |
CN113741972A (zh) | 一种sm3算法的并行处理方法及电子设备 | |
CN110741562B (zh) | 向量信令码信道的流水线式前向纠错 | |
US10171109B2 (en) | Fast encoding method and device for Reed-Solomon codes with a small number of redundancies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |