CN101795175B - 数据的校验处理方法及装置 - Google Patents

数据的校验处理方法及装置 Download PDF

Info

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
circleplus
data
generator polynomial
matrix
described data
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
Application number
CN201010114360.6A
Other languages
English (en)
Other versions
CN101795175A (zh
Inventor
卢鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201010114360.6A priority Critical patent/CN101795175B/zh
Publication of CN101795175A publication Critical patent/CN101795175A/zh
Priority to EP10846364.7A priority patent/EP2533450B1/en
Priority to PCT/CN2010/076202 priority patent/WO2011103741A1/zh
Priority to US13/586,065 priority patent/US8843810B2/en
Application granted granted Critical
Publication of CN101795175B publication Critical patent/CN101795175B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (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的情况下,
生成数据的CRC校验码
Figure GSA00000020999700041
其中,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的情况下,
生成数据的CRC校验码
Figure GSA00000020999700042
其中,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校验码
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700052
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
优选的,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR2的情况下,
生成数据的CRC校验码
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700054
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
优选的,由第二生成多项式矩阵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的情况下,
生成所述数据的CRC校验码
Figure GSA00000020999700061
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700062
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
优选的,生成模块包括:第二生成子模块,用于在生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR2的情况下,
生成所述数据的CRC校验码
Figure GSA00000020999700063
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700071
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
通过本发明,采用根据生成多项式和待校验的数据的位数获得生成多项式矩阵,并根据生成多项式矩阵、初始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校验码
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700092
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
该实施例实现了在i>m,且用于计算的LFSR为LFSR1的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
生成模块508还包括:第二生成子模块64,用于在生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR2的情况下,
生成数据的CRC校验码
Figure GSA00000020999700093
其中,X(i)是数据的CRC码,D是数据[d0,d1,...,di-2,di-1]TFk为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的情况下,
生成数据的CRC校验码
Figure GSA00000020999700095
其中,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的情况下,
生成所述数据的CRC校验码
Figure GSA00000020999700111
其中,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校验码
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700121
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
该实施例实现了在i>m,且用于计算的LFSR为LFSR1的情况下,根据数据的位数i生成该数据的CRC码,无需在数据前添加0进行计算即可实现对数据的校验,减轻了寄存器的负担。
优选地,由第二生成多项式矩阵Fi、初始CRC寄存器值X(0)和数据生成数据的CRC校验码包括:生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR2的情况下,
生成数据的CRC校验码
Figure GSA00000020999700122
其中,D是数据[d0,d1,...,di-2,di-1]T
Figure GSA00000020999700123
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]是生成多项式,Im为单位矩阵。
该实施例实现了在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比特码字,同时用
Figure GSA00000020999700131
表示两个矩阵相同位置的元素进行异或运算,用表示位与运算,在本发明中
Figure GSA00000020999700133
具体表示一个矩阵的每一行的元素分别与另一个列矩阵的每个元素进行与运算,与运算的结果进行异或运算,得到一个列矩阵,根据CRC计算原理,可得方程组:
x m - 1 ′ = ( p m - 1 ⊕ x m - 1 ) ⊕ x m - 2 x m - 2 ′ = ( p m - 2 ⊕ x m - 1 ) ⊕ x m - 3 · · · x 1 ′ = ( p 1 ⊕ x m - 1 ) ⊕ x 0 x 0 ′ = ( p 0 ⊕ x m - 1 ) ⊕ d
根据该方程组,可得并行输入i位数据的CRC码计算公式:
X ( i ) = [ F i ⊗ X ( 0 ) ] ⊕ ( [ F i - 1 ⊗ G , · · · , F ⊗ G , F ] ) ⊗ [ d 0 , d 1 , · · · , d i - 2 , d i - 1 ] T )
= F i ⊗ X ( 0 ) ⊕ D - - - ( 1 )
其中G=[0,0,...,0,1]T,向量D=[0,0,...,0,d0,d1,...,di-2,di-1]T,D的行数为m,Fi为F的i次幂,
Figure GSA00000020999700144
同理,在i≤m,且用于计算的LFSR为LFSR2的情况下,计算CRC码计算公式为:
X ( i ) = F i ⊗ ( X ( 0 ) ⊕ D ) .
其中,D=[d0,d1,...,di-2,di-1,0,0,...,0]T,D的行数为m,其它参量与LFSR为LFSR1的情况相同。
当i>m时,下式依然成立:
X ( i ) = [ F i ⊗ X ( 0 ) ] ⊕ ( [ F i - 1 ⊗ G , · · · , F ⊗ G , G ] ) ⊗ [ d 0 , d 1 , · · · , d i - 2 , d i - 1 ] T ) - - - ( 2 )
设列向量
Figure GSA00000020999700152
hi(j)为向量hi的第j个元素,j为向量hi的行号,0≤j≤m-1,此处的m代表i个元素中的倒数m个,根据生成多项式性质可知:
Figure GSA00000020999700153
根据上式可知矩阵
Figure GSA00000020999700154
具有如下的形式:
[ F i - 1 ⊗ G , F i - 2 ⊗ G , · · · , G ] = [ 0 ( m - i ) * i I i ] - - - ( 3 )
其中Ii为单位矩阵,当i=m时,得:
[ F i - 1 ⊗ G , F i - 2 ⊗ G , · · · , G ] = I i - - - ( 4 )
而对于生成多项式矩阵Fi有如下的形式:
F i = [ F i - 1 ⊗ P , F i - 2 ⊗ P , · · · , F i - m ⊗ P ] - - - ( 5 )
其中,生成多项式P=[pm-1,pm-2,...,p]。
将式(4)与(5)代入式(2)得:
X ( i ) = [ F i ⊗ X ( 0 ) ] ⊕ ( [ F i - m - 1 ⊗ P , · · · , F ⊗ P , P | I m ] ) ⊗ [ d 0 , d 1 , · · · , d i - 2 , d i - 1 ] T ) - - - ( 6 )
因此可得,对于LFSR1型,计算CRC码的公式为:
X ( i ) = F i ⊗ X ( 0 ) ⊕ L m * i ⊗ D - - - ( 7 )
其中,|Im是指补足单位矩阵Im,使
Figure GSA00000020999700163
构成m*i矩阵。Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0]。
同理,对于LFSR2型,计算CRC码的公式为:
X ( i ) = F i ⊗ ( X ( 0 ) ⊕ L m * i ⊗ D ) - - - ( 8 )
其中,
Figure GSA00000020999700165
Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,...,P1,P0],在运算过程中
Figure GSA00000020999700166
的优先级高于
Figure GSA00000020999700167
步骤S802,利用合并共用项算法优化上述得到的计算公式。
X(i)是一个列矩阵,且该列矩阵的每一项为多个参数的异或运算,因此,可以利用合并共用项算法使逻辑层次最小化,找到尽量多的能共用的异或逻辑,缩短计算时间,优化性能。
例如,矩阵X(i)对应的方程组为:
K ( X ) K 1 = X 1 ⊕ X 3 ⊕ X 5 K 2 = X 1 ⊕ X 2 ⊕ X 3 ⊕ X 4 ⊕ X 5 K 3 = X 2 ⊕ X 5 K 4 = X 2 ⊕ X 3 ⊕ X 4 ⊕ X 5 K 5 = X 1 ⊕ X 2 ⊕ X 4
图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位数据为例对本发明实施例的实现过程进行说明。
经计算得到与数据位数相关的生成多项式矩阵和转换矩阵为:
F 36 = 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1
Figure GSA00000020999700191
将上面两个矩阵代入LFSR2计算公式
Figure GSA00000020999700192
得:
X 15 ′ = d 34 ⊕ d 33 ⊕ d 32 ⊕ d 31 ⊕ d 30 ⊕ d 29 ⊕ d 28 ⊕ d 27 ⊕ d 26 ⊕ d 25 ⊕ d 24 ⊕ d 22 ⊕ d 20
⊕ d 20 ⊕ d 19 ⊕ d 18 ⊕ d 17 ⊕ d 16 ⊕ d 15 ⊕ X 15 ⊕ d 14 ⊕ X 14 ⊕ d 13 ⊕ X 13 ⊕ d 12 ⊕ X 12
⊕ d 11 ⊕ X 11 ⊕ d 10 ⊕ X 10 ⊕ d 9 ⊕ X 9 ⊕ d 6 ⊕ X 6 ⊕ d 5 ⊕ X 5 ⊕ d 4 ⊕ X 4 ⊕ d 3 ⊕ X 3
⊕ d 2 ⊕ X 2 ⊕ d 1 ⊕ X 1 ⊕ d 0 ⊕ X 0
X 14 ′ = d 34 ⊕ d 23 ⊕ d 22 ⊕ d 21 ⊕ d 20 ⊕ d 8 ⊕ X 8 ⊕ d 6 ⊕ X 6
X 13 ′ = d 33 ⊕ d 22 ⊕ d 21 ⊕ d 20 ⊕ d 19 ⊕ d 7 ⊕ X 7 ⊕ d 5 ⊕ X 5
X 12 ′ = d 32 ⊕ d 21 ⊕ d 20 ⊕ d 19 ⊕ d 18 ⊕ d 6 ⊕ X 6 ⊕ d 4 ⊕ X 4
X 11 ′ = d 35 ⊕ d 31 ⊕ d 20 ⊕ d 19 ⊕ d 18 ⊕ d 17 ⊕ d 5 ⊕ X 5 ⊕ d 3 ⊕ X 3
X 10 ′ = d 34 ⊕ d 30 ⊕ d 19 ⊕ d 18 ⊕ d 17 ⊕ d 16 ⊕ d 4 ⊕ X 4 ⊕ d 2 ⊕ X 2
X 9 ′ = d 33 ⊕ d 29 ⊕ d 18 ⊕ d 17 ⊕ d 16 ⊕ d 15 ⊕ X 15 ⊕ d 3 ⊕ X 3 ⊕ d 1 ⊕ X 1
X 8 ′ = d 32 ⊕ d 28 ⊕ d 17 ⊕ d 16 ⊕ d 15 ⊕ X 15 ⊕ d 14 ⊕ X 14 ⊕ d 2 ⊕ X 2 ⊕ d 0 ⊕ X 0
X 7 ′ = d 31 ⊕ d 27 ⊕ d 16 ⊕ d 15 ⊕ X 15 ⊕ d 14 ⊕ X 14 ⊕ d 13 ⊕ X 13 ⊕ d 1 ⊕ X 1
X 6 ′ = d 30 ⊕ d 26 ⊕ d 15 ⊕ X 15 ⊕ d 14 ⊕ X 14 ⊕ d 13 ⊕ X 13 ⊕ d 12 ⊕ X 12 ⊕ d 0 ⊕ X 0
X 5 ′ = d 29 ⊕ d 25 ⊕ d 14 ⊕ X 14 ⊕ d 13 ⊕ X 13 ⊕ d 12 ⊕ X 12 ⊕ d 11 ⊕ X 11
X 4 ′ = d 28 ⊕ d 24 ⊕ d 13 ⊕ X 13 ⊕ d 12 ⊕ X 12 ⊕ d 11 ⊕ X 11 ⊕ d 10 ⊕ X 10
X 3 ′ = d 27 ⊕ d 23 ⊕ d 12 ⊕ X 12 ⊕ d 11 ⊕ X 11 ⊕ d 10 ⊕ X 10 ⊕ d 9 ⊕ X 9
X 2 ′ = d 26 ⊕ d 22 ⊕ d 11 ⊕ X 11 ⊕ d 10 ⊕ X 10 ⊕ d 9 ⊕ X 9 ⊕ d 8 ⊕ X 8
X 1 ′ = d 35 ⊕ d 34 ⊕ d 33 ⊕ d 32 ⊕ d 31 ⊕ d 30 ⊕ d 29 ⊕ d 28 ⊕ d 27 ⊕ d 26 ⊕ d 24 ⊕ d 22 ⊕ d 21 ⊕ d 20
⊕ d 19 ⊕ d 18 ⊕ d 17 ⊕ d 16 ⊕ d 15 ⊕ X 15 ⊕ d 14 ⊕ X 14 ⊕ d 13 ⊕ X 13 ⊕ d 12 ⊕ X 12 ⊕ d 11 ⊕ X 11
⊕ d 8 ⊕ X 8 ⊕ d 7 ⊕ X 7 ⊕ d 6 ⊕ X 6 ⊕ d 5 ⊕ X 5 ⊕ d 4 ⊕ X 4 ⊕ d 3 ⊕ X 3 ⊕ d 2 ⊕ X 2 ⊕ d 1
⊕ X 1 ⊕ d 0 ⊕ X 0
X 0 ′ = d 35 ⊕ d 34 ⊕ d 33 ⊕ d 32 ⊕ d 31 ⊕ d 30 ⊕ d 29 ⊕ d 28 ⊕ d 27 ⊕ d 26 ⊕ d 25 ⊕ d 23 ⊕ d 21 ⊕ d 20
⊕ d 19 ⊕ d 18 ⊕ d 17 ⊕ d 16 ⊕ d 15 ⊕ X 15 ⊕ d 14 ⊕ X 14 ⊕ d 13 ⊕ X 13 ⊕ d 12 ⊕ X 12 ⊕ d 11 ⊕ X 11
⊕ d 10 ⊕ X 10 ⊕ d 7 ⊕ X 7 ⊕ d 6 ⊕ X 6 ⊕ d 5 ⊕ X 5 ⊕ d 4 ⊕ X 4 ⊕ d 3 ⊕ X 3 ⊕ d 2 ⊕ X 2 ⊕ d 1
⊕ X 1 ⊕ d 0 ⊕ X 0
利用合并共用项算法优化上述计算公式,得到的表达式为:
X 15 ′ = ( d 20 ⊕ d 25 ) ⊕ [ d 24 ⊕ ( d 19 ⊕ d 18 ) ] ⊕ [ ( d 17 ⊕ d 16 ) ⊕ ( d 28 ⊕ d 32 ) ] ⊕ [ ( d 27 ⊕ d 31 )
⊕ ( d 29 ⊕ d 33 ) ] ⊕ [ ( d 30 ⊕ d 34 ) ⊕ ( d 22 ⊕ d 26 ) ] ⊕ [ ( d 0 ⊕ X 0 ) ⊕ ( d 9 ⊕ X 9 ) ]
⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 12 ⊕ X 12 ) ] ⊕ [ ( d 13 ⊕ X 13 ) ⊕ ( d 14 ⊕ X 14 ) ] } ⊕ { { [ ( d 1 ⊕ X 1 )
⊕ ( d 15 ⊕ X 15 ) ] ⊕ [ ( d 3 ⊕ X 3 ) ⊕ ( d 5 ⊕ X 5 ) ] } ⊕ { [ ( d 2 ⊕ X 2 ) ⊕ ( d 4 ⊕ X 4 ) ]
⊕ [ ( d 6 ⊕ X 6 ) ⊕ ( d 10 ⊕ X 10 ) ] } }
X 14 ′ = ( d 23 ⊕ d 34 ) ⊕ [ d 22 ⊕ ( d 20 ⊕ d 21 ) ] ⊕ [ ( d 6 ⊕ X 6 ) ⊕ ( d 8 ⊕ X 8 ) ]
X 13 ′ = ( d 22 ⊕ d 33 ) ⊕ [ d 19 ⊕ ( d 20 ⊕ d 21 ) ] ⊕ [ ( d 7 ⊕ X 7 ) ⊕ ( d 5 ⊕ X 5 ) ]
X 12 ′ = ( d 20 ⊕ d 21 ) ⊕ [ d 32 ⊕ ( d 18 ⊕ d 19 ) ] ⊕ [ ( d 6 ⊕ X 6 ) ⊕ ( d 4 ⊕ X 4 ) ]
X 11 ′ = ( d 17 ⊕ d 20 ) ⊕ [ ( d 18 ⊕ d 19 ) ⊕ ( d 31 ⊕ d 35 ) ] ⊕ [ ( d 3 ⊕ X 3 ) ⊕ ( d 5 ⊕ X 5 ) ]
X 10 ′ = ( d 16 ⊕ d 17 ) ⊕ [ ( d 18 ⊕ d 19 ) ⊕ ( d 30 ⊕ d 34 ) ] ⊕ [ ( d 2 ⊕ X 2 ) ⊕ ( d 4 ⊕ X 4 ) ]
X 9 ′ = ( d 29 ⊕ d 33 ) ⊕ [ d 18 ⊕ ( d 16 ⊕ d 17 ) ] ⊕ { [ ( d 3 ⊕ X 3 ) ⊕ ( d 1 ⊕ X 1 ) ] ⊕ ( d 15 ⊕ X 15 ) }
X 8 ′ = [ ( d 16 ⊕ d 17 ) ⊕ ( d 28 ⊕ d 32 ) ] ⊕ [ ( d 0 ⊕ X 0 ) ⊕ ( d 2 ⊕ X 2 ) ] ⊕ [ ( d 14 ⊕ X 14 ) ⊕ ( d 15 ⊕ X 15 ) ]
X 7 ′ = [ d 16 ⊕ ( d 27 ⊕ d 31 ) ] ⊕ { [ ( d 1 ⊕ X 1 ) ⊕ ( d 15 ⊕ X 15 ) ] ⊕ [ ( d 13 ⊕ X 13 ) ⊕ ( d 14 ⊕ X 14 ) ] }
X 6 ′ = ( d 26 ⊕ d 30 ) ⊕ [ ( d 12 ⊕ X 12 ) ⊕ ( d 15 ⊕ X 15 ) ] ⊕ { ( d 0 ⊕ X 0 ) ⊕ [ ( d 13 ⊕ X 13 )
⊕ ( d 14 ⊕ X 14 ) ] }
X 5 ′ = ( d 25 ⊕ d 29 ) ⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 12 ⊕ X 12 ) ] ⊕ [ ( d 13 ⊕ X 13 ) ⊕ ( d 14 ⊕ X 14 ) ] }
X 4 ′ = ( d 24 ⊕ d 28 ) ⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 12 ⊕ X 12 ) ] ⊕ [ ( d 10 ⊕ X 10 ) ⊕ ( d 13 ⊕ X 13 ) ] }
X 3 ′ = ( d 23 ⊕ d 27 ) ⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 12 ⊕ X 12 ) ] ⊕ [ ( d 10 ⊕ X 10 ) ⊕ ( d 9 ⊕ X 9 ) ] }
X 2 ′ = ( d 22 ⊕ d 22 ) ⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 8 ⊕ X 8 ) ] ⊕ [ ( d 10 ⊕ X 10 ) ⊕ ( d 9 ⊕ X 9 ) ] }
X 1 ′ = ( d 24 ⊕ d 35 ) ⊕ [ ( d 28 ⊕ d 32 ) ⊕ ( d 22 ⊕ d 26 ) ] ⊕ { [ ( d 19 ⊕ d 18 ) ⊕ ( d 30 ⊕ d 34 ) ]
⊕ [ ( d 27 ⊕ d 31 ) ⊕ ( d 29 ⊕ d 33 ) ] } ⊕ [ ( d 17 ⊕ d 16 ) ⊕ ( d 20 ⊕ d 21 ) ] ⊕ [ ( d 6 ⊕ X 6 )
⊕ ( d 8 ⊕ X 8 ) ] ⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 12 ⊕ X 12 ) ] ⊕ [ ( d 13 ⊕ X 13 ) ⊕ ( d 14 ⊕ X 14 ) ] }
⊕ { { [ ( d 1 ⊕ X 1 ) ⊕ ( d 15 ⊕ X 15 ) ] ⊕ [ ( d 3 ⊕ X 3 ) ⊕ ( d 5 ⊕ X 5 ) ] ⊕ { [ ( d 2 ⊕ X 2 )
⊕ ( d 4 ⊕ X 4 ) ] ⊕ [ ( d 0 ⊕ X 0 ) ⊕ ( d 7 ⊕ X 7 ) ] } }
X 0 ′ = [ ( d 17 ⊕ d 16 ) ⊕ ( d 28 ⊕ d 32 ) ] ⊕ [ ( d 25 ⊕ d 35 ) ⊕ ( d 23 ⊕ d 26 ) ] ⊕ { [ ( d 19 ⊕ d 18 )
⊕ ( d 30 ⊕ d 34 ) ] ⊕ [ ( d 27 ⊕ d 31 ) ⊕ ( d 29 ⊕ d 33 ) ] } ⊕ ( d 20 ⊕ d 21 ) ⊕ [ ( d 0 ⊕ X 0 )
⊕ ( d 7 ⊕ X 7 ) ] ⊕ { [ ( d 11 ⊕ X 11 ) ⊕ ( d 12 ⊕ X 12 ) ] ⊕ [ ( d 13 ⊕ X 13 ) ⊕ ( d 14 ⊕ X 14 ) ] }
⊕ { { [ ( d 1 ⊕ X 1 ) ⊕ ( d 15 ⊕ X 15 ) ] ⊕ [ ( d 3 ⊕ X 3 ) ⊕ ( d 5 ⊕ X 5 ) ] } ⊕ { [ ( d 2 ⊕ X 2 )
⊕ ( d 4 ⊕ X 4 ) ] ⊕ [ ( d 6 ⊕ X 6 ) ⊕ ( d 10 ⊕ X 10 ) ] } }
将本次待计算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校验码发送给接收方,用于所述接收方对所述数据进行校验。
2.根据权利要求1所述的方法,其特征在于,由所述第二生成多项式矩阵Fi、所述初始CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码包括:
所述生成多项式的阶数为m,在i≤m,且用于计算的线性反馈移位寄存器LFSR为LFSR1的情况下,
生成所述数据的CRC校验码
Figure FSB0000115777070000011
其中D=[0,0,…,0,d0,d1,…,di-2,di-1]T,[d0,d1,…,di-2,di-1]T是所述数据,D的行数为m,
Figure FSB0000115777070000012
表示两个矩阵相同位置的元素进行异或运算,
Figure FSB0000115777070000013
表示位与运算。
3.根据权利要求1所述的方法,其特征在于,由所述第二生成多项式矩阵Fi、所述初始CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码包括:
所述生成多项式的阶数为m,在i≤m,且用于计算的LFSR为LFSR2的情况下,
生成所述数据的CRC校验码
Figure FSB0000115777070000021
其中,D=[d0,d1,…,di-2,di-1,0,0,…,0]T,[d0,d1,…,di-2,di-1]T是所述数据,D的行数为m,表示两个矩阵相同位置的元素进行异或运算,
Figure FSB0000115777070000023
表示位与运算。
4.根据权利要求1所述的方法,其特征在于,由所述第二生成多项式矩阵Fi、所述初始CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码包括:
所述生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR1的情况下,
生成所述数据的CRC校验码 X ( i ) = F i ⊗ X ( 0 ) ⊕ L m * i ⊗ D
其中,D是所述数据[d0,d1,…,di-2,di-1]T L m * i = [ F m - i - 1 ⊗ P , F m - i - 2 ⊗ P , . . . , P | I m ] m * i , Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,…,P1,P0]是所述生成多项式,Im为单位矩阵,
Figure FSB0000115777070000026
表示两个矩阵相同位置的元素进行异或运算,
Figure FSB0000115777070000027
表示位与运算。
5.根据权利要求1所述的方法,其特征在于,由所述第二生成多项式矩阵Fi、所述初始CRC寄存器值X(0)和所述数据生成所述数据的CRC校验码包括:
所述生成多项式的阶数为m,在i>m,且用于计算的LFSR为LFSR2的情况下,
生成所述数据的CRC校验码 X ( i ) = F i ⊗ ( X ( 0 ) ⊕ ( L m * i ⊗ D ) )
其中,D是所述数据[d0,d1,…,di-2,di-1]T L m * i = [ F m - i - 1 ⊗ P , F m - i - 2 ⊗ P , . . . , P | I m ] m * i , Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,…,P1,P0]是所述生成多项式,Im为单位矩阵,
Figure FSB0000115777070000031
表示两个矩阵相同位置的元素进行异或运算,
Figure FSB0000115777070000032
表示位与运算。
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校验码发送给接收方,用于所述接收方对所述数据进行校验。
9.根据权利要求8所述的装置,其特征在于,所述生成模块包括:
第一生成子模块,用于在所述生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR1的情况下,
生成所述数据的CRC校验码 X ( i ) = F i ⊗ X ( 0 ) ⊕ L m * i ⊗ D
其中,D是所述数据[d0,d1,…,di-2,di-1]T L m * i = [ F m - i - 1 ⊗ P , F m - i - 2 ⊗ P , . . . , P | I m ] m * i , Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,…,P1,P0]是所述生成多项式,Im为单位矩阵,表示两个矩阵相同位置的元素进行异或运算,
Figure FSB0000115777070000044
表示位与运算。
10.根据权利要求8所述的装置,其特征在于,所述生成模块包括:
第二生成子模块,用于在所述生成多项式的阶数为m,i>m,且用于计算的LFSR为LFSR2的情况下,
生成所述数据的CRC校验码 X ( i ) = F i ⊗ ( X ( 0 ) ⊕ L m * i ⊗ D )
其中,D是所述数据[d0,d1,…,di-2,di-1]T L m * i = [ F m - i - 1 ⊗ P , F m - i - 2 ⊗ P , . . . , P | I m ] m * i , Fk为F的k次幂,0≤k≤m-i-1,P=[Pm-1,Pm-2,…,P1,P0]是所述生成多项式,Im为单位矩阵。
CN201010114360.6A 2010-02-23 2010-02-23 数据的校验处理方法及装置 Expired - Fee Related CN101795175B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201010114360.6A CN101795175B (zh) 2010-02-23 2010-02-23 数据的校验处理方法及装置
EP10846364.7A EP2533450B1 (en) 2010-02-23 2010-08-20 Method and device for data check processing
PCT/CN2010/076202 WO2011103741A1 (zh) 2010-02-23 2010-08-20 数据的校验处理方法及装置
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)

* Cited by examiner, † Cited by third party
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
CN108432312B (zh) 2015-12-31 2022-08-02 日本电气株式会社 用于传输和接收上行链路信息的方法和装置
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US20120317466A1 (en) 2012-12-13
CN101795175A (zh) 2010-08-04
US8843810B2 (en) 2014-09-23
EP2533450B1 (en) 2015-08-12
EP2533450A4 (en) 2014-01-22
EP2533450A1 (en) 2012-12-12
WO2011103741A1 (zh) 2011-09-01

Similar Documents

Publication Publication Date Title
CN101795175B (zh) 数据的校验处理方法及装置
Hou et al. BASIC codes: Low-complexity regenerating codes for distributed storage systems
KR101355761B1 (ko) 통신 시스템의 다중 필드 기반 코드 발생기 및 디코더
JP5231218B2 (ja) さまざまな符号クラスの符号化および復号化への応用を有するインプレース変換
CN1836394B (zh) 在移动通信系统中编码/解码分块低密度奇偶校验码的装置和方法
US11165448B2 (en) Low latency polar coding and decoding by merging of states of the polar code graph
CN107239362B (zh) 一种并行crc校验码的计算方法及系统
JPWO2004001701A1 (ja) 符号演算装置
EP3639375B1 (en) Polar coder with logical three-dimensional memory, communicaton unit, integrated circuit and method therefor
KR101298745B1 (ko) 데이터를 복호화 및 부호화하는 방법 및 장치
US20050166122A1 (en) System and method for generating cyclic codes for error control in digital communications
CN101296053A (zh) 计算循环冗余校验码之方法及系统
CN1636324A (zh) 纠错解码器的钱搜索单元
CN114389752A (zh) 循环冗余校验码生成方法、装置、设备、介质和程序产品
US8347190B2 (en) 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
CN111130562A (zh) Crc并行计算方法及系统
CN115858230A (zh) 最大距离可分离码的构造、修复方法及相关装置
US20100031126A1 (en) System and method for using the universal multipole for the implementation of a configurable binary bose-chaudhuri-hocquenghem (BCH) encoder with variable number of errors
Fu et al. Overhead-free in-place recovery scheme for XOR-based storage codes
KR102353983B1 (ko) 순환 중복 검사(crc)에서 알고리즘의 배열 방법
CN111600613B (zh) 一种校验方法、装置、译码器、接收机及计算机存储介质
CN114443347B (zh) 一种可配置crc码计算方法
CN110603759B (zh) 统一的纠错和检错码生成器
Sirbu et al. On Some Characteristics of a Novel Lossless Data Compression Algorithm based on Polynomial Codes

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