CN108933605B - 低密度奇偶校验(ldpc)解码的提前终止 - Google Patents
低密度奇偶校验(ldpc)解码的提前终止 Download PDFInfo
- Publication number
- CN108933605B CN108933605B CN201810200330.3A CN201810200330A CN108933605B CN 108933605 B CN108933605 B CN 108933605B CN 201810200330 A CN201810200330 A CN 201810200330A CN 108933605 B CN108933605 B CN 108933605B
- Authority
- CN
- China
- Prior art keywords
- iterations
- threshold
- change
- rate
- syndrome
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/0045—Arrangements at the receiver end
- H04L1/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
- H04L1/0051—Stopping criteria
-
- 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/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- 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
-
- 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/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- 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
-
- 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/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/255—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2948—Iterative decoding
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2948—Iterative decoding
- H03M13/2951—Iterative decoding using iteration stopping criteria
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
- H03M13/3753—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding using iteration stopping criteria
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/458—Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
-
- 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/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- 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/0047—Decoding adapted to other signal detection operation
- H04L1/005—Iterative decoding, including iteration between signal detection and decoding operation
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)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
- Computational Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
Abstract
本发明描述一种用于提高错误校正系统的延迟时间或处理性能的技术。在示例中,错误校正系统实施LDPC解码并且使用提前终止规则来确定是否应当在达到最大迭代次数之前终止LDPC解码。提前终止规则涉及与每次迭代的解码的LDPC码字的校正子相关的各种参数。这些参数包括当前解码迭代次数和当前迭代处的校正子的权重。例如,提前终止规则指定,当校正子的权重为零时,或者当前迭代次数达到迭代次数阈值并且校正子的权重等于或超过校验和阈值时,应当在最大迭代次数之前终止LDPC解码。
Description
技术领域
本发明涉及一种解码低密度奇偶校验码的方法、一种系统以及一种非暂时性计算机存储介质。
背景技术
数据完整性是任何数据存储装置和数据传输的重要特征。推荐使用强错误校正码(ECC)以用于包括NAND闪速存储器装置的各种类型的数据存储装置。在数据传输过程期间也经常使用ECC。
错误校正码(ECC)是指将冗余数据或奇偶校验数据添加到消息的代码,使得即使在传输过程或存储期间中引入了多个错误时,也可以通过接收器恢复消息。通常,ECC可以校正错误直到达到所使用的代码的能力。
低密度奇偶校验(LDPC)码是ECC的示例。通常,LDPC解码器使用迭代解码进程来解码信息位。迭代解码消耗时间并且收集处理负担。通常,时间和处理负担随着执行的迭代次数的增加而增加。在某些对延迟时间(latency)敏感的应用(例如,解码应当在短时间段内被完成的应用)和/或对处理量敏感的应用(例如,解码应当使用少处理量的应用)中,LDPC码的现有迭代解码进程可能不能够满足期望的延迟时间和/或处理性能。
发明内容
描述一种用于提高错误校正系统的延迟时间或处理性能的技术。在示例中,系统包括LDPC解码器并且启动对LDPC码字的迭代解码。通常,迭代解码受到最大迭代次数的限制。系统确定迭代解码的当前迭代对应于等于或大于迭代次数阈值并且小于最大迭代次数的迭代次数。系统将当前迭代次数的LDPC码字的校正子的权重与校验和阈值进行比较。当校正子为非零时,可以执行该比较。系统基于比较来终止迭代解码。在达到最大迭代次数之前终止迭代解码。
提到这些说明性示例不是为了限制或限定本公开,而是为了提供示例以帮助对其的理解。在具体实施方式中讨论另外的实施例和示例,并且在具体实施方式中提供进一步的描述。
附图说明
可以通过参照以下附图来理解各个实施例的性质和优点。在附图中,相似的部件或特征可以具有相同的附图标记。进一步地,可以通过利用区分相似部件的短划线和第二标记以及附图标记来区分相同类型的各种部件。如果仅第一附图标记被用于说明书中,则描述适用于具有相同第一附图标记的相似部件中的任何一个,而与第二附图标记无关。
图1示出根据本公开的某些实施例的错误校正系统的示例性高级(high level)框图。
图2A至图2B示出根据本公开的某些实施例的示例性奇偶校验矩阵和表示奇偶校验矩阵的示例图。
图3示出根据本公开的某些实施例的基于校正子和最大迭代次数来终止LDPC迭代解码的示例图。
图4示出根据本公开的某些实施例的基于当前迭代次数和当前迭代的校正子来提前终止LDPC迭代解码的示例图。
图5示出根据本公开的某些实施例的LDPC迭代解码的示例性流程。
图6示出根据本公开的某些实施例的基于当前迭代次数和当前迭代的校正子来提前终止LDPC迭代解码的示例性流程。
图7示出根据本公开的某些实施例的使用当前迭代的校正子来生成用于LDPC迭代解码的提前终止的判定的示例性流程。
图8是表示能够实现本公开的计算机系统。
具体实施方式
通常,LDPC解码使用迭代解码进程。迭代解码进程基于两个参数结束。第一,如果解码码字的校正子为零,则对该码字的迭代解码被终止。当所有错误,如果存在错误的话,已经被LDPC解码器校正时,则校正子为零。第二,如果校正子不为零,但迭代次数达到最大次数,则迭代解码结束。当迭代解码没有校正所有错误时发生这种情况。在这种情况下,不管非零校正子可以揭示的信息,重复迭代解码直到最大迭代次数。由于迭代解码被“盲目”重复直到最大迭代次数,因此总延迟时间和处理性能直接取决于该最大次数。最大次数越大,延迟时间和处理负担就变得越差。
为了改善延迟时间和处理性能,本公开的实施例致力于LDPC解码的提前终止。在示例中,引入一组附加参数以在达到最大迭代次数之前终止迭代解码进程。该组附加参数涉及非零校正子揭示的关于解码的信息。非零校正子的权重表示码字的校验和。如果在一定次数的迭代之后,校正子的非零权重太大,则大的权重表示即使执行了最大次数的迭代,码字的所有错误被校正的可能性也较低。在另一说明中,如果在迭代之间的校正子的权重的改变表示权重没有正在适当改善(例如,权重的值不为零并且正在增加,保持恒定或相对稳定,或者没有以可接受的降低速率降低),则即使执行最大次数的迭代,码字的所有错误被校正的可能性也较低。因此,在这两种情况下,由于在没有显著降低(如果有降低的情况下)迭代解码的校正能力(例如,误码率(BER)性能)的情况下,提前终止改善了延迟时间并且减少了处理负担,因此在达到最大迭代次数之前终止迭代解码是有利的。
因此,本公开的各个实施例涉及一组附加参数的使用,以提前终止迭代解码进程。在示例中,该组参数包括迭代的次数和校正子的权重。更具体地,监控迭代的次数。在当前迭代的次数达到小于最大迭代次数的迭代次数阈值时,将非零校正子的权重与校验和阈值进行比较。如果比较结果表示当前迭代次数的非零校正子的权重大于校验和阈值,则即使后续迭代被执行至达到最大迭代次数,码字的所有错误被校正的可能性也较低。因此,迭代解码被终止在当前迭代次数。另一方面,如果比较结果表示当前迭代次数的非零校正子的权重小于校验和阈值,则执行一次或多次后续迭代。
为了清楚解释起见,结合LDPC解码来描述本公开的实施例。然而,实施例不限于此,并且应用于依赖于码字的校正子的其它解码进程。
图1示出根据本公开的某些实施例的错误校正系统100的示例性高级框图。在示例中,结合数据存储来描述LDPC码。然而,本发明的实施例不限于此。相反,实施例类似地应用于包括例如数据传输的LDPC码的其它使用。
LDPC码是由稀疏奇偶校验矩阵H定义的线性分组码,其由0和1组成。术语“稀疏矩阵”在本文中用于指代每列和每行中的非零值的数量远小于其维度的矩阵。术语“列权重”在本文中用于指代在奇偶校验矩阵H的具体列中的非零值的数量。术语“行权重”在本文中用于指代在奇偶校验矩阵H的具体行中的非零值的数量。通常,如果对应于LDPC码的奇偶校验矩阵中的所有列的列权重是相似的,则该码被称为“规则”LDPC码。另一方面,如果列权重中的至少一个与其它列权重不同,则LDPC码被称为“非规则”LDPC码。通常,非规则LDPC码比规则LDPC码提供更好的错误校正能力。
还根据LDPC码被构造的方式来描述LDPC码。随机计算机搜索构造或代数构造是可能的。随机计算机搜索构造描述具有由随机的基于计算机的程序而设计的奇偶校验矩阵的LDPC码。代数构造表示已经基于组合方法构造的奇偶校验矩阵。准循环LDPC(QC-LDPC)码属于后一种构造方法。QC-LDPC码的一个优点在于在编码程序方面,QC-LDPC码的实施相对较简单。QC-LDPC码的主要特点在于奇偶校验矩阵由循环子矩阵组成,其可以基于单位矩阵或者较小的随机矩阵。置换矢量也可以用来创建循环子矩阵。
如图所示,LDPC编码器110接收信息位,该信息位包括期望被存储在存储系统120中的数据。LDPC编码数据由LDPC编码器110输出并且被写入到存储系统120。
在各个实施例中,存储系统120可以包括诸如(例如,磁)盘驱动存储器、闪速存储器等的各种类型的存储器或介质。在一些实施例中,该技术被用于收发器中,并且数据经由有线信道和/或无线信道被传输和接收,而不是被写入到存储器或从存储器读取。在该情况下,错误可能在传输码字期间被引入到接收的码字中。
当(例如,由存储数据的应用程序或用户)请求或以其它方式期望所存储的数据时,检测器130从存储系统120接收数据。接收的数据可能包括一些噪声或错误。检测器130对接收的数据执行检测并且输出判决和/或可靠性信息。例如,软输出检测器输出用于每个检测位的可靠性信息和判决。另一方面,硬输出检测器输出对每个位的判决,而不提供相应的可靠性信息。作为示例,硬输出检测器可以输出具体位是“1”还是“0”的判决,而不表示对于该判决,检测器有多肯定或有多确定。相反,软输出检测器输出判决和与判决相关的可靠性信息。通常,可靠性值表示对于给出的判决,检测器有多确定。在一个示例中,软输出检测器输出对数似然比(LLR),其中符号表示判决(例如,正值对应于“1”的判决以及负值对应于“0”的判决)并且幅值指示对于该判决,检测器有多确定或肯定(例如,大幅值表示高可靠性或高确定性)。
判决和/或可靠性信息被传递到LDPC解码器140,LDPC解码器140使用该判决和可靠性信息来执行LDPC解码。软输入解码器利用判决和可靠性信息两者来解码码字。硬解码器仅利用解码器中的判决值来解码码字。由LDPC解码器140生成的解码位被传递到适当的实体(例如,请求解码位的用户或应用程序)。通过适当的编码和解码,信息位与解码位匹配。
在各个实施例中,示出的系统可以使用包括以下的各种技术来实施:专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如,高级RISC机器(ARM)内核)。
LDPC码通常由二分图表示。一组节点、变量或位节点对应于码字的元素以及另一组节点,例如校验节点,对应于由码字满足的一组奇偶校验约束。通常,边缘连接被随机选择。如果在图中避免较短长度的循环,则LDPC码的错误校正能力被改善。在(r,c)规则码中,n个变量节点(V1,V2,...,Vn)中的每一个具有与r个校验节点的连接,并且m个校验节点(C1,C2,...,Cm)中的每一个都具有与c个位节点的连接。在非规则LDPC码中,校验节点度是不统一的。类似地,变量节点度是不统一的。在QC-LDPC码中,奇偶校验矩阵H被构造为p×p矩阵块,使得块中的位仅参与块中的一个校验方程,并且块中的每个校验方程仅涉及来自块的一个位。在QC-LDPC码中,码字循环移位p而导致另一码字。此处,p是方矩阵的大小,方矩阵可以是零矩阵或循环矩阵。这是循环码的概述,在循环码中码字循环移位1而导致另一码字。p×p矩阵的块可以是大小为p×p的零矩阵或循环移位的单位矩阵。
根据本公开的某些实施例,图2A示出示例性奇偶校验矩阵H200,并且图2B示出对应于奇偶校验矩阵200的示例性二分图。在该示例中,奇偶校验矩阵200具有六个列向量和四个行向量。网络202示出对应于奇偶校验矩阵200的网络并且表示二分图。各种类型的二分图是可能的,各种类型的二分图包括例如Tanner图。
通常,网络202中的变量节点对应于奇偶校验矩阵200中的列向量。网络202中的校验节点对应于奇偶校验矩阵200中的行向量。由奇偶校验矩阵200的值来确定节点之间的互相连接。具体地,“1”表示相应的校验节点和变量节点具有连接。“0”指示不存在连接。例如,奇偶校验矩阵200中的最左列向量且从上面开始的第二行向量中的“1”对应于变量节点204和校验节点210之间的连接。
消息传递算法通常用于解码LDPC码。现有技术中存在消息传递算法的多种变型,诸如最小和算法、缩放的(scaled)最小和算法等。通常,在不脱离本公开教导的情况下,消息传递算法的任何变型可以被用于LDPC解码器中。如图2B所示,消息传递使用变量节点和校验节点的网络。如图2A所示,通过奇偶校验矩阵200的值来描述变量节点和校验节点之间的连接并且变量节点和校验节点之间的连接对应于奇偶校验矩阵200的值。
可以执行硬判决消息传递算法。在第一步骤中,变量节点中的每一个向连接到其的一个或多个校验节点发送消息。在这种情况下,该消息是一个值,变量节点中的每一个认为该值是正确值。
在第二步骤中,校验节点中的每一个使用其先前从变量节点接收的信息,来计算响应消息以发送到连接到其的变量节点。响应消息对应于一个值,校验节点基于从连接到该校验节点的其它变量节点接收的信息而相信变量节点应当具有该值。使用奇偶校验等式来计算该响应消息,该等式使得连接到特定校验节点的所有变量节点的值的总和为零(模2(modulo 2))。
此时,如果所有校验节点的所有等式都满足,则解码算法声明找到正确的码字并且终止。如果没有找到正确的码字,则迭代通过使用信息而继续进行变量节点的另一次更新,变量节点从校验节点接收该消息以通过多数决定原则来判定在其位置处的位应当是0还是1。然后,变量节点将硬判决消息发送到连接到变量节点的校验节点。迭代继续进行直到找到正确的码字,根据码字(例如,解码码字)的校正子来执行一定次数的迭代,或者如在下面的附图中进一步示出的,在没有找到正确的码字的情况下执行最大次数的迭代。应当注意的是,软判决解码器类似地工作,然而,在校验节点和变量节点之间传递的消息中的每一个还包括每个位的可靠性。
可以执行示例消息传递算法。在该示例中,L(qij)表示由变量节点vi发送到校验节点cj的消息;L(rji)表示由校验节点cj发送到变量节点vi的消息;并且L(ci)表示每个变量节点vi的初始LLR值。对每个L(qij)的变量节点处理可以通过以下步骤完成:
(1)从存储器读取L(ci)和L(rji)。
(3)计算每个L(Qi-sum)-L(rij)。
(4)输出L(Qi-sum)并且回写到存储器。
(5)如果这不是存储器的最后列,则转到步骤1并且将i增加1。
(6)计算奇偶校验和(例如,校正子),如果它们全部等于零、迭代次数达到阈值并且奇偶校验和大于另一阈值,或者如果迭代次数等于最大限制值,则停止;否则,执行校验节点处理。
可以如下执行对每个L(rji)的校验节点处理:
(1)从存储器中读取一行qij。
(2)如下计算L(Rj-sum):
αij=sign(L(qij)),βij=|L(qij)|,
(3)计算校验节点的各个
(4)将L(rji)回写到存储器。
(5)如果这不是存储器的最后行,则转到第一步并且将j增加1。
图3示出根据本公开的某些实施例的基于校正子和最大迭代次数来终止LDPC迭代解码的示例图300。终止要么取决于码字的校正子为零,要么取决于迭代次数达到最大次数。
如图300所示,假设x=[x0,x1,...,xN-1]是位向量,H=[hi,j]是在行i和列j的交点处具有二进制值hi,j的M×N低密度奇偶校验矩阵。然后,H的每行提供x的奇偶校验。如果x是H的码字,则由于LDPC码构造,xHT=0。假设x在噪声信道上传输,并且被破坏的信道输出是y=[y0,y1,...,yN-1],并且其硬判决是z=[z0,z1,...,zN-1]。z的校正子是由s=[s0,s1,...,sN-1]=zHT计算并且权重为||s||的二进制向量。权重||s||代表不满意的校验节点的数量并且由于因此权重||s||也被称为校验和。假设z(j)=[z0,z1,...,zN-1]是第j次迭代的硬判决并且第j次迭代的校正子向量是s(j)=[s0 (j),s1 (j),...,sN-1 (j)]=z(j)HT。则||s||(j)是第j次迭代的校验和。
如在图300中进一步示出的,要么当校验和为零(用s(j)=0表示)时,要么当校验和为非零但迭代次数达到预定的最大迭代次数(用j=Itmax表示,其中“Itmax”是最大迭代次数)时,终止迭代解码。否则,重复迭代解码。
图4示出根据本公开的某些实施例的基于当前迭代次数和当前迭代的校正子提前终止LDPC迭代解码的示例图400。图400的终止引入一组附加参数:根据当前迭代达到阈值迭代次数并且关于当前迭代的校正子的信息(例如,校正子的权重)大于校验和阈值,在达到最大次数之前终止迭代解码。
在示例中,为了减少平均迭代次数,使用两个附加参数。“Itthr”被定义为迭代次数阈值并且“CSthr”被定义为校验和阈值。这两个新参数可以被用于定义解码终止的提前终止规则,其中该规则也考虑了零-校正子和最大迭代次数“Itmax”。例如,根据提前终止规则,要么当校验和为零(用s(j)=0表示)时,要么在当前迭代次数达到迭代次数阈值并且校验子的权重(或者类似地,码字的校验和)等于或者超过校验和阈值(用j≥Itthr以及||s||(j)>CSthr表示)时,要么在达到最大迭代次数时,终止解码算法。
图5至图7示出基于使用提前终止规则的迭代解码进程来解码码字,诸如LDPC码字的示例性流程,其中该规则应用与解码码字的校正子有关的参数。系统被描述为执行示例性流程的具体操作。具体地,系统操作错误校正系统,诸如图1的错误校正系统100。系统可以具有特定硬件配置来执行错误校正系统的操作,特定硬件配置包括那些解码器(例如,诸如图1的LDPC解码器140的迭代解码器)。可选地或另外地,系统可以包括配置有特定指令的通用硬件。在示例中,系统包括一个或多个处理器和一个或多个存储器。存储器存储计算机可读指令以实现该系统的特定功能。当由系统的处理器执行指令时,指令使得系统执行功能。存储在结合有基础处理器的存储器中的指令表示用于执行功能的方法。示例性流程中的一些操作是相似的。为了简洁起见,本文不再重复相似之处。进一步地,虽然以特定顺序示出操作,但是操作的其它配置是可能的,并且由于一些操作对于本领域技术人员是显而易见的,因此可以跳过。
图5示出根据本公开的某些实施例的用于LDPC迭代解码的示例性流程500。如图所示,示例性流程500在操作502处开始,在操作502中系统访问LDPC码字。例如,响应于对存储在存储装置中的信息位的请求而从存储装置访问LDPC码字。使用LDPC编码进程来编码信息位并且将信息位存储在存储装置中。
在操作504处,系统迭代地解码LDPC码字。例如,系统实施硬迭代LDPC解码或软迭代LDPC解码进程并且将LDPC码字输入到这种进程。迭代解码进程,无论是软迭代解码进程还是硬迭代解码进程,监控迭代次数,计算LDPC码字的(例如,解码码字的)校正子,并且基于校验子和迭代次数应用提前终止规则,以继续迭代解码或者在达到最大迭代次数之前提前终止解码。结合下面的附图进一步描述与提前终止相关的这些操作和其它操作。
在操作506处,系统基于提前终止规则提前终止迭代解码(例如,在达到最大迭代次数之前)。在示例中,该规则包括在达到最大迭代次数之前控制提前终止的各种参数。参数中的一个是校正子是否为零。如果校正子为零,则提前终止规则指定迭代解码应当停止在当前迭代。如果校正子为非零,系统校验附加参数。
附加参数中的一个是当前迭代次数。另一个附加参数是校正子的权重。如果当前迭代次数小于迭代次数阈值,则迭代解码进行到下一次解码迭代。相反,如果当前迭代次数等于或大于迭代次数阈值,则系统校验校正子的权重。
各种类型的校验是可能的(每种校验都可以定义附加参数)。一个示例性校验将当前迭代的校正子的权重(例如,该权重的当前值,或类似地,当前解码迭代的解码码字的当前校验和)和校验和阈值进行比较(例如,权重与校验和阈值进行比较)。如果比较结果表示权重等于或大于校验和阈值,则系统将迭代解码终止在当前迭代。这是由于比较结果表示校正子的权重太大,使得即使执行最大次数的迭代,校正码字的所有错误的可能性也较低。否则,迭代解码进行到下一个解码迭代。
另一个示例性校验监控从迭代解码开始的先前解码迭代次数(5次、或者从当前迭代到最大迭代次数的一半(或者某个其它分数或函数))的校正子的权重变化。如果变化表示权重是相对稳定的(例如,在预定权重范围内变化,诸如+/-1)、是恒定的、没有正在改善(例如,由于增加而不是减少而正在变差)、或者小于预定变化率阈值,则系统使迭代解码终止在当前迭代。这是由于校正子的权重变化率表示即使执行最大次数的迭代,也不可能实现显著的BER增益。否则,迭代解码进行到下一个解码迭代。
当然,同时使用这两种类型的检验是可能的。例如,一旦迭代次数达到迭代次数阈值,系统将当前迭代的校验子的权重与校验和阈值进行比较。如果权重等于或大于校验和阈值,则系统开始监控校正子的权重在后续迭代次数上的变化,以确定是否将迭代解码终止在达到最大迭代次数之前的任何后续解码迭代(例如,根据是否变化表示权重是相对稳定的、是恒定的、没有正在改善、或者权重小于预定变化率阈值,诸如权重在每个迭代之间以3(或者一些其它值)减小)。该后续迭代次数可以被预定义(例如,5次、或者从当前迭代到最大迭代次数的一半(或者某个其它分数或函数))。
在示例中,基于系统(或LDPC解码器)的延迟时间性能和/或处理性能的模拟来预定义各种参数值。通常,模拟改变不同的参数值。使得最佳或期望的延迟时间性能和/或处理性能被存储在系统的存储器中。如以上本文所述的,这些参数值包括迭代次数阈值、校验和阈值、变化率阈值、先前解码迭代次数、附加解码迭代次数、权重范围和最大迭代次数。在说明性示例中,最大迭代次数在15至25的范围内,迭代次数阈值小于最大迭代次数并且在10至20的范围内,以及校验和阈值在25至35的范围内。在另一说明性示例中,迭代次数阈值在最大迭代次数的60%至80%的范围内。
在操作508处,系统输出解码码字。例如,在迭代解码进程终止时,系统确定解码的信息位为原始编码的且存储的信息位,并且输出这些信息位。
图6示出根据本公开的某些实施例的基于当前迭代次数和当前迭代的校正子,提前终止LDPC迭代解码的示例性流程600。示例性流程600的一些或全部操作可以被实施为图5的示例性流程500的操作504和操作506的子操作。
如图所示,示例性流程600在操作602处开始,其中系统开始对LDPC码字的迭代解码。在示例中,迭代解码由最大迭代次数限制。系统从第一次迭代开始并且将迭代计数设置为1。迭代解码使用软解码或硬解码。
在操作604处,系统计算当前迭代的与LDPC码字相关的校正子。该校正子对应于当前迭代的解码的LDPC码字的校验和。在操作602处的开始迭代解码之后,当第一次执行操作604时,当前迭代是第一次迭代。否则,当前迭代是最新迭代,系统通过该最新迭代正在对LDPC码字进行解码。在示例中,x是H的码字,并且由于LDPC码构造,xHT=0。经过解码的LDPC码字是y=[y0,y1,...,yN-1],并且由于x信道噪声而不同于x。在当前迭代中,系统解码y,硬判决为z=[z0,z1,...,zN-1]。系统计算z的校正子作为由s=[s0,sl,...,sN-l]=zHT计算的二进制向量。系统还计算s的权重作为||s||。z(j)=[z0,z1,...,zN-1]是第j次迭代(当前迭代)的硬判决并且第j次迭代的校正子向量是s(j)=[s0 (j),s1 (j),...,sN-1 (j)]=z(j)HT。则||s||(j)是第j次迭代(当前迭代)的权重(或类似地,校验和)。
在操作606处,系统确定当前迭代的校正子是否为零。例如,如果权重为零,则系统确定校正子为零。否则,系统确定校正子为非零。如果校正子为零,则在操作606之后执行操作618,并且系统将迭代解码终止在当前迭代并且输出解码码字。否则,在操作606之后执行操作608,使得系统检查是否满足提前终止规则的其它参数以支持提前终止。
在操作608处,系统确定对应于当前迭代的迭代次数。例如,每次系统完成解码迭代时,系统将迭代计数增加1。因此,根据迭代计数的当前值,来确定目前为止已执行的并且对应于当前迭代的迭代次数。
在操作610处,系统确定对应于当前迭代的迭代次数是否等于或大于迭代次数阈值并且小于最大迭代次数。例如,系统将迭代计数的当前值与迭代次数阈值进行比较。如果当前值等于或大于迭代次数阈值,则系统确定迭代次数达到迭代次数阈值。在这种情况下,在操作610之后执行操作612,其中系统进一步评估迭代解码是否应当提前终止。否则,在操作610之后执行操作614,其中系统继续迭代解码。
在操作612处,系统将当前迭代次数的校正子与校验和阈值进行比较。在该操作处,校正子为非零。通常,比较结果表示即使执行最大次数的迭代,校正码字的所有错误的可能性是否较低。如果较低,则系统可以生成提前终止迭代解码的判决(如结合操作618所示)。
各种类型的比较是可能的。结合将校验子的权重(例如,||s||)与校验和阈值进行比较来说明示例性流程600。其它类型的比较是可能的。图7的示例性流程700示出基于迭代之间的校正子的权重变化的比较。如结合图7进一步描述的,校验和阈值包括用于与权重的变化相比较的变化率阈值。
在示例性流程600中,系统将校验子的权重与校验和阈值进行比较。如果权重等于或大于校验和阈值,则系统生成提前终止迭代解码的判决。因此,在操作612之后执行操作618,其中系统终止迭代解码并且输出解码码字。否则,在操作612之后执行操作614。
在操作614处,系统继续迭代解码。例如,系统继续在下一次解码迭代中解码LDPC码字并且将迭代计数增加1。
在操作616处,系统将对应于当前迭代的迭代次数(例如,迭代计数的当前值)与最大迭代次数进行比较。如果当前迭代次数等于或大于最大迭代次数,则在操作616之后执行操作618,系统终止迭代解码并且输出解码码字。否则,在操作614之后执行操作604,其中系统循环返回并且计算校正子。
如图6的示例性流程600中示出,仅在操作610之后的操作612(在操作612中,将校正子与校验和阈值进行比较,诸如通过将校正子的权重或解码码字的校验和与校验和阈值进行比较)表示在当前迭代次数达到最大迭代次数之前,当前迭代次数达到迭代次数阈值。以这种方式,系统确保已经执行至少最少次数的解码迭代以在迭代解码中建立置信度并且避免过早终止。
图7示出根据本公开的某些实施例的使用当前迭代的校正子来生成提前终止LDPC迭代解码的判定的示例性流程。示例性流程700的一些或全部操作可以被实施为图5的示例性流程500的操作504和操作506的子操作。相对于图6的示例性流程600,示例性流程700表示将系统的权重变化用作用于提前终止的参数。
如图所示,示例性流程700在操作702处开始,其中系统启动迭代解码。在操作704处,系统确定当前解码迭代的校正子的权重变化。例如,系统计算每次解码迭代的校正子及其权重并且监控迭代之间的权重变化。
在操作706处,系统确定变化是否可接受。通常仅在当前迭代次数达到迭代次数阈值之后执行该确定步骤,以避免过早提前终止。各种类型的确定步骤是可能的。在一个示例中,系统使用变化率阈值。在该示例中,系统计算从一次或多次先前迭代到当前迭代的校正子的权重变化率。系统将变化率与变化率阈值进行比较。如果变化率低于变化率阈值,则由于变化率是不可接受的,因此系统生成终止迭代解码的判决。否则,不生成这种判决。
在另一个示例中,系统不使用变化率阈值。相反,系统计算从一次或多次先前迭代到当前迭代的校正子的权重变化。然后,系统确定从一次或多次先前迭代以来,变化率是否是恒定的、尚未改善的、已变差的或相对稳定的。如果是恒定的、尚未改善的、已变差的或相对稳定的,则由于变化率是不可接受的,因此系统生成终止迭代解码的判决。否则,不生成该判决。
在操作708处,系统基于提前终止规则终止迭代解码。在该示例中,规则指定如果在操作706处发现校正子的权重变化是不可接受的(并且因此,生成了提前终止判决),则系统应当在当前迭代处终止迭代解码。因此,系统退出迭代解码并且输出解码码字。
如前所述,类似于图6的示例性流程600中所示的使用校正子的权重与校验和阈值进行比较和类似于图7的示例性流程700中所示的监控解码迭代之间的权重变化率的组合是可能的。例如,再次参照示例性流程600的操作612,系统确定当前迭代的校正子的权重等于或大于校验和阈值。系统进一步调查即使执行最大次数的迭代,校正码字的所有错误的可能性是否较低,而不生成终止迭代解码的判决。在这种情况下,系统执行与示例性流程700的操作704至708相似的操作,而不是在操作612之后执行操作618。在一个具体示例中,系统确定从多个先前迭代到当前迭代(例如,从最后5次迭代)的权重变化率,以生成适用的提前终止的判决。在另一个具体示例中,系统开始监控从当前迭代到多个后续迭代,但是在迭代计数达到最大迭代次数之前(例如,在后续5次迭代中)的权重变化率,以生成适用的提前终止判决。
图8描述可以根据一个实施例使用的系统,诸如图1的错误校正系统100的一个潜在的实施方式。图8仅是对本公开的实施例进行说明并且不限制权利要求中所述的本公开的范围。在一个实施例中,系统是通常包括监视器810、计算机820、用户输出装置830、用户输入装置840、通信接口850等的计算机系统800。图1的错误校正系统100利用计算机系统800的一些或全部部件。
如图8所示,计算机820可以包括经由总线子系统890与多个外围装置通信的处理器860。这些外围装置可以包括用户输出装置830、用户输入装置840、通信接口850以及诸如随机存取存储器(RAM)870和磁盘驱动器880的存储子系统。
用户输入装置840包括用于向计算机系统820输入信息的所有可能类型的装置和机构。这些可以包括键盘、小键盘、并入显示器中的触摸屏、诸如语音识别系统的音频输入装置、麦克风和其它类型的输入装置。在各个实施例中,用户输入装置840通常被实现为计算机鼠标、轨迹球、轨迹板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置840通常使用户通过点击按钮等的命令来选择出现在监视器810上的对象、图标、文本等。
用户输出装置830包括用于输出来自计算机系统820的信息的所有可能类型的装置和机构。这些可以包括显示器(例如,监视器810)、诸如音频输出装置的非视觉显示器等。
通信接口850提供与其它通信网络和装置的接口。通信接口850可以用作从其它系统接收数据和向其它系统传输数据的接口。通信接口850的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆,ISDN)、(异步)数字用户线(DSL)单元、火线接口、USB接口等。例如,通信接口850可以联接到计算机网络、火线总线等。在其它实施例中,通信接口850可以物理地集成在计算机820的主板上,并且可以是诸如软DSL的软件程序等。
在各个实施例中,计算机系统800还可以包括使得在诸如HTTP协议、TCP/IP协议、RTP/RTSP协议等的网络上能够通信的软件。在本公开的可选实施例中,也可以使用例如IPX、UDP等的其它通信软件和传输协议。在一些实施例中,计算机820包括来自英特尔(Intel)的一个或多个Xeon微处理器作为处理器860。进一步地,在一个实施例中,计算机820包括基于UNIX的操作系统。
RAM 870和磁盘驱动器880是有形介质的示例,有形介质被配置成存储包括可执行计算机代码、人类可读取代码等的诸如本公开的实施例的数据。其它类型的有形介质包括软盘、可移动硬盘、诸如CD-ROMS、DVD和条形码的光学存储介质、诸如闪速存储器的半导体存储器、非暂时性只读存储器(ROMS)、电池支持的易失性存储器、网络存储装置等。RAM 870和磁盘驱动器880可以被配置成存储提供本公开的功能的基本程序和数据结构。
提供本公开的功能的软件代码模块和指令可以被存储在RAM 870和磁盘驱动器880中。这些软件模块可以由处理器860执行。RAM 870和磁盘驱动器880还可以提供用于存储根据本公开使用的数据的存储库。
RAM 870和磁盘驱动器880可以包括多个存储器,多个存储器包括用于在编程执行期间存储指令和数据的主随机存取存储器(RAM)和其中存储固定的非暂时性指令的只读存储器(ROM)。RAM 870和磁盘驱动器880可以包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。RAM 870和磁盘驱动器880还可以包括诸如可移动闪速存储器的可移动存储系统。
总线子系统890提供一种机构,其使计算机820的各种部件和子系统按预期彼此通信。虽然总线子系统890被示意性地示出为单总线,但是总线子系统的可选实施例可以使用多总线。
图8表示能够实现本公开的计算机系统。对于本领域普通技术人员将显而易见的是,许多其它硬件和软件配置适于与本公开一起使用。例如,计算机可以是台式、便携式、机架安装或平板配置。另外,计算机可以是一系列联网计算机。进一步地,诸如PentiumTM或ItaniumTM微处理器、来自超微半导体公司(Advanced Micro Devices,Inc.)的OpteronTM或AthlonXPTM微处理器等的其它微处理器被考虑。进一步地,诸如来自微软公司(MicrosoftCorporation)的 等、来自太阳微系统公司(Sun Microsystems)的Solaris、LINUX、UNIX等的其它类型的操作系统被考虑。在其它实施例中,可以在芯片或辅助处理板上实施上述技术。
本公开的各个实施例可以以软件或硬件或两者的组合的逻辑形式实施。该逻辑可以被存储在计算机可读或机器可读的非暂时性存储介质中作为一组指令,其适于引导计算机系统的处理器执行本公开的实施例中公开的一系列步骤。该逻辑可以形成计算机编程产品的部分,其适于引导信息处理装置执行在本公开的实施例中公开的一系列步骤。基于本文提供的公开内容和教导,本领域普通技术人员将理解实现本公开的其它方式和/或方法。
本文描述的数据结构和代码可以部分地或全部地存储在计算机可读存储介质和/或硬件模块和/或硬件装置上。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器,诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用光盘或数字视频光盘)的磁存储装置和光存储装置、或能够存储代码和/或数据的现在已知或以后开发的其它介质。本文描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器和/或现在已知或以后开发的其它硬件模块或设备。
本文描述的方法和进程可以部分地或全部地实现为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取并执行代码和/或数据时,计算机系统执行相关的方法和进程。方法和进程也可以部分地或全部地以硬件模块或设备实现,使得当硬件模块或设备被激活时,它们执行相关的方法和进程。本文公开的方法和进程可以使用代码、数据和硬件模块或设备的组合来实现。
虽然为了清楚理解的目的已经详细地描述前述实施例,但本公开不限于提供的细节。存在许多实施本公开的可选方法。公开的实施例是说明性的而不是限制性的。
Claims (17)
1.一种解码低密度奇偶校验码,即LDPC码的方法,所述方法包括:
由包括LDPC解码器的系统启动对LDPC码字的迭代解码,其中所述迭代解码受到最大迭代次数的限制;
由所述系统确定所述迭代解码的当前迭代对应于等于或大于迭代次数阈值并且小于所述最大迭代次数的迭代次数;
由所述系统将所述当前迭代次数的与所述LDPC码字相关联的校正子与校验和阈值进行比较,其中所述校正子为非零;以及
由所述系统基于所述比较来终止所述迭代解码,其中在达到所述最大迭代次数之前终止所述迭代解码,
其中所述比较将所述校正子的权重与所述校验和阈值进行比较,其中所述权重表示码字的校验和,并且其中所述比较表示所述权重等于或大于所述校验和阈值,并且其中在所述当前迭代终止所述迭代解码。
2.根据权利要求1所述的方法,其中仅在所述当前迭代次数达到所述迭代次数阈值之后执行所述校正子与所述校验和阈值的比较。
3.根据权利要求1所述的方法,其中基于所述迭代解码的延迟时间性能的模拟来预定义所述迭代次数阈值和所述校验和阈值。
4.根据权利要求1所述的方法,其中所述最大迭代次数在15至25的范围内,其中所述迭代次数阈值小于所述最大迭代次数并且在10至20的范围内,并且其中所述校验和阈值在25至35的范围内。
5.根据权利要求1所述的方法,其中所述迭代次数阈值在所述最大迭代次数的60%至80%的范围内。
6.根据权利要求1所述的方法,其进一步包括:
由所述系统确定在所述当前迭代之后的迭代解码的迭代的所述校正子的权重的变化,其中基于规则来终止所述迭代解码,所述规则根据所述变化指定终止。
7.根据权利要求6所述的方法,其中所述变化表示所述权重是恒定的或已变差,并且其中所述规则基于所述权重是恒定的或已变差来指定终止在所述迭代。
8.根据权利要求6所述的方法,其中所述校验和阈值与变化率相关联,其中所述校正子的权重的变化表示所述校正子正在以低于所述变化率的速率变化,并且其中所述规则基于较低速率的变化来指定终止在所述迭代。
9.根据权利要求1所述的方法,其中所述校验和阈值与变化率阈值相关联,其中将所述校正子与所述校验和阈值进行比较包括通过至少以下步骤将所述校正子的权重的变化与所述变化率阈值进行比较:
计算从一次或多次先前迭代到所述当前迭代的所述校正子的权重的变化率;
确定所述校正子的权重的变化率低于所述变化率阈值;以及
基于所述变化率低于所述变化率阈值,生成终止所述迭代解码的判决。
10.根据权利要求1所述的方法,其中将所述校正子与所述校验和阈值进行比较包括:
计算从一次或多次先前迭代到所述当前迭代的所述校正子的权重的变化率;
确定从所述一次或多次先前迭代以来,所述校正子的权重的变化率是恒定的或者尚未改善;以及
基于所述变化率低于所述变化率阈值,生成终止所述迭代解码的判决。
11.一种系统,其包括:
处理器;以及
存储器,所述存储器包括与低密度奇偶校验解码器,即LDPC解码器相关联的计算机可读指令,所述处理器执行所述指令使得所述系统至少执行以下操作:
启动对LDPC码字的迭代解码,其中所述迭代解码受到最大迭代次数的限制;
确定所述迭代解码的当前迭代对应于等于或大于迭代次数阈值并且小于所述最大迭代次数的迭代次数;
将所述当前迭代次数的与所述LDPC码字相关联的校正子与校验和阈值进行比较,其中所述校正子为非零;以及
基于所述比较来终止所述迭代解码,其中在达到所述最大迭代次数之前终止所述迭代解码,
其中所述比较表示与所述LDPC码字相关联的所述校正子的权重等于或大于所述校验和阈值,并且其中所述迭代解码终止在所述当前迭代。
12.根据权利要求11所述的系统,其中将所述校正子与所述校验和阈值进行比较包括将所述码字的校验和与所述校验和阈值进行比较,其中仅在所述当前迭代次数达到所述迭代次数阈值之后,将所述校验和与所述校验和阈值进行比较。
13.根据权利要求11所述的系统,其中所述校验和阈值与变化率阈值相关联,其中将所述校正子与所述校验和阈值进行比较包括:
计算从一次或多次先前迭代到所述当前迭代的所述校正子的权重的变化率;
确定所述校正子的权重的变化率低于所述变化率阈值;以及
基于所述变化率低于所述变化率阈值,生成终止所述迭代解码的判决。
14.根据权利要求11所述的系统,其中所述迭代次数阈值在所述最大迭代次数的60%至80%的范围内,并且其中仅在所述当前迭代次数达到所述迭代次数阈值之后,计算所述校正子的变化率。
15.根据权利要求11所述的系统,其中将所述校正子与所述校验和阈值进行比较包括:
计算从一次或多次先前迭代到所述当前迭代的所述校正子的权重的变化率;
确定从所述一次或多次先前迭代以来,所述校正子的权重的变化率是恒定的或者尚未改善;以及
基于所述变化率低于所述变化率阈值,生成终止所述迭代解码的判决。
16.一种存储指令的非暂时性计算机存储介质,所述指令与低密度奇偶校验解码器,即LDPC解码器相关联,并且系统的处理器执行所述指令使得所述系统执行操作,所述操作包括:
启动对LDPC码字的迭代解码,其中所述迭代解码受到最大迭代次数的限制;
确定所述迭代解码的当前迭代对应于等于或大于迭代次数阈值并且小于所述最大迭代次数的迭代次数;
将所述当前迭代次数的与所述LDPC码字相关联的校正子与校验和阈值进行比较,其中所述校正子为非零;以及
基于所述比较来终止所述迭代解码,其中在达到所述最大迭代次数之前终止所述迭代解码,
其中所述比较指示与所述LDPC码字相关联的所述校正子的权重等于或大于所述校验和阈值,并且其中在所述当前迭代终止所述迭代解码。
17.根据权利要求16所述的非暂时性计算机存储介质,其中所述校验和阈值与变化率阈值相关联,其中将所述校正子与所述校验和阈值进行比较包括:
在所述当前迭代次数达到所述迭代次数阈值时,计算从一次或多次先前迭代到所述当前迭代的所述校正子的权重的变化率;
确定所述校正子的权重的变化率低于所述变化率阈值;以及
基于所述变化率低于所述变化率阈值,生成终止所述迭代解码的判决。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/607,260 | 2017-05-26 | ||
US15/607,260 US10419024B2 (en) | 2017-05-26 | 2017-05-26 | Early termination of low-density parity-check (LDPC) decoding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108933605A CN108933605A (zh) | 2018-12-04 |
CN108933605B true CN108933605B (zh) | 2022-03-25 |
Family
ID=64400377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810200330.3A Active CN108933605B (zh) | 2017-05-26 | 2018-03-12 | 低密度奇偶校验(ldpc)解码的提前终止 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10419024B2 (zh) |
CN (1) | CN108933605B (zh) |
TW (1) | TW201902138A (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10972217B2 (en) * | 2018-03-30 | 2021-04-06 | Qualcomm Incorporated | Scheduling for low-density parity-check codes |
TWI672911B (zh) * | 2019-03-06 | 2019-09-21 | 瑞昱半導體股份有限公司 | 解碼方法及相關電路 |
CN112260698A (zh) * | 2019-07-22 | 2021-01-22 | 上海高清数字科技产业有限公司 | Ldpc译码器中动态校正因子配置方法 |
CN112688694A (zh) * | 2019-10-18 | 2021-04-20 | 王晋良 | 用于列表型连续消去的解码器及其解码方法 |
US11088712B2 (en) | 2019-11-05 | 2021-08-10 | Western Digital Technologies, Inc. | Iterative decoder performance prediction using machine learning |
US11018695B1 (en) * | 2019-11-11 | 2021-05-25 | SK Hynix Inc. | Fast-converging bit-flipping decoder for low-density parity-check codes |
CN113131947B (zh) * | 2019-12-30 | 2023-11-10 | 华为技术有限公司 | 译码方法、译码器和译码装置 |
US11146291B2 (en) * | 2020-03-02 | 2021-10-12 | Micron Technology, Inc. | Configuring iterative error correction parameters using criteria from previous iterations |
US11374592B2 (en) * | 2020-03-02 | 2022-06-28 | Micron Technology, Inc. | Iterative error correction with adjustable parameters after a threshold number of iterations |
US20210399744A1 (en) * | 2020-06-18 | 2021-12-23 | Intel Corporation | LDPC Decoder Apparatus, Device, System, Method and Computer Program |
CN112152636B (zh) * | 2020-09-08 | 2023-09-29 | Oppo广东移动通信有限公司 | 译码方法及装置、设备、存储介质 |
CN112865812B (zh) * | 2021-01-18 | 2022-09-30 | 武汉梦芯科技有限公司 | 一种多元ldpc译码方法、计算机存储介质及计算机 |
CN113098528B (zh) * | 2021-03-16 | 2023-01-24 | 上海微波技术研究所(中国电子科技集团公司第五十研究所) | 基于ldpc译码的早停方法和系统 |
CN114142870B (zh) * | 2021-11-17 | 2023-02-07 | 北京得瑞领新科技有限公司 | Ldpc码的译码方法、装置、存储介质及ssd设备 |
US20230396271A1 (en) * | 2022-06-01 | 2023-12-07 | Micron Technology, Inc. | Early stopping of bit-flip low density parity check decoding based on syndrome weight |
CN116192166B (zh) * | 2023-04-28 | 2023-08-01 | 南京创芯慧联技术有限公司 | 迭代译码方法、装置、存储介质和电子设备 |
CN116846596B (zh) * | 2023-05-31 | 2024-01-30 | 北京数美时代科技有限公司 | 一种恶意账号的识别方法、系统、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713530A (zh) * | 2004-06-22 | 2005-12-28 | 印芬龙科技股份有限公司 | 解码低密度奇偶校验(ldpc)码字的ldpc解码器 |
CN101194428A (zh) * | 2005-06-27 | 2008-06-04 | 汤姆森许可贸易公司 | 迭代解码器中的停止准则 |
CN101465654A (zh) * | 2009-01-06 | 2009-06-24 | 中山大学 | 基于校验和错误模式的ldpc码的译码停止判决方法 |
CN103208995A (zh) * | 2013-03-27 | 2013-07-17 | 东南大学 | 一种低密度奇偶校验码译码的提前终止方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7853862B2 (en) * | 2005-08-03 | 2010-12-14 | Qualcomm Incorporated | Systems and methods for a turbo low-density parity-check decoder |
US20090077457A1 (en) | 2007-09-19 | 2009-03-19 | Rajaram Ramesh | Iterative decoding of blocks with cyclic redundancy checks |
TWI419481B (zh) | 2009-12-31 | 2013-12-11 | Nat Univ Tsing Hua | 低密度奇偶檢查碼編解碼器及其方法 |
US8924827B2 (en) * | 2012-10-31 | 2014-12-30 | Wipro Limited | Methods and systems for minimizing decoding delay in distributed video coding |
US8929009B2 (en) * | 2012-12-19 | 2015-01-06 | Lsi Corporation | Irregular low density parity check decoder with low syndrome error handling |
US9202519B2 (en) * | 2014-03-28 | 2015-12-01 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Adaptive calibration of noise predictive finite impulse response filter based on decoder convergence |
US9565581B2 (en) * | 2015-02-22 | 2017-02-07 | The Regents Of The University Of Michigan | Iterative detection-decoding system |
US10116333B2 (en) * | 2016-07-29 | 2018-10-30 | Sandisk Technologies Llc | Decoder with parallel decoding paths |
-
2017
- 2017-05-26 US US15/607,260 patent/US10419024B2/en active Active
-
2018
- 2018-01-24 TW TW107102476A patent/TW201902138A/zh unknown
- 2018-03-12 CN CN201810200330.3A patent/CN108933605B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713530A (zh) * | 2004-06-22 | 2005-12-28 | 印芬龙科技股份有限公司 | 解码低密度奇偶校验(ldpc)码字的ldpc解码器 |
CN101194428A (zh) * | 2005-06-27 | 2008-06-04 | 汤姆森许可贸易公司 | 迭代解码器中的停止准则 |
CN101465654A (zh) * | 2009-01-06 | 2009-06-24 | 中山大学 | 基于校验和错误模式的ldpc码的译码停止判决方法 |
CN103208995A (zh) * | 2013-03-27 | 2013-07-17 | 东南大学 | 一种低密度奇偶校验码译码的提前终止方法 |
Non-Patent Citations (3)
Title |
---|
LDPC码加权比特翻转译码算法的低复杂度提前停止准则;张高远等;《电子与信息学报》;20141225;第36卷(第12期);全文 * |
Low power LDPC decoder with efficient stopping scheme for undecodable blocks;Tinoosh Mohsenin等;《2011 IEEE International Symposium of Circuits and Systems (ISCAS)》;20110518;全文 * |
Ultra-low complexity early termination scheme for layered LDPC decoding;Yuan-Syun Wu等;《2014 IEEE 3rd Global Conference on Consumer Electronics (GCCE)》;20141010;全文 * |
Also Published As
Publication number | Publication date |
---|---|
US10419024B2 (en) | 2019-09-17 |
TW201902138A (zh) | 2019-01-01 |
US20180343082A1 (en) | 2018-11-29 |
CN108933605A (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108933605B (zh) | 低密度奇偶校验(ldpc)解码的提前终止 | |
US9866241B2 (en) | Techniques for adaptive LDPC decoding | |
CN108933602B (zh) | 用于低密度奇偶校验解码的深度学习 | |
CN109428605B (zh) | 利用校正子解码分量代码的用于g-ldpc码的位翻转解码器 | |
CN109560818B (zh) | 用于ldpc码的改进的最小和解码 | |
CN109873645B (zh) | 用于多个字线失败的软芯片猎杀恢复 | |
CN108932177B (zh) | 具有可变长度分量的广义低密度奇偶校验码 | |
US11108407B1 (en) | Performance of a bit flipping (BF) decoder of an error correction system | |
CN109873646B (zh) | 使用级联码的软芯片猎杀恢复 | |
US10218388B2 (en) | Techniques for low complexity soft decoder for turbo product codes | |
US10439649B2 (en) | Data dependency mitigation in decoder architecture for generalized product codes for flash storage | |
US11381253B1 (en) | Decoding codeword based on higher order information | |
US10033407B2 (en) | Optimization of low density parity-check code encoder based on a search for an independent set of nodes | |
CN107733443B (zh) | 用于通用乘积码背景的低延迟软解码器架构 | |
US20170279467A1 (en) | Performance optimization in soft decoding of error correcting codes | |
US11444638B2 (en) | Quality-based dynamic scheduling LDPC decoder | |
US11128314B2 (en) | Error characteristic estimation for NAND flash | |
CN116582135A (zh) | 通过识别不可靠校验节点提高bf解码器的错误平层性能 | |
US11025283B1 (en) | Decoding latency and throughput of a multi-decoder error correction system | |
CN107733444B (zh) | 用于乘积码的软译码器参数优化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |