CN114679239B - 一种高速网络中crc分段计算方法及装置 - Google Patents
一种高速网络中crc分段计算方法及装置 Download PDFInfo
- Publication number
- CN114679239B CN114679239B CN202210365156.4A CN202210365156A CN114679239B CN 114679239 B CN114679239 B CN 114679239B CN 202210365156 A CN202210365156 A CN 202210365156A CN 114679239 B CN114679239 B CN 114679239B
- Authority
- CN
- China
- Prior art keywords
- crc
- data
- data block
- value
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 176
- 230000011218 segmentation Effects 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000000638 solvent extraction Methods 0.000 claims abstract description 11
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000001502 supplementing effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013215 result calculation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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)
- Detection And Prevention Of Errors In Transmission (AREA)
- Error Detection And Correction (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明涉及一种高速网络中CRC分段计算方法及装置,其中方法包括:将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;计算每一笔待计算数据块CRC值;采用前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值。本发明能够快速且实时地计算出大规模数据包的CRC值,以满足高速网络的带宽要求。
Description
技术领域
本发明属于通信技术领域,具体涉及一种高速网络中CRC分段计算方法及装置。
背景技术
在通信***的传输过程中,由于传输信道会受到诸多的外界干扰,导致数据接收端接收到的数据存在差错,也就是误码。为了降低误码率,保证数据传输正确性,会对数据进行错误校验。CRC(Cyclic Redundancy Check),即循环纠错校验码,是数据通信领域中常用的校验纠错码。在通信***中,例如以太网数据包的FCS(Frame Check Sequence)字段,即采用CRC来对传输的数据包进行错误校验。
CRC通过对数据进行多项式计算,并将得到的结果附在原始数据后面,数据接收方通过类似的算法,来检测所传输的数据是否存在错误。使用CRC进行错误检测时,信息字段和校验字段的长度可以任意给定。
CRC计算在一个时钟周期内只能处理一定长度的数据,那么对于大规模、大位宽的数据,需要多步计算得到CRC值,不能实时给出结果,计算效率较低。
在上面提到的以太网数据包的错误校验,在协议中使用CRC-32的校验算法,来得到FCS域。在速率较低的通信网络中,例如在10Gbps以太网中,只需要对位宽为128bit的数据进行CRC值计算,现有CRC计算方法能够较快给出CRC结果。但在高速网络中,如400Gbps以太网,需要对位宽为1024bit的数据进行CRC值计算,并实时给出结果。较高的数据传输速率要求和大规模数据的CRC计算需求,现有的CRC值计算方法效率太低,已经无法满足高速网络中实时计算出当前数据的CRC值的要求。。
发明内容
鉴于上述的分析,本发明旨在公开了一种高速网络中CRC分段计算方法及装置,解决大规模数据的CRC实时计算问题。
本发明公开了一种高速网络中CRC分段计算方法,包括:
将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;
计算每一笔待计算数据块CRC值;采用前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;
在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值。
进一步地,将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块时,按照N个CRC计算单元的位宽之和的数据长度Y进行分块。
进一步地,每一笔待计算数据块CRC值计算过程包括:
判断当前笔数据块长度X是否等于数据长度Y;是,则直接转入下一步骤;否,则进行补零操作后得到数据长度Y的数据,转入下一步骤;
进行数据切分和编号;按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对每个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
采用N个CRC计算单元,对N个数据段进行并行CRC计算,得到N个CRC结果;
将得到的N个CRC结果进行异或运算,合并得到当前笔数据块的CRC终值。
进一步地,每一笔待计算数据块CRC值计算过程包括:
判断当前笔数据块长度X是否能整除CRC计算单元的位宽L;是,则将当前笔数据块作为第一数据块转入下一步骤;否,则按位宽L的整数倍将当前笔数据拆分成两个数据块,第一数据块为拆分后长度为位宽L整数倍的数据,第二数据块为拆分后的余数部分;
判断转入的第一数据块长度是否等于数据长度Y;是,则直接转入下一步骤;否,则进行补零操作后得到数据长度Y的数据,转入下一步骤;
进行数据切分和编号;按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
采用N个CRC计算单元,对N段数据段进行并行CRC计算,得到N个CRC结果;
将得到的N个CRC结果进行异或运算,合并得到第一数据块的CRC终值;
判断当前笔数据块的计算中是否具有未计算CRC结果的第二数据块;否,则将第一数据块的CRC终值,作为当前笔数据块的CRC终值后,进入下一笔数据块CRC值计算;是,则转入下一步骤;
将第二数据块高位补零,使第二数据块的长度与第一数据块的CRC终值长度相同,将补零后的第二数据块与第一数据块的CRC终值进行异或;
采用1个余数部分CRC计算单元,对异或结果进行CRC计算,得到CRC结果作为当前笔数据块的CRC终值后,进入下一笔数据块CRC值计算。
进一步地,所述补零操作为高位补零操作。
进一步地,N个CRC计算单元中,每个CRC计算单元不是完全一致的,存在和数据段Di编号相关的处理信息,用于接收和处理对应的数据段数据;余数部分CRC计算单元与数据段D1对应的CRC计算单元一致。
本发明还公开了一种高速网络中CRC分段计算装置,包括:
第一分块单元,用于将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;
CRC分段计算单元,用于计算每一笔待计算数据块CRC值;前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;
在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值。
进一步地,所述CRC分段计算单元包括:
数据移位补零单元,用于判断当前笔数据块长度X是否等于数据长度Y;是,则直接将待计算数据块传给第二分块单元;否,则进行补零操作后得到数据长度Y的数据,传给第二分块单元;
第二分块单元,用于进行数据切分和编号,按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
CRC初始值异或单元,用于将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
N个CRC计算单元,用于分别对N个数据段进行并行CRC计算,得到N个CRC结果;
CRC值合并单元,用于将得到的N个CRC结果进行异或运算,合并得到当前笔数据块的CRC终值。
进一步地,所述CRC分段计算单元包括:
数据拆分单元,用于判断当前笔数据块长度X是否能整除CRC计算单元的位宽L;是,则将当前笔数据块作为第一数据块转入下一步骤;否,则按位宽L的整数倍将当前笔数据拆分成两个数据块,第一数据块为拆分后长度为位宽L整数倍的数据,第二数据块为拆分后的余数部分;
数据移位补零单元,用于判断第一数据块长度是否等于数据长度Y;是,则直接将待计算数据块传给第二分块单元;否,则进行补零操作后得到数据长度Y的数据,传给第二分块单元;
第二分块单元,用于进行数据切分和编号,按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
CRC初始值异或单元,用于将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
N个CRC计算单元,用于分别对N个数据段进行并行CRC计算,得到N个CRC结果;
CRC值合并单元,用于将得到的N个CRC结果进行异或运算,合并得到第一数据块的CRC终值;
第一CRC终值单元,用于判断当前笔数据块的计算中是否具有未计算CRC结果的第二数据块;否,则将第一数据块的CRC终值作为当前笔数据块的CRC终值;是,则将第一数据块的CRC终值输入到异或单元;
异或单元,用于将第二数据块高位补零,使第二数据块的长度与第一数据块的CRC终值长度相同,将补零后的第二数据块与第一数据块的CRC终值进行异或;
第二CRC终值单元,用于采用1个余数部分CRC计算单元,对异或结进行CRC计算,得到CRC结果最为当前笔数据块的CRC终值。
进一步地,补零操作为高位补零操作。
本发明至少可实现以下有益效果之一:
本发明的高速网络中CRC分段计算方法及装置,与现有CRC值计算方法相比,能够快速地计算得到大数据块的CRC值,满足高速网络上的数据传输要求。
本发明通过N个不同的CRC计算单元,在各个CRC计算单元中对计算数据段在整个待计算数据块的位置进行相对应处理,在后续进行CRC值合并中,不需要关注CRC值所对应的数据段位置,实施步骤更加简洁。
本发明将CRC值与下一笔计算数据段异或操作,放在数据移位、分块单元之后进行,减少了前一笔数据段的CRC终值计算完成到该终值给到下一笔数据进行CRC异或过程中所需要的组合逻辑步骤,进而避免了多次的异或操作带来的较大电路延迟而导致的时序紧张的问题。
本发明能够支持1bit到最大可计算长度范围内的任意长度数据块的CRC值计算,解决所需计算数据块长度不同时的多种计算情况。同时最大可计算长度可根据实际需求进行选择,灵活多变。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例中的高速网络中CRC分段计算方法流程图;
图2为本发明实施例中的每一笔待计算数据块CRC值计算流程图;
图3为本发明实施例中的每一笔待计算数据块CRC值计算流程图;
图4为本发明实施例中的高速网络中CRC分段计算装置组成连接示意图;
图5为本发明实施例中的高速网络中CRC分段计算装置组成连接示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。
本发明的一个实施例公开了一种高速网络中CRC分段计算方法,如图1所示,包括:
步骤S101、将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;对于进行分块的数据包数据为数据包的有效净荷数据。
步骤S102、计算每一笔待计算数据块CRC值;采用前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;
在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值。
具体的,将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块时,按照N个CRC计算单元的位宽之和的数据长度Y进行分块。
例如,在400Gbps以太网中,需要对一个长度为1500bytes(1byte为8bit)的数据包进行CRC计算得到FCS域,每次进行并行CRC计算的数据最大位宽为1024bit,则将数据包分块为M=9笔数据块,其中8笔1024bit和1笔736bit的数据块。在步骤S2中对着9笔数据分别进行CRC计算。
具体的,在步骤S2中的每一笔待计算数据块CRC值计算过程,如图2所示,包括:
步骤S201、判断当前笔数据块长度X是否等于数据长度Y;是,则直接转入下一步骤;否,则进行补零操作后得到数据长度Y的数据,转入下一步骤;
该方法可支持任意长度数据的CRC值计算,例如,在400Gbps以太网中,需要对一个长度为1500bytes(1byte为8bit)的数据包进行CRC计算得到FCS域,时通过数据包分块得到9笔数据块中有8笔1024bit和1笔736bit的数据块,数据块的长度并不相同,通过本步骤将任意长度数据都补充为相同长度的数据块,便于后续的统一处理。从而实现对任意长度数据块的处理。
优选的,所述补零操作为高位补零操作。即,将有效净荷数据移位到数据块的低位;在待计算数据块的高位补0。
步骤S202、进行数据切分和编号;按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
在本步骤中,通过切分使每个数据段的长度与CRC计算单元的位宽相同,并且通过编号,使每一个数据段的位置更加明确,便于后续CRC计算单元对数据段的调用和处理。
步骤S203、将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
所述当前笔数据块的CRC初值为前一笔数据块的CRC终值;通过该步骤处理,即实现了前一笔数据段的CRC终值计算完成到该终值给到下一笔数据进行CRC异或过程中所需要的组合逻辑步骤,同时,避免了在数据切分的移位分块之前进行时数据块的长度大,造成多次的异或操作带来的较大电路延迟而导致的时序紧张的问题。
由于,所述当前笔数据块的CRC初值为前一笔数据块的CRC终值;在进行第一笔数据块处理时,其CRC初值需要进行预先进行设置,在本实施例中,第一笔数据块的CRC初值的数值为全0、全F或预设的其他数值。
步骤S204、采用N个CRC计算单元,对N段数据段进行并行CRC计算,得到N个CRC结果;
优选的,N个CRC计算单元中,每个CRC计算单元不是完全一致的,存在和数据段Di编号相关的处理信息,用于接收和处理对应的数据段数据。
即,CRC计算单元1处理数据段D1中数据;CRC计算单元2处理数据段D2中数据;依次类推,CRC计算单元N处理数据段DN中数据;每个CRC计算单元存在和对应数据段编号相关的处理信息。
步骤S205、将得到的N个CRC结果进行异或运算,合并得到当前笔数据块的CRC终值。
所述当前笔数据块的CRC终值作为下一笔数据块的CRC初值,在步骤S203中进行下一笔数据块的异或操作。
本实施例通过N个不同的CRC计算单元,在各个CRC计算单元中对计算数据段在整个待计算数据块的位置进行相对应处理,在后续进行CRC值合并中,不需要关注CRC值所对应的数据段位置,实施步骤更加简洁。
本实施例还给出了另一种在步骤S2中的每一笔待计算数据块CRC值计算过程,如图3所示,包括:
步骤S301、判断当前笔数据块长度X是否能整除CRC计算单元的位宽L;是,则将当前笔数据块作为第一数据块转入下一步骤;否,则按位宽L的整数倍将当前笔数据拆分成两个数据块,第一数据块为拆分后长度为位宽L的整数倍的数据,第二数据块为拆分后的余数部分;
步骤S302、判断转入的第一数据块长度是否等于数据长度Y;是,则直接转入下一步骤;否,则进行补零操作后得到数据长度Y的数据,转入下一步骤;
优选的,所述补零操作为高位补零操作。即,将有效净荷数据移位到数据块的低位;在待计算数据块的高位补0。
步骤S303、进行数据切分和编号;按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
在本步骤中,通过切分使每个数据段的长度与CRC计算单元的位宽相同,并且通过编号,使每一个数据段的位置更加明确,便于后续CRC计算单元对数据段的调用和处理。
步骤S304、将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
所述当前笔数据块的CRC初值为前一笔数据块的CRC终值;通过该步骤处理,即实现了前一笔数据段的CRC终值计算完成到该终值给到下一笔数据进行CRC异或过程中所需要的组合逻辑步骤,同时,避免了在数据切分的移位分块之前进行时数据块的长度大,造成多次的异或操作带来的较大电路延迟而导致的时序紧张的问题。
由于,所述当前笔数据块的CRC初值为前一笔数据块的CRC终值;在进行第一笔数据块处理时,其CRC初值需要进行预先进行设置,在本实施例中,第一笔数据块的CRC初值的数值为全0、全F或预设的其他数值。
步骤S305、采用N个CRC计算单元,对N段数据段进行并行CRC计算,得到N个CRC结果;
优选的,N个CRC计算单元中,每个CRC计算单元不是完全一致的,存在和数据段Di编号相关的处理信息,用于接收和处理对应的数据段数据。
即,CRC计算单元1处理数据段D1中数据;CRC计算单元2处理数据段D2中数据;依次类推,CRC计算单元N处理数据段DN中数据;每个CRC计算单元存在和对应数据段编号相关的处理信息。
步骤S306、将得到的N个CRC结果进行异或运算,合并得到第一数据块的CRC终值。
步骤S307、判断当前笔数据块的计算中是否具有未计算CRC结果的第二数据块;否,则将第一数据块的CRC终值,作为当前笔数据块的CRC终值后,进入下一笔数据块CRC值计算;是,则转入下一步骤;
步骤S308、将第二数据块高位补零,使第二数据块的长度与第一数据块的CRC终值长度相同,将补零后的第二数据块与第一数据块的CRC终值进行异或;
步骤S309、采用1个余数部分CRC计算单元,对异或结果进行CRC计算,得到CRC结果作为当前笔数据块的CRC终值。
所述当前笔数据块的CRC终值作为下一笔数据块的CRC初值,在步骤S303中进行下一笔数据块的异或操作。
具体的,N个CRC计算单元中,每个CRC计算单元不是完全一致的,存在和数据段Di编号相关的处理信息,用于接收和处理对应的数据段数据;余数部分CRC计算单元与数据段D1对应的CRC计算单元一致。
本实施例通过N个不同的CRC计算单元,在各个CRC计算单元中对计算数据段在整个待计算数据块的位置进行相对应处理,在后续进行CRC值合并中,不需要关注CRC值所对应的数据段位置,实施步骤更加简洁。
例如,在以太网数据包的CRC值计算中,400Gbps带宽的以太网需要实时对最大1024bit位宽的数据进行CRC计算,那么在使用CRC-32时,需要用到32个CRC值计算单元,来计算最大时32个数据段的CRC值。同时,在上述情况下,该CRC计算***,能够支持1bit~1024bit位宽范围内任意长度的CRC值计算,并实时给出结果。
综上所述,本发明实施例与现有CRC值计算方法相比,能够快速地计算得到大数据块的CRC值,满足高速网络上的数据传输要求。通过N个不同的CRC计算单元,在各个CRC计算单元中对计算数据段在整个待计算数据块的位置进行相对应处理,在后续进行CRC值合并中,不需要关注CRC值所对应的数据段位置,实施步骤更加简洁。将CRC值与下一笔计算数据段异或操作,放在数据移位、分块单元之后进行,减少了前一笔数据段的CRC终值计算完成到该终值给到下一笔数据进行CRC异或过程中所需要的组合逻辑步骤,进而避免了多次的异或操作带来的较大电路延迟而导致的时序紧张的问题。能够支持1bit到最大可计算长度范围内的任意长度数据块的CRC值计算,解决所需计算数据块长度不同时的多种计算情况。同时最大可计算长度可根据实际需求进行选择,灵活多变。
本发明的一个具体的实施例还公开了一种高速网络中CRC分段计算装置,如图4所示,包括:
第一分块单元,用于将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;
CRC分段计算单元,用于计算每一笔待计算数据块CRC值;前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;
在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值。
具体的,所述CRC分段计算单元中,包括:
数据移位补零单元,用于判断当前笔数据块长度X是否等于数据长度Y;是,则直接将待计算数据块传给第二分块单元;否,则进行补零操作后得到数据长度Y的数据,传给第二分块单元;
优选的,所述数据移位补零单元的补零操作为高位补零操作。
第二分块单元,用于进行数据切分和编号,按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
CRC初始值异或单元,用于将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
N个CRC计算单元,用于分别对N个数据段进行并行CRC计算,得到N个CRC结果;
优选的,N个CRC计算单元中,每个CRC计算单元不是完全一致的,存在和数据段Di编号相关的处理信息,用于接收和处理对应的数据段数据。
CRC值合并单元,用于将得到的N个CRC结果进行异或运算,合并得到当前笔数据块的CRC终值。
本发明的一个具体的实施例还公开了一种高速网络中CRC分段计算装置,如图5所示,所述CRC分段计算单元中,包括:
数据拆分单元,用于判断当前笔数据块长度X是否能整除CRC计算单元的位宽L;是,则将当前笔数据块作为第一数据块转入下一步骤;否,则按位宽L的整数倍将当前笔数据拆分成两个数据块,第一数据块为拆分后长度为位宽L整数倍的数据,第二数据块为拆分后的余数部分;
数据移位补零单元,用于判断第一数据块长度是否等于数据长度Y;是,则直接将待计算数据块传给第二分块单元;否,则进行补零操作后得到数据长度Y的数据,传给第二分块单元;
优选的,所述数据移位补零单元的补零操作为高位补零操作。
第二分块单元,用于进行数据切分和编号,按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段Di;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
CRC初始值异或单元,用于将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
N个CRC计算单元,用于分别对N个数据段进行并行CRC计算,得到N个CRC结果;
CRC值合并单元,用于将得到的N个CRC结果进行异或运算,合并得到第一数据块的CRC终值;
第一CRC终值单元,用于判断当前笔数据块的计算中是否具有未计算CRC结果的第二数据块;否,则将第一数据块的CRC终值作为当前笔数据块的CRC终值;是,则将第一数据块的CRC终值输入到异或单元;
异或单元,用于将第二数据块高位补零,使第二数据块的长度与第一数据块的CRC终值长度相同,将补零后的第二数据块与第一数据块的CRC终值进行异或;
第二CRC终值单元,用于采用1个余数部分CRC计算单元,对异或结进行CRC计算,得到CRC结果最为当前笔数据块的CRC终值。
本实施例中的具体技术细节和技术效果与上一实施例相同,可参见上一实施例,在此就不一一赘述了。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (5)
1.一种高速网络中CRC分段计算方法,其特征在于,包括:
将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;
计算每一笔待计算数据块CRC值;采用前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;
在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值;
将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块时,按照N个CRC计算单元的位宽之和的数据长度Y进行分块;
每一笔待计算数据块CRC值计算过程包括:
步骤S1、判断当前笔数据块长度X是否能整除CRC计算单元的位宽L;是,则将当前笔数据块作为第一数据块转入下一步骤;否,则按位宽L的整数倍将当前笔数据拆分成两个数据块,第一数据块为拆分后长度为位宽L的整数倍的数据,第二数据块为拆分后的余数部分;
步骤S2、判断转入的第一数据块长度是否等于数据长度Y;是,则直接转入下一步骤;否,则进行补零操作后得到数据长度Y的数据,转入下一步骤;
步骤S3、进行数据切分和编号;按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段编号为数据段D i ;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
步骤S4、将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
第一笔数据块的CRC初值的数值为全0、全F或预设的其他数值;
步骤S5、采用N个CRC计算单元,对N段数据段进行并行CRC计算,得到N个CRC结果;
CRC计算单元1处理数据段D1中数据;CRC计算单元2处理数据段D2中数据;依次类推,CRC计算单元N处理数据段DN中数据;每个CRC计算单元存在和对应数据段编号相关的处理信息;
步骤S6、将得到的N个CRC结果进行异或运算,合并得到第一数据块的CRC终值;
步骤S7、判断当前笔数据块的计算中是否具有未计算CRC结果的第二数据块;否,则将第一数据块的CRC终值,作为当前笔数据块的CRC终值后,进入下一笔数据块CRC值计算;是,则转入下一步骤;
步骤S8、将第二数据块高位补零,使第二数据块的长度与第一数据块的CRC终值长度相同,将补零后的第二数据块与第一数据块的CRC终值进行异或;
步骤S9、采用1个余数部分CRC计算单元,对异或结果进行CRC计算,得到CRC结果作为当前笔数据块的CRC终值;
所述当前笔数据块的CRC终值作为下一笔数据块的CRC初值,在步骤S304中进行下一笔数据块的异或操作。
2.根据权利要求1所述的高速网络中CRC分段计算方法,其特征在于,所述补零操作为高位补零操作。
3.根据权利要求2所述的高速网络中CRC分段计算方法,其特征在于,
N个CRC计算单元中,每个CRC计算单元不是完全一致的,存在和数据段D i 编号相关的处理信息,用于接收和处理对应的数据段数据;余数部分CRC计算单元与数据段D1对应的CRC计算单元一致。
4.一种高速网络中CRC分段计算装置,其特征在于,包括:
第一分块单元,用于将网络中待计算CRC值的数据包进行分块得到按照数据顺序排列的M笔待计算数据块;
CRC分段计算单元,用于计算每一笔待计算数据块CRC值;前一笔数据块的CRC终值作为当前笔数据块的CRC初值;并将最后一笔数据块的终值作为数据包的CRC值;
在进行当前笔数据块的CRC计算时,结合当前笔数据块的CRC初值,采用N个CRC计算单元进行并行计算获得当前笔数据块的CRC终值;
数据拆分单元,用于判断当前笔数据块长度X是否能整除CRC计算单元的位宽L;是,则将当前笔数据块作为第一数据块转入下一步骤;否,则按位宽L的整数倍将当前笔数据拆分成两个数据块,第一数据块为拆分后长度为位宽L整数倍的数据,第二数据块为拆分后的余数部分;
数据移位补零单元,用于判断第一数据块长度是否等于数据长度Y;是,则直接将待计算数据块传给第二分块单元;否,则进行补零操作后得到数据长度Y的数据,传给第二分块单元;
第二分块单元,用于进行数据切分和编号,按照均等的长度L将待计算数据块分为N个数据段,并按照数据段的bit位高低顺序,对各个数据段进行编号为数据段D i ;i=1,…,N;N=Y/L;L为CRC计算单元的位宽;
CRC初始值异或单元,用于将数据段D1中数据与当前笔数据块的CRC初值进行异或操作后,重新赋值到数据段D1中;
N个CRC计算单元,用于分别对N个数据段进行并行CRC计算,得到N个CRC结果;
CRC值合并单元,用于将得到的N个CRC结果进行异或运算,合并得到第一数据块的CRC终值;
第一CRC终值单元,用于判断当前笔数据块的计算中是否具有未计算CRC结果的第二数据块;否,则将第一数据块的CRC终值作为当前笔数据块的CRC终值;是,则将第一数据块的CRC终值输入到异或单元;
异或单元,用于将第二数据块高位补零,使第二数据块的长度与第一数据块的CRC终值长度相同,将补零后的第二数据块与第一数据块的CRC终值进行异或;
第二CRC终值单元,用于采用1个余数部分CRC计算单元,对异或结进行CRC计算,得到CRC结果最为当前笔数据块的CRC终值;
所述当前笔数据块的CRC终值作为下一笔数据块的CRC初值,在CRC初始值异或单元进行下一笔数据块的异或操作。
5.根据权利要求4所述的高速网络中CRC分段计算装置,其特征在于,补零操作为高位补零操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210365156.4A CN114679239B (zh) | 2022-04-02 | 2022-04-02 | 一种高速网络中crc分段计算方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210365156.4A CN114679239B (zh) | 2022-04-02 | 2022-04-02 | 一种高速网络中crc分段计算方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114679239A CN114679239A (zh) | 2022-06-28 |
CN114679239B true CN114679239B (zh) | 2024-04-23 |
Family
ID=82078602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210365156.4A Active CN114679239B (zh) | 2022-04-02 | 2022-04-02 | 一种高速网络中crc分段计算方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114679239B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117220833B (zh) * | 2023-11-09 | 2024-01-26 | 新华三网络信息安全软件有限公司 | Crc计算电路、芯片、报文处理方法及网络安全设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431594A (zh) * | 2003-01-27 | 2003-07-23 | 西安电子科技大学 | 一种多通道多位并行计算crc码的方法 |
CN105119694A (zh) * | 2015-09-11 | 2015-12-02 | 烽火通信科技股份有限公司 | 一种计算高速网络中crc值的方法及*** |
CN112803954A (zh) * | 2020-12-31 | 2021-05-14 | 中山大学 | 一种基于CRC分段处理的改进BP List译码算法 |
CN113110954A (zh) * | 2021-04-23 | 2021-07-13 | 合肥恒烁半导体有限公司 | 一种crc码并行计算方法、装置及其应用 |
WO2021195800A1 (en) * | 2020-03-28 | 2021-10-07 | Qualcomm Incorporated | Code block segmentation for downlink control information |
-
2022
- 2022-04-02 CN CN202210365156.4A patent/CN114679239B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1431594A (zh) * | 2003-01-27 | 2003-07-23 | 西安电子科技大学 | 一种多通道多位并行计算crc码的方法 |
CN105119694A (zh) * | 2015-09-11 | 2015-12-02 | 烽火通信科技股份有限公司 | 一种计算高速网络中crc值的方法及*** |
WO2021195800A1 (en) * | 2020-03-28 | 2021-10-07 | Qualcomm Incorporated | Code block segmentation for downlink control information |
CN112803954A (zh) * | 2020-12-31 | 2021-05-14 | 中山大学 | 一种基于CRC分段处理的改进BP List译码算法 |
CN113110954A (zh) * | 2021-04-23 | 2021-07-13 | 合肥恒烁半导体有限公司 | 一种crc码并行计算方法、装置及其应用 |
Also Published As
Publication number | Publication date |
---|---|
CN114679239A (zh) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100982521B1 (ko) | 고화질 통신을 위한 패킷 구조, 시스템 및 방법 | |
CN107154836B (zh) | 一种基于fpga的并行循环冗余crc校验方法 | |
EP0876021A1 (en) | System and method for transmitting data over a plurality of channels | |
US8582603B2 (en) | Method and apparatus for configuring protocol header in wireless communication system | |
EP3637650B1 (en) | Code error detection method and device for bit block stream | |
EP3266131B1 (en) | Encapsulating digital communications signals for transmission on an optical link | |
EP1900134A1 (en) | Method and system for optimizing forward error correction of multimedia streaming over wireless networks | |
US6819718B1 (en) | Apparatus and method for transmitting punctured or repeated data | |
CN114679239B (zh) | 一种高速网络中crc分段计算方法及装置 | |
US11831434B2 (en) | Data sending and receiving method and device | |
CN111193635A (zh) | 测量递送等待时间的方法、***和计算机可读介质 | |
JP5719438B2 (ja) | Cpriリンクのエラー・コード・モニター方法、システム及び装置 | |
JP3419520B2 (ja) | データ通信方法および装置 | |
WO2016043509A1 (ko) | 이진 직렬 연결된 부호를 사용하는 시스템에서 복호 방법 및 장치 | |
CN106936545B (zh) | 数据传输方法及装置 | |
CN108270508B (zh) | 一种循环冗余校验crc实现方法、装置及网络设备 | |
CN112118073B (zh) | 一种数据处理方法、光传输设备及数字处理芯片 | |
US6678854B1 (en) | Methods and systems for providing a second data signal on a frame of bits including a first data signal and an error-correcting code | |
CN111385058A (zh) | 一种数据传输的方法和装置 | |
US20220149988A1 (en) | Method for Adjusting Transmission Rate, Processor, Network Device, and Network System | |
US7590124B2 (en) | Encapsulation technique | |
CN113098667B (zh) | 数据传输方法、***、计算机设备和介质 | |
US7047479B1 (en) | Parallel CRC formulation | |
KR20100103442A (ko) | 무선통신시스템에서 패킷 헤드를 설정하는 방법 및 관련 통신장치 | |
US9380546B1 (en) | Data communication over a frame synchronized digital transmission network |
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 |