CN114303320A - 使用逆crc生成器多项式进行解码的循环冗余校验crc - Google Patents
使用逆crc生成器多项式进行解码的循环冗余校验crc Download PDFInfo
- Publication number
- CN114303320A CN114303320A CN202080061053.8A CN202080061053A CN114303320A CN 114303320 A CN114303320 A CN 114303320A CN 202080061053 A CN202080061053 A CN 202080061053A CN 114303320 A CN114303320 A CN 114303320A
- Authority
- CN
- China
- Prior art keywords
- crc
- bits
- bit sequence
- input
- sequence
- 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
- 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/0057—Block codes
-
- 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/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/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
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/617—Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials
-
- 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
-
- 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/098—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using 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/11—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 using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
- H03M13/1168—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal sub-matrices
-
- 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
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- 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)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Error Detection And Correction (AREA)
Abstract
一种循环冗余校验(CRC)解码器电路(300)包括:输入端,其用于从对输入位序列进行编码的预定义CRC生成器多项式接收具有输入位序列的输入流(303),该输入位序列包括信息位和CRC位;以及至少一个处理器(301),其被配置为执行输入位序列的CRC解码计算。至少一个处理器(301)被配置为:应用对输入位序列进行编码的预定义CRC生成器多项式的逆处理操作以产生数据集;从数据集计算CRC校验子;并确定CRC校验子是否包含指示CRC错误的任何1值位。
Description
技术领域
本发明的领域涉及循环冗余校验(CRC)电路、通信单元和CRC的计算方法。本发明的领域适用于但不限于当前和未来几代通信标准的信道编码。
背景技术
已知循环冗余校验(CRC)可以用于检测在信息位的序列从源传递到宿时是否已将任何错误引入到信息位的序列中。
源端CRC计算
在源端,对A信息位的序列a=[a0,al,a2,...,aA-1]执行CRC计算,以便生成L个奇偶校验位的序列p=[p0,p1,p2,...,pL-1]。
根据CRC生成器多项式,作为a的A个信息位的函数生成奇偶校验位的序列p。CRC生成器多项式通常在正在实施的通信标准中指定,诸如3GPP新无线电[1]的L=6位CRC生成器多项式:gCRC6(D)=[D6+D5+1]。值得注意的是,通信标准通常指定了规定CRC的生成的约束,而没有指定其可以如何实施。更具体地,通信标准通常只指定以系统形式执行计算,使得多项式a0DA+L-1+a1DA+L-2+…+aA-1DL+p0DL-1+p1DL-2+…+pL-2D1+pL-1当除以CRC生成器多项式时,在GF(2)中产生等于“0”的余数。
L个奇偶校验位的序列p通常附加到A信息位的序列a的末尾,以产生B=A+L个位的CRC编码序列
b=[b0,bl,b2,...,bB-1],其中
bk=ak,对于k=0,1,2,…A-1并且
bk=pk-A,对于k=A,A+1,A+2,…,A+L-1。
一些通信标准规定,在CRC计算之前,A信息位的序列a可以附加到L个1值位的序列的末尾,以生成包括L+A个位的扩展的信息位序列:
a′=[a′0,a′1,a′2,...,a′L+A-1],其中
a′k=1,对于k=0,1,2,…L-1并且
a′k=ak-L,对于k=L,L+1,L+2,…,L+A-1。
在这些情况下,L个奇偶校验位的序列p可以作为扩展的信息位序列a′的所有L+A个位的函数计算,而不是作为信息位序列a的A个位的函数计算。L个奇偶校验位的序列可以附加到A个信息位的序列a的末尾,以产生CRC编码序列:
B=A+L个位b=[b0,bl,b2,...,bB-1],如上。
在某些情况下,CRC编码序列b的位可以在源端进行加扰、交织和/或信道编码。
宿端CRC计算
在宿端,可以执行CRC计算以检测B=A+L个恢复的CRC编码位的序列中的错误,如果存在错误,它将与在源中获得的CRC编码位序列b不同。这里,恢复的CRC编码位序列可以表示L个恢复的奇偶校验位的序列附加到A个恢复的信息位的序列的末尾,如果存在错误,它将与在源中获得的奇偶校验位序列p和信息位序列a不同。
可以通过执行CRC计算来检测错误,以作为的A个恢复的信息位的函数获得L个计算出的奇偶校验位序列如果计算出的奇偶校验位序列与恢复的奇偶校验位序列不同,则已检测到错误。可替代地,可以通过执行CRC计算以作为的所有B=A+L个恢复的CRC编码位的函数获得L个计算出的奇偶校验位的序列来检测错误。在这种情况下,计算出的奇偶校验位序列成为CRC的校验子(如理解的那样)。如果该校验子不等于L个0值位的序列,则已检测到错误。请注意,标准通常不指定如何使用CRC来检测错误,允许实施者选择此处描述的方法或另一种方法。
在源通过将A信息位的序列a附加到L个1值位的序列的末尾来获得扩展的信息位序列a′的情况下,在宿中执行相同的扩展操作。更具体地,将A个恢复的信息位的序列附加到L个1值位的序列的末尾,以生成包括L+A个位的扩展的恢复的信息位序列:
在这些情况下,L个计算出的奇偶校验位的序列可以作为扩展的恢复的信息位序列的所有L+A个位的函数来计算,而不是作为恢复的信息位序列的A个位的函数计算。可替代地,B个恢复的CRC编码位的序列可以附加到L个1值位的序列的末尾,以生成包括L+B个位的扩展的恢复的CRC编码位序列:
在源对CRC编码序列b的位执行加扰、交织和/或信道编码的情况下,可以在宿中执行逆解扰、解交织和/或信道解码操作,以获得恢复的CRC编码位序列。在源中对CRC编码序列b的加扰仅影响其由奇偶校验位序列p提供的位的情况下,宿可以在CRC计算后对计算出的奇偶校验位序列应用逆加扰操作,而不是在CRC计算之前对恢复的CRC编码位序列应用逆加扰操作。
使用移位寄存器的CRC计算
现在参考图1,示出了源电路的L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]的已知移位寄存器实施方式100。CRC生成器多项式可以被解释为线性反馈移位寄存器101,如图1针对[1]的L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]所举例说明的。
该移位寄存器可以用于计算与K个输入位的序列s=[s0,s1,s2,…,sK-1]103相对应的L个奇偶校验位的序列p=[p0,p1,p2,...,pL-1]102,该K个输入位的序列可以由信息位序列a、扩展的信息位的序列a′、恢复的信息位序列恢复的CRC编码位序列恢复的扩展的信息位序列或恢复的扩展的CRC编码位序列提供。图1在104处示出了A=12个信息位的序列如何:
a=[0 1 1 0 0 1 1 1 0 1 1 0]可以转换为L=6个奇偶校验位的序列:
p=[1 0 0 1 0 1],其中K=A且s=a。这些奇偶校验位可以附加到信息位的序列a的末尾,以获得B=18个CRC编码位的序列:
b=[0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1]。
注意,某些应用可以采用CRC生成器多项式的逆,这可以通过由L减去其每个指数来获得。例如,L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]=[D6+D5+D0]的逆由下式给出:ginvCRC6(D)=[DL-6+DL-5+DL-0]=[D6+D+1]。
逆生成器多项式可以由逆线性反馈移位寄存器201表示,如图2针对L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]所举例说明的。
现在参见图2,示出了源电路的L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的已知移位寄存器实施方式200。
图2在204处示出了相同的A=12个信息位的序列如何:
来自图1的a=[0 1 1 0 0 1 1 1 0 1 1 0]可以转换为L=6个奇偶校验位的序列:
p=[1 0 0 1 1 1],其中K=A且s=a。
注意,这些奇偶校验位与图1的那些不同,因为逆生成器多项式ginvCRC6(D)=[D6+D+1]不同于生成器多项式gCRC6(D)=[D6+D5+1]。
使用生成器矩阵的CRC计算
生成器矩阵可以用于对K个输入位的序列s=[s0,s1,s2,…,sK-1]执行CRC计算,该K个输入位的序列可以由信息位序列a、扩展的信息位的序列a′、恢复的信息位序列恢复的CRC编码位序列恢复的扩展的信息位序列或恢复的扩展的CRC编码位序列提供。更具体地,L个奇偶校验位的序列p=[p0,p1,p2,…,pL-1]可以根据p=sG作为输入位序列s的函数生成,其中G是CRC的K×L生成器矩阵,矩阵乘法为在GF(2)中执行。生成器矩阵G的第K行作为在计算K个输入位的序列的CRC时产生奇偶校验位序列获得,其中第K位设置为1,并且所有其他位设置为0。例如,在L=6位CRC生成器多项式的情况下,gCRC6(D)=[D6+D5+1]用于计算K=12个输入位的序列的CRC,生成器矩阵由下式给出:
注意,在从上面的A=12个信息位的示例序列a=[0 1 1 0 0 1 1 1 0 1 1 0]中,第2、3、6、7、8、10和11位设置为1。在这种情况下,L=6个奇偶校验位的序列p=[1 0 0 1 01]可以作为该生成器矩阵的第2、3、6、7、8、10和11行的“异或”获得。
注意,当生成器矩阵应用于恢复的CRC编码位序列以获得校验子时,生成器矩阵表现为奇偶校验矩阵。在从上面的B=18个CRC编码位的示例序列b=[0 1 1 0 0 1 1 10 1 1 0 1 0 0 1 0 1]中,第2、3、6、7、8、10、11、13、16、18位设置为1。如可以预期的,校验子可以作为K=18个输入位的生成器矩阵的第2、3、6、7、8、10、11、13、16和18行的“异或”获得,该生成器矩阵由下式给出:
可以观察到,在对应于特定数量的K′个输入位的生成器矩阵G中,最后K行等于对应于K个输入位的生成器矩阵G,其中K≤K′。例如,上面K=18的生成器矩阵G的最后12行等于上面K=12的生成器矩阵G。
在CRC编码序列b的位在源中交织的情况下,宿可以在应用对应的解交织操作以获得恢复的CRC编码位序列之后使用生成器矩阵G执行CRC计算。可替代地,生成器矩阵G的行可以被对应地交织并且用于基于恢复的CRC编码位序列的交织版本来计算CRC。例如,这使得能够在3GPP新无线电[1]的物理下行链路控制信道(PDCCH)中的盲解码期间提前终止极性解码[2]。
总之,已知CRC计算可以以多种方式等效地描述,包括生成器多项式,诸如:gCRC6(D)=[D6+D5+1];线性反馈移位寄存器,诸如101;或者生成器矩阵G,诸如上面的示例。
并行处理可以用于实施具有低延迟的CRC计算。这里,一组两个或更多个并行处理器可以在控制器的指导下操作,以一次处理两个或更多个位并计算一组寄存器内的对应的CRC位。在一些已知的实施方式中,处理器可以执行位与生成器多项式的二进制表示的乘法[3]。然而,与例如“异或”操作相比,乘法是相对复杂的操作,并且存在对改进的CRC方法的需要,例如在使用并行处理时。
发明内容
本发明提供了一种使用处理进行低延迟CRC计算的方法。特别地,本发明详述了存储器映射并引入了消除对存储器和处理器之间的置换网络的需要的查找表(LUT)。在从属权利要求中阐述了本发明的特定实施例。参考下文描述的实施例,本发明的这些和其他方面将变得显而易见并被阐明。
在本发明的第一方面中,一种循环冗余校验CRC解码器电路包括:输入端,其用于从对输入位序列进行编码的预定义CRC生成器多项式接收具有输入位序列的输入流,输入位序列包括信息位和CRC位;以及至少一个处理器,其被配置为执行输入位序列的CRC解码计算。至少一个处理器被配置为:应用对输入位序列进行编码的预定义CRC生成器多项式的逆处理操作以产生数据集;从数据集计算CRC校验子;以及确定所述CRC校验子是否包含指示CRC错误的任何1值位。
在可选示例中,CRC解码器电路可以包括查找表LUT,其可操作地联接到至少一个处理器并且包括多个地址,其中多个地址中的至少一个被配置为存储与输入流的输入位对齐的CRC生成器矩阵的一个或多个行。以这种方式,并且由于输入流与CRC生成器矩阵的行对齐,可以在没有复杂路由的情况下获得单个奇偶校验位序列,该路由将需要使任何输入位能够与CRC生成器矩阵的任何行组合。
在可选示例中,至少一个处理器可以被配置为首先通过使用对齐的输入流的一个或多个位掩蔽存储在LUT中的CRC生成器矩阵的一个或多个行来将LUT数据与输入流组合。以这种方式,可以消除对计算的奇偶校验位没有贡献的生成器矩阵的行。
在可选示例中,CRC解码器电路还可以包括:查找表LUT,其可操作地联接到至少两个处理器并且包括多个地址,其中多个地址中的至少一个被配置为存储与输入流的输入位对齐的CRC生成器矩阵的两个或更多个行;其中至少两个处理器可以被配置为:首先将LUT数据与输入流组合以生成两个或更多个中间奇偶校验位序列;并且其次将两个或更多个中间奇偶校验位序列组合成单个奇偶校验位序列。以这种方式,可以通过使用并行处理来减少完成CRC计算所需的步骤的数量。
在可选示例中,存储在LUT中的CRC生成器矩阵的两个或更多个行可以通过零填充与输入位序列对齐。以这种方式,零填充重新定位输入位序列内的位,使得它们与CRC生成器矩阵的对应的行对齐。
在可选示例中,与存储在LUT中的CRC生成器矩阵的两个或更多个行对齐可以包括以下中的一个:至少两个处理器接收提供输入位序列长度的具有零填充的输入流;或者其中输入位序列具有第一长度,并且两个或更多个处理器中的至少一个对输入位序列进行零填充。以这种方式,输入位序列的位可以在P个并行处理器之间均匀分布,从而允许所有并行处理器以相同方式操作且任何处理器都不需要特殊的独立控制。
在可选示例中,存储在LUT中的CRC生成器矩阵中的行的数量等于或超过最大支持输入位序列长度(Kmax)除以一个或多个处理器的数量P。以这种方式,单个LUT可以用于启用任何支持的输入位序列长度的CRC处理,避免针对不同的输入位序列长度使用不同的CRC处理机制的需要。
在可选示例中,CRC解码器电路还可以包括控制器,该控制器可操作地联接并被配置为控制至少一个处理器和LUT。以这种方式,控制器可以协调并行处理器的操作和从LUT读取CRC生成器矩阵的行。
在可选示例中,生成两个或更多个中间奇偶校验位序列包括:进行倍数[K/P]次数据的第一组合,其中K是输入位序列的长度。以这种方式,处理输入序列的K个位所需的步骤的数量除以了并行处理器的数量,从而最小化处理步骤并最大化处理效率。
在可选示例中,两个或更多个中间奇偶校验位序列的第二组合被执行倍数[log2(P)]次以生成单个奇偶校验位序列,其中P是两个或更多个并行处理器的数量。以这种方式,处理输入序列的K个位所需的步骤的数量减少到并行处理器的数量的对数,从而最小化处理步骤并最大化处理效率。
在可选示例中,生成器矩阵(G)的行中的至少一个行中的L个位可以被填充零值位以将位序列增加到第二长度(L′)。以这种方式,可以将长度调整为更便于在常规存储器架构(诸如32位RAM)中存储的长度。
在本发明的第二方面中,描述了一种包括根据第一方面的CRC计算电路的通信单元。
在本发明的第三方面中,描述了一种用于循环冗余校验CRC的方法。该方法包括从对输入位序列进行编码的预定义CRC生成器多项式接收具有输入位序列的输入流该输入位序列包括信息位和CRC位;以及执行输入位序列的CRC解码计算。该方法还包括:应用对输入位序列进行编码的预定义CRC生成器多项式的逆处理操作以产生数据集;从数据集计算CRC校验子;以及确定CRC校验子是否包含指示CRC错误的任何1值位。
附图说明
将参考附图仅通过示例的方式描述本发明的进一步细节、方面和实施例。在附图中,相似的附图标记用于标识相似或功能类似的元件。图中的元件是为了简单和清楚而示出的并且不一定按比例绘制。
图1示出了源电路的L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]的已知移位寄存器实施方式,并提供了A=12个信息位的序列a=[0 1 1 0 0 1 1 1 0 1 1 0]可以如何转换为L=6个奇偶校验位的序列p=[1 0 0 1 0 1]的示例,其中K=A且s=a。
图2示出了源电路的L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的已知移位寄存器实施方式,并提供了A=12个信息位的序列a=[0 1 1 0 0 1 1 1 0 1 1 0]可以如何转换为L=6个奇偶校验位的序列p=[1 0 0 1 1 1]的示例,其中K=A且s=a。
图3示出了对于其中P=4的情况的本发明的示例实施例。
图4示出了在本发明的示例实施例中的对应于L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]的生成器矩阵G在LUT中的存储,其中:L′=8,Kmax=18且P=4。图4还提供了A=9个信息位的序列a=[1 1 0 1 1 0 0 1 1]可以如何转换为L=6个奇偶校验位的序列p=[0 00 1 0 1]的示例,其中:K=A且s=a。
图5示出了本发明的示例实施例中的控制器的操作的流程图。
图6示出了宿电路的L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的移位寄存器实施方式,其用于计算使用源电路的L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]生成的CRC编码位序列的校验子。图6还提供了B=18个CRC编码位的序列b=[0 1 1 0 0 1 1 1 01 1 0 1 0 0 1 1 1]可以如何转换为L=6个校验子位的序列的示例,其中K=B,s=b且
图7示出了在本发明的示例实施例中的对应于L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的逆生成器矩阵G′在LUT中的存储,其中L′=8,Kmax=18且P=4。图7还提供了B=15个CRC编码位的序列b=[1 1 0 1 1 0 0 1 1 00 0 1 0 1]可以如何转换为L=6个校验子位的序列的示例,其中K=B,s=b且
图8示出了根据本发明的一些示例实施例的可以在电子设备或无线通信单元中采用以执行CRC计算的典型计算系统。
图9示出了本发明的示例实施例中的控制器的操作的流程图,该控制器基于逆生成器矩阵G′进行操作。
具体实施方式
使用根据第一方面的生成器矩阵的CRC计算的并行处理
现在参考图3,示出了对于P=4的情况的本发明的示例循环冗余校验CRC计算电路300。本发明的第一方面旨在解决使用一组P个并行处理器301对输入位的连续序列有效地执行L位CRC计算的挑战。这里,并行处理器的数量采用固定值P,其可以在设计时选择为大于或等于“2”的任何值。相比之下,连续输入位序列s中的位的数量K∈[1,Kmax]可能在运行时变化,其中最大输入位序列长度Kmax可以在正在实施的标准中指定。如图3对于其中P=4的示例所示,并行处理器301由查找表(LUT)302、输入流303、寄存器组304和控制器305辅助。在其他示例中,并行处理器301的数量可以变化。
在CRC计算过程的步骤中,P个处理器301中的多个(并且在一些示例中,每个)能够计算一组L′位与掩蔽位的“与”307,并且然后计算所得一组L′位与另一组L′位的“异或”308,其中L′≥L可以选择为便于实施的值,诸如,例如8、16或32位。处理器中的多个还能够在一些步骤期间可选地仅执行这些“与”307和“异或”308操作中的一个或两者都不执行。在一些示例中,每个步骤可以对应于硬件实施方式中的至少一个时钟周期。在一些示例中,每个处理器可以是单指令多数据(SIMD)处理器中的处理单元。注意,不是使用“与”307操作,而是可以通过使用时钟或电源门控在掩蔽位设置为零时禁用一组L′位的传递以替代布置来实现掩蔽操作。此后,使用输入流303的两个或更多个位来掩蔽存储在LUT 302中的CRC生成器矩阵的对齐的两个或更多个行并且由此生成两个或更多个中间奇偶校验位序列包括禁用几组位的传递的此类时钟或电源门控技术。
本发明的一些示例利用以下观察:在对应于Kmax个输入位的生成器矩阵G中,最后K行等于对应于K个输入位的生成器矩阵G,其中K≤Kmax。因此,可以在图3的相同LUT 302的帮助下完成连续CRC计算过程,例如,LUT 302可以在只读存储器(ROM)或随机存取存储器(RAM)中实施。这里,在本发明的专用硬件实施方式中可以使用专门配置的ROM来存储LUT,而在使用通用处理器的实施方式中可以使用RAM来存储LUT 302。更具体地,该LUT 302可以存储对应于最大支持数量的输入位Kmax的生成器矩阵G的Kmax个行。
现在参考图4,在本发明的示例实施例中示出了对应于L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]的生成器矩阵G 400在LUT中的存储,其中L′=8,Kmax=18且P=4。图4还提供了A=9个信息位的序列a=[1 1 0 1 1 0 0 1 1]可以如何转换为L=6个奇偶校验位的序列p=[0 0 0 1 0 1]的示例,其中K=A且s=a。
如图所示,在一些示例中,存储在LUT中的生成器矩阵G的每一行中的L个位可以可选地用零值位401填充,以便将其长度增加到L′位。例如,在生成器矩阵G的行包括L=24个位的情况下,可以用8个零值位填充它们,以便将它们的长度增加到L′=32个位并允许它们存储在32位RAM中。在一些示例中,填充位可以被添加到生成器矩阵G的每一行的开头,而在其他示例中它们可以被添加到每一行的末尾。不是对存储在LUT中的生成器矩阵G的每一行应用填充,而是设想在替代布置中,可以在已经从LUT读取行之后,在其后续处理期间的某个时间点向行添加填充。
生成器矩阵G的Kmax个行存储在LUT 302中的几组P个行402中。在Kmax不能被P整除的情况下,可以对生成器矩阵G的顶部前置一组附加mod(-Kmax,P)个行403,以便将其行的数量扩展为P的倍数。这些附加行可以包含任何任意位值。来自(扩展的)生成器矩阵的[Kmax/P]个连续组P个行(和它们的填充位)402的每一个可以被连接并存储在LUT 302的连续地址中,其中第一组P个行可以被地址0索引。这里,[x]是大于或等于x的最小整数。
在替代布置中,生成器矩阵G的每个(填充的)行的位在它们被连接之前可以颠倒。在替代布置中,来自(扩展的)生成器矩阵G的数量[Kmax/P]个连续组P个行402可以存储在LUT 302内的其他地址中。图4示出了对于L′=8,Kmax=18且P=4的情况,对应于L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]的生成器矩阵G在LUT 302中的存储。
还参考图3,图3的输入流303用于提供连续输入位序列s。输入序列s的位由输入流303以与LUT 302中的生成器矩阵G的行的布置对齐的方式提供。如下文将详述的,这种对齐避免了对在输入流303、LUT 302和处理器301之间复杂路由的需要。更具体地,当输入流303提供它们时,通过将输入位序列s中的K个位布置成几组P个位404来实现对齐。在K不能被P整除的情况下,可以通过将一组mod(-K,P)个零值填充位405前置到输入位序列s以便将其长度扩展到P的倍数来实现对齐。来自(扩展的)输入位序列的数量[K/P]个连续组P个位404可以由输入流303在CRC计算过程的连续步骤中提供。注意,在一些布置中,来自输入流提供的(扩展的)输入位序列的[K/P]个连续组P个位(404)可以从RAM的连续地址读取,该RAM具有至少[Kmax/P]个地址的容量。
输入位s的K位序列的CRC计算过程在图3的控制器305的指导下使用如图5的流程图所示的两组步骤完成。可以在第一组[K/P]个步骤期间计算一组P个L个奇偶校验位的中间序列406。然后在第二组[log2(P)]个步骤期间,P个中间奇偶校验位序列406可以组合成期望的L个奇偶校验位的单个序列p=[p0,p1,p2,...,pL-1]102。
现在参考图5,参考图3和图4的前面的讨论,流程图500示出了根据本发明的示例实施例的控制器的操作。在第一组[K/P]个步骤期间,P个中间奇偶校验位序列406在图3的寄存器组304中累加。该寄存器组304包括P个寄存器,每个寄存器可以存储L′个位。控制器305内的计数器c 306在一组[K/P]个步骤511中的第一步骤开始时被初始化501为0值,并且该计数器c 306在此后的多个连续步骤开始时递增502。在多个(例如每个)步骤中,从LUT302的地址([Kmax/P]-[K/P]+c)读取503生成器矩阵G的一组P个行402。同时,由输入流303提供504来自(扩展的)输入位序列的具有索引c的一组P个位404。
在第一组[K/P]个步骤中的每一个中,由LUT 302提供的生成器矩阵G的P个行中的每一个被由输入流303提供的P个输入位中的对应的一个掩蔽505。更具体地,P个处理器301中的每一个通过将生成器矩阵G的对应的行中的L′个位中的每一个与对应的输入位进行“与”307来执行这些P个掩蔽操作中的对应的一个。由于输入流303中的P个输入位的布置与LUT 302中的生成器矩阵G的P个行之间的对齐,可以有利地执行该掩蔽而不需要输入流303、LUT 302和处理器301之间的复杂路由。
注意,在[K/P]个步骤的第一步骤中,在该示例中并且当c=0时,输入流303提供的一组P个输入位404在K不是P的倍数的情况下将包括mod(-K,P)个前置零值填充位405。如上所述,这些零值填充位用于实现对齐并用于掩蔽来自从LUT 302读取的生成器矩阵G的一组P个行402的对应的mod(-K,P)个行。在这种情况下,这些mod(-K,P)个被掩蔽的行将在生成器矩阵G的最后K个行之前,从而有利地确保只有生成器矩阵G的最后K个行将有机会影响P个中间奇偶校验位序列406。如上所述,存储在LUT 302中的生成器矩阵G中的Kmax个行的最后K个行等于对应于K个输入位的生成器矩阵G。以这种方式,即使K不是P的倍数,存储对应于Kmax个输入位的生成器矩阵G的相同LUT 302也可以有利地重新用于K的所有值。
在第一组[K/P]个步骤中的第一步骤506期间,当c=0时,在该步骤期间获得的生成器矩阵G的P个被掩蔽的行被写入507到寄存器组304,以便初始化P个中间奇偶校验位序列406。在多个后续步骤中,当0<c<[K/P]时,从寄存器组304读取508P个中间奇偶校验位序列406并将其提供给P个处理器301,其中它们与在该步骤中获得的生成器矩阵G的P个被掩蔽的行进行“异或”308 509。然后将结果写回510寄存器组304,以便累加P个中间奇偶校验位序列406。注意,计数器c 306的动作是按升序读取LUT 302中的[K/P]个地址,与输入流303以其自然顺序提供几组P个输入位404一致。然而,在其他布置中,输入流303可以以任何顺序提供几组P个输入位404并且可以以对应的顺序读取LUT的地址。图4提供了A=9个信息位的序列a=[1 1 0 1 1 0 0 1 1]303可以如何转换为一组P=4个中间奇偶校验位序列406的示例。
在第二组[log2(P)]个步骤514期间,寄存器组304用于将P个中间奇偶校验位序列406组合成单个期望奇偶校验位序列102。计数器c 306在一组[log2(P)]个步骤中的第一步骤开始时被初始化512为0值,并且该计数器c 306在此后的连续步骤开始时递增513。在0≤c<[log2(P)]时的多个步骤中,从P个寄存器的组304中的第一P/2c个寄存器读取515一组P/2c个中间奇偶校验位序列。一组P/2c个中间奇偶校验位序列然后被分解成两个子集,每个子集包括P/2c+1个中间奇偶校验位序列。然后将P/2c+1个中间奇偶校验位序列的第一子集中的每个中间奇偶校验位序列与来自P/2c+1个中间奇偶校验位序列的第二子集的对应的中间奇偶校验位序列进行“异或”308 516。所得一组P/2c+1个经“异或”308的中间奇偶校验位序列然后被写入517到P个寄存器的组304中的第一组P/2c+1个寄存器。
在第二组[log2(P)]个步骤中的最后一个步骤完成后,P个中间奇偶校验位序列将被组合成单个期望奇偶校验位序列,该序列存储在P个寄存器的组304中的第一寄存器中。然后可以通过移除零值填充位从寄存器的L′个位中提取518该奇偶校验位序列p=[p0,p1,p2,...,pL-1]的L个位。注意,在此处描述的方法中,P个中间奇偶校验位序列被连续组合到寄存器组304中的P个寄存器的第一寄存器中。
在替代布置中,P个中间奇偶校验位序列可以连续地组合到寄存器组304中的P个寄存器中的任何寄存器中。例如并且返回参考图4,提供了一组P=4个中间奇偶校验位序列406可以如何组合成L=6个奇偶校验位的序列p=[0 0 0 1 0 1]102的示例,其中K=A且s=a。
本发明的第一方面中的使用逆生成器矩阵的校验子计算及其相关联的并行处理
现在参考图6,示出了宿电路的L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的移位寄存器实施方式600,其用于计算使用源电路的L=6位CRC生成器多项式gCRC6(D)=[D6+D5+1]生成的CRC编码位序列的校验子。图6还提供了B=18个CRC编码位的序列b=[0 1 1 00 1 1 1 0 1 1 0 1 0 0 1 1 1]可以如何转换为L=6个校验子位的序列的示例,其中K=B,s=b且
在宿中,可以使用CRC生成器多项式的逆来执行恢复的CRC编码位序列的校验子的CRC计算,即使在源中使用常规CRC生成器多项式执行了CRC计算。更具体地,可以使用逆CRC生成器多项式的移位寄存器表示作为序列中的所有B=A+L个恢复的CRC编码位的函数来计算L个校验子位的序列然而,当使用逆CRC生成器多项式的移位寄存器表示来计算校验子时,必须以颠倒顺序处理序列的B个位。如果该校验子不等于L个0值位的序列,则已检测到错误。这在图6中被示出为L个奇偶校验位102的序列,其中逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]用于计算图1的无错误的B=18位CRC编码序列b的L=6位校验子其中:K=B,102并且s=reverse(b)是通过颠倒b 103中的位的顺序而获得的。注意,校验子包括L=6个零值位,确认b是无错误的。
可替代地,可以使用逆CRC生成器多项式的K×L生成器矩阵G来执行B个恢复的CRC编码位的序列的L位校验子的CRC计算,其中:K=B。这里,该生成器矩阵G中的行的顺序可以颠倒以获得逆生成器矩阵G′。这有利地允许以正向顺序而不是颠倒顺序处理序列的B个位。更具体地,可以将校验子计算为:在从上面的B=18个CRC编码位的示例序列b=[0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1]中,第2、3、6、7、8、10、11、13、16和18位被设置为1。如可以预期的,L=6位校验子可以作为K=18的逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的K×L逆生成器矩阵的第2、3、6、7、8、10、11、13、16和18行的“异或”获得,该逆生成器矩阵由下式给出:
可以观察到,在对应于特定数量K′个输入位的逆生成器矩阵G′中,前K行等于对应于K个输入位的逆生成器矩阵G′,其中K≤K′。例如,上面对于K=18的生成器矩阵G′的前12行等于对于K=12的逆生成器矩阵G′。这与对应于特定数量K′个输入位的常规生成器矩阵G形成对比,在常规生成器矩阵G中,是最后K行等于对应于K个输入位的生成器矩阵G,其中K≤K′。
在本发明的一些示例中,可以利用逆生成器矩阵G′的这个属性来适应图3的方案,使得恢复的CRC编码位序列在用作输入位序列s时不需要前置零值填充位405。这有利地允许以更方便的格式存储CRC编码位序列如果CRC校验成功则可以直接输出CRC编码位序列如上所述,图3的LUT 302存储对应于最大支持数量的输入位Kmax的逆生成器矩阵G′的Kmax个行,而图3的输入流303提供输入位序列s的K个位。然而,当Kmax不能被并行处理器的数量P整除时,不是对生成器矩阵的顶部前置一组mod(-Kmax,P)个任意行403,而是将这些附加行703追加到逆生成器矩阵G′的底部,如图7所示。
现在参考图7,根据本发明的示例实施例示出了对应于L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的逆生成器矩阵G′700在LUT中的存储,其中L′=8,Kmax=18且P=4。图7还提供了B=15个CRC编码位的序列b=[1 1 0 1 1 0 0 1 1 0 0 0 1 0 1]可以如何转换为L=6个校验子位的序列的示例,其中K=B,s=b且
如图7所示,当K不能被并行处理器的数量P整除时,不是将一组mod(-K,P)个零值填充位405前置到输入位序列s的开头,而是将这些附加填充位705追加到输入位序列s的末尾。如上所述,(扩展的)逆生成器矩阵的多个连续组P个行702存储在LUT 302的连续地址中,其中第一组P个行可以分别由地址0索引。同样,在CRC计算的连续步骤中,输入流303提供(扩展的)输入位序列的多个连续组P个位704。
图7示出了对于L′=8,Kmax=18且P=4的情况的对应于L=6位逆CRC生成器多项式ginvCRC6(D)=[D6+D+1]的逆生成器矩阵G′在LUT 302中的存储。如上所述,计数器c 306在一组[K/P]个步骤中的第一步骤开始时被初始化为0值,并且该计数器c 306在此后的多个(例如,每个)连续步骤开始时递增。然而,不是在每个步骤中从LUT 302的地址([Kmax/P]-[K/P]+c)读取生成器矩阵的一组P个行402,而是从地址c读取逆生成器矩阵G′的一组P个行702。同时,来自(扩展的)输入位序列的具有索引c的一组P个位704由输入流303提供,如上所述。除了这些差异之外,图7的方案的操作也可以如上所述进行。
更具体地,操作如图9的流程图所示进行,与图5的不同之处仅在于,用于从LUT读取生成器矩阵的一组P个行402的地址的计算903。
因此,图7提供了B=15个CRC编码位的序列a=[1 1 0 1 1 0 0 1 1 0 0 0 1 01]303可以如何转换为一组P=4个中间奇偶校验位序列706(其然后被组合成L=6个校验子位的序列)的示例,其中K=B,s=b且
图9示出了本发明的示例实施例中的控制器的操作的流程图,该控制器基于逆生成器矩阵G′进行操作。
应用
现在参考参照图8,示出了根据本发明的一些示例实施例的可用于实施CRC计算的典型计算系统800。这种类型的计算系统可以用在无线通信单元中。相关领域的技术人员还将认识到如何使用其他计算机系统或架构来实施本发明。计算系统800可以表示例如台式机、膝上型或笔记本计算机、手持计算设备(PDA、手机、掌上电脑等)、大型机、服务器、客户端或者对于给定应用或环境可能期望或适用的任何其他类型的专用或通用计算设备。计算系统800可以包括至少一个处理器,诸如处理器804。可以使用通用或专用处理引擎(诸如,例如微处理器、微控制器或其他控制逻辑)来实施处理器804。在该示例中,处理器804连接到总线802或其他通信介质。在一些示例中,计算系统800可以是包括存储在其中的用于实施CRC计算的可执行代码的非暂时性有形计算机程序产品。
计算系统800还可以包括主存储器808,诸如随机存取存储器(RAM)或其他动态存储器,以用于存储信息和将由处理器804执行的指令。主存储器808还可以用于在要由处理器804执行的指令的执行期间存储临时变量或其他中间信息。计算系统800同样可以包括只读存储器(ROM)或联接到总线802以用于存储处理器804的静态信息和指令的其他静态存储设备。
计算系统800还可包括信息存储系统810,其可以包括例如介质驱动器812和可移除存储接口820。介质驱动器812可以包括驱动器或支持固定或可移除存储介质的其他机制,诸如硬盘驱动器、软盘驱动器、磁带驱动器、光盘驱动器、压缩盘(CD)或数字视频驱动器(DVD)读或写驱动器(R或RW),或其他可移除或固定介质驱动器。存储介质818可以包括例如硬盘、软盘、磁带、光盘、CD或DVD、或由介质驱动器812读取和写入的其他固定或可移除介质。如这些示例所示,存储介质818可以包括具有存储在其中的特定计算机软件或数据的计算机可读存储介质。
在替代实施例中,信息存储系统810可以包括用于允许计算机程序或其他指令或数据被加载到计算系统800中的其他类似部件。此类部件可以包括例如可移除存储单元822和接口820,诸如程序盒和盒接口、可移除存储器(例如,闪存或其他可移除存储器模块)和存储器插槽,以及允许软件和数据从可移除存储单元818传递到计算系统800的其他可移除存储单元822和接口820。
计算系统800还可以包括通信接口824。通信接口824可以用于允许软件和数据在计算系统800和外部设备之间传递。通信接口824的示例可以包括调制解调器、网络接口(诸如以太网或其他NIC卡)、通信端口(诸如通用串行总线(USB)端口)、PCMCIA插槽和卡等。经由通信接口824传递的软件和数据是信号的形式,该信号可以是电子信号、电磁信号和光学信号或能够被通信接口824接收的其他信号。这些信号经由信道828提供给通信接口824。该信道828可以携带信号并且可以使用无线介质、线或缆线、光纤或其他通信介质来实施。信道的一些示例包括电话线、蜂窝电话链路、RF链路、网络接口、局域网或广域网以及其他通信信道。
在本文档中,术语“计算机程序产品”、“计算机可读介质”等通常可以用于指代介质,诸如,例如存储器808、存储设备818或存储单元822。这些和其他形式的计算机可读介质可以存储供处理器804使用以使处理器执行指定操作的至少一个指令。通常被称为“计算机程序代码”(可以以计算机程序或其他分组的形式分组)的此类指令在被执行时使得计算系统800能够执行本发明的实施例的功能。注意,代码可以直接使处理器执行指定操作,被编译以执行指定操作,和/或与其他软件、硬件和/或固件元素(例如,用于执行标准功能的库)组合以执行指定操作。
在使用软件实施元素的实施例中,软件可以存储在计算机可读介质中并且使用例如可移除存储驱动器822、驱动器812或通信接口824加载到计算系统800中。控制逻辑(在该示例中,软件指令或计算机程序代码)在由处理器804执行时使处理器804执行如本文所述的本发明的功能。
现在参考图9,在本发明的第二方面中并且参考图3和图4的前面的讨论但不必使用并行处理,流程图900示出了图7的根据本发明的示例实施例的控制器的操作。在第一组[K/P]个步骤期间,P个中间奇偶校验位序列706在图3的寄存器组304中累加。该寄存器组304包括P个寄存器,每个寄存器可以存储L′个位。控制器305内的计数器c 306在一组[K/P]个步骤911中的第一步骤开始时被初始化901为“0”值,并且该计数器c 306在此后的多个连续步骤开始时递增902。在多个(例如每个)步骤中,从LUT 302的地址(c)读取903生成器矩阵G的一组P个行702。同时,由输入流303提供904来自(扩展的)输入位序列的具有索引c的一组P个位704。
在第一组[K/P]个步骤中的每一个中,由LUT 302提供的生成器矩阵G的P个行中的每一个被由输入流303提供的P个输入位中的对应的一个掩蔽905。更具体地,P个处理器301中的每一个通过将生成器矩阵G的对应的行中的L′个位中的每一个与对应的输入位进行“与”307来执行这些P个掩蔽操作中的对应的一个。由于输入流303中的P个输入位的布置与LUT 302中的生成器矩阵G的P个行之间的对齐,可以有利地执行该掩蔽而不需要输入流303、LUT 302和处理器301之间的复杂路由。
注意,在[K/P]个步骤的第一步骤中,在该示例中并且当c=0时,输入流303提供的一组P个输入位704在K不是P的倍数的情况下将包括mod(-K,P)个前置零值填充位705。如上所述,这些零值填充位用于实现对齐并用于掩蔽来自从LUT 302读取的生成器矩阵G的一组P个行702的对应的mod(-K,P)个行。在这种情况下,这些mod(-K,P)个被掩蔽的行将在生成器矩阵G的最后K个行之前,从而有利地确保只有生成器矩阵G的最后K个行将有机会影响P个中间奇偶校验位序列706。如上所述,存储在LUT 302中的生成器矩阵G中的Kmax个行的最后K个行等于对应于K个输入位的生成器矩阵G。以这种方式,即使K不是P的倍数,存储对应于Kmax个输入位的生成器矩阵G的相同LUT 302也可以有利地重新用于K的所有值。
在第一组[K/P]个步骤中的第一步骤906期间,当c=0时,在该步骤期间获得的生成器矩阵G的P个被掩蔽的行被写入907到寄存器组304,以便初始化P个中间奇偶校验位序列706。在多个后续步骤中,当0<c<[K/P]时,从寄存器组304读取908P个中间奇偶校验位序列706并将其提供给P个处理器301,其中它们与在该步骤中获得的生成器矩阵G的P个被掩蔽的行进行“异或”308 909。然后将结果写回910寄存器组304,以便累加P个中间奇偶校验位序列706。注意,计数器c 306的动作是按升序读取LUT 302中的[K/P]个地址,与输入流303以其自然顺序提供几组P个输入位704一致。然而,在其他布置中,输入流303可以以任何顺序提供几组P个输入位704并且可以以对应的顺序读取LUT的地址。图7提供了B=15个CRC编码位的序列a=[1 1 0 1 1 0 0 1 1 0 0 0 1 0 1]303可以如何转换为一组P=4个中间奇偶校验位序列706的示例。
在第二组[log2(P)]个步骤914期间,寄存器组304用于将P个中间奇偶校验位序列706组合成单个期望奇偶校验位序列102。计数器c 306在一组[log2(P)]个步骤中的第一步骤开始时被初始化912为0值,并且该计数器c 306在此后的连续步骤开始时递增913。在0≤c<[log2(P)]时的多个步骤中,从P个寄存器的组304中的第一P/2c个寄存器读取915一组P/2c个中间奇偶校验位序列。一组P/2c个中间奇偶校验位序列然后被分解成两个子集,每个子集包括P/2c+1个中间奇偶校验位序列。然后将P/2c+1个中间奇偶校验位序列的第一子集中的每个中间奇偶校验位序列与来自P/2c+1个中间奇偶校验位序列的第二子集的对应的中间奇偶校验位序列进行“异或”308 916。所得一组P/2c+1个经“异或”308的中间奇偶校验位序列然后被写入917到P个寄存器的组304中的第一组P/2c+1个寄存器。
在第二组[log2(P)]个步骤中的最后一个步骤完成后,P个中间奇偶校验位序列将被组合成单个期望奇偶校验位序列,该序列存储在P个寄存器的组304中的第一寄存器中。然后可以通过移除零值填充位从寄存器的L′个位中提取918该奇偶校验位序列p=[p0,p1,p2,...,pL-1]的L个位。注意,在此处描述的方法中,P个中间奇偶校验位序列被连续组合到寄存器组304中的P个寄存器的第一寄存器中。
在替代布置中,P个中间奇偶校验位序列可以连续地组合到寄存器组304中的P个寄存器中的任何寄存器中。例如并且返回参考图7,提供了一组P=4个中间奇偶校验位序列706可以如何组合成L=6个校验子位的序列 的示例,其中K=B,s=b且
在前述说明书中,已经参考本发明的实施例的具体示例描述了本发明。然而,很明显,在不脱离所附权利要求中阐述的本发明的范围的情况下,可以在其中进行各种修改和改变,并且权利要求不限于上述特定示例。
如本文所讨论的连接可以是适合于例如经由中间设备从或至相应节点、单元或设备传递信号的任何类型的连接。因此,除非另有暗示或说明,否则连接可以例如是直接连接或间接连接。可以参考单个连接、多个连接、单向连接或双向连接来示出或描述连接。然而,不同的实施例可以改变连接的实施方式。例如,可以使用单独的单向连接而不是双向连接,反之亦然。此外,多个连接可以用串行或以时间复用方式传递多个信号的单个连接代替。同样,携带多个信号的单个连接可以分离成携带这些信号的子集的各种不同连接。因此,存在用于传递信号的多个选项。
本领域技术人员将认识到,本文描述的架构仅仅是示例性的,并且实际上可以实施实现相同功能的许多其他架构。
实现相同功能的部件的任何布置都被有效地“关联”,使得实现期望功能。因此,本文中组合以实现特定功能的任何两个部件可以被视为彼此“关联”,使得实现期望功能,而与架构或中间部件无关。同样,如此关联的任何两个部件也可以被视为彼此“可操作地连接”或“可操作地联接”以实现期望功能。
此外,本领域技术人员将认识到,上述操作之间的界限仅是说明性的。多个操作可以组合成单个操作,单个操作可以分布在附加操作中,并且操作可以在时间上至少部分重叠地执行。此外,替代实施例可以包括特定操作的多个实例,并且在各种其他实施例中可以改变操作的顺序。
本文参考集成电路设备来描述本发明,该集成电路设备包括例如被配置为执行CRC计算的功能的微处理器。然而,应当理解,本发明不限于此类集成电路设备,并且可以同样地应用于包括任何替代类型的操作功能的集成电路设备。包括替代类型的操作功能的此类集成电路设备的示例可以包括(仅作为示例)专用集成电路(ASIC)设备、现场可编程门阵列(FPGA)设备或与其他部件集成等。此外,因为本发明的所示实施例大部分可以使用本领域技术人员已知的电子部件和电路来实施,因此为了本发明的基本概念的理解和领会,并且为了不混淆或分散本发明的教导,没有以超出被认为必要的程度的任何更大程度来解释细节。可替代地,电路和/或部件示例可以实施为以合适的方式彼此互连的任意数量的单独集成电路或单独设备。
此外例如,示例或其部分可以实施为物理电路系统或可转换为物理电路系统的逻辑表示的软或代码表示,诸如以任何适当类型的硬件描述语言。
此外,本发明不限于在非可编程硬件中实施的物理设备或单元,而是可以应用于能够通过根据合适的程序代码操作来执行期望CRC计算的可编程设备或单元,诸如小型计算机、个人计算机、记事本、个人数字助理、电子游戏、汽车和其他嵌入式系统、手机和各种其他无线设备,这些在本申请中通常称为“计算机系统”。
然而,其他修改、变化和替代也是可能的。因此,说明书和附图被认为是说明性的而不是限制性的。
在权利要求中,置于括号之间的任何附图标记不应被解释为限制权利要求。词语“包括”不排除权利要求中列出那些之外的其他元素或步骤的存在。此外,如本文所用,术语“一”或“一个”被定义为至少一个而不是一个。此外,在权利要求中使用诸如“至少一个”和“至少一个”的介绍性短语不应被解释为暗示通过不定冠词“一”或“一个”对另一权利要求元素的引入将包含此类引入的权利要求元素的任何特定权利要求限制为仅包含一个此类元素的发明,即使同一权利要求包括介绍性短语“至少一个”或“至少一个”以及不定冠词(诸如,“一”或“一个”)。这同样适用于定冠词的使用。除非另有说明,否则诸如“第一”和“第二”的术语用于在此类术语所描述的元素之间进行任意区分。因此,这些术语不一定旨在指示此类元素的时间或其他优先级。在相互不同的权利要求中列举某些措施的简单事实不指示这些措施的组合不能用于发挥优势。
参考文献
[1]“第三代合作伙伴项目;技术规范组无线电接入网络;NR;复用和信道编码(第15版)”,3GPP TS 38.212V15.2.0,2018年6月。(″3rd Generation Partnership Project;Technical Specification Group Radio Access Network;NR;Multiplexing andchannel coding(Release 15)″,3GPP TS 38.212V15.2.0,June2018.)
[2]诺基亚,阿尔卡特朗讯上海贝尔,“Rl-1703497极地设计的CRC分布详情”,3GPPTSG-RAN WG1会议#88,希腊雅典,2017年2月(Nokia,Alcatel-Lucent Shanghai Bell,″Rl-1703497Details of CRC distribution of polar design″,3GPP TSG-RAN WG1 Meeting#88,Athens,Greece,February 2017)。
[3]英特尔,“使用PCLMULQDQ指令对泛型多项式进行快速CRC计算”,2009年12月(Intel,″Fast CRC Computation for Generic Polynomials Using PCLMULQDQInstruction″,December 2009)。
Claims (13)
1.一种循环冗余校验CRC解码器电路(300),包括:
输入端,其用于从对输入位序列进行编码的预定义CRC生成器多项式接收具有输入位序列的输入流(303),所述输入位序列包括信息位和CRC位;以及
至少一个处理器(301),其被配置为执行所述输入位序列的CRC解码计算;其中,所述CRC解码器电路(300)的特征在于:
所述至少一个处理器(301)被配置为:
应用对所述输入位序列进行编码的所述预定义CRC生成器多项式的逆处理操作以产生数据集;
从所述数据集计算CRC校验子;以及
确定所述CRC校验子是否包含指示CRC错误的任何1值位。
2.根据权利要求1所述的CRC解码器电路(300),还包括:查找表LUT(302),其能够操作地联接到所述至少一个处理器(301)并且包括多个地址,其中,所述多个地址中的至少一个被配置为存储与所述输入流(303)的所述输入位对齐的CRC生成器矩阵的一个或多个行(702)。
3.根据权利要求2所述的CRC解码器电路(300),其中,至少一个处理器(301)被配置为首先通过使用对齐的输入流(303)的一个或多个位掩蔽存储在所述LUT(302)中的所述CRC生成器矩阵的所述一个或多个行(702)来将LUT数据与所述输入流(303)组合。
4.根据前述权利要求中任一项所述的CRC解码器电路(300),其中,存储在所述LUT(302)中的所述CRC生成器矩阵中的行(702)的数量等于或超过最大支持输入位序列长度(Kmax)除以所述一个或多个处理器的数量P。
5.根据前述权利要求中任一项所述的CRC解码器电路(300),还包括:控制器(305),其能够操作地联接并被配置为控制所述至少一个处理器(301)和所述LUT(302)。
6.根据前述权利要求中任一项所述的CRC解码器电路(300),其中,所述生成器矩阵(G)的所述行中的至少一个行中的位的数量是第一长度(L),并且被填充零值位(701)以将位序列增加到第二长度(L')。
7.根据前述权利要求3至6中任一项所述的CRC解码器电路(300),还包括:
查找表LUT(302),其能够操作地联接到至少两个处理器(301)并且包括多个地址,其中,所述处理器的数量是两个或更多个,并且其中,存储在所述LUT的每个地址中的行的数量是两个或更多个;并且其中,所述至少两个处理器(301)被配置为:
首先将LUT数据与所述输入流(303)组合以生成两个或更多个中间奇偶校验位序列(706);并且
其次将所述两个或更多个中间奇偶校验位序列(706)组合成单个奇偶校验位序列(102)。
8.根据权利要求7所述的CRC解码器电路(300),其中,存储在所述LUT(302)中的所述CRC生成器矩阵的所述两个或更多个行(702)通过零填充与所述输入位序列对齐。
9.根据权利要求8所述的CRC解码器电路(300),其中,与存储在所述LUT(302)中的所述CRC生成器矩阵的所述两个或更多个行(402)对齐包括以下中的一个:
所述至少两个处理器(301)接收提供输入位序列长度的具有零填充的所述输入流(303);
其中,所述输入位序列具有第一长度,并且所述两个或更多个处理器(301)中的至少一个对所述输入位序列进行零填充(701)。
10.根据前述权利要求7至9中任一项所述的CRC解码器电路(300),其中,生成两个或更多个中间奇偶校验位序列(706)包括:进行倍数[K/P]次数据的第一组合,其中,K是所述输入位序列的长度。
11.根据前述权利要求7至9中任一项所述的CRC解码器电路(300),其中,所述两个或更多个中间奇偶校验位序列(706)的第二组合被执行倍数[log2(P)]次以生成单个奇偶校验位序列(102),其中,P是所述两个或更多个并行处理器(301)的数量。
12.一种通信单元,其包括根据前述权利要求中任一项所述的CRC计算电路(300)。
13.一种用于循环冗余校验CRC的方法,包括:
从对输入位序列进行编码的预定义CRC生成器多项式接收具有输入位序列的输入流(303),所述输入位序列包括信息位和CRC位;以及
执行所述输入位序列的CRC解码计算;
其中,所述方法的特征在于:
应用对所述输入位序列进行编码的所述预定义CRC生成器多项式的逆处理操作以产生数据集;
从所述数据集计算CRC校验子;以及
确定所述CRC校验子是否包含指示CRC错误的任何1值位。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1909489.5A GB2585207B (en) | 2019-07-01 | 2019-07-01 | Cyclic redundancy check computation circuit, communication unit, and method therefor |
GB1909489.5 | 2019-07-01 | ||
GB2005501.8A GB2585271B (en) | 2019-07-01 | 2019-07-01 | Cyclic redundancy check computation circuit, communication unit, and method therefor |
GB2005501.8 | 2020-04-15 | ||
PCT/EP2020/068426 WO2021001382A1 (en) | 2019-07-01 | 2020-06-30 | Cyclic redundancy check, crc, decoding using the inverse crc generator polynomial |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114303320A true CN114303320A (zh) | 2022-04-08 |
Family
ID=71409424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061053.8A Pending CN114303320A (zh) | 2019-07-01 | 2020-06-30 | 使用逆crc生成器多项式进行解码的循环冗余校验crc |
Country Status (5)
Country | Link |
---|---|
US (1) | US11677419B2 (zh) |
EP (1) | EP3991305B8 (zh) |
CN (1) | CN114303320A (zh) |
GB (1) | GB2585271B (zh) |
WO (1) | WO2021001382A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2585207B (en) * | 2019-07-01 | 2021-06-16 | Accelercomm Ltd | Cyclic redundancy check computation circuit, communication unit, and method therefor |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4914660A (en) * | 1988-04-08 | 1990-04-03 | Sanyo Electric Co., Ltd. | Method and apparatus for decoding error correcting code |
US5040179A (en) * | 1989-08-18 | 1991-08-13 | Loral Aerospace Corp. | High data rate BCH encoder |
JPH05175852A (ja) * | 1991-12-25 | 1993-07-13 | Matsushita Electric Ind Co Ltd | 誤り訂正符復号装置 |
US5596589A (en) * | 1993-10-29 | 1997-01-21 | Motorola, Inc. | Method and apparatus for encoding and decoding error correction codes in a radio communication system |
US5878057A (en) | 1995-10-06 | 1999-03-02 | Tektronix, Inc. | Highly parallel cyclic redundancy code generator |
US6029186A (en) | 1998-01-20 | 2000-02-22 | 3Com Corporation | High speed calculation of cyclical redundancy check sums |
US9166624B2 (en) * | 2010-05-11 | 2015-10-20 | Osaka University | Error-correcting code processing method and device |
US8738990B2 (en) | 2012-07-19 | 2014-05-27 | Nvidia Corporation | Cyclic redundancy check generation via distributed time multiplexed linear feedback shift registers |
US9246491B2 (en) | 2012-07-27 | 2016-01-26 | Alcatel Lucent | Method and apparatus for performing pipelined operations on parallel input data with feedback |
US20170250710A1 (en) * | 2014-10-03 | 2017-08-31 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and device for calculating a crc code in parallel |
GB2585207B (en) * | 2019-07-01 | 2021-06-16 | Accelercomm Ltd | Cyclic redundancy check computation circuit, communication unit, and method therefor |
-
2019
- 2019-07-01 GB GB2005501.8A patent/GB2585271B/en active Active
-
2020
- 2020-06-30 CN CN202080061053.8A patent/CN114303320A/zh active Pending
- 2020-06-30 EP EP20735576.9A patent/EP3991305B8/en active Active
- 2020-06-30 US US17/623,441 patent/US11677419B2/en active Active
- 2020-06-30 WO PCT/EP2020/068426 patent/WO2021001382A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
GB202005501D0 (en) | 2020-05-27 |
GB2585271B (en) | 2022-04-13 |
US20220352901A1 (en) | 2022-11-03 |
EP3991305C0 (en) | 2023-11-29 |
EP3991305B1 (en) | 2023-11-29 |
EP3991305B8 (en) | 2024-01-03 |
US11677419B2 (en) | 2023-06-13 |
WO2021001382A1 (en) | 2021-01-07 |
GB2585271A (en) | 2021-01-06 |
EP3991305A1 (en) | 2022-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5329239B2 (ja) | 通信システムのための多体ベース符号の生成器および復号化器 | |
US7293222B2 (en) | Systems and processes for fast encoding of hamming codes | |
CN110999095B (zh) | 用于极化码的按块并行冻结位生成 | |
EP3639374B1 (en) | Low latency polar coding and decoding by merging of stages of the polar code graph | |
CN110663189B (zh) | 用于极化编码的方法和装置 | |
CN110741558B (zh) | 具有逻辑三维存储器的极化编码器、通信单元、集成电路及其方法 | |
ES2386911T3 (es) | Procedimiento y aparato para codificar y decodificar datos | |
WO2019246527A1 (en) | Method and apparatus for improved data recovery in data storage systems | |
KR100525987B1 (ko) | 순환 리던던시 코드 서명 비교를 구비한 터보 디코더 | |
CN114303320A (zh) | 使用逆crc生成器多项式进行解码的循环冗余校验crc | |
CN114342265A (zh) | 使用存储在查找表lut中的生成器矩阵的部分并行循环冗余校验crc计算 | |
CN110741559B (zh) | 极化编码器、通信单元、集成电路及其方法 | |
CN108574490B (zh) | 计算循环冗余校验crc编码的方法及装置 | |
US9281844B2 (en) | Configurable and low power encoder for cyclic error correction codes | |
WO2012109872A1 (zh) | 通信系统中的循环冗余校验处理方法、装置和lte终端 | |
WO2019047741A1 (zh) | 比特交织、解交织方法及装置 | |
KR102109589B1 (ko) | 고속직렬인터페이스용 송수신 오류 정정기법이 포함된 오버헤드최소화 코딩 기법과 하드웨어 구현 방법 | |
CN110022158B (zh) | 一种译码方法及装置 | |
WO2009031817A2 (en) | Appratus and method for generating a linear code | |
CN111600613B (zh) | 一种校验方法、装置、译码器、接收机及计算机存储介质 | |
CN112054808A (zh) | Polar码的编码方法及装置 | |
Tingilkar et al. | Improvement Of Memory Data Corrections By Using CRC Technique For Fault Torrent Applications |
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 |