CN115001508A - 一种crc并行计算方法 - Google Patents
一种crc并行计算方法 Download PDFInfo
- Publication number
- CN115001508A CN115001508A CN202210599566.5A CN202210599566A CN115001508A CN 115001508 A CN115001508 A CN 115001508A CN 202210599566 A CN202210599566 A CN 202210599566A CN 115001508 A CN115001508 A CN 115001508A
- Authority
- CN
- China
- Prior art keywords
- crc
- state
- register
- data
- matrix
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及一种CRC并行计算方法,属于数据处理领域。本发明在报文起始word和结束word的非报文字节填充0;将256bit输入数据分为8个lane,每个lane包含32bit;使用LFSR电路进行状态寄存器的递推,得到8个状态寄存器,将状态寄存器进行异或操作后得到合并后状态寄存器,对该合并后状态寄存器的值进行状态回滚,回滚后的状态寄存器即为最终的CRC校验值。本发明通过对状态转移矩阵的拆分降低了CRC状态寄存器关联逻辑的复杂度,提升了电路时序特性;本发明通过状态回滚逻辑消除了大位宽并行时报文尾部冗余0对状态寄存器的影响。
Description
技术领域
本发明属于数据处理领域,具体涉及一种CRC并行计算方法。
背景技术
CRC(cyclic redundancy check)循环冗余校验,是一种常用的数据检错纠错码。其基本编码原理如下。
假设待编码数据为W=[w0,w1,w2,w3....wk-1],共kbit。CRC生成多项式为 G=[g0,g1,g2...gr-1],共rbit。
本文bit位序遵循以太网顺序,即,w0首先传输,在后续推导和计算中对应最高优先级。因此在GF(2)域中W=w(0)xk-1+w(1)xk-2+w(2)xk-3+...+ w(k-1)x0合并后W可表示为
CRC校验在GF(2)域可表示为如下公式:
R(x)=M(x)xrmodG(x) 公式1
校验码R(x)为信息M(x)补r个0后在GF(2)域中对G(x)取模的结果,最终发送的信息为S(x)=M(x)xr+R(x),在接收端通过计算S(x)modG(x)是否为全0 即可实现错误发现。另外若原始信息长度k为固定值,通过检验S(x)mod G(x) 同样可实现纠错功能。具体纠错能力与生成多项式k长度等相关。
以上可知CRC计算本质上是在GF(2)域求模(除法),在电路层面除法可以通过LFSR进行等效,其电路结构如图1:
以上电路可以实现串行CRC计算,在数据W逐bit移入LFSR后再移入rbit0此时R[0,1,2..r-1]中的数据即为最终的校验码R(x)系数。此电路结构简单,在速度要求比较低的场景下有广泛的应用。
适应不同的应用场景,CRC有多种实现方案。
1.串行法
串行法直接运用CRC定义,逐bit获取输入数据并根据bit值和当前余数值计算GF(2)域的余数直至全部数据参与计算。串行法易于理解,电路简单在低速场合使用较多。但逐bit的计算模式效率较低,无法满足高速计算场合。
2.查表法
查表法利用预先计算的表项可以一次处理多个输入bit,但表项规模为每次处理bit数的幂次规模,如:256规模的表项一次可处理8bit数据、56636规模的表项一次可处理16bit数据。随着处理性能的提高,表项规模会指数级升高。通常此方法采用256规模表项,即每次处理8bit数据。在计算速度要求过高的场合亦不适用。
3.直接并行法
在基于FPGA或ASIC的设计中可以直接以电路逻辑计算替代中的表项存储,实现更大规模的并行。但随着并行规模的增加导致的逻辑复杂度的增加大大限制了电路时钟频率的上限,通常在FPGA中64bit以上的并行计算将面临较大的时序挑战。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种CRC并行计算方法,以解决CRC 的串行法无法满足高速计算场合,查表法在计算速度要求过高的场合亦不适用,直接并行法在并行计算面临较大的时序挑战的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种CRC并行计算方法,该方法包括:
输入多个word,每个word为256bit数据,将256bit输入数据分为8个lane,每个lane包含32bit,标记为
Dl0[31..0]=W[31..0]
Dl1[31..0]=W[63..32]
Dl2[31..0]=W[95..64]
Dl3[31..0]=W[127..96]
Dl4[31..0]=W[159..128]
Dl5[31..0]=W[191..160]
Dl6[31..0]=W[223..192]
Dl7[31..0]=W[255..224]
各个lane的状态寄存器的递推公式为:
其中,E(r-1)为r-1阶单位矩阵,g为多项式系数;
在最后一个word计算完成后,得到8个状态寄存器,将状态寄存器进行异或操作后得到合并后状态寄存器;该合并后状态寄存器的值即为对应输入数据的CRC值。
进一步地,各个lane状态寄存器各个bit最大关联数不超过64。
进一步地,在计算多项式为CRC32时最大关联数为42。
进一步地,状态寄存器的异或操作对应GF2域加法。
进一步地,输入数据为以太网网络报文。
进一步地,在将256bit输入数据分为8个lane之前,还包括:在报文起始word和结束word的非报文字节填充0,并记录结束word填充的0的数量p。
进一步地,将状态寄存器进行异或操作后得到合并后状态寄存器之后还包括:合并后状态寄存器的值为尾部补0的数据对应的CRC值,根据结束word 填充的0的数量p通过公式7进行状态回滚,回滚后的状态寄存器即为最终的 CRC校验值;
其中,
进一步地,状态回滚电路只与状态寄存器相关,其最大关联数为32 (三)有益效果
本发明提出一种CRC并行计算方法,本发明通过对状态转移矩阵的拆分降低了CRC状态寄存器关联逻辑的复杂度,提升了电路时序特性;本发明通过状态回滚逻辑消除了大位宽并行时报文尾部冗余0对状态寄存器的影响。通过作者在xilinx Kintex7325t-2芯片上验证,位宽为256bit的数据流时钟频率可达到250Mhz,数据吞吐量达64Gbps;在xilinxvu13p-2芯片时钟频率达400Mhz,数据吞吐量达100Gbps。
附图说明
图1为LFSR电路示意图;
图2为本发明的网络报文流式接口数据示意图;
图3为本发明的256bit输入数据处理示意图;
图4为本发明的原始数据被分割为8份数据示意图;
图5为本发明的整体处理流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明基于模运算的结合律对传统的并行CRC方案进行拆解,以降低逻辑复杂度,改善电路时序。
本发明的原理如下:
本发明方案依赖于并行CRC计算的矩阵表示,简要地罗列如下:
状态递推
将R看做电路状态,则下一时刻的状态仅仅取决于电路当前的状态以及当前输入的数据,分析电路可知
公式中各个变量为矩阵形,具体形式如下:
W[n]为标量,表示第n个输入bit
多级递推
递推t拍后可得:
上式可进一步将输入数据W写为矩阵形式如下
状态回滚
通过计算可知
基于以上数学基础有如下实现方案。
本文主要针对网络报文流式接口进行实时CRC计算。在高速网络接口中,接口数据位宽通常可达数百bit,时钟速率数百Mhz。本文以256bit数据接口为例进行分析,其他位宽接口的分析和计算类似。其中网络报文流式接口数据如图2:
具体实施步骤如下:
步骤是S1:输入报文填充
1个word为256bit,由于以太网等网络的网络报文长度为整数个byte数据,但byte数量不确定,故其起始位置和结束位置在256bit word中存在256/8=32种可能,为了计算方便我们在报文起始word和结束word的非报文字节填充0,并记录结束 word填充的0的数量p。填充0的目标是256bit对齐。根据CRC算法的原理,在起始字节之前填充的0不影响计算结果;在结束字节之后填充的0会推动CRC寄存器继续转动,从而影响最终计算值,但我们可以利用上文提到的状态回滚矩阵回滚CRC寄存器值,消除后续填充0的影响。如图2.
步骤S2:报文拆分与子状态迭代计算
由于CRC运算本质上为GF(2)域的取模运算,根据加法结合律,参与CRC 运算的数据可以进行加性拆分,每份拆分数据分别计算CRC后得到的状态寄存器进行求和即可得到原始数据的CRC值。
通过合理的拆分可以减少状态寄存器在逐拍递推时的关联数据数量,从而减少逻辑复杂度,改善电路时序。
输入多个word,每个word为256bit数据,本发明将256bit输入数据分为8个lane每个lane包含32bit,如图3:
将输入数据按照lane进行分割,则原始数据被分割为8份数据如图4:
拆分后得到8个lane,每个lane 32bit数据标记为
Dl0[31..0]=W[31..0]
Dl1[31..0]=W[63..32]
Dl2[31..0]=W[95..64]
Dl3[31..0]=W[127..96]
Dl4[31..0]=W[159..128]
Dl5[31..0]=W[191..160]
Dl6[31..0]=W[223..192]
Dl7[31..0]=W[255..224]
上述数据代入公式5可得各个lane状态寄存器的递推公式
k为lane编号范围0..7,为r×r的状态转移矩阵,为r×1生成多项式系数矩阵,为r×1寄存器状态矩阵,r为CRC的阶数,n表示第n拍,Dlk[i]为第k个 lane的数据;表示M的z次幂,对于电路运算来书,表示移位z个bit的状态转移矩阵。
其中,E(r-1)为r-1阶单位矩阵,g为多项式系数;
由上式可见各个lane状态寄存器各个bit最大关联数不超过64(状态寄存器数 +lane宽度)。通过计算在多项式为802.3CRC32时最大关联数为42,与直接32bit 并行计算CRC的最大关联数34相当,相对256bit数据直接计算时的157有了极大的缩减。
表1不同位宽并行计算802.3CRC32关联数量
步骤S3:子状态合并与状态回滚
在最后一个word计算完成后,算法得到8个状态寄存器,将状态寄存器进行异或操作(GF2域加法)后得到合并后状态寄存器,该合并后状态寄存器的值即为对应输入数据的CRC值。
对于在结束字节之后填充的0的场合,该合并后状态寄存器的值为尾部补0 的数据对应的CRC值,需要根据结束word填充的0的数量p通过公式7进行状态回滚,回滚后的状态寄存器即为最终的CRC校验值。
其中,
状态回滚电路只与状态寄存器相关,其最大关联数为32。与计算状态寄存器的电路复杂度相当,在时序上不会成为关键路径。
本发明的整体处理流程如图5:
本发明通过对状态转移矩阵的拆分降低了CRC状态寄存器关联逻辑的复杂度,提升了电路时序特性;本发明通过状态回滚逻辑消除了大位宽并行时报文尾部冗余0对状态寄存器的影响。通过作者在xilinx Kintex7325t-2芯片上验证,位宽为256bit的数据流时钟频率可达到250Mhz,数据吞吐量达64Gbps;在xilinx vu13p-2芯片时钟频率达400Mhz,数据吞吐量达100Gbps。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种CRC并行计算方法,其特征在于,该方法包括:
输入多个word,每个word为256bit数据,将256bit输入数据分为8个lane,每个lane包含32bit,标记为
Dl0[31..0]=W[31..0]
Dl1[31..0]=W[63..32]
Dl2[31..0]=W[95..64]
Dl3[31..0]=W[127..96]
Dl4[31..0]=W[159..128]
Dl5[31..0]=W[191..160]
Dl6[31..0]=W[223..192]
Dl7[31..0]=W[255..224]
各个lane的状态寄存器的递推公式为:
其中,E(r-1)为r-1阶单位矩阵,g为多项式系数;
在最后一个word计算完成后,得到8个状态寄存器,将状态寄存器进行异或操作后得到合并后状态寄存器;该合并后状态寄存器的值即为对应输入数据的CRC值。
2.如权利要求1所述的CRC并行计算方法,其特征在于,各个lane状态寄存器各个bit最大关联数不超过64。
3.如权利要求1所述的CRC并行计算方法,其特征在于,在计算多项式为CRC32时最大关联数为42。
5.如权利要求1所述的所述的CRC并行计算方法,其特征在于,状态寄存器的异或操作对应GF2域加法。
6.如权利要求1-5任一项所述的所述的CRC并行计算方法,其特征在于,输入数据为以太网网络报文。
7.如权利要求6所述的所述的CRC并行计算方法,其特征在于,在将256bit输入数据分为8个lane之前,还包括:在报文起始word和结束word的非报文字节填充0,并记录结束word填充的0的数量p。
10.如权利要求8所述的所述的CRC并行计算方法,其特征在于,状态回滚电路只与状态寄存器相关,其最大关联数为32。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210599566.5A CN115001508A (zh) | 2022-05-30 | 2022-05-30 | 一种crc并行计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210599566.5A CN115001508A (zh) | 2022-05-30 | 2022-05-30 | 一种crc并行计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115001508A true CN115001508A (zh) | 2022-09-02 |
Family
ID=83028336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210599566.5A Pending CN115001508A (zh) | 2022-05-30 | 2022-05-30 | 一种crc并行计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115001508A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453261A (zh) * | 2023-11-10 | 2024-01-26 | 珠海科创储能科技有限公司 | 设备的升级数据校验方法、存储介质及电子设备 |
-
2022
- 2022-05-30 CN CN202210599566.5A patent/CN115001508A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453261A (zh) * | 2023-11-10 | 2024-01-26 | 珠海科创储能科技有限公司 | 设备的升级数据校验方法、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8468439B2 (en) | Speed-optimized computation of cyclic redundancy check codes | |
US8745472B2 (en) | Memory with segmented error correction codes | |
EP0609595B1 (en) | Method and apparatus for verifying CRC codes by combination of partial CRC codes | |
EP0767539B1 (en) | Highly parallel cyclic redundancy code generator | |
Lee | High-speed VLSI architecture for parallel Reed-Solomon decoder | |
US7971122B2 (en) | Method of computing partial CRCS | |
US6061826A (en) | Hardware-optimized reed-solomon decoder for large data blocks | |
US7590916B2 (en) | Cyclic redundancy checking value calculator | |
US5844923A (en) | Fast framing of nude ATM by header error check | |
US8001446B2 (en) | Pipelined cyclic redundancy check (CRC) | |
US7870466B2 (en) | Parallel cyclic code generation device and parallel cyclic code error detection device | |
US20050149818A1 (en) | High performance CRC calculation method and system with a matrix transformation strategy | |
JPH0856165A (ja) | 誤り検査符号及び訂正符号の計算方法および装置 | |
JP2010507290A (ja) | 一組の多項式を用いたメッセージ剰余の決定 | |
US6701478B1 (en) | System and method to generate a CRC (cyclic redundancy check) value using a plurality of CRC generators operating in parallel | |
WO2018090860A1 (en) | Cyclic redundancy check calculation for multiple blocks of a message | |
US20120173952A1 (en) | Parallel crc computation with data enables | |
JP2010068429A (ja) | 巡回符号演算処理回路 | |
Sun et al. | A table-based algorithm for pipelined CRC calculation | |
US7886210B2 (en) | Apparatus for pipelined cyclic redundancy check circuit with multiple intermediate outputs | |
WO2012174933A1 (zh) | Rs编码器的编码方法及rs编码器 | |
CN115001508A (zh) | 一种crc并行计算方法 | |
US6848072B1 (en) | Network processor having cyclic redundancy check implemented in hardware | |
EP0262944A2 (en) | Error correction apparatus | |
JP4515651B2 (ja) | 巡回冗長検査演算方法及び巡回冗長検査演算回路 |
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 |