CN105721107B - 一种分块计算crc以提高时钟频率的装置和方法 - Google Patents
一种分块计算crc以提高时钟频率的装置和方法 Download PDFInfo
- Publication number
- CN105721107B CN105721107B CN201610075572.5A CN201610075572A CN105721107B CN 105721107 B CN105721107 B CN 105721107B CN 201610075572 A CN201610075572 A CN 201610075572A CN 105721107 B CN105721107 B CN 105721107B
- Authority
- CN
- China
- Prior art keywords
- crc
- block
- sub
- data
- module
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0061—Error detection codes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
- Logic Circuits (AREA)
Abstract
本发明公开了一种分块计算CRC以提高时钟频率的装置和方法,包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块1及CRC移位寄存器,前次CRC计算模块与输入数据计算模块通过异或模块1与CRC移位寄存器相连接,CRC移位寄存器与输出CRC计算模块相连接;输入数据计算模块还直接与输出CRC计算模块相连接;输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块1内;能够解决超高速率的基于包处理应用中CRC计算电路时钟性能瓶颈,分块模块间的时序路径通过加寄存器予以切断,从而提高了整个电路的时序性能。
Description
技术领域
本发明涉及CRC计算技术领域,具体的说,是一种分块计算CRC以提高时钟频率的装置和方法。
背景技术
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
CRC计算基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC校验码的生成多项式。CRC校验码的具体生成过程为:假设要发送的数据多项式F(X)表示,将F(x)左移R位(可表示成F(x)*2R),这样F(x)的右边就会空出R位,这就是校验码的位置。用 F(x)*2R 除以生成多项式G(x)得到的余数R(x)就是校验码。
多项式和二进制数有直接对应关系:X的最高幂次对应二进制数的最高位,以下各位对应生成多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:X的最高幂次为R,转换成对应的二进制数有R+1位。多项式包括生成多项式G(X)和数据多项式F(X)。如生成多项式为G(X)=X4+X3+X+1,可转换为二进制数码11011。而发送信息位 101111,可转换为数据多项式为F(X)=X5+X3+X2+X+1。
接收方向有两种处理方式,一是把多项式F(x)*2R + R(x)除以G(x),如果余数是0,则认为没有错误,否则,一定有错。二是把多项式F(x)*2R除以G(x)得到的R’(x),如果R(x)等于R’(x),则认为没有错误,否则,一定有错。事实上,如果错误多项式E(x)为G(x)的算术合成(比如乘加线性组合),则接收方不能检测出错误,所以前面的描述中用了“认为没有错误”这样的表述。
但现有的计算CRC存在的问题主要表现为:
虽然计算CRC可以用软件方法实现,也可以用硬件电路实现。但在一些实时性要求很高的领域,软件方法不能满足实时性要求,只能用硬件电路实现。
而当数据流速率较低时(比如10M/100M/1000M以太网),计算CRC的硬件电路没有实现难度,但是当数据速率较高(比如40G/100G以太网),用传统的计算CRC的硬件电路可能就不能满足要求。因为这个时候输入并行数据位宽很宽,导致计算CRC硬件电路逻辑层次很深,电路很难运行在希望的频率上。
发明内容
本发明的目的在于提供一种分块计算CRC以提高时钟频率的装置和方法,基于分块计算的模式而设计的分块计算CRC以提高时钟频率的装置,能够解决超高速率的基于包处理应用中CRC计算电路时钟性能瓶颈,并且具有电路结构清晰简单,通用性极强,能极大提高电路的时钟性能,且逻辑资源不会增加的特性,特别适合超高速率(40G以上)的各种包处理应用中;
基于分块计算的模式而设计的分块计算CRC以提高时钟频率的方法,能够降低每个分块模块内部的逻辑层次,且分块模块间的时序路径通过加寄存器予以切断,从而提高了整个电路的时序性能。
本发明通过下述技术方案实现:一种分块计算CRC以提高时钟频率的装置,包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块1及CRC移位寄存器,所述前次CRC计算模块与输入数据计算模块通过异或模块1与CRC移位寄存器相连接,所述CRC移位寄存器与输出CRC计算模块相连接;所述输入数据计算模块还直接与输出CRC计算模块相连接。
进一步的为更好的实现本发明所述装置,特别设置成下述结构:所述前次CRC计算模块内设置有X个CRC子块寄存器、多个二进制除法取余模块及X个前次CRC子块,所述X个前次CRC子块通过多个二进制除法取余模块分别与X个CRC子块寄存器相连接,所述X个CRC子块寄存器皆与异或模块1相连接,所述异或模块1的输出端还分别与X个前次CRC子块的输入端相连接;所述X为1到CRC多项式的最高次幂M间的任何整数,优选的X为能整除CRC多项式的最高次幂M的整数;所述M为CRC多项式的最高次幂,所述N为最大的输入数据位宽。
进一步的为更好的实现本发明所述装置,特别设置成下述结构:所述输入数据计算模块内设置有输入移位寄存器、Y个数据子块、多个二进制除法取余模块及Y个数据子块寄存器,所述输入移位寄存器与Y个数据子块相连接,所述Y个数据子块分别通过多个二进制除法取余模块与Y个数据子块寄存器相连接,所述Y个数据子块寄存器分别与异或模块1和输出CRC计算模块相连接;所述Y为1到最大的输入数据位宽N间的任何整数,优选的Y为能整除最大的输入数据位宽N的整数。
进一步的为更好的实现本发明所述装置,特别设置成下述结构:所述输出CRC计算模块内设置有Z个输出CRC子块、多个二进制除法取余模块、多个输出CRC子块寄存器、异或模块3及输出寄存器,所述CRC移位寄存器分别与多个输出CRC子块相连接,所述输出CRC子块分别通过多个二进制除法取余模块与多个输出CRC子块寄存器相连接,所述多个输出CRC子块寄存器皆与异或模块3相连接,所述异或模块3与输出寄存器相连接,所述Y个数据子块寄存器与异或模块3相连接;所述Z为1到N+M间的任何整数,优选的,Z为能整除(N+M)的整数。
进一步的为更好的实现本发明所述装置,特别设置成下述结构:所述输入数据计算模块内还设置有异或模块2和数据部分寄存器,所述Y个数据子块寄存器皆与异或模块2相连接,所述异或模块2与数据部分寄存器相连接,所述数据部分寄存器分别与异或模块1和异或模块3相连接。
一种分块计算CRC以提高时钟频率的方法,包括以下步骤:
1)输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块1内;
2)从异或模块1反馈回来的数据通过前次CRC计算模块采用分块计算的方式进行计算,而后将计算所得值输入到异或模块1内与输入数据计算模块所得的数据子块的CRC值进行异或得到当前的CRC值并存储到CRC移位寄存器内;
3)经步骤2)后,所述CRC移位寄存器对当前的CRC值进行移位,而后将移位后的数据输入到输出CRC计算模块内采用分块计算方式进行计算得到CRC并输出。
进一步的为更好的实现本发明所述方法,特别采用下述设置方式:所述步骤1)包括以下具体步骤:
1-1)输入移位寄存器根据输入数据的输入比特有效情况,进行右移操作,在进行右移操作时,右移多少位,高位就补多少个0,右移后的数据位宽没有变化,始终为N;具体右移的位数根据输入数据有效指示来判断,同时将该值寄存送到CRC移位寄存器控制移位的比特数,使两个移位寄存器移位的比特数是相等的。
1-2)经步骤1-1)后,右移后的输入数据将通过Y个数据子块,将N位右移后的输入数据进行Y等分,并将Y等分后的数据进行重新组合;所述Y等分后的数据进行重新组合具体为:将N位右移后的输入数据进行Y等分后,每个数据子块取其中一份且保持自己的位置不动,其它位置全部置0,再在数据子块的低位添加M个0;每个数据子块有N+M位,只有对应的N/Y位数据来自输入数据,其它全部为0;在进行处理时,每一个所述数据子块本身不耗费逻辑资源。
1-3)经步骤1-2)后,输入数据计算模块内的二进制除法取余模块将重新组合后的Y个等分的数据进行分块计算各自的CRC值,得到数据子块的CRC值;
1-4)经步骤1-3)后,数据子块寄存器对得到的数据子块的CRC值进行寄存;为提高整个电路的时钟性能,所述数据子块寄存器还砍断时序路径。
进一步的为更好的实现本发明所述方法,特别采用下述设置方式:所述步骤2)包括以下具体步骤:
2-1)从异或模块1输出并反馈的M位前次CRC将通过X个前次CRC子块进行X等分,并将X等分后的数据进行重新组合;所述将X等分后的数据进行重新组合具体为:将M位前次CRC进行X等分后,每个前次CRC子块取其中一份且保持自己的位置不动,其它位置全部置0,再在前次CRC子块的低位添加N个0,每个前次CRC子块有N+M位,只有对应的M/X位数据来自前次CRC,其它全部为0。
2-2)经步骤2-1)后,前次CRC计算模块内的二进制除法取余模块将重新组合后的Y个等分的数据进行分块计算各自的CRC值,得到前次CRC子块的CRC值;
2-3)经步骤2-2)后,CRC子块寄存器对得到的前次CRC子块的CRC值进行寄存;为提高整个电路的时钟性能,所述CRC子块寄存器还砍断时序路径。
进一步的为更好的实现本发明所述方法,特别采用下述设置方式:所述步骤3)具体为:CRC移位寄存器把当前的CRC值在右边补N个0后,和输入移位寄存器做相同的移位操作,然后将结果送到输出CRC子块,在输出CRC子块内将(N+M)比特数据Z等分,并将经过Z等分后的数据进行重新组合形成新的输出CRC子块,新的输出CRC子块通过二进制除法取余模块生成输出CRC子块的CRC值且通过输出CRC子块寄存器寄存,为提高整个电路的时序性能,所述生成输出CRC子块寄存器砍断时序路径,而后通过异或模块3把输出CRC子块寄存器的CRC值及数据块的CRC值异或相加处理,最后将所得数据通过输出寄存器输出CRC;所述数据块的CRC值为全部数据子块的CRC值相异或所得。
本发明与现有技术相比,具有以下优点及有益效果:
(1)由于高速的CRC电路可能是包处理应用中唯一存在反馈环的电路,高速的CRC计算电路往往是超高速率的基于包处理应用的关键;本发明基于分块计算的模式而设计的分块计算CRC以提高时钟频率的装置,能够解决超高速率的基于包处理应用中CRC计算电路时钟性能瓶颈,并且具有电路结构清晰简单,通用性极强,能极大提高电路的时钟性能,且逻辑资源不会增加的特性,特别适合超高速率(40G以上)的各种包处理应用中;
(2)基于分块计算的模式而设计的分块计算CRC以提高时钟频率的方法,能够降低每个分块模块内部的逻辑层次,且分块模块间的时序路径通过加寄存器予以切断,从而提高了整个电路的时序性能。
(3)本发明能够将二进制多项式的求余数算法作为CRC计算的通用计算单元进行二进制除法取余计算。
(4)由于当数据位宽较大时,影响CRC计算电路速度的主要因素在于数据位宽,因此本发明对输入数据多项式和前次余数多项式分开计算,分开计算后可以把输入数据部分电路插入数据子块寄存器,从而提高电路的运行速度。
(5)本发明对输入数据多项式可以分成若干块分别计算并插入数据子块寄存器,然后将计算结果相加(异或)并插入CRC移位寄存器,从而提高电路运行速度。
(6)本发明对前次余数多项式分成若干块分别计算并插入CRC子块寄存器,然后将计算结果相加(异或)并插入CRC移位寄存器,从而提高电路运行速度。
(7)本发明把输入数据通过移位后进入相同的二进制除法取余模块,减少了逻辑资源的消耗,大大减少工作量。
(8)本发明把前次CRC通过移位后进入相同的二进制除法取余模块,且移出反馈环,减少了逻辑资源的消耗,提高了电路运行速度。
附图说明
图1为本发明所述装置的硬件电路结构图。
图2为本发明所述二进制除法取余模块的算法流程图。
图3为本发明所述数据子块的数据格式示例图。
图4为本发明所述前次CRC子块的数据格式示例图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
一种分块计算CRC以提高时钟频率的装置,如图1所示,包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块1及CRC移位寄存器,所述前次CRC计算模块与输入数据计算模块通过异或模块1与CRC移位寄存器相连接,所述CRC移位寄存器与输出CRC计算模块相连接;所述输入数据计算模块还直接与输出CRC计算模块相连接。
在设计使用时,输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块1内;从异或模块1反馈回来的数据通过前次CRC计算模块采用分块计算的方式进行计算,而后将计算所得值输入到异或模块1内与输入数据计算模块所得的数据子块的CRC值进行异或得到当前的CRC值并存储到CRC移位寄存器内;CRC移位寄存器对当前的CRC值进行移位,而后将移位后的数据输入到输出CRC计算模块内采用分块计算方式进行计算得到CRC并输出。
实施例2:
本实施例是在上述实施例的基础上进一步优化,进一步的为更好的实现本发明所述装置,如图1所示,特别设置成下述结构:所述前次CRC计算模块内设置有X个CRC子块寄存器、X个二进制除法取余模块及X个前次CRC子块,所述X个前次CRC子块通过X个二进制除法取余模块分别与X个CRC子块寄存器相连接,所述X个CRC子块寄存器皆与异或模块1相连接,所述异或模块1的输出端还分别与X个前次CRC子块的输入端相连接;所述X为1到CRC多项式的最高次幂M(比如CRC32,1<=X<=32)间的任何整数,优选的X为能整除CRC多项式的最高次幂M的整数。所述M为CRC多项式的最高次幂,所述N为最大的输入数据位宽。
所述前次CRC子块本身不耗费逻辑资源,它只是将前次CRC进行分块及重新组合。将M位前次CRC进行X等分,每个前次CRC子块取其中一份且保持自己的位置不动,其它位置全部置0,再在前次CRC子块的低位添加N个0,因此,每个子块有N+M位,只有对应的M/X位数据来自前次CRC,其它全部为0。如图4所示的一个前次CRC子块的数据格式示例,假设输入数据位宽256(N=256),CRC生成多项式采用CRC32(M=32),将前次CRC分成4块。
所述二进制除法取余模块有一个输入端口,一个输出端口,输入端口是被除数多项式的二进制表示,位宽为输入数据位宽N加上CRC位宽M(CRC生成多项式G(x)的最高次幂),输出端口是被除数多项式除以CRC生成多项式G(x)的余数二进制表示,位宽为M;CRC生成多项式G(x)作为参数(常数)输入。
所述CRC子块寄存器的作用为对前次CRC部分的CRC计算电路进行时序砍断,以提高整个电路的时序性能。CRC初始值通过CRC子块寄存器来设置,把CRC子块寄存器1的初始值值设为CRC初始值,其它CRC子块寄存器的初始值全设为0。
实施例3:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好的实现本发明所述装置,如图1所示,特别设置成下述结构:所述输入数据计算模块内设置有输入移位寄存器、Y个数据子块、Y个二进制除法取余模块及Y个数据子块寄存器,所述输入移位寄存器与Y个数据子块相连接,所述Y个数据子块分别通过Y个二进制除法取余模块与Y个数据子块寄存器相连接,所述Y个数据子块寄存器分别与异或模块1和输出CRC计算模块相连接;所述Y为1到最大的输入数据位宽N间的任何整数,优选的Y为能整除最大的输入数据位宽N的整数。
将数据子块寄存器的输出直接连到异或模块1/或异或模块3进行异或,以节约逻辑资源和数据部分的计算延时。
所述输入移位寄存器根据输入数据的输入比特有效情况,进行适当的右移操作,右移多少位,高位就补多少个0,右移后的数据位宽没有变化,始终为N;具体右移的位数根据输入数据有效指示来判断,同时将该值寄存送到CRC移位寄存器控制移位的比特数,使两个移位寄存器移位的比特数是相等的。
所述数据子块处理本身不耗费逻辑资源,它只是将输入数据进行分块及重新组合。将N位输入数据通过数据子块1~数据子块Y进行Y等分,每个数据子块取其中一份且保持自己的位置不动,其它位置全部置0,再在数据子块的低位添加M个0,因此,每个数据子块有N+M位,只有对应的N/Y位数据来自输入数据,其它全部为0。如图3所示的数据子块的数据格式示例,假设输入数据位宽256(N=256),CRC生成多项式采用CRC32(M=32),将输入数据分成8块。
所述数据子块寄存器(数据子块寄存器1~数据子块寄存器Y)的作用是对数据部分的CRC计算电路进行时序砍断,以提高整个电路的时序性能,没有它,数据分块就失去了意义。
实施例4:
本实施例是在上述任一实施例的基础上进一步优化,进一步的为更好的实现本发明所述装置,如图1所示,特别设置成下述结构:所述输出CRC计算模块内设置有Z个输出CRC子块、Z个二进制除法取余模块、Z个输出CRC子块寄存器、异或模块3及输出寄存器,所述CRC移位寄存器分别与Z个输出CRC子块相连接,所述输出CRC子块分别通过Z个二进制除法取余模块与Z个输出CRC子块寄存器相连接,所述Z个输出CRC子块寄存器皆与异或模块3相连接,所述异或模块3与输出寄存器相连接,所述Y个数据子块寄存器与异或模块3相连接;所述Z为1到N+M间的任何整数,优选的,Z为能整除(N+M)的整数。
实施例5:
本实施例是在上述实施例的基础上进一步优化,进一步的为更好的实现本发明所述装置,如图1所示,特别设置成下述结构:所述输入数据计算模块内还设置有异或模块2和数据部分寄存器,所述Y个数据子块寄存器皆与异或模块2相连接,所述异或模块2与数据部分寄存器相连接,所述数据部分寄存器分别与异或模块1和异或模块3相连接。
实施例6:
一种分块计算CRC以提高时钟频率的方法,包括以下步骤:
1)输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块1内;
2)从异或模块1反馈回来的数据通过前次CRC计算模块采用分块计算的方式进行计算,而后将计算所得值输入到异或模块1内与输入数据计算模块所得的数据子块的CRC值进行异或得到当前的CRC值并存储到CRC移位寄存器内;
3)经步骤2)后,所述CRC移位寄存器对当前的CRC值进行移位,而后将移位后的数据输入到输出CRC计算模块内采用分块计算方式进行计算得到CRC并输出。
实施例7:
本实施例是在上述实施例的基础上进一步优化,进一步的为更好的实现本发明所述方法,结合图1,特别采用下述设置方式:所述步骤1)包括以下具体步骤:
1-1)输入移位寄存器根据输入数据的输入比特有效情况,进行右移操作,在进行右移操作时,右移多少位,高位就补多少个0,右移后的数据位宽没有变化,始终为N;具体右移的位数根据输入数据有效指示来判断,同时将该值寄存送到CRC移位寄存器控制移位的比特数,使两个移位寄存器移位的比特数是相等的。
1-2)经步骤1-1)后,右移后的输入数据将通过Y个数据子块,将N位右移后的输入数据进行Y等分,并将Y等分后的数据进行重新组合;所述Y等分后的数据进行重新组合具体为:将N位右移后的输入数据进行Y等分后,每个数据子块取其中一份且保持自己的位置不动,其它位置全部置0,再在数据子块的低位添加M个0;每个数据子块有N+M位,只有对应的N/Y位数据来自输入数据,其它全部为0;在进行处理时,每一个所述数据子块本身不耗费逻辑资源。
1-3)经步骤1-2)后,输入数据计算模块内的二进制除法取余模块将重新组合后的Y个等分的数据进行分块计算各自的CRC值,得到数据子块的CRC值;
所述采用二进制除法取余模块进行二进制除法取余模块算法流程具体为:
第一步,开始;
第二步,定义N+1个变量Temp[N][N+M-1],每个变量位宽位N+M;
第三步,将输入端口多项式赋给第一个变量Temp[0]。定义循环变量 i=1;
第四步,进行i>N的比较,若为是则进行第五步;若为否则进行第六步;
第五步,将最后一个变量的低M位Temp[N][M-1:0]赋给输出端口;并结束;
第六步,进行Temp[i-1][N+M-i] =0的比较,若为是则进行第七步,若为否则进行第八步;
第七步,Temp[i] =Temp[i-1],而后执行第九步;
第八步,Temp[i] = Temp[i-1] ^ (G(x)<<(N-i)),而后执行第九步;
第九步,循环变量加1 i=i+1;并返回到第四步。
1-4)经步骤1-3)后,数据子块寄存器对得到的数据子块的CRC值进行寄存;为提高整个电路的时钟性能,所述数据子块寄存器还砍断时序路径。
实施例8:
本实施例是在实施例7或8的基础上进一步优化,进一步的为更好的实现本发明所述方法,结合图1,特别采用下述设置方式:所述步骤2)包括以下具体步骤:
2-1)从异或模块1输出并反馈的M位前次CRC将通过X个前次CRC子块进行X等分,并将X等分后的数据进行重新组合;所述将X等分后的数据进行重新组合具体为:将M位前次CRC进行X等分后,每个前次CRC子块取其中一份且保持自己的位置不动,其它位置全部置0,再在前次CRC子块的低位添加N个0,每个前次CRC子块有N+M位,只有对应的M/X位数据来自前次CRC,其它全部为0。
2-2)经步骤2-1)后,前次CRC计算模块内的二进制除法取余模块将重新组合后的Y个等分的数据进行分块计算各自的CRC值,得到前次CRC子块的CRC值;
2-3)经步骤2-2)后,CRC子块寄存器对得到的前次CRC子块的CRC值进行寄存,砍断时序路径,提高整个电路的时钟性能。
实施例9:
本实施例是在实施例7-9任一实施例的基础上进一步优化,进一步的为更好的实现本发明所述方法,结合图1,特别采用下述设置方式:所述步骤3)具体为:CRC移位寄存器把当前的CRC值在右边补N个0后,和输入移位寄存器做相同的移位操作,然后将结果送到输出CRC子块,在输出CRC子块内将(N+M)比特数据Z等分,并将经过Z等分后的数据进行重新组合形成新的输出CRC子块,新的输出CRC子块通过二进制除法取余模块生成输出CRC子块的CRC值且通过输出CRC子块寄存器寄存,为提高整个电路的时序性能,所述生成输出CRC子块寄存器砍断时序路径,而后通过异或模块3把输出CRC子块寄存器的CRC值及数据块的CRC值异或相加处理,最后将所得数据通过输出寄存器输出CRC;所述数据块的CRC值为全部数据子块的CRC值相异或。所述CRC子块寄存器将(N+M)比特数据Z等分时,对应的(N+M)/Z比特来自CRC移位寄存器,其它位置为0。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (9)
1.一种分块计算CRC以提高时钟频率的装置,其特征在于:包括输出CRC计算模块、前次CRC计算模块、输入数据计算模块、异或模块1及CRC移位寄存器,所述前次CRC计算模块与输入数据计算模块通过异或模块1与CRC移位寄存器相连接,所述CRC移位寄存器与输出CRC计算模块相连接;所述输入数据计算模块还直接与输出CRC计算模块相连接;数据在输出CRC计算模块、前次CRC计算模块、输入数据计算模块中均采用分块计算的方式进行计算。
2.根据权利要求1所述的一种分块计算CRC以提高时钟频率的装置,其特征在于:所述前次CRC计算模块内设置有X个CRC子块寄存器、多个二进制除法取余模块及X个前次CRC子块,所述X个前次CRC子块通过多个二进制除法取余模块分别与X个CRC子块寄存器相连接,所述X个CRC子块寄存器皆与异或模块1相连接,所述异或模块1的输出端还分别与X个前次CRC子块的输入端相连接。
3.根据权利要求1所述的一种分块计算CRC以提高时钟频率的装置,其特征在于:所述输入数据计算模块内设置有输入移位寄存器、Y个数据子块、多个二进制除法取余模块及Y个数据子块寄存器,所述输入移位寄存器与Y个数据子块相连接,所述Y个数据子块分别通过多个二进制除法取余模块与Y个数据子块寄存器相连接,所述Y个数据子块寄存器分别与异或模块1和输出CRC计算模块相连接。
4.根据权利要求3所述的一种分块计算CRC以提高时钟频率的装置,其特征在于:所述输出CRC计算模块内设置有Z个输出CRC子块、多个二进制除法取余模块、多个输出CRC子块寄存器、异或模块3及输出寄存器,所述CRC移位寄存器分别与多个输出CRC子块相连接,所述输出CRC子块分别通过多个二进制除法取余模块与多个输出CRC子块寄存器相连接,所述多个输出CRC子块寄存器皆与异或模块3相连接,所述异或模块3与输出寄存器相连接,所述Y个数据子块寄存器与异或模块3相连接。
5.根据权利要求4所述的一种分块计算CRC以提高时钟频率的装置,其特征在于:所述输入数据计算模块内还设置有异或模块2和数据部分寄存器,所述Y个数据子块寄存器皆与异或模块2相连接,所述异或模块2与数据部分寄存器相连接,所述数据部分寄存器分别与异或模块1和异或模块3相连接。
6.一种分块计算CRC以提高时钟频率的方法,其特征在于:包括以下步骤:
1)输入数据通过输入数据计算模块采用分块计算的方式进行计算,得到数据子块的CRC值,而后将该数据子块的CRC值输入到异或模块1内;
2)从异或模块1反馈回来的数据通过前次CRC计算模块采用分块计算的方式进行计算,而后将计算所得值输入到异或模块1内与输入数据计算模块所得的数据子块的CRC值进行异或得到当前的CRC值并存储到CRC移位寄存器内;
3)经步骤2)后,所述CRC移位寄存器对当前的CRC值进行移位,而后将移位后的数据输入到输出CRC计算模块内采用分块计算方式进行计算得到CRC并输出。
7.根据权利要求6所述的一种分块计算CRC以提高时钟频率的方法,其特征在于:所述步骤1)包括以下具体步骤:
1-1)输入移位寄存器根据输入数据的输入比特有效情况,进行右移操作;
1-2)经步骤1-1)后,右移后的输入数据将通过Y个数据子块,将N位右移后的输入数据进行Y等分,并将Y等分后的数据进行重新组合;
1-3)经步骤1-2)后,输入数据计算模块内的二进制除法取余模块将重新组合后的Y个等分的数据进行分块计算各自的CRC值,得到数据子块的CRC值;
1-4)经步骤1-3)后,数据子块寄存器对得到的数据子块的CRC值进行寄存,砍断时序路径。
8.根据权利要求6所述的一种分块计算CRC以提高时钟频率的方法,其特征在于:所述步骤2)包括以下具体步骤:
2-1)从异或模块1输出并反馈的M位前次CRC将通过X个前次CRC子块进行X等分,并将X等分后的数据进行重新组合;
2-2)经步骤2-1)后,前次CRC计算模块内的二进制除法取余模块将重新组合后的Y个等分的数据进行分块计算各自的CRC值,得到前次CRC子块的CRC值;
2-3)经步骤2-2)后,CRC子块寄存器对得到的前次CRC子块的CRC值进行寄存,砍断时序路径。
9.根据权利要求6所述的一种分块计算CRC以提高时钟频率的方法,其特征在于:所述步骤3)具体为:CRC移位寄存器把当前的CRC值在右边补N个0后,和输入移位寄存器做相同的移位操作,然后将结果送到输出CRC子块,在输出CRC子块内将(N+M)比特数据Z等分,并将经过Z等分后的数据进行重新组合形成新的输出CRC子块,新的输出CRC子块通过二进制除法取余模块生成输出CRC子块的CRC值且通过输出CRC子块寄存器寄存,砍断时序路径,而后通过异或模块3把输出CRC子块寄存器的CRC值及数据块的CRC值异或相加处理,最后将所得数据通过输出寄存器输出CRC。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610075572.5A CN105721107B (zh) | 2016-02-03 | 2016-02-03 | 一种分块计算crc以提高时钟频率的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610075572.5A CN105721107B (zh) | 2016-02-03 | 2016-02-03 | 一种分块计算crc以提高时钟频率的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105721107A CN105721107A (zh) | 2016-06-29 |
CN105721107B true CN105721107B (zh) | 2019-03-22 |
Family
ID=56155601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610075572.5A Active CN105721107B (zh) | 2016-02-03 | 2016-02-03 | 一种分块计算crc以提高时钟频率的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105721107B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656833A (zh) * | 2017-11-06 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种crc计算设备及计算方法 |
CN109787713B (zh) * | 2017-11-15 | 2020-10-09 | 华为技术有限公司 | 一种循环冗余校验crc计算方法和装置 |
CN113821370B (zh) * | 2021-01-22 | 2024-04-19 | 北京诺芮集成电路设计有限公司 | 一种用于数据传输错误校验的高速crc产生方法和装置 |
CN117220833B (zh) * | 2023-11-09 | 2024-01-26 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6327691B1 (en) * | 1999-02-12 | 2001-12-04 | Sony Corporation | System and method for computing and encoding error detection sequences |
CN101527615A (zh) * | 2009-04-07 | 2009-09-09 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
CN103199873A (zh) * | 2013-04-23 | 2013-07-10 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
CN103763064A (zh) * | 2014-01-26 | 2014-04-30 | 中国电子科技集团公司第五十八研究所 | 适用于超高速通讯系统的循环冗余校验码生成方法与电路 |
-
2016
- 2016-02-03 CN CN201610075572.5A patent/CN105721107B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6327691B1 (en) * | 1999-02-12 | 2001-12-04 | Sony Corporation | System and method for computing and encoding error detection sequences |
CN101527615A (zh) * | 2009-04-07 | 2009-09-09 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
CN103199873A (zh) * | 2013-04-23 | 2013-07-10 | 常熟理工学院 | 两级分块crc运算的快速配置方法 |
CN103763064A (zh) * | 2014-01-26 | 2014-04-30 | 中国电子科技集团公司第五十八研究所 | 适用于超高速通讯系统的循环冗余校验码生成方法与电路 |
Non-Patent Citations (1)
Title |
---|
一种高速嵌套CRC码的生成方法及其FPGA实现;段斌斌 等;《计算机科学》;20140930;第41卷(第9期);正文第2,3节,图1-3 |
Also Published As
Publication number | Publication date |
---|---|
CN105721107A (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105721107B (zh) | 一种分块计算crc以提高时钟频率的装置和方法 | |
CN102546089B (zh) | 循环冗余校验crc码的实现方法及装置 | |
CN105119694B (zh) | 一种计算高速网络中crc值的方法及系统 | |
CN103731239A (zh) | 一种适用于向量处理器的通用crc并行计算部件及方法 | |
CN105322973A (zh) | 一种rs码编码器及编码方法 | |
CN108282265A (zh) | 纠错编码方法、装置、设备及计算机可读存储介质 | |
Li et al. | A parallel and reconfigurable united architecture for Fibonacci and Galois LFSR | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
CN103297196B (zh) | 一种非整字节数据的循环冗余校验方法 | |
CN102195743B (zh) | 动态实时喷泉码编码方案 | |
CN102130744B (zh) | 计算循环冗余校验码的方法和装置 | |
Ueno et al. | Virtual circuit-switching network with flexible topology for high-performance fpga cluster | |
CN205142235U (zh) | 一种并行加扰装置 | |
CN103780250A (zh) | 用于高速收发器中改变数据位宽的变速箱电路及其工作方法 | |
CN103763064A (zh) | 适用于超高速通讯系统的循环冗余校验码生成方法与电路 | |
CN103546169A (zh) | Fpga中实现3/4速率(2,1,7)卷积编码的方法 | |
CN103260154B (zh) | 一种基于128-eia3的完整性保护增强方法 | |
CN102902510A (zh) | 一种有限域求逆器 | |
CN101908943B (zh) | 一种应用于td-scdma系统的信道解码方法 | |
Jafarpour et al. | Grain and Trivium ciphers implementation algorithm in FPGA chip and AVR micro controller | |
CN105099466A (zh) | 一种用于128位并行数据的crc校验矩阵生成方法 | |
CN100461658C (zh) | 宽带码分多址接入系统速率匹配参数优化方法 | |
Wadayama et al. | Bounds on the Asymptotic Rate for Capacitive Crosstalk Avoidance Codes for On-Chip Buses | |
CN114443347B (zh) | 一种可配置crc码计算方法 | |
CN104219043A (zh) | 一种可预置和重构的密钥装置及运行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |