CN115276673A - 级联纠错码 - Google Patents

级联纠错码 Download PDF

Info

Publication number
CN115276673A
CN115276673A CN202210518127.7A CN202210518127A CN115276673A CN 115276673 A CN115276673 A CN 115276673A CN 202210518127 A CN202210518127 A CN 202210518127A CN 115276673 A CN115276673 A CN 115276673A
Authority
CN
China
Prior art keywords
ldpc
bch
decoding
decoder
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.)
Pending
Application number
CN202210518127.7A
Other languages
English (en)
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.)
Yingren Technology Shanghai Co ltd
Original Assignee
Yingren Technology Shanghai Co ltd
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 Yingren Technology Shanghai Co ltd filed Critical Yingren Technology Shanghai Co ltd
Publication of CN115276673A publication Critical patent/CN115276673A/zh
Pending legal-status Critical Current

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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6513Support of multiple code types, e.g. unified decoder for LDPC and turbo codes
    • 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/29Coding, 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/2906Coding, 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 using block codes
    • 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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
    • H03M13/151Cyclic 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/1575Direct 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
    • 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/29Coding, 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/2906Coding, 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 using block codes
    • H03M13/2927Decoding strategies
    • 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/29Coding, 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/2948Iterative decoding
    • 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/31Coding, 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 coding for error detection or correction and efficient use of the spectrum
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/43Majority logic or threshold decoding
    • 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6511Support of multiple decoding rules, e.g. combined MAP and Viterbi decoding
    • 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • H03M13/151Cyclic 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/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)

Abstract

提供了用于级联纠错编码的系统和方法。一种装置可以包括:低密度奇偶校验(LDPC)解码器,其被配置为对LDPC码字的比特执行迭代LDPC解码过程;Bose‑Chaudhuri‑Hocquenghem(BCH)解码器,其耦合到所述LDPC解码器;以及BCH调度器,其耦合到所述LDPC解码器和所述BCH解码器。LDPC码字可以通过LDPC编码Bose‑Chaudhuri‑Hocquenghem(BCH)码字产生,BCH码字可以通过BCH编码数据单元产生。所述BCH调度器可以被配置为在所述迭代LDPC解码过程中的每次迭代之后确定是否满足所述BCH解码器的触发条件,并且如果满足所述BCH解码器的触发条件,则激活所述BCH解码器以对所述LDPC解码器的中间解码结果进行操作。

Description

