CN109462458A - 一种多级流水电路实现并行crc的方法 - Google Patents
一种多级流水电路实现并行crc的方法 Download PDFInfo
- Publication number
- CN109462458A CN109462458A CN201910028840.1A CN201910028840A CN109462458A CN 109462458 A CN109462458 A CN 109462458A CN 201910028840 A CN201910028840 A CN 201910028840A CN 109462458 A CN109462458 A CN 109462458A
- Authority
- CN
- China
- Prior art keywords
- byte
- crc32
- result
- clock cycle
- crc
- 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.)
- Granted
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/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
-
- 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/0045—Arrangements at the receiver end
- H04L1/0052—Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
一种多级流水电路实现并行CRC的方法,将每一个时钟周期输入的16字节数据拆分为第一个8字节与第二个8字节数据块;每一个时钟周期的第一个8字节和第二个8字节分别使用CRC32模块计算8字节的CRC32结果;8字节移位计算模块将第一个8字节CRC32模块的计算结果进行64次迭代移位;迭代移位64次的结果与直接8字节CRC32计算进行异或操作,得到第一个时钟周期16个字节的CRC32结果;16字节移位计算模块将第一个时钟周期16个字节的CRC32结果进行128次迭代移位,每一个时钟周期16字节的CRC32结果与上一个时钟周期16字节的CRC32结果经过128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。去掉了LFSR的反馈环路,从而可以插入多级流水,增大系统数据吞吐率。
Description
技术领域
本发明涉及电子信息技术领域,具体为一种多级流水电路实现并行CRC的方法。
背景技术
目前CRC算法已广泛应用于通信领域,作为数据保护的一种方式。CRC算法在硬件电路上一般通过LFSR来实现,有串行和并行两种方法,但LFSR在电路结构上都存在一个反馈环路,无法通过插入多级流水线以提高运行频率,尤其当使用并行方式实现CRC算法,且数据位宽较大时,组合逻辑可达到30级以上,由于无法插入流水线分割组合逻辑,因此电路运行频率不能有效提高。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种多级流水电路实现并行CRC的方法,具备可以插入多级流水分割组合逻辑,提高电路运行频率,达到增大系统吞吐率的目标等优点,解决了现有使用LFSR电路实现CRC算法无法插入多级流水从而无法提高电路运行频率的问题。
(二)技术方案
为实现上述可以插入多级流水分割组合逻辑,提高电路运行频率,达到增大系统吞吐率的目标等目的,本发明提供如下技术方案:一种多级流水电路实现并行CRC的方法,包括以下步骤:
S1、将每一个时钟周期输入的16字节数据拆分为第一个8字节与第二个8字节数据块;
S2、每一个时钟周期的第一个8字节和第二个8字节分别使用CRC32模块计算8字节的CRC32结果;
S3、8字节移位计算模块将第一个8字节CRC32模块的计算结果进行64次迭代移位;
S4、迭代移位64次的结果与直接8字节CRC32计算进行异或操作,得到第一个时钟周期16个字节的CRC32结果;
S5、16字节移位计算模块将第一个时钟周期16个字节的CRC32结果进行128次迭代移位;
S6、每一个时钟周期16字节的CRC32结果与上一个时钟周期16字节的CRC32结果经过128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。
本发明还包括以下模块:
1)CRC初值选择器;根据当前输入数据是否为第一个8字节,选择CRC初始值为32'hFFFF_FFFF或者32'h0000_0000;
2)8字节CRC32计算模块;用于计算8字节数据的CRC32结果;
3)8字节移位迭代模块;将8字节CRC32计算结果进行64次迭代移位;
4)16字节迭代移位计算模块;将16字节CRC32计算结果进行128次迭代移位;
5)三输入异或门;将三个CRC32结果进行异或操作。
所述CRC初值选择器和8字节CRC32计算模块电连接,8字节CRC32计算模块通过D型触发器与8字节移位迭代模块电连接,所述8字节CRC32计算模块与D型触发器电连接,并且D型触发器和8字节移位迭代模块均与三输入异或门电连接,所述三输入异或门还与16字节迭代移位计算模块和D型触发器循环电连接。
(三)有益效果
与现有技术相比,本发明提供了一种多级流水电路实现并行CRC的方法,具备以下有益效果:该多级流水电路实现并行CRC的方法,去掉了LFSR的反馈环路,从而可以插入多级流水,提高电路运行频率,增大系统数据吞吐率。
附图说明
图1为本发明LFSR电路框图;
图2为本发明一般数据块拆分示意图;
图3为本发明第i个时钟周期的16字节数据拆分示意图;
图4为本发明第i个时钟周期和第i+1个时钟周期的32字节数据拆分示意图;
图5为本发明电路实现框图。
图中:1-反馈系数,2-CRC状态寄存器,3、4-异或门,5-原始数据块M(x),6-拆分小数据块M1(x),7-拆分小数据块M2(x),8-拆分小数据块M3(x),9-拆分小数据块Mm(x),10-原始16字节数据块,11、12、14、15-拆分后的小数据块,13-原始32字节数据块,16-CRC初值选择器,17-8字节CRC32计算模块,18、21、23-D型触发器,19-8字节移位迭代模块,20-8字节CRC32计算模块,22-16字节迭代移位计算模块,24-三输入异或门。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种多级流水电路实现并行CRC的方法,包括以下步骤:
S1、将每一个时钟周期输入的16字节数据拆分为第一个8字节与第二个8字节数据块;
S2、每一个时钟周期的第一个8字节和第二个8字节分别使用CRC32模块计算8字节的CRC32结果;
S3、8字节移位计算模块将第一个8字节CRC32模块的计算结果进行64次迭代移位;
S4、迭代移位64次的结果与直接8字节CRC32计算进行异或操作,得到第一个时钟周期16个字节的CRC32结果;
S5、16字节移位计算模块将第一个时钟周期16个字节的CRC32结果进行128次迭代移位;
S6、每一个时钟周期16字节的CRC32结果与上一个时钟周期16字节的CRC32结果经过128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。
本发明还包括以下模块:
1)CRC初值选择器;根据当前输入数据是否为第一个8字节,选择CRC初始值为32'hFFFF_FFFF或者32'h0000_0000(如图5中的16所示);
2)8字节CRC32计算模块;用于计算8字节数据的CRC32结果(如图5中的20所示);
3)8字节移位迭代模块;将8字节CRC32计算结果进行64次迭代移位(如图5中的19所示);
4)16字节迭代移位计算模块;将16字节CRC32计算结果进行128次迭代移位(如图5中的22所示);
5)三输入异或门;将三个CRC32结果进行异或操作(如图5中的24所示)。
上述CRC初值选择器和8字节CRC32计算模块电连接,8字节CRC32计算模块通过D型触发器与8字节移位迭代模块电连接,上述8字节CRC32计算模块与D型触发器电连接,并且D型触发器和8字节移位迭代模块均与三输入异或门电连接,上述三输入异或门还与16字节迭代移位计算模块和D型触发器循环电连接,可以插入多级流水分割组合逻辑,提高电路运行频率,达到增大系统吞吐率的目标。
实施例:
实现CRC算法的LFSR电路如图1所示,CRC计算结果存在DFF中,每一个时钟到来时,电路移位一次,最高位移出电路,且最高位和输入的数据异或操作后反馈到电路中,进行下一次计算;CRC算法多项式决定图中Gk、Gk-1…G1的值,当Gn的值为1时,反馈值进入电路中,否则反馈值不进入电路中。
以向量Ci和Ci+1分别表示i时刻和i+1时刻LFSR电路的状态,即各个DFF的值,Di表示i时刻的输入数据,矩阵H表示移位反馈的系数,向量L表示数据反馈的系数,则LFSR电路的状态可以表示为:
Ci+1=H·Ci+L·Di+1 (式1)
上述串行方式每次移入1bit数据,计算速度很慢,为了加快计算速度,可以使用迭代的方式实现并行数据的计算;以8bit数据为例,一个时钟周期输入8bit的并行数据,可以看成是8bit数据进行了8次移位操作,即将上述公式迭代计算8次,过程如下:
Ci+8=H·Ci+7+L·Di+8=H·(H·Ci+6+L·Di+7)+L·Di+8=…=H8·Ci+∑H8-nL·Di+n(n表示1~8) (式2)
从上述公式可以看到,矩阵H、向量L、i时刻的电路状态Ci以及数据Di+n均为已知值,因此可以在一个时钟周期将并行8bit输入数据的CRC结果计算出来。
CRC算法是线性运算,所以根据GF(2)的特性,有如下等价表达式:
CRC(A+B)=CRC(A)+CRC(B) (式3)
其中A和B分别表示需要计算的数据块。
考虑如图2所示的数据块M(x),总共m*n个字节,将M(x)分为m个n字节大小的小数据块的集合,有如下等价表达式:
M(x)=M1(x)+M2(x)+M3(x)+…+Mm(x) (式4)
M1(x)、M2(x) …Mm(x)的描述如图2所示,均为一个n字节的数据块后带了若干个'0'值。
根据式3所示,对于数据块M(x),有如下等价表达式:
CRC(M(x))=CRC(M1(x))+CRC(M2(x))+CRC(M3(x))+…+CRC(Mm(x)) (式5)
从上述表达式中可以看到,要计算一个大的数据块的CRC结果,可以先将大的数据块分为若干个小的数据块,分别计算这些小的数据块的CRC,最后将小的数据块的CRC结果进行异或操作,即可以得到大的数据块M(x)的CRC结果。
小数据块Mn(x)由n个字节的有效数据和若干个0组成,首先计算出n个字节有效数据的CRC结果,由于后面的数据输入全部为0,根据式2,有如下公式:
Ci+p=Hp·Ci (式6)
其中Ci表示n个字节有效数据的CRC结果,Ci+p表示整个小数据块Mn(x)的计算结果,H表示反馈系数矩阵,p表示n个字节有效数据后面附带的0的个数。只要提前计算出Hp的值,则根据n个字节有效数据的CRC结果就可以知道整个小数据块Mn(x)的CRC结果。
以每一个时钟周期输入16字节数据为例,首先将16字节数据拆分为两个8字节数据块,其中按照具体协议规定需要先进行CRC计算的8字节数据块后面再添加8字节的全0数据,如图3所示;分别单独计算两个8字节数据块的CRC结果,后面添0的数据块还需要将其8字节数据的CRC结果与H64相乘,最后将这两个数据块的CRC结果进行异或,即可得到此时钟周期16个字节的CRC运算结果。
同样地,将前后2个时钟周期的32字节数据看成是2个16字节数据块组成,其中前一个时钟周期的16字节数据块后面再添加16字节的全0数据,如图4所示;分别单独计算两个16字节数据块的CRC结果,后面添0的数据块还需要将其16字节数据的CRC结果与H128相乘,最后将这两个数据块的CRC结果进行异或,即可得到前后两个时钟周期32个字节的CRC运算结果。
重复上述过程,每输入一个时钟周期的数据,均可以将前一个时钟周期计算得到的CRC结果与H128相乘,再计算本次时钟周期输入数据的CRC结果,将上述两个结果异或,即可得到当前所有输入数据的CRC结果。
如图5所示为实际的电路结构图,8BYTE CRC_CAL模块为纯组合逻辑电路,用于计算8字节数据输入的CRC32结果;CRC初始值在计算第一个8字节数据时为32'hFFFF_FFFF,其它时候的初始值均为32'h0000_0000。
8BYTE Shift_CAL将8BYTE CRC_CAL的结果与H64相乘,等同于计算8字节数据后面附加64bit 0的CRC结果。每一个时钟周期的16个字节数据中,前8个字节的数据经过8BYTECRC_CAL模块计算得到CRC结果后,需要将CRC结果送入8BYTE Shift_CAL模块,而后8个字节的数据则仅需要经过8BYTE CRC_CAL模块计算得到CRC结果,之后这两个结果进行异或操作。每一个时钟周期的CRC结果经过DFF后,会送入16BYTE Shift_CAL模块,16BYTE Shift_CAL将每一个时钟周期的CRC结果与H128相乘,等同于计算16字节数据后面附加128bit 0的CRC结果。前后两个时钟周期的CRC结果进行异或操作,即能得到当前时钟周期的CRC结果,最终得到整个数据块的CRC结果。
从如图5所示的电路结构来看,不存在LFSR电路的反馈环路,因此可以在电路中插入多级流水以提高电路运行频率。本专利所描述的电路将16字节数据拆分为两个8字节数据单独进行计算,减少了组合逻辑层数,可以一定程度提高电路运行频率。当电路运行频率需要再次提高时,还可以将16字节数据拆分为四个4字节数据块进行计算,进一步减少组合逻辑层数。
综上所述,该多级流水电路实现并行CRC的方法,去掉了LFSR的反馈环路,从而可以插入多级流水,提高电路运行频率,增大系统数据吞吐率。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (2)
1.一种多级流水电路实现并行CRC的方法,其特征在于,包括以下步骤:
S1、将每一个时钟周期输入的16字节数据拆分为第一个8字节与第二个8字节数据块;
S2、每一个时钟周期的第一个8字节和第二个8字节分别使用CRC32模块计算8字节的CRC32结果;
S3、8字节移位计算模块将第一个8字节CRC32模块的计算结果进行64次迭代移位;
S4、迭代移位64次的结果与直接8字节CRC32计算进行异或操作,得到第一个时钟周期16个字节的CRC32结果;
S5、16字节移位计算模块将第一个时钟周期16个字节的CRC32结果进行128次迭代移位;
S6、每一个时钟周期16字节的CRC32结果与上一个时钟周期16字节的CRC32结果经过128次迭代移位之后的结果进行异或操作,得到当前时钟周期最终的CRC32结果。
2.根据权利要求1所述的一种多级流水电路实现并行CRC的方法,其特征在于,还包括以下模块:
1)CRC初值选择器;
2)8字节CRC32计算模块;
3)8字节移位迭代模块;
4)16字节迭代移位计算模块;
5)三输入异或门;
所述CRC初值选择器和8字节CRC32计算模块电连接,8字节CRC32计算模块通过D型触发器与8字节移位迭代模块电连接,所述8字节CRC32计算模块与D型触发器电连接,并且D型触发器和8字节移位迭代模块均与三输入异或门电连接,所述三输入异或门还与16字节迭代移位计算模块和D型触发器循环电连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910028840.1A CN109462458B (zh) | 2019-01-11 | 2019-01-11 | 一种多级流水电路实现并行crc的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910028840.1A CN109462458B (zh) | 2019-01-11 | 2019-01-11 | 一种多级流水电路实现并行crc的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109462458A true CN109462458A (zh) | 2019-03-12 |
CN109462458B CN109462458B (zh) | 2021-04-16 |
Family
ID=65616210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910028840.1A Active CN109462458B (zh) | 2019-01-11 | 2019-01-11 | 一种多级流水电路实现并行crc的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109462458B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117220833A (zh) * | 2023-11-09 | 2023-12-12 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1762103A (zh) * | 2003-03-28 | 2006-04-19 | 国际商业机器公司 | 用于可变宽度并行循环冗余校验计算的迭代电路和方法 |
CN201153259Y (zh) * | 2007-12-19 | 2008-11-19 | 深圳市同洲电子股份有限公司 | 并行数据循环冗余校验装置及双向数据传输系统 |
CN101527615A (zh) * | 2009-04-07 | 2009-09-09 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
CN102130744A (zh) * | 2011-03-25 | 2011-07-20 | 中兴通讯股份有限公司 | 计算循环冗余校验码的方法和装置 |
US8433974B2 (en) * | 2009-12-21 | 2013-04-30 | Fujitsu Limited | Cyclic redundancy check code generating circuit and cyclic redundancy check code generating method |
US20150280741A1 (en) * | 2014-04-01 | 2015-10-01 | Cisco Technology, Inc. | Calculating cyclic redundancy checks over overlapping windows of streaming data |
-
2019
- 2019-01-11 CN CN201910028840.1A patent/CN109462458B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1762103A (zh) * | 2003-03-28 | 2006-04-19 | 国际商业机器公司 | 用于可变宽度并行循环冗余校验计算的迭代电路和方法 |
CN201153259Y (zh) * | 2007-12-19 | 2008-11-19 | 深圳市同洲电子股份有限公司 | 并行数据循环冗余校验装置及双向数据传输系统 |
CN101527615A (zh) * | 2009-04-07 | 2009-09-09 | 华为技术有限公司 | 一种循环冗余校验crc码的实现方法和装置 |
US8433974B2 (en) * | 2009-12-21 | 2013-04-30 | Fujitsu Limited | Cyclic redundancy check code generating circuit and cyclic redundancy check code generating method |
CN102130744A (zh) * | 2011-03-25 | 2011-07-20 | 中兴通讯股份有限公司 | 计算循环冗余校验码的方法和装置 |
US20150280741A1 (en) * | 2014-04-01 | 2015-10-01 | Cisco Technology, Inc. | Calculating cyclic redundancy checks over overlapping windows of streaming data |
Non-Patent Citations (2)
Title |
---|
XIAOHUI WANG等: "The Research of Parallel CRC Pipeline Algorithm Based on Matrix Transformation", 《 2012 INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND SERVICE SYSTEM》 * |
徐守江: "基于FPGA的FOR循环并行CRC流水线算法", 《电脑知识与技术》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117220833A (zh) * | 2023-11-09 | 2023-12-12 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
CN117220833B (zh) * | 2023-11-09 | 2024-01-26 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109462458B (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ayinala et al. | High-speed parallel architectures for linear feedback shift registers | |
Alderson et al. | Computer generation of symbolic network functions-A new theory and implementation | |
Lee | A high-speed low-complexity Reed-Solomon decoder for optical communications | |
US20120030548A1 (en) | Method and device for implementing cyclic redundancy check codes | |
Hu et al. | High-speed parallel LFSR architectures based on improved state-space transformations | |
Lee et al. | Efficient design of low-complexity bit-parallel systolic Hankel multipliers to implement multiplication in normal and dual bases of GF (2 m) | |
Zhang et al. | Algebraic soft-decision decoder architectures for long Reed–Solomon codes | |
US7886210B2 (en) | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs | |
Zhu et al. | Backward interpolation architecture for algebraic soft-decision Reed–Solomon decoding | |
CN106603222A (zh) | 一种用于实现sm3杂凑算法的系统及sm3杂凑算法实现方法 | |
WO2023134130A1 (zh) | 伽罗华域乘法器及纠删编解码系统 | |
CN109462458A (zh) | 一种多级流水电路实现并行crc的方法 | |
CN107992283A (zh) | 一种基于降维实现有限域乘法的方法和装置 | |
Xie et al. | Novel bit-parallel and digit-serial systolic finite field multipliers over $ GF (2^ m) $ based on reordered normal basis | |
CN101783688A (zh) | 一种64位并行多模式crc码生成电路的设计方法 | |
CN106301761B (zh) | 一种基于密码杂凑算法的压缩方法及装置 | |
Kennedy et al. | Generalized parallel CRC computation on FPGA | |
Liu et al. | Efficient digit-serial KA-based multiplier over binary extension fields using block recombination approach | |
Lee et al. | Efficient $ M $-ary exponentiation over $ GF (2^{m}) $ using subquadratic KA-based three-operand Montgomery multiplier | |
CN105306075A (zh) | 一种三值fprm电路功耗最佳极性搜索方法 | |
US11303281B2 (en) | Efficient pipelined architecture for superconducting single flux quantum logic circuits utilizing dual clocks | |
CN1842964B (zh) | 高频分频器状态纠正 | |
Kennedy et al. | High-speed CRC computations using improved state-space transformations | |
CN105468330A (zh) | 一种基于条件进位选择原理的16位加法器 | |
Park et al. | An ultra high-speed time-multiplexing Reed-Solomon-based FEC architecture |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |