CN101795175B - 数据的校验处理方法及装置 - Google Patents
数据的校验处理方法及装置 Download PDFInfo
- Publication number
- CN101795175B CN101795175B CN201010114360.6A CN201010114360A CN101795175B CN 101795175 B CN101795175 B CN 101795175B CN 201010114360 A CN201010114360 A CN 201010114360A CN 101795175 B CN101795175 B CN 101795175B
- Authority
- CN
- China
- Prior art keywords
- msub
- mrow
- circleplus
- data
- math
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 239000011159 matrix material Substances 0.000 claims abstract description 85
- 238000004364 calculation method Methods 0.000 claims description 62
- 238000012545 processing Methods 0.000 claims description 21
- 238000013524 data verification Methods 0.000 claims description 18
- 238000003672 processing method Methods 0.000 claims description 10
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
-
- 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
-
- 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/0041—Arrangements at the transmitter end
-
- 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)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
本发明公开了一种数据的校验处理方法及装置,该方法包括:获取需要进行校验的数据;根据生成多项式获得第一多项式矩阵F;根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是数据的位数;由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码;以及将数据和CRC校验码发送给接收方,以便接收方对数据进行校验。通过本发明,解决了现有技术中需校验的数据位数不是2的n次幂而产生的寄存器负担增加的问题,进而达到了减少寄存器负担的效果。
Description
技术领域
本发明涉及通讯系统中数据传输领域,尤其涉及一种数据的校验处理方法及装置。
背景技术
在数据传输和存储的过程中,由于外界干扰等原因,接收的数据可能与发送的数据不一致。为了保证数据传输的正确率,通常在数据传输过程中采用一些编码和检测方法。实现校验的方法包括:奇偶校验、循环冗余校验(Cyclic Redundancy Check,简称为CRC)等。其中,CRC校验以高效率和高性能在通信等领域得到了广泛的应用。
CRC校验码是从循环码中派生的缩短循环码,在采用CRC校验时,发送方和接收方采用同一个生成多项式g(x)进行运算,并且,生成多项式由用户设定,g(x)的首位和最后一位的系数必须为1。CRC校验的处理方法大致包括:发送方用生成多项式g(x)去除待发送的二进制数据t(x),将得到的余数作为CRC校验码,在校验时,以计算的校正结果是否为0作为依据判断数据帧是否发生改变。
CRC校验的实现具体包括以下步骤:一、设待发送的数据块是m位的二进制多项式t(x),生成多项式是r阶的g(x)。在待发送的数据块的末尾添加r个0,使数据块的长度增加到m+r位,其对应的二进制多项式为xrt(x)。二、用生成多项式g(x)去除待发送的数据xrt(x),求得的余数为r-1阶的二进制多项式y(x)。该二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的CRC校验码。三、用xrt(x)以模2的方式减去y(x),得到二进制多项式xrt′(x),其中,xrt′(x)就是包含了CRC校验码的待发送字符串。
根据上述记载的CRC的编码规则可以看出,CRC编码实际上是将待发送的m位二进制多项式t(x)转换为可以被g(x)除尽的m+r位二进制多项式xrt′(x),所以在解码时以用接收到的数据去除g(x),如果此时的余数为零,则表示传输过程中数据没有发生错误,如果此时的余数不为零,则表示在传输过程中必然存在错误。
CRC算法可分为串行处理和并行处理两种类型,下面分别对其进行说明。
图1是根据相关技术的串行处理CRC码的方法的流程图,如图1所示,以生成多项式最高次数为4(即CRC-4)为例说明串行运算法实现CRC码的方法。此时,执行除法需要4个寄存器,该方法包括以下步骤:
步骤S101,将寄存器初始化为0,然后在寄存器数组中存入生成多项式系数,同时,将待处理的数据存入另一个临时寄存器数组中,并在待处理的数据上添加尾比特,添加尾比特的方法是在信息比特流的最后添加4个0。
步骤S102,将寄存器数组左移1比特(下标大的移入下标小的,下标最大的由临时数组补充,最小的移出),并从临时数组中的信息比特流读入下一比特写入第0寄存器。
步骤S103,判断寄存器数组中移出的比特是否为1,如果为1,则进入步骤S104,否则,进入步骤S105。
步骤S104,将寄存器数组异或生成多项式后,存入寄存器数组,返回步骤S102。
步骤S105,判断临时数组是否处理完,即判断信息比特流是否结束,如果信息比特流没有处理完,则返回临时数据寄存器,否则进入步骤S106。
步骤S106,寄存器数组中的值极为CRC,结束计算。
串行CRC计算通常都是通过线性反馈移位寄存器(LineFeedback Shift Registers,简称为LFSRs)结构来实现。LFSRs有两种结构,分别称之为LFSR1型和LFSR2型,图2是根据相关技术的LFSR1型结构的示意图,图3是根据相关技术的LFSR2型结构的示意图。
由上述说明可知,串行运算法以比特为单位进行处理,因此,效率较低且运算量大,而并行处理方法则可以一次处理4位、8位、16位等,克服了串行算法的上述缺点。
下面以CRC-32生成多项式来并行处理8比特数据的CRC计算方法为例介绍并行算法。图4是根据相关技术的并行处理CRC码的方法的流程图,如图4所示,构造一个四个字节的寄存器reg,初始值为0X00000000,待发送数据依次移入reg0(reg的0字节,以下类似),同时reg3的数据移出reg。移出的数据字节决定了reg和什么样的数据进行异或。由于带发送的数据有8个比特,所以有256种选择进行异或,这256种选择构成了一个和8位数据相对应的表,称为查找表。
目前,并行计算CRC码的位数只能是2的n次幂,但在不同的应用场景中,所需校验的数据位数可能不是2的n次幂,且可能会出现奇数位,在这种情况下,需要在该数据的前面加0补充到位数满足2的n次幂这个条件才能进行并行计算CRC码,增加了寄存器的负担。
发明内容
本发明的主要目的在于提供一种数据的校验处理方案,以至少解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种数据的校验处理方法。
根据本发明的数据的校验处理方法包括:获取需要进行校验的数据;根据生成多项式获得第一多项式矩阵F;根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是数据的位数;由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码;以及将数据和CRC校验码发送给接收方,用于接收方对数据进行校验。
优选的,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i≤m,且用于计算的线性反馈移位寄存器LFSR为LFSR1的情况下,
其中,D=[0,0,...,0,d0,d1,...,di-2,di-1]T,[d0,d1,...,di-2,di-1]T是该数据,D的行数为m。
优选的,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i≤m,且用于计算的LFSR为LFSR2的情况下,
其中,D=[d0,d1,...,di-2,di-1,0,0,...,0]T,数据是[d0,d1,...,di-2,di-1]T,D的行数为m。
优选的,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR1的情况下,
生成数据的CRC校验码
优选的,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR2的情况下,
生成数据的CRC校验码
优选的,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:在矩阵X(i)中找出含1的项最多的列中的一列作为第一待处理列;在矩阵X(i)中找出与第一待处理列在同一行的项均是1的行的个数最多的列作为第二待处理列;将第一待处理列和第二待处理列中同一行的项均是1的行中的项都变为0;以及重复执行上述步骤,直至矩阵X(i)中每一行中含1的项都小于等于1。
优选的,在将第一待处理列和第二待处理列中同一行的项均是1的行中的项都变为0之后,将第一待处理列和第二待处理列中不含1的列删除。
为了实现上述目的,根据本发明的另一方面,提供了一种数据的校验处理装置。
根据本发明的数据的校验处理装置包括:获取模块,用于获取需要进行校验的数据;第一获得模块,用于根据生成多项式获得第一多项式矩阵F;第二获得模块,用于根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是数据的位数;生成模块,用于由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码;以及发送模块,用于将数据和CRC校验码发送给接收方,用于接收方对数据进行校验。
优选的,生成模块包括:第一生成子模块,用于在生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR1的情况下,
优选的,生成模块包括:第二生成子模块,用于在生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR2的情况下,
通过本发明,采用根据生成多项式和待校验的数据的位数获得生成多项式矩阵,并根据生成多项式矩阵、初始CRC寄存器值和所述数据获得计算所述数据的CRC校验码的公式来生成CRC校验码的方式,解决了现有技术中需校验的数据位数不是2的n次幂而产生的寄存器负担增加的问题,进而达到了减少寄存器负担的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的串行处理CRC码的方法的流程图;
图2是根据相关技术的LFSR1型结构的示意图;
图3是根据相关技术的LFSR2型结构的示意图;
图4是根据相关技术的并行处理CRC码的方法的流程图;
图5是根据本发明实施例的数据的校验处理装置的结构框图;
图7是根据本发明实施例的数据的校验处理装置的具体的结构框图;
图8是根据本发明实施例的优选实例一的数据的校验处理方法的流程图;以及
图9是根据本发明实施例的合并共用项的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
根据本发明的一个方面,提供了一种数据的校验处理装置。
图5是根据本发明实施例的数据的校验处理装置的结构框图,如图5所示,该装置包括:获取模块502、第一获得模块504、第二获得模块506、生成模块508、发送模块510,下面对该结构进行详细说明。
获取模块502,用于获取需要进行校验的数据;第一获得模块504连接至获取模块502,用于根据生成多项式获得第一多项式矩阵F;第二获得模块506连接至第一获得模块504,用于根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是该数据的位数;生成模块508连接至第二获得模块506,用于由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成该数据的CRC校验码;发送模块510连接至生成模块508,用于将数据和CRC校验码发送给接收方,用于接收方对数据进行校验。
该实施例根据待校验的数据的位数生成CRC校验码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
图6是根据本发明实施例的数据的校验处理装置的具体的结构框图,下面结合图6对本发明实施例进行详细说明。
生成模块508包括:第一生成子模块62,用于在生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR1的情况下,
生成数据的CRC校验码
该实施例实现了在i>m,且用于计算的LFSR为LFSR1的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
生成模块508还包括:第二生成子模块64,用于在生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR2的情况下,
其中,X(i)是数据的CRC码,D是数据[d0,d1,...,di-2,di-1]T,Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
该实施例实现了在i>m,且用于计算的LFSR为LFSR2的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
生成模块508包括:第三生成子模块66,用于在生成多项式的阶数为m,i≤m,且用于计算的LFSR为LFSR1的情况下,
其中,D=[0,0,...,0,d0,d1,...,di-2,di-1]T,数据是[d0,d1,...,di-2,di-1]T,D的行数为m。
该实施例实现了在i≤m,且用于计算的LFSR为LFSR1的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0使数据达到2的n次幂位进行计算即可实现对数据的校验,减轻了寄存器的负担。
对应于上述装置实施例,本发明还提供了一种数据的校验处理方法。
图7是根据本发明实施例的数据的校验处理方法的流程图,如图7所示,该方法包括以下步骤:
步骤S702,获取需要进行校验的数据;
步骤S704,根据生成多项式获得第一多项式矩阵F;
步骤S706,根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是数据的位数;
步骤S708,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码;以及
步骤S710,将数据和CRC校验码发送给接收方,以便接收方对数据进行校验。
该实施例使用待校验的数据的位数生成CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
优选地,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i≤m,且用于计算的LFSR为LFSR1的情况下,
其中,D=[0,0,...,0,d0,d1,...,di-2,di-1]T,数据是[d0,d1,...,di-2,di-1]T。
该实施例实现了在i≤m,且用于计算的LFSR为LFSR1的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0至2的n次幂位进行计算即可实现对数据的校验,减轻了寄存器的负担。
优选地,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i≤m,且用于计算的LFSR为LFSR2的情况下,
生成数据的CRC校验码
其中,D=[d0,d1,...,di-2,di-1,0,0,...,0]T,数据是[d0,d1,...,di-2,di-1]T。
该实施例实现了在i≤m,且用于计算的LFSR为LFSR2的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
优选地,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR1的情况下,
生成数据的CRC校验码
该实施例实现了在i>m,且用于计算的LFSR为LFSR1的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
优选地,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR2的情况下,
该实施例实现了在i>m,且用于计算的LFSR为LFSR2的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
优选地,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:在矩阵X(i)中找出含1的项最多的列中的一列作为第一待处理列;在矩阵X(i)中找出与第一待处理列在同一行的项均是1的行的个数最多的列作为第二待处理列;将第一待处理列和第二待处理列中同一行的项均是1的行中的项都变为0;以及重复执行上述步骤,直至矩阵X(i)中每一行中含1的项都小于等于1。
该实施例对公式进行合并共用项,在对数据校验的过程中简化了计算。
优选的,在将第一待处理列和第二待处理列中同一行的项均是1的行中的项都变为0之后,将第一待处理列和第二待处理列中不含1的列删除。
该实施例通过删除全部是0的列,进一步简化了计算,提高了生成CRC码的效率。
下面结合附图和优选实施例对本发明的实现过程进行详细说明。
优选实例一
本发明实施例通过每一次并行送入待计算的数据及上一次运算得到CRC码,代入根据公式计算得到的异或矩阵,最终得到CRC码。图8是根据本发明实施例的优选实例一的数据的校验处理方法的流程图,如图8所示,该方法包括:
步骤S801,根据并行计算CRC码的位数,计算CRC码计算公式。
下面以LFSR1为例进行说明CRC码计算公式的获得方式。在i≤m,且用于计算的LFSR为LFSR1的情况下,获得CRC码计算公式。如果用X=[xm-1,...,x1,x0]T表示第j次计算的CRC码,用X′=[x′m-1,...,x′1,x′0]T表示第(j+1)次计算的CRC码,把生成多项式写成P={pm,pm-1,...,p0},d表示串行计算的1比特码字,同时用表示两个矩阵相同位置的元素进行异或运算,用表示位与运算,在本发明中具体表示一个矩阵的每一行的元素分别与另一个列矩阵的每个元素进行与运算,与运算的结果进行异或运算,得到一个列矩阵,根据CRC计算原理,可得方程组:
根据该方程组,可得并行输入i位数据的CRC码计算公式:
同理,在i≤m,且用于计算的LFSR为LFSR2的情况下,计算CRC码计算公式为:
其中,D=[d0,d1,...,di-2,di-1,0,0,...,0]T,D的行数为m,其它参量与LFSR为LFSR1的情况相同。
当i>m时,下式依然成立:
其中Ii为单位矩阵,当i=m时,得:
而对于生成多项式矩阵Fi有如下的形式:
其中,生成多项式P=[pm-1,pm-2,...,p]。
将式(4)与(5)代入式(2)得:
因此可得,对于LFSR1型,计算CRC码的公式为:
同理,对于LFSR2型,计算CRC码的公式为:
步骤S802,利用合并共用项算法优化上述得到的计算公式。
X(i)是一个列矩阵,且该列矩阵的每一项为多个参数的异或运算,因此,可以利用合并共用项算法使逻辑层次最小化,找到尽量多的能共用的异或逻辑,缩短计算时间,优化性能。
例如,矩阵X(i)对应的方程组为:
图9是根据本发明实施例的合并共用项的示意图,如图9所示,将方程组K(X)从表91转换成表92。根据表92,合并共用项算法主要实现步骤如下:
1、在92所示的矩阵中找出含“1”最多的列,如果有两列以上这样的列存在,选择列序数最小的列,记为列A(例如,X2和X5这两列都含有相同多的“1”,在此选择列数值小的X2),需要注意的是,如果有两列以上这样的列存在,选择列序数大的列作为列A;
2、在其他列中找到和列A在同一行的项均是1的行的个数最多的列,如果有两列以上这样的列存在,选择含“1”最少且列数最小的列,记为列B(例如,X4和X5每一行和X2含相同“1”的数目一样,在此选择列数目小的X4列)需要注意的是,如果有两列以上这样的列存在,选择含“1”最少且列数最小的列仅是为了方便计算,也可以选择选择其他的列作为列B;
3、将列A和列B中中同一行的项均是“1”的行中的项都变为“0”,如果列A或列B没有含“1”的项,可以将该列删去(例如,将X2和X4两列中相同的项都变为“0”,这时X4列全为“0”,可以将该列删去);
4、如果矩阵中每一行含“1”数小于等于1,则优化停止,若没有,则重复上面3步。
步骤S803,将待检测的数据并行代入步骤S802得到的公式。
将本次待计算CRC码的数据和上次计算得到的CRC码带入计算得到的公式可得到本次计算的CRC码。
步骤S804,判断校验数据是否处理完。如果未处理完,则返回步骤S802循环处理,直到数据处理完成。
步骤S805,数据全部处理完成后,寄存器中的值即为最终得到所需校验数据的CRC码值。然后,将CRC码和数据一起发送给接收方,以便接收方对数据进行校验。
优选实例二
下面以CRC-16=X16+X15+X2+1,LFSR的类型为LFSR2,且并行计算36位数据为例对本发明实施例的实现过程进行说明。
经计算得到与数据位数相关的生成多项式矩阵和转换矩阵为:
利用合并共用项算法优化上述计算公式,得到的表达式为:
将本次待计算CRC码的数据和上次计算得到的CRC码代入计算得到的公式可得到本次计算的CRC码。
判断校验数据是否处理完,如果数据未处理完,循环进行处理直到数据处理完成。在数据全处理完之后,寄存器中的值即为最终得到所需校验数据的CRC码值。然后,将CRC码和所需校验的数据一起发送给接收方,以便接收方对数据进行校验。
采用本发明,解决了现有技术中需校验的数据位数不是2的n次幂而产生的寄存器负担增加的问题,进而达到了减少寄存器负担的效果。本发明提供的技术方案,可以根据所需校验的数据格式,选择每次并行运算CRC码的位数,且利用合并共用项算法,得到尽量多的异或逻辑,显著提高计算CRC码的系统性能,最大程度满足CRC数据处理的运算需求。并且,在硬件电路设计中,采用合并共用项算法,能减少元器件使用数目,从而减少面积与成本。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据的校验处理方法,其特征在于,包括:
获取需要进行校验的数据;
根据生成多项式获得第一多项式矩阵F;
根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是所述数据的位数,Fi=Fi表示Fi为F的i次幂;
由所述第二生成多项式矩阵Fi、初始循环冗余校验CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码;以及
将所述数据和所述CRC校验码发送给接收方,用于所述接收方对所述数据进行校验。
6.根据权利要求2至5中任一项所述的方法,其特征在于,由所述第二生成多项式矩阵Fi、所述初始CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码包括:
在所述X(i)中找出含1的项最多的列中的一列作为第一待处理列;
在所述矩阵X(i)中找出与所述第一待处理列在同一行的项均是1的行的个数最多的列作为第二待处理列;
将所述第一待处理列和所述第二待处理列中同一行的项均是1的行中的项都变为0;以及
重复执行上述步骤,直至所述矩阵X(i)中每一行中含1的项都小于等于1。
7.根据权利要求6所述的方法,其特征在于,在将所述第一待处理列和所述第二待处理列中同一行的项均是1的行中的项都变为0之后,所述方法还包括:
将所述第一待处理列和所述第二待处理列中不含1的列删除。
8.一种数据的校验处理装置,其特征在于,包括:
获取模块,用于获取需要进行校验的数据;
第一获得模块,用于根据生成多项式获得第一多项式矩阵F;
第二获得模块,用于根据Fi=Fi获得第二生成多项式矩阵Fi,其中,i是所述数据的位数,Fi=Fi表示Fi为F的i次幂;
生成模块,用于由所述第二生成多项式矩阵Fi、初始循环冗余校验CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码;以及
发送模块,用于将所述数据和所述CRC校验码发送给接收方,用于所述接收方对所述数据进行校验。
10.根据权利要求8所述的装置,其特征在于,所述生成模块包括:
第二生成子模块,用于在所述生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR2的情况下,
生成所述数据的CRC校验码
其中,D是所述数据[d0,d1,…,di-2,di-1]T, Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,…,P1,P0]是所述生成多项式,Im为单位矩阵。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010114360.6A CN101795175B (zh) | 2010-02-23 | 2010-02-23 | 数据的校验处理方法及装置 |
PCT/CN2010/076202 WO2011103741A1 (zh) | 2010-02-23 | 2010-08-20 | 数据的校验处理方法及装置 |
EP10846364.7A EP2533450B1 (en) | 2010-02-23 | 2010-08-20 | Method and device for data check processing |
US13/586,065 US8843810B2 (en) | 2010-02-23 | 2012-08-15 | Method and apparatus for performing a CRC check |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010114360.6A CN101795175B (zh) | 2010-02-23 | 2010-02-23 | 数据的校验处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101795175A CN101795175A (zh) | 2010-08-04 |
CN101795175B true CN101795175B (zh) | 2014-03-19 |
Family
ID=42587616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010114360.6A Expired - Fee Related CN101795175B (zh) | 2010-02-23 | 2010-02-23 | 数据的校验处理方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8843810B2 (zh) |
EP (1) | EP2533450B1 (zh) |
CN (1) | CN101795175B (zh) |
WO (1) | WO2011103741A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101795175B (zh) * | 2010-02-23 | 2014-03-19 | 中兴通讯股份有限公司 | 数据的校验处理方法及装置 |
KR101990972B1 (ko) * | 2012-10-04 | 2019-06-19 | 삼성전자 주식회사 | 메모리 시스템에서의 순환 중복 검사 동작 수행 방법 및 이를 이용한 메모리 컨트롤러 |
US9286056B2 (en) | 2014-05-19 | 2016-03-15 | International Business Machines Corporation | Reducing storage facility code load suspend rate by redundancy check |
JP2019506044A (ja) | 2015-12-31 | 2019-02-28 | 日本電気株式会社 | アップリンク情報を送信および受信する方法および装置 |
CN105680870B (zh) * | 2016-02-05 | 2018-08-14 | 南京大学 | 一种并行lfsr架构的实现方法 |
CN107239362B (zh) * | 2017-02-20 | 2020-06-05 | 中国科学院微电子研究所 | 一种并行crc校验码的计算方法及系统 |
CN108809323B (zh) * | 2017-05-03 | 2021-10-19 | 成都鼎桥通信技术有限公司 | 循环冗余校验码的生成方法和装置 |
CN108880562B (zh) | 2017-05-11 | 2020-06-19 | 珠海零边界集成电路有限公司 | 循环冗余校验电路及其方法、装置以及芯片、电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1324517A (zh) * | 1998-08-26 | 2001-11-28 | 艾利森电话股份有限公司 | 用于生成循环冗余校验代码的并行循环冗余校验生成电路 |
CN1933605A (zh) * | 2005-09-12 | 2007-03-21 | 三星电子株式会社 | 循环冗余检查电路和含该电路的多通道通信的通信系统 |
EP1474873B1 (en) * | 2002-02-15 | 2009-04-01 | Intel Corporation | Obtaining cyclic redundancy code |
CN101404557A (zh) * | 2008-11-28 | 2009-04-08 | 炬力集成电路设计有限公司 | 一种循环冗余校验码生成装置及方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10107646A (ja) * | 1996-09-25 | 1998-04-24 | Mitsubishi Electric Corp | Crc符号発生回路、符号誤り検出回路、及びcrc回路 |
US6519738B1 (en) * | 2000-03-07 | 2003-02-11 | International Business Machines Corporation | Method and apparatus for high-speed CRC computation based on state-variable transformation |
US7219293B2 (en) * | 2003-12-17 | 2007-05-15 | Macronix International Co., Ltd. | High performance CRC calculation method and system with a matrix transformation strategy |
WO2007012238A1 (fr) | 2005-07-27 | 2007-02-01 | Beijing Huaqi Information Digital Technology Co., Ltd. | Connecteur sata |
GB0607976D0 (en) * | 2006-04-22 | 2006-05-31 | Univ Belfast | Apparatus and method for computing an error detection code |
US7844886B1 (en) * | 2006-05-16 | 2010-11-30 | Altera Corporation | Parallel processing error detection and location circuitry for configuration random-access memory |
EP2062364A2 (en) * | 2006-08-11 | 2009-05-27 | Aclara Power-Line Systems Inc. | Method of correcting message errors using cyclic redundancy checks |
US7904787B2 (en) * | 2007-01-09 | 2011-03-08 | International Business Machines Corporation | Pipelined cyclic redundancy check for high bandwidth interfaces |
US8386878B2 (en) * | 2007-07-12 | 2013-02-26 | Samsung Electronics Co., Ltd. | Methods and apparatus to compute CRC for multiple code blocks |
US8307266B2 (en) * | 2008-09-02 | 2012-11-06 | Anna University | Chained checksum error correction mechanism to improve TCP performance over network with wireless links |
US8543888B2 (en) * | 2009-06-09 | 2013-09-24 | Microchip Technology Incorporated | Programmable cyclic redundancy check CRC unit |
CN101795175B (zh) * | 2010-02-23 | 2014-03-19 | 中兴通讯股份有限公司 | 数据的校验处理方法及装置 |
US8468439B2 (en) * | 2011-06-02 | 2013-06-18 | Nexus Technology, Inc. | Speed-optimized computation of cyclic redundancy check codes |
-
2010
- 2010-02-23 CN CN201010114360.6A patent/CN101795175B/zh not_active Expired - Fee Related
- 2010-08-20 WO PCT/CN2010/076202 patent/WO2011103741A1/zh active Application Filing
- 2010-08-20 EP EP10846364.7A patent/EP2533450B1/en not_active Not-in-force
-
2012
- 2012-08-15 US US13/586,065 patent/US8843810B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1324517A (zh) * | 1998-08-26 | 2001-11-28 | 艾利森电话股份有限公司 | 用于生成循环冗余校验代码的并行循环冗余校验生成电路 |
EP1474873B1 (en) * | 2002-02-15 | 2009-04-01 | Intel Corporation | Obtaining cyclic redundancy code |
CN1933605A (zh) * | 2005-09-12 | 2007-03-21 | 三星电子株式会社 | 循环冗余检查电路和含该电路的多通道通信的通信系统 |
CN101404557A (zh) * | 2008-11-28 | 2009-04-08 | 炬力集成电路设计有限公司 | 一种循环冗余校验码生成装置及方法 |
Non-Patent Citations (2)
Title |
---|
Giuseppe Campobello等.Parallel CRC Realization.《IEEE transactions on computers》.2003,第52卷(第10期),1312-1318. |
Parallel CRC Realization;Giuseppe Campobello等;《IEEE transactions on computers》;20031031;第52卷(第10期);1312-1318 * |
Also Published As
Publication number | Publication date |
---|---|
EP2533450A1 (en) | 2012-12-12 |
US20120317466A1 (en) | 2012-12-13 |
EP2533450A4 (en) | 2014-01-22 |
US8843810B2 (en) | 2014-09-23 |
EP2533450B1 (en) | 2015-08-12 |
WO2011103741A1 (zh) | 2011-09-01 |
CN101795175A (zh) | 2010-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101795175B (zh) | 数据的校验处理方法及装置 | |
KR100502609B1 (ko) | Ldpc 코드를 이용한 부호화기 및 부호화 방법 | |
US7543212B2 (en) | Low-density parity-check (LDPC) encoder | |
CN103886915B (zh) | 用于校正包括邻近2比特错误的3比特错误的电路和方法 | |
KR101354288B1 (ko) | 통신 시스템에서 에러 검출 방법 및 장치 | |
CN107239362B (zh) | 一种并行crc校验码的计算方法及系统 | |
US20090019333A1 (en) | Generation of parity-check matrices | |
US20140068391A1 (en) | Memory with Segmented Error Correction Codes | |
EP2831999B1 (en) | Parallel encoding for non-binary linear block code | |
JPWO2004001701A1 (ja) | 符号演算装置 | |
CN101814922A (zh) | 基于bch码的多位错纠错方法和装置以及存储系统 | |
CN107919874A (zh) | 用于非二进制ldpc码解码的校验子计算的基本校验节点处理 | |
US8683291B2 (en) | High throughput frame check sequence module architecture | |
CN101296053A (zh) | 计算循环冗余校验码之方法及系统 | |
US20030188248A1 (en) | Apparatus for iterative hard-decision forward error correction decoding | |
CN108270508B (zh) | 一种循环冗余校验crc实现方法、装置及网络设备 | |
TWI631829B (zh) | 用於進行重組解碼的低密度奇偶校驗解碼裝置及相關方法 | |
CN114389752A (zh) | 循环冗余校验码生成方法、装置、设备、介质和程序产品 | |
JP2017139738A (ja) | 復号化装置、プログラム、及び情報伝送システム | |
EP2309650B1 (en) | A systematic encoder with arbitrary parity positions | |
EP1878117A2 (en) | Method and apparatus for generating error-correcting and error-detecting codes using zero-divisors and units in group rings | |
US20080154998A1 (en) | Method and apparatus for dividing information bit string | |
CN108574490A (zh) | 计算循环冗余校验crc编码的方法及装置 | |
CN115037415A (zh) | 基于crc的纠错编码的方法、装置、终端 | |
CN111600613B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140319 Termination date: 20170223 |
|
CF01 | Termination of patent right due to non-payment of annual fee |