级联纠错码
技术领域
本发明涉及使用奇偶校验数据保护数据免受损坏,具体涉及使用级联纠错码保护数据。
背景技术
许多数据通信或存储系统共同的一个问题是数据损坏,例如,由于通信信道或存储系统中的写入/读取过程中的噪声。一种解决数据损坏的技术是使用纠错码(ECC)或前向纠错(FEC)码。ECC和FEC将冗余数据或奇偶校验数据添加到用户数据,以便即使例如在存储器上传输或损坏过程中引入了许多误码(取决于所使用的代码的能力),也可以由接收器或读取器恢复用户数据。
多年来,已经开发了许多不同的编码方案,例如汉明码(Hamming codes)、里德-所罗门码(Reed-Solomon codes)、Turbo码等。最近,低密度奇偶校验(LDPC)码由于其出色的纠错能力而被广泛使用。然而,LDPC码有一个众所周知的差错平台(error floor)的问题。一种降低LDPC码的差错平台的方法是最小化奇偶校验矩阵(例如:陷阱集,停止集,吸收集)中导致差错平台的有害图模式的数量。此外,由于准循环(Quasi-Cyclic)特性使硬件实现更容易,因此使用了准循环LDPC码。但是差错平台很难通过代码构造来消除,并且LDPC解码器的收敛速度对系统吞吐量有巨大影响。
发明内容
本发明的系统和方法提供了一种新的ECC方案,以降低低密度奇偶校验(LDPC)码(例如,准循环(Quasi-Cyclic)LDPC码)的差错平台并提高LDPC解码器的收敛速度。该编码方案可以包括Bose-Chaudhuri-Hocquenghem(BCH)码和QC-LDPC码的级联,并且可以通过涉及LDPC解码器和BCH解码器两者的迭代级联解码过程对编码的码字进行解码。在各种实施例中,在迭代LDPC解码过程的每次迭代之后,可以使用BCH调度器来决定是否可以激活BCH解码器以处理LDPC解码器的中间解码结果。所述BCH解码器的解码结果可以馈送给LDPC解码器,用于下一次LDPC解码迭代。
在一些实施例中,BCH解码器可以被配置为执行BCH解码。在一些其他实施例中,BCH解码器可以被简化为用于计算BCH误码检测的BCH校验子的校验子计算器。级联ECC方案可以降低任何LDPC解码算法的差错平台,并可以用于加速任何LDPC解码算法(例如,BP、最小和(min-sum)、BF等)的收敛。在至少一个实施例中,级联ECC方案在固态驱动器(SSD)控制器中实现。
在一个示例性实施例中,提供了一种方法,该方法可以包括:从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特;将从所述非易失性存储设备读取的LDPC码字的比特馈送到LDPC解码器;并且通过在迭代LDPC解码过程中插入一个或多个Bose-Chaudhuri-Hocquenghem(BCH)解码过程来对所述LDPC码字执行迭代级联解码过程。所述LDPC码字可以通过LDPC编码BCH码字产生,并且BCH码字可以通过BCH编码数据单元产生。所述迭代级联解码过程的迭代可以包括:对所述LDPC码字执行所述迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果;确定所述中间LDPC解码结果的LDPC校验子未达到零;使用BCH调度器确定是否满足BCH解码的触发条件,当满足所述BCH解码的触发条件时,对所述中间LDPC解码结果执行BCH解码过程;当不满足所述BCH解码的触发条件或BCH解码过程已被执行但未成功解码BCH码字时,执行所述迭代级联解码过程中的下一次迭代。
在另一个示例性实施例中,提供了另一种方法,该方法可以包括:从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特,将从所述非易失性存储设备读取的LDPC码字的比特馈送到LDPC解码器,并通过在迭代LDPC解码过程中插入一个或多个Bose-Chaudhuri-Hocquenghem(BCH)校验子计算过程来对所述LDPC码字执行迭代级联解码过程。所述LDPC码字可以通过LDPC编码BCH码字产生,并且所述BCH码字可以通过BCH编码数据单元产生。所述迭代级联解码过程的迭代可以包括:对所述LDPC码字执行所述迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果;确定所述中间LDPC解码结果的LDPC校验子未达到零;使用BCH调度器确定是否满足BCH校验子计算的触发条件,当满足所述BCH校验子计算的触发条件时,对所述中间LDPC解码结果计算用于BCH误码检测的BCH校验子,并且当不满足所述BCH校验子计算的触发条件或所述BCH校验子未达到零时,执行所述迭代级联解码过程中的下一次迭代。
在又一个示例性实施例中,提供了一种装置,该装置可以包括:低密度奇偶校验(LDPC)解码器,其被配置为对LDPC码字的比特执行迭代LDPC解码过程;耦合到所述LDPC解码器的Bose-Chaudhuri-Hocquenghem(BCH)解码器;以及耦合到所述LDPC解码器和所述BCH解码器的BCH调度器。所述LDPC码字可以通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,并且所述BCH码字可以通过BCH编码数据单元产生。所述BCH调度器可以被配置为在所述迭代LDPC解码过程中的每次迭代之后确定是否满足所述BCH解码器的触发条件,并且如果满足所述BCH解码器的所述触发条件,则激活所述BCH解码器以对所述LDPC解码器的中间解码结果进行操作。
附图简要说明
图1示意性地示出了根据本发明的一个实施例的非易失性存储控制器。
图2示意性地示出了根据本发明的一个实施例的编码数据路径。
图3是根据本发明的一个实施例的用于执行级联ECC的过程的流程图。
图4示意性地示出了根据本发明的一个实施例的迭代级联解码过程。
图5是根据本发明的另一个实施例的用于执行级联ECC的过程的流程图。
图6示意性地示出了根据本发明的另一个实施例的迭代级联解码过程。
具体实施方式
现在将参照附图详细描述根据本发明的具体实施例。为了一致性,各种附图中的相似元件由相似的参考数字表示。
图1示意性地示出了根据本发明的一个实施例的非易失性存储控制器100。非易失性存储控制器100可以包括处理器102、ECC引擎104、第一接口106和第二接口108。第一接口106可以是任何现有的或尚待开发的接口,其被配置为将非易失性存储控制器100耦合到主机计算机系统的系统总线,并从主机计算机系统接收数据并将数据发送到主计算机系统。在一个实施例中,例如,第一接口106可以是外围组件互连Express(PCIE)接口。第二接口108可以是被配置为将存储控制器100耦合到一个或多个非易失性存储存储器(NVM)设备的任何现有的或尚待开发的接口。在一个实施例中,第二接口108可以是多通道接口,其可以被配置为并行地在多个通道上传输编码数据(例如,ECC码字)。例如,第二接口108可以是开放NAND闪存接口(ONFI),其可以支持不同的协议(例如,非易失性双倍数据速率(NVDDR)、NVDDR类型2(NVDDR2)、NVDDR类型3(NVDDR3)),或者可能是Toggle协议,并且以不同的传输速度运行。
处理器102可以是配置为执行可执行指令(例如,软件或固件)的微控制器单元(MCU)。在各种实施例中,处理器102可以是微处理器、微控制器、现场可编程门阵列(FPGA)或专用集成电路(ASIC)。非易失性存储控制器100可以经由第一接口106从主机接收命令,例如,以将数据存储到非易失性存储系统(例如,写入命令)或读取存储在非易失性存储系统中的数据(例如,读取命令)。
ECC引擎104可以包括用于执行BCH编码和LDPC编码的编码器,例如BCH编码器110和LDPC编码器112。ECC引擎104还可以包括解码器,例如BCH解码器118和LDPC解码器114。LDPC解码器114可以被配置为执行迭代LDPC解码过程,例如但不限于比特翻转或消息传递算法(MPA)(例如,和积算法(“SPA”)、最小和算法、随机解码算法)。在一些实施例中,准循环(Quasi-Cyclic)LDPC码可用于LDPC编码。
ECC引擎104还可以包括耦合到LDPC解码器114和BCH解码器118的BCH调度器116。在LDPC解码过程中的每次迭代之后,LDPC解码过程的一些信息可以从LDPC解码器114传递到BCH调度器116。BCH调度器的输入可以包括以下的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、LDPC校验子、LDPC解码迭代中的翻转比特的数量、以及先前LDPC解码迭代中的翻转比特的数量。
ECC引擎104可以被配置为通过在迭代LDPC解码过程中插入一个或多个BCH解码过程(或BCH校验子计算过程)来执行迭代级联解码过程。在一些实施例中,该迭代级联解码过程的迭代可以包括:对LDPC码字执行迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果,确定该中间LDPC解码结果的LDPC校验子未达到零,使用BCH调度器116确定是否满足BCH解码(或BCH校验子计算)的触发条件,当满足BCH解码(或BCH校验子计算)的触发条件时激活BCH解码器118,并且当不满足BCH解码(或BCH校验子计算)的触发条件时,或者虽然BCH解码器118被激活但是BCH解码器118的BCH解码不成功(或BCH误码检测报告误码)时,执行迭代级联解码过程中的下一次迭代。如果执行BCH解码,则BCH解码结果可以从BCH解码器118馈送到LDPC解码器114。
在一些实施例中,BCH解码器118可以简化为用于BCH误码检测的BCH校验子计算器,而不是用于BCH解码的完整版本的BCH解码器。在这些实施例中,BCH解码的触发条件可以由BCH校验子计算的触发条件代替。在任一种情况下,触发条件可被称为激活BCH解码器118的触发条件或BCH解码器118的触发条件。在一个实施例中,BCH解码器118的触发条件可以是当前LDPC迭代中的翻转比特的数量为零并且LDPC校验子大于零。在另一实施例中,BCH解码器118的触发条件可以是LDPC校验子中“1”的数目小于预定阈值(例如,64)。在又一实施例中,BCH解码器118的触发条件可以是当前LDPC迭代中的翻转比特的数量和先前LDPC迭代中的翻转比特的数量均小于阈值。在另一实施例中,BCH解码器118的触发条件可以是当前LDPC迭代次数不小于预定阈值。
图2示意性地示出了根据本发明的一个实施例的编码数据路径。由级联ECC方案保护的数据(例如,数据单元202)可以由BCH编码器110编码。BCH码字208可以由BCH编码器110产生,BCH码字208可以包括数据单元202和BCH奇偶校验单元204。然后可以由LDPC编码器112对BCH码字208进行编码。LDPC码字210可以由LDPC编码器112产生。LDPC码字210可以包括数据单元202、BCH奇偶校验单元204和LDPC奇偶校验单元206。LDPC码字210可以存储在非易失性存储设备中,例如,非易失性存储器(NVM)设备。在一些实施例中,一个LDPC码字可以通过LDPC编码多个BCH码字产生。此外,在一些实施例中,一个LDPC码字可以被分散以被存储在一个或多个NVM设备的多个裸片(die)上。
图3是根据本发明的一个实施例的执行级联ECC解码的过程300的流程图。在框302中,可以从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特。这些比特可能包含误码,并且可以被称为原始比特。该LDPC码字可以通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,并且该BCH码字可以通过BCH编码数据单元产生。在一些实施例中,可以由LDPC编码一起编码多个BCH码字以产生一个LDPC码字。在框304中,从非易失性存储设备读取的LDPC码字的比特可以被馈送到LDPC解码器。例如,可以向LDPC解码器114馈送从NVM读取的原始比特,并且对从NVM读取的这些比特开始LDPC解码。在框306中,可以对LDPC码字执行迭代级联解码过程。LDPC解码器114可以被配置为执行迭代LDPC解码过程,并且一个或多个BCH解码过程可以被插入到迭代LDPC解码过程中。在一些实施例中,BCH解码器118可以是完整(full-fledged)BCH解码器,并且BCH解码过程可以由完整BCH解码器执行。
图4示意性地示出了根据本发明的一个实施例的迭代级联解码过程400。迭代级联解码过程400的迭代可以在框402开始,其中可以对LDPC码字执行迭代LDPC解码过程的LDPC解码迭代以产生中间LDPC解码结果。在框404中,可以确定中间LDPC解码结果的LDPC校验子没有达到零。在框406中,可以使用BCH调度器来确定是否满足BCH解码的触发条件。在框408中,当满足BCH解码的触发条件时,可以对中间LDPC解码结果执行BCH解码过程。例如,在BCH解码器118是完整BCH解码器的实施例中,可以由BCH解码器118执行完整BCH解码过程(包括BCH解码和BCH校验子计算)。
在框410中,当不满足BCH解码的触发条件或BCH解码过程已被执行但BCH解码不成功时,可以执行迭代级联解码过程中的下一次迭代。如果满足两个条件中的任一个,则迭代级联解码过程可以继续到下一次迭代。一个条件是激活BCH解码器的触发条件不被满足,那么迭代级联解码过程可以开始下一次LDPC迭代。另一个条件是BCH解码器被激活但BCH解码不成功。也就是说,BCH解码器尚未成功地解码BCH码字,因此需要迭代级联解码过程的下一次迭代。
图5是根据本发明的另一实施例的用于执行级联ECC解码的过程500的流程图。在框502中,可以从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特。这些比特可能是包含误码的原始比特。该LDPC码字可以通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,并且该BCH码字可以通过BCH编码数据单元产生。在一些实施例中,可以由LDPC编码一起编码多个BCH码字以产生一个LDPC码字。在框504中,从非易失性存储设备读取的LDPC码字的比特可以被馈送到LDPC解码器。例如,可以向LDPC解码器114馈送从NVM读取的原始比特,并且对从NVM读取的这些比特开始LDPC解码。在框506中,可以对LDPC码字执行迭代级联解码过程。LDPC解码器114可以被配置为执行迭代LDPC解码过程。在一些实施例中,BCH解码器118可以是仅包含用于BCH误码检测的BCH校验子计算器的简化版本,并且一个或多个BCH校验子计算过程可以被插入到迭代LDPC解码过程中。所述一个或多个BCH校验子计算过程中的每一个可以计算用于BCH误码检测的BCH校验子。
图6示意性地示出了根据本发明的一个实施例的迭代级联解码过程600。迭代级联解码过程600的迭代可以在框602开始,其中可以对LDPC码字执行迭代LDPC解码过程的LDPC解码迭代以产生中间LDPC解码结果。在框604中,可以确定中间LDPC解码结果的LDPC校验子没有达到零。在框606中,可以使用BCH调度器确定是否满足BCH校验子计算的触发条件。在框608中,当满足BCH校验子计算的触发条件时,可以对中间LDPC解码结果计算用于BCH错误检测的BCH校验子。在BCH解码器118是包含BCH校验子计算器但没有其他BCH解码电路的简化版本的实施例中,BCH校验子计算器可以计算用于BCH误码检测的BCH校验子。
在框610中,当不满足BCH校验子计算的触发条件或者用于BCH误码检测计算的BCH校验子没有达到零时,可以执行迭代级联解码过程中的下一次迭代。如果满足两个条件中的任一个,则迭代级联解码过程可以继续到下一次迭代。一个条件是不满足BCH校验子计算的触发条件,则迭代级联解码过程可以开始下一次LDPC迭代。另一个条件是满足BCH校验子计算的触发条件,但是用于BCH误码检测计算的BCH校验子未达到零。也就是说,在LDPC解码过程之后,BCH码字的数据单元仍然包含误码并且尚未成功恢复,因此需要迭代级联解码过程的下一次迭代。
应当注意,第一次迭代可以以从NVM设备获得的原始比特开始,但是后续迭代可以对先前的解码结果进行操作。并且,如果执行BCH解码过程,则下一次LDPC迭代可以对由BCH解码过程产生的解码结果执行操作。每当LDPC校验子在LDPC解码迭代之后达到零或BCH校验子达到零(例如,在BCH解码过程或BCH误码检测之后)时,就可以实现解码成功。迭代级联解码过程可以具有预设的最大迭代次数。当迭代级联解码过程已经达到最大迭代次数但是仍然没有成功完成解码时,可以声明解码失败。
在一些实施例中,LDPC解码器114可以是迭代解码器,并且BCH解码过程可以插入到多次LDPC迭代之间。只要中间LDPC解码结果的数据部分中的剩余误码的数量小于BCH的解码能力,则可以通过BCH解码器对数据部分进行校正,而不是等待LDPC解码器继续LDPC解码过程。通过在LDPC解码器的迭代中引入BCH误码解码,可以提高LDPC解码器的收敛速度。相反,如果BCH解码器没有被激活,则LDPC解码器可以在未来的迭代中校正这些剩余误码,或者LDPC解码器在完成预设的最大迭代次数之后不能修复这些误码。在这两种情况下,解码过程可能引入更长的延迟。因此,根据本发明的实施例可以比常规解码过程更早地获得解码成功,并且可以尽快终止解码过程。
在一个示例性实施例中,提供了一种方法,该方法可以包括从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特;将从所述非易失性存储设备读取的LDPC码字的比特馈送到LDPC解码器;并且通过在迭代LDPC解码过程中插入一个或多个Bose-Chaudhuri-Hocquenghem(BCH)解码过程来对所述LDPC码字执行迭代级联解码过程。LDPC码字可以通过BCH编码码字产生,BCH码字可以通过BCH编码数据单元产生。所述迭代级联解码过程的迭代可以包括:对所述LDPC码字执行所述迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果;确定所述中间LDPC解码结果的LDPC校验子未达到零;使用BCH调度器确定是否满足BCH解码的触发条件,当满足所述BCH解码的触发条件时,对所述中间LDPC解码结果执行BCH解码过程;当不满足所述BCH解码的触发条件或BCH解码过程已被执行但未成功解码BCH码字时,执行所述迭代级联解码过程中的下一次迭代。
在一个实施例中,BCH解码的触发条件是LDPC解码迭代中的翻转比特的数量为零并且LDPC校验子大于零。
在一个实施例中,BCH解码的触发条件是LDPC校验子中“1”的数目小于预定阈值。
在一个实施例中,BCH解码的触发条件是LDPC解码迭代中的翻转比特的数量和先前LDPC解码迭代中的翻转比特的数量均小于阈值。
在一个实施例中,BCH解码的触发条件是当前迭代次数已达到预定阈值。
在一个实施例中,BCH调度器的输入可以包括以下各项中的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、LDPC校验子、LDPC解码迭代中的翻转比特的数量、先前LDPC解码迭代中的翻转比特的数量。
在一个实施例中,迭代LDPC解码过程可以是硬判决解码过程或软判决解码过程。
在另一个示例性实施例中,提供了另一种方法,该方法可以包括:从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特,将从所述非易失性存储设备读取的LDPC码字的比特馈送到LDPC解码器,并通过在迭代LDPC解码过程中插入一个或多个Bose-Chaudhuri-Hocquenghem(BCH)校验子计算过程来对所述LDPC码字执行迭代级联解码过程。LDPC码字可以通过BCH编码码字产生,BCH码字可以通过BCH编码数据单元产生。所述迭代级联解码过程的迭代可以包括:对所述LDPC码字执行所述迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果;确定所述中间LDPC解码结果的LDPC校验子未达到零;使用BCH调度器确定是否满足BCH校验子计算的触发条件,当满足所述BCH校验子计算的触发条件时,对所述中间LDPC解码结果计算用于BCH误码检测的BCH校验子,并且当不满足所述BCH校验子计算的触发条件或所述BCH校验子未达到零时,执行所述迭代级联解码过程中的下一次迭代。
在一个实施例中,BCH校验子计算的触发条件是LDPC解码迭代中的翻转比特的数量为零并且LDPC校验子大于零。
在一个实施例中,BCH校验子计算的触发条件是LDPC校验子中“1”的数目小于预定阈值。
在一个实施例中,BCH校验子计算的触发条件是LDPC解码迭代中的翻转比特的数量和先前LDPC解码迭代中的翻转比特的数量均小于阈值。
在一个实施例中,BCH校验子计算的触发条件是当前迭代次数已达到预定阈值。
在一个实施例中,BCH调度器的输入包括以下各项中的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、LDPC校验子、LDPC解码迭代中的翻转比特的数量、先前LDPC解码迭代中的翻转比特的数量。
在又一示例性实施例中,提供了一种装置,该装置可以包括:低密度奇偶校验(LDPC)解码器,其被配置为对LDPC码字的比特执行迭代LDPC解码过程;耦合到所述LDPC解码器的Bose-Chaudhuri-Hocquenghem(BCH)解码器;以及耦合到所述LDPC解码器和所述BCH解码器的BCH调度器。该LDPC码字可以通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,并且该BCH码字可以通过BCH编码数据单元产生。所述BCH调度器可以被配置为在所述迭代LDPC解码过程中的每次迭代之后确定是否满足所述BCH解码器的触发条件,并且如果满足所述BCH解码器的所述触发条件,则激活所述BCH解码器以对所述LDPC解码器的中间解码结果进行操作。
在一个实施例中,BCH解码器可以是包含BCH误码检测器的简化解码器,所述BCH误码检测器被配置为对LDPC解码器的解码结果计算BCH校验子。
在一个实施例中,BCH解码器的触发条件是当前LDPC解码迭代中的翻转比特的数量为零,并且当前LDPC解码迭代之后的LDPC校验子大于零。
在一个实施例中,BCH解码器的触发条件是当前LDPC解码迭代之后的LDPC校验子中“1”的数目小于预定阈值。
在一个实施例中,BCH解码器的触发条件是当前LDPC解码迭代中的翻转比特的数量和先前LDPC解码迭代中的翻转比特的数量均小于阈值。
在一个实施例中,BCH解码器的触发条件是当前迭代次数已达到预定阈值。
在一个实施例中,BCH调度器的输入包括以下各项中的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、LDPC校验子权重、当前LDPC解码迭代中的翻转比特的数量、先前LDPC解码迭代中的翻转比特的数量。
虽然本文已经公开了各种方面和实施例,但是对于本领域技术人员来说,其他方面和实施例将是显而易见的。本文所公开的各个方面和实施例是出于说明的目的,并且不旨在限制,其真实范围和精神由所附权利要求所指示。

Claims (20)

1.一种方法,其特征在于,包括:
从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特,所述LDPC码字是通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,所述BCH码字是通过BCH编码数据单元产生;
将从所述非易失性存储设备读取的所述LDPC码字的比特馈送到LDPC解码器;以及
通过在迭代LDPC解码过程中插入一个或多个BCH解码过程,对所述LDPC码字执行迭代级联解码过程,所述迭代级联解码过程的迭代包括:
对所述LDPC码字执行所述迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果;
确定所述中间LDPC解码结果的LDPC校验子未达到零;
使用BCH调度器确定是否满足BCH解码的触发条件;
当满足所述BCH解码的所述触发条件时,对所述中间LDPC解码结果执行BCH解码过程;以及
当不满足所述BCH解码的所述触发条件或所述BCH解码过程已被执行但未成功解码所述BCH码字时,执行所述迭代级联解码过程中的下一次迭代。
2.根据权利要求1所述的方法,其特征在于,所述BCH解码的所述触发条件是所述LDPC解码迭代中的翻转比特的数量为零并且所述LDPC校验子大于零。
3.根据权利要求1所述的方法,其特征在于,所述BCH解码的所述触发条件是所述LDPC校验子中“1”的数目小于预定阈值。
4.根据权利要求1所述的方法,其特征在于,所述BCH解码的所述触发条件是所述LDPC解码迭代中的翻转比特的数量和先前LDPC解码迭代中的翻转比特的数量均小于阈值。
5.根据权利要求1所述的方法,其特征在于,所述BCH解码的所述触发条件是当前迭代次数已经达到预定阈值。
6.根据权利要求1所述的方法,其特征在于,所述BCH调度器的输入包括以下各项中的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、所述LDPC校验子、所述LDPC解码迭代中的翻转比特的数量、先前LDPC解码迭代中的翻转比特的数量。
7.根据权利要求1所述的方法,其特征在于,所述迭代LDPC解码过程是硬判决解码过程或软判决解码过程。
8.一种方法,其特征在于,包括:
从非易失性存储设备读取低密度奇偶校验(LDPC)码字的比特,所述LDPC码字是通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,所述BCH码字是通过BCH编码数据单元产生;
将从所述非易失性存储设备读取的所述LDPC码字的比特馈送到LDPC解码器;以及
通过在迭代LDPC解码过程中插入一个或多个BCH校验子计算过程,对所述LDPC码字执行迭代级联解码过程,所述迭代级联解码过程的迭代包括:
对所述LDPC码字执行所述迭代LDPC解码过程的LDPC解码迭代,以产生中间LDPC解码结果;
确定所述中间LDPC解码结果的LDPC校验子未达到零;
使用BCH调度器确定是否满足BCH校验子计算的触发条件;
当满足所述BCH校验子计算的所述触发条件时,对所述中间LDPC解码结果计算用于BCH误码检测的BCH校验子;以及
当不满足所述BCH校验子计算的所述触发条件或所述BCH校验子未达到零时,执行所述迭代级联解码过程中的下一次迭代。
9.根据权利要求8所述的方法,其特征在于,所述BCH校验子计算的所述触发条件是所述LDPC解码迭代中的翻转比特的数量为零并且所述LDPC校验子大于零。
10.根据权利要求8所述的方法,其特征在于,所述BCH校验子计算的所述触发条件是所述LDPC校验子中“1”的数目小于预定阈值。
11.根据权利要求8所述的方法,其特征在于,所述BCH校验子计算的所述触发条件是所述LDPC解码迭代中的翻转比特的数量和先前LDPC解码迭代中的翻转比特的数量均小于阈值。
12.根据权利要求8所述的方法,其特征在于,所述BCH校验子计算的所述触发条件是当前迭代次数已经达到预定阈值。
13.根据权利要求8所述的方法,其特征在于,所述BCH调度器的输入包括以下各项中的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、所述LDPC校验子、所述LDPC解码迭代中的翻转比特的数量、先前LDPC解码迭代中的翻转比特的数量。
14.一种装置,包括:
低密度奇偶校验(LDPC)解码器,被配置为对LDPC码字的比特执行迭代LDPC解码过程,所述LDPC码字是通过LDPC编码Bose-Chaudhuri-Hocquenghem(BCH)码字产生,所述BCH码字是通过BCH编码数据单元产生;
耦合到所述LDPC解码器的Bose-Chaudhuri-Hocquenghem(BCH)解码器;以及
耦合到所述LDPC解码器和所述BCH解码器的BCH调度器,其中,所述BCH调度器被配置为在所述迭代LDPC解码过程中的每次迭代之后确定是否满足所述BCH解码器的触发条件,并且如果满足所述BCH解码器的所述触发条件,则激活所述BCH解码器以对所述LDPC解码器的中间解码结果进行操作。
15.根据权利要求14所述的装置,其特征在于,所述BCH解码器是包含BCH误码检测器的简化解码器,所述BCH误码检测器被配置为对所述LDPC解码器的解码结果计算BCH校验子。
16.根据权利要求14所述的装置,其特征在于,所述BCH解码器的所述触发条件是当前LDPC解码迭代中的翻转比特的数量为零并且在所述当前LDPC解码迭代之后的LDPC校验子大于零。
17.根据权利要求14所述的装置,其特征在于,所述BCH解码器的所述触发条件是当前LDPC解码迭代之后的LDPC校验子中“1”的数目小于预定阈值。
18.根据权利要求14所述的装置,其特征在于,所述BCH解码器的所述触发条件是当前LDPC解码迭代中的翻转比特的数量和先前LDPC解码迭代中的翻转比特的数量均小于阈值。
19.根据权利要求14所述的装置,其特征在于,所述BCH解码器的所述触发条件是当前迭代次数已达到预定阈值。
20.根据权利要求14所述的装置,其特征在于,所述BCH调度器的输入包括以下各项中的一个或多个:LDPC迭代次数、LDPC列索引、LDPC层索引、LDPC校验子、当前LDPC解码迭代中的翻转比特的数量、先前LDPC解码迭代中的翻转比特的数量。
CN202210518127.7A 2021-06-01 2022-05-12 级联纠错码 Pending CN115276673A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/335,640 US11621728B2 (en) 2021-06-01 2021-06-01 Concatenated error correcting codes
US17/335,640 2021-06-01

Publications (1)

Publication Number Publication Date
CN115276673A true CN115276673A (zh) 2022-11-01

Family

ID=83760670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210518127.7A Pending CN115276673A (zh) 2021-06-01 2022-05-12 级联纠错码

Country Status (2)

Country Link
US (2) US11621728B2 (zh)
CN (1) CN115276673A (zh)

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189322B2 (en) * 2012-08-31 2015-11-17 Kabushiki Kaisha Toshiba Memory system
TWI528732B (zh) * 2013-12-30 2016-04-01 衡宇科技股份有限公司 具有ldpc碼及bch碼之解碼器及其解碼方法
US9473173B2 (en) * 2014-02-28 2016-10-18 Storart Technology Co. Ltd. Method for early terminating decoding processes of serial concatenated coding and decoder using the same
US20180175885A1 (en) * 2016-12-19 2018-06-21 Toshiba Memory Corporation Hybrid LDPC-SEC/SECDED Decoding
US10498362B2 (en) * 2016-12-19 2019-12-03 Kabushiki Kaisha Toshiba Low power error correcting code (ECC) system
US10965319B2 (en) * 2018-10-25 2021-03-30 PetaIO Inc. Bit flipping algorithm for decoding LDPC-encoded data
CN113424454A (zh) * 2019-02-22 2021-09-21 三菱电机株式会社 纠错解码装置和纠错解码方法
WO2020231235A1 (en) * 2019-05-15 2020-11-19 Samsung Electronics Co., Ltd. Method and apparatus for decoding data in communication or broadcasting system

Also Published As

Publication number Publication date
US20230208447A1 (en) 2023-06-29
US11621728B2 (en) 2023-04-04
US11967971B2 (en) 2024-04-23
US20220385309A1 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
US8850296B2 (en) Encoding method and system, decoding method and system
US8448050B2 (en) Memory system and control method for the same
US8880987B2 (en) Checksum using sums of permutation sub-matrices
US8621318B1 (en) Nonvolatile memory controller with error detection for concatenated error correction codes
US9417956B2 (en) Error detection and correction unit, error detection and correction method, information processor, and program
US9170876B1 (en) Method and system for decoding encoded data stored in a non-volatile memory
CN109873645B (zh) 用于多个字线失败的软芯片猎杀恢复
KR20100081551A (ko) 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치
KR20140093248A (ko) 복수의 패리티 세그먼트를 갖는 코드워드를 디코딩하기 위한 시스템, 방법 및 장치들
US10715182B2 (en) Systems and methods for decoding error correcting codes with self-generated LLR
US9654147B2 (en) Concatenated error correction device
US11184026B2 (en) Super-HPC error correction code
US11082069B1 (en) Decoding scheme for error correction code structure in data storage devices
US11086716B2 (en) Memory controller and method for decoding memory devices with early hard-decode exit
CN103514061A (zh) 用于打破陷阱集的装置和方法
US8347191B1 (en) Method and system for soft decision decoding of information blocks
CN110768751A (zh) 译码的方法与电路、存储器控制器、储存装置、控制器
US10303364B2 (en) Techniques for low-latency chase decoding of turbo product codes with soft information
US10326477B2 (en) Techniques for miscorrection detection for constituent codewords in product codes
US20170070243A1 (en) Early termination method with re-encoding scheme for decoding of error correction code
CN110113058B (zh) 编译码方法、装置、设备及计算机可读存储介质
US11734107B2 (en) Decoding scheme for error correction code structure
US11967971B2 (en) Concatenated error correcting codes
US10387254B2 (en) Bose-chaudhuri-hocquenchem (BCH) encoding and decoding tailored for redundant array of inexpensive disks (RAID)
US20160080004A1 (en) Memory controller and decoding method

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
CB02 Change of applicant information

Address after: Room 601-606, No. 40, Lane 565, Shengxia Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210 (nominal floor 6, actual floor 5)

Applicant after: Yingren Technology Co.,Ltd.

Address before: 201210 rooms 601, 602, 603, 604, 605 and 606, No. 40, Lane 565, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai (6 floors of nominal floor, 5 floors of actual floor)

Applicant before: Yingren Technology (Shanghai) Co.,Ltd.

CB02 Change of applicant information