CN101611549B - 用于多个阶段错误校正的方法和设备 - Google Patents

用于多个阶段错误校正的方法和设备 Download PDF

Info

Publication number
CN101611549B
CN101611549B CN2006800425946A CN200680042594A CN101611549B CN 101611549 B CN101611549 B CN 101611549B CN 2006800425946 A CN2006800425946 A CN 2006800425946A CN 200680042594 A CN200680042594 A CN 200680042594A CN 101611549 B CN101611549 B CN 101611549B
Authority
CN
China
Prior art keywords
word
decoding
sub
code
parity check
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006800425946A
Other languages
English (en)
Other versions
CN101611549A (zh
Inventor
S·里斯特杨
E·沙龙
I·奥罗德
M·拉瑟
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.)
Ramot at Tel Aviv University Ltd
Original Assignee
Ramot at Tel Aviv University 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 Ramot at Tel Aviv University Ltd filed Critical Ramot at Tel Aviv University Ltd
Priority to CN201210390594.2A priority Critical patent/CN103023514B/zh
Publication of CN101611549A publication Critical patent/CN101611549A/zh
Application granted granted Critical
Publication of CN101611549B publication Critical patent/CN101611549B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • H03M11/00Coding in connection with keyboards or like devices, i.e. coding of the position of operated keys
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • 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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • 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/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • H03M13/3715Adaptation to the number of estimated errors or to the channel state
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/18Phase-modulated carrier systems, i.e. using phase-shift keying

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Error Detection And Correction (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Optical Communication System (AREA)

Abstract

要被编码的数据位被分解为多个子组。每个子组分别地被编码以生成相应的子代码。所选子集从相应的代码字中被去除以,留下了被缩短的代码字,以及多对一地被转换为聚缩位。最终的代码字是被缩短的代码字和聚缩位的组合。最终代码字的表示通过被划分成所选子集和多个剩余子集而被解码。每个剩余子集分别地被解码。如果解码中的一个失败了,那么其解码失败的剩余子集至少部分地根据所选子集进行解码。如果解码和编码是系统性的,那么所选子集就是奇偶校验位。

Description

用于多个阶段错误校正的方法和设备
技术领域
本发明一般涉及一种编码和解码的方案。尤其涉及一种通过编码和解码较短的子代码而提供用于代码错误校正的方法和设备。
背景技术
在现代信息时代中,诸如1和0的二进制数值被用于表示和传送诸如存储、视频、音频、统计信息等的多种信息。令人遗憾的是,在二进制数据的存储、传输、和/或处理过程中,错误可能无意地被引入了(例如,“1”位可能被变为“0”位,反之亦然。
在本领域中已知的用于克服存在的这类错误的多种技术使用了一种错误校正代码方案来确保所存储信息的可靠性。存储方法的物理意义在于展示了一种可以用每个存储单元核心的信息位的形式进行表达的固定能力。这种固定的能力是在每个存储单元核心中信噪比的直接结果,这样就定义了一个理论的上限(这就是众所周知的“香农极限”)。
在许多实例中,对于一个给定的代码速率,为了接近理论校正能力,这种错误校正代码方案要求使用十分长的代码。
然而,增加代码长度会导致编码器和解码器电路的复杂性和面积增加。这个结果就是在某些方面上,实现一个包括这样的错误校正代码方案的集成电路并不现实或者并不有效。可替代地,还不存在充足的硅密度以用于支持标准解码技术。
“错误校正”的定义(也就是错误检测以及校正)在这里被用于数据存储。根据前向错误校正代码,编码和解码或在软件中或使用硬件来实现。
一旦发现了香农极限[1],就会这样的需要,即提供能接近达到香农信息法则的性能极限的代码。众所周知[2]-[5],为了达到这些极限,一种方案是必须增加代码长度。1993年,Berron首次发表了使用迭代解码的近容量接近技术。然而,仅仅考虑了长代码。随后,[7]-[11]通过引入低密度奇偶校验(LDPC)代码,更加接近这些容量极限的新结构成功地被提出了,又是仅仅对于典型的约107位的长代码。
基于LDPC迭代解码器的特定方案在[12]-[14]中进行了描述,其中重点被放在了减少计算单元的执行复杂性、迭代次数、需要的存储大小等等。
在一个复杂的、受限制的环境中为了实现这些长代码以及从它们的性能中获益,于是就需要提供用于减少长代码编码器和解码器电路复杂性的方法,这样就可以使用实用的、较短的方案。
一种现有技术由Dror等在的美国专利申请No.20050160350中所教导,其公开了一种的删截方法,用于通过减少奇偶校验位开销以减少编码器和解码器电路的复杂性,
Dror的专利公开了一种为了单个位前向错误校正的高速数据编码器/解码器。数据被布置到在一个矩形阵列中进行保护,这样单个位的错误的位置可以根据行和列的位置而进行确定。结果是,减小了被提供用于将错误故障转换为错误位置的查找表格的尺寸。
然而,在Dror的专利中所公开的两个计算阶段的每一个,单独地并不是一个错误校正方案,由于它不能提供用于校正在第一阶段中的单个错误。因此,在不依赖第二阶段中所得到的计算结果情况下,第一阶段甚至不能校正在每个子代码中的单个错误。
发明内容
根据本发明,它提供了一种解码代码表示的方法,该方法包括以下步骤:(a)根据代码字表示生成多个子字,以便每个子字的位都是所述代码字表示的位的合适子集;(b)根据每个子字的位单独地解码每个字,以生成相应的已解码子字;以及(c)如果多个子字的其中一个的解码失败,就修正相应于所述解码失败子字的解码子字,由此产生已修正的解码子字,这种修改至少部分地根据至少一个成功地解码的子字的对应解码子字。
根据本发明,它提供了一种用于解码M位字的设备,该设备包括:(a)用于解码N<M位字的解码器;以及(b)用于分别地将解码器应用到从M位字中所选出的每个N位不同子集的机制,解码器的每个应用单独地依赖于这个应用被用到的N位,每个应用生成相应解码数据,以便至少部分地根据应用的相应解码数据生成M位字的最终解码数据,其中如果应用中的一个失败,那么该机制至少部分地根据至少一个成功应用的相应解码数据,实现已失败应用的相应解码数据的修正。
根据本发明,它提供了一种用于解码M位字的设备,该设备包括:(a)多个用于各自解码N<M位字的解码器;以及(b)用于分别地将所述多个解码器的每一个应用到从M位字中选出的每个N位的不同子集的机制,所述多个解码器中的每一个解码器的每个应用单独地依赖于每个应用被用到的N位,每个应用生成相应解码数据,以便至少部分地根据各个应用的相应解码数据生成M位字的最终解码数据,其中如果解码器中的一个失败,那么该机制至少部分地根据已成功的至少一个解码器的相应解码数据,实现已失败解码器的相应解码数据的修正。
根据本发明,它提供了一种提供用于数据位错误校正的方案的方法,该方法包括以下步骤:(a)根据第一编码方案编码数据位以生成第一奇偶校验位组;(b)根据第二编码方案编码数据位以生成第二奇偶校验位组;(c)将第二奇偶校验位组转换为一个奇偶校验位的聚缩组,其中这个转换是多对一的;以及(d)通过将第一奇偶校验位组与聚缩奇偶校验位组相组合以生成用于所述数据位的奇偶校验位的最终组。
根据本发明,它提供了一种提供用于数据位错误校正的方案的方法,该方法包括以下步骤:(a)根据数据位生成多个位的子组,这样每个数据位在多个子组中至少出现一次;(b)根据相应的第一编码方案对多个子组的每个子组进行编码,以对于每个子组生成相应的、至少一个的第一奇偶校验位;(c)根据相应的第二编码方案每个子组进行编码,以对于每个子组生成相应的、至少一个的第二奇偶校验位;(d)将所有多个子组中的所有所述至少一个第二奇偶校验位转换成联合的聚缩奇偶校验位,其中这个转换是多对一的;以及(e)通过将所有所述多个子组中的所有所述至少一个第一奇偶校验位与所述联合聚缩奇偶校验位相组合,以生成用于数据位的奇偶校验位的最终组。
根据本发明,它提供了一种提供用于数据位错误校正的方案的方法,该方法包括以下步骤:(a)根据数据位生成多个位的子组,这样每个数据位在多个子组中至少出现一次;(b)使用相应的编码方案对多个子组的每个子组进行编码,以对于每个子组生成相应的至少一个奇偶校验位;(c)对于每个子组,从每个子组的位和每个子组的相应的至少一个奇偶校验位中选出相应的所选子集;(d)将所有多个子组中的所选子集转换成联合聚缩所选位,其中这个转换是多对一的;(e)通过将每个子组的位与每个子组的相应的至少一个奇偶校验位相组合,以对于每个子组生成相应的被缩短的代码字,然后将每个子组中的相应的所选子集去除;以及(f)通过将所有所述多个子组的相应的被缩短的代码字与联合聚缩所选位相组合,以生成用于数据位的代码字。
根据本发明,它提供了一种提供用于数据位错误校正的方案的方法,该方法包括以下步骤:(a)根据数据位生成多个位的子组,这样每个数据位在子组中至少出现一次;(b)使用相应的编码方案对多个子组的每个子组进行编码,以对于每个子组生成相应的代码字;(c)对于每个子组,从相应代码字的位中选择相应的所选子集;(d)将所有相应代码字中的相应所选子集转换成联合聚缩所选位,其中这个转换是多对一的;(e)通过去除相应于每个相应代码字的所选子集的位,以生成用于每个相应代码字的相应被缩短的代码字;以及(f)通过将所有多个子组中的相应被缩短的代码字与联合聚缩所选位相组合以生成用于所述数据位的代码字。
根据本发明,它提供了一种解码代码字表示的方法,所述表示包括M个数据位和P个奇偶校验位,该方法包括以下步骤:(a)将P个奇偶校验位划分成第一奇偶校验位组和第二奇偶校验位组;(b)仅仅使用第一奇偶校验位组对M个数据位进行解码以提供校正的数据位;以及(c)如果仅仅使用第一奇偶校验位组的解码失败,那么使用第一奇偶校验位组和第二奇偶校验位组,对M个数据位进行解码以提供校正的数据位。
根据本发明,它提供了一种解码包括M个数据位和P个奇偶校验位的代码字表示的方法,该方法包括以下步骤:(a)将M个数据位划分成K>1个子集,其中M数据位的每个在K个子集中至少出现一次;(b)将P个奇偶校验位划分成第一奇偶校验位组和第二奇偶校验位组;(c)将第一奇偶校验位组划分成K个子集,第一奇偶校验位组的每个子集对应于M个数据位的各自子集;(d)根据第一奇偶校验位组的相应子集对M数据位的每个子集进行解码,以生成M数据位的每个子集的解码数据;(e)如果M个数据位的K子集的其中一个解码失败,那么至少部分地根据第二奇偶校验位组对所述其中一个子集进行解码,以生成所述其中一个子集的解码数据;以及(f)将M个数据位的所有K个子集的解码数据相组合,以生成用于M数据位的总的解码数据。
根据本发明,它提供一种解码解码来自具有N>M个位的代码字表示的M个数据位的方法该方法包括以下步骤:(a)从N个位中去除至多N-M位的所选子集,因此产生了剩余位的集合;(b)将剩余位划分成K>1个剩余位的子集,其中每个剩余位是所述K个子集中的至少一个的成员;(c)仅仅根据每个子集的位对K个子集的每个进行解码,以生成每个子集的解码数据;(d)如果K个子集的其中一个的解码失败,那么至少部分地根据被去除的所选子集对一个子集进行解码以生成所述其中一个子集的解码数据;以及(e)将所有K个子集的解码数据相组合,以生成用于所述M个数据位的总解码数据。
本发明的第一方面是一种解码代码字表示的方法。在本发明的这一方面以及本发明其它的、相似的方面,被解码的代码字表示,而不是代码字被写入存储器,因为写入、然后读取代码字会给代码字引入错误。多个子字根据代码字的表示被生成,这样每个子字就是代码字表示的位的合适子集。每个子字根据它自己的位独立地被解码以生成一个相应的解码子字。如果子字中的一个的解码失败,那么对应于其解码已失败的子字的解码子字就会被修正,因此会产生一个已修正的解码子字。这个修正至少部分地是根据这样的解码子字进行的,即这些解码子字与一个或者多个的成功地被解码的子字相对应。
如下所述,术语“解码子字”的范围同时包括通过成功地解码一个子字所得到的数值和解码子字的尝试失败的逻辑指示。需要注意的是,通过成功地解码子字所获得的数值是原始代码字自己的一部分,而不仅仅是其中的一个表示。换句话说,一个“被成功地解码的子字”是一个子代码字。“修正”一个解码子字意味着将解码子字从一个数值改变为另一个数值,或者从一个解码失败的逻辑指示改变为一个数值,或者从一个数值改变为一个失败的逻辑指示。
例如,在下面的范例情形1中,两个子字
Figure S2006800425946D00061
Figure S2006800425946D00062
是根据代码字的表示而被生成的。每一个子字使用[11,7,3]的解码器而分别地被解码。如果
Figure S2006800425946D00063
的解码失败,而
Figure S2006800425946D00064
的解码成功,那么解码
Figure S2006800425946D00065
的尝试失败的逻辑指示就会通过以由
Figure S2006800425946D00066
所解码的C1替代逻辑指示而进行修正。这种修正是根据对应于成功地被解码的
Figure S2006800425946D00067
的子代码字C2 short:C2 short使用[15,7,5]中的编码器而进行编码,以再生P2,P2
Figure S2006800425946D00068
进行异或运算以获得
Figure S2006800425946D00069
Figure S2006800425946D000610
进行级联以获得
Figure S2006800425946D000611
优选地,如果子字中的一个解码失败,那么来自被修正的解码子字的数据与来自对应于成功被解码的子字的所有解码子字的数据进行组合。例如,在下面的范例情形1中,如果解码
Figure S2006800425946D000612
失败,而解码
Figure S2006800425946D000613
成功,那么从
Figure S2006800425946D000614
所解码出的C1的最前七位就与
Figure S2006800425946D000615
的最前七位相级联以恢复首标(header)。
最优选地,来自已修正的解码子字的数据与来自对应于成功地被解码的子字的所有解码子字的数据的组合通过包含组装来自己修正的解码子字的数据与来自对应于成功地被解码的子字的所有解码子字的数据的步骤而实现。“组装”来自两个或更多不同来源的数据在这里被定义为:将来自所有来源的位可能与被变更次序的位的顺序放在一起,以及可能与至少被重复一次的一个或多个位放在一起,并放入一个寄存器或存储位置。典型地,然而,如同在下面的范例情形1中,数据通过级联来自各种不同数据来源的位进行“组装”,无需考虑更改多个位的顺序以及不考虑重复位。
优选地,多个子字是不相交的。例如,在下面范例情形1中,
Figure S2006800425946D00071
是不相交的。
优选地,多个子字都包含相同数目的位。例如,在下面范例情形1中,
Figure S2006800425946D00073
Figure S2006800425946D00074
都包含11位。
本发明的第二个方面是一种用于解码M位字的设备。该设备包括用于解码N<M位的字的解码器和将解码器单独地应用到从M位字所选出的N位的每个不同子集的机制。解码器的每个应用单独地依赖于其应用被应用到的N位。解码器的每个应用生成对应的解码数据,以便至少部分地根据解码器应用所产生的解码数据来生成最终的解码数据。如果解码的多个应用中的一个失败了,那么至少部分地根据解码器的其它应用所产生的解码数据来修正这些应用的解码数据。
例如,在下面范例情形1中,M=26,N=11以及解码器是[11,7,3]的解码器。这个11位的子集是
Figure S2006800425946D00076
[11,7,3]的解码器单独地被应用到这两个子集。最终的解码数据是已解码的14位首标(header)。如果解码
Figure S2006800425946D00077
失败,但成功解码
Figure S2006800425946D00078
那么解码
Figure S2006800425946D00079
的尝试失败的逻辑指示就通过用从C1所解码的C1替代该逻辑指示而进行修正。这种修正根据对应于成功地被解码的的解码子字C2 short:C2 short采用[15,7,5]的编码器进行编码以再生P2,P2进行异或运算以得到
Figure S2006800425946D000712
进行级联以得到
Figure S2006800425946D000714
优选地,这些子集是不相交的。例如,在下面的范例情形1中,
Figure S2006800425946D00081
是不相交的。
本发明的第三个方面是一种用于解码M位字的设备。该设备包括多个解码器,每个解码器解码N<M位的字。该设备还包括一种机制,用于将每个解码器单独地应用到从M位字所选出的N位的每个不同子集。解码器的每个应用单独地依赖于其正被应用到的N位。解码器的每个应用生成相应的解码数据,以便至少部分地根据通过应用多个解码器所产生的解码数据来生成最终的M位字的解码数据。如果多个解码器中的一个失败了,那么至少部分地根据其它解码器所产生的解码数据来修改那些对应的解码数据。
例如,在下面范例情形1中,M=26,N=11以及解码器是文献[11,7,3]的解码器。这个11位的子集是
Figure S2006800425946D00083
文献[11,7,3]的每个解码器被单独地应用到这两个子集中的一个。最终的解码数据是已解码的14位首标。如果解码
Figure S2006800425946D00085
失败,但成功解码
Figure S2006800425946D00086
那么试图解码
Figure S2006800425946D00087
的逻辑指示就通过用从所解码的C1替代该逻辑指示而进行修正。这种修正根据对应于所成功地解码的
Figure S2006800425946D00089
的解码子字C2 short:C2 short采用文献[15,7,5]的编码器进行编码以再生P2,P2
Figure S2006800425946D000810
进行异或运算以得到
Figure S2006800425946D000811
Figure S2006800425946D000812
进行级联以得到
Figure S2006800425946D000813
优选地,这些子集是不相交的。例如,下面范例情形1中,是不相交的。
本发明的第四个方面是一种提供了用于数据位错误校正方案的方法。该数据位根据第一编码方案而被编码以生成第一奇偶校验位组。这些数据位也根据第二编码方案而被编码以生成第二奇偶校验位组。第二奇偶校验位组通过多对一的转换方式转换成为一个聚缩的奇偶校验位组。通过将第一组和第二奇偶校验位组进行组合以生成一个最终奇偶校验位组。
例如,在下面范例情形1中,首标的数据位是14位。第一编码方案是产生C2 short和C2 short的[11,7,3]的方案。第一奇偶校验位组是每一个C1 short和C2 short的最后四位。第二编码方案是产生第二奇偶校验位组P1和P2的[15,7,5]方案。第二奇偶校验位组通过多对一的转换异或运算(8位进,4位出)而被转换成聚缩组P。最终奇偶校验位组通过将C1 short的最后四位和C2 short的最后四位与P进行组合而被生成,以提供在图8以附图标记246和254所表示的代码字的奇偶校验位。
优选地,通过组装第一奇偶校验位组的至少一部分与聚缩奇偶校验位组,第一奇偶校验位组与聚缩奇偶校验位组进行组合。例如,在下面范例情形1中,C1 short、C2 short和P一起被写在闪存设备的一个公用位置,这样C1 short的最后四位、C2 short的最后四位和P就被一起存储在公用位置上。
优选地,转换步骤包括对第二奇偶校验位组的多个子组进行异或运算。例如,在下面范例情形1中,P1和P2进行异或运算。
本发明的第五个方面是一种提供用于数据位错误校正方案的方法。位的多个子组根据数据位而被生成,这样每个数据位在各子组中至少出现一次。每个子组根据相应的第一编码方案进行编码以生成一个或者多个相应的第一奇偶校验位。每一个子组根据相应的第二编码方案进行编码以生成一个或者多个相应的第二奇偶校验位。所有的第二奇偶校验位通过多对一操作被转换为联合聚缩奇偶校验位。最终奇偶校验位组通过将所有第一奇偶校验位与联合聚缩奇偶校验位进行组合而被生成。
例如,在下面范例情形1中,数据位是首标的14位。两个子组是首标的最前7位和最后7位。每个数据位在其中一个子组中恰好只出现一次,而在另一个子组中根本不出现。第一编码方案全是产生C1 short和C2 short的[11,7,3]的方案,其生成用于第一子组的四个奇偶校验位(C1 short的最后四位)和用于第二子组的四个奇偶校验位(C2 short的最后四位)。第二编码方案都是[15,7,5]的方案,其生成用于第一子组的四个奇偶校验位P1和用于第二子组的四个奇偶校验位P2。P1和P2通过多对一的“异或”操作(8位进,4位出)被转换为聚缩组P。通过将C1 short、C2 short与P写入闪存设备中、并将C1 short的最后四位和C2 short的最后四位与P进行组合生成最终奇偶校验位组。
优选地,通过组装所有第一奇偶校验位组与聚缩奇偶校验位组,第一奇偶校验位组与聚缩奇偶校验位组进行组合。例如,在下面范例情形1中,C1 short、C2 short和P一起被写在闪存设备中,这样C1 short的最后四位、C2 short的最后四位和P就被一起存储在公用位置上。
优选地,每个数据位在多个子组中仅仅出现一次。例如,在下面范例情形1中,每个首标的最前7位在第一子组中出现一次,而在第二子组中根本不出现,以及每个首标的最后7位在第二子组中只出现一次,而在第一子组中根本不出现。可替代地,至少一个数据位在多个子组中至少出现两次。例如,在下面范例情形2中,对于编码4096个信息位,在586个代码字中就有586×7=4102个数据位,这样其中一个信息位可以被复制6次。
优选地,所有的子组具有相同的大小。例如,在下面范例情形1中,两个子组都具有7位。
优选地,对于子组中的至少一个,通过使用一个通用的编码方案来获得相应的第一和第二编码方案,这样(多个)第一编码方案根据第一顺序来编码(多个)子组位,并且(多个)第二编码方案根据第二顺序来编码(多个)子组位。例如,在下面范例情形1的一个可选例中,[11,7,3]的编码可以被作为第一编码方案独立地应用到首标的最前和最后7位上;于是首标最前7位的顺序可以被改变,以及首标最后7位的顺序可以被改变;然后[11,7,3]的编码可以作为第二编码方案被独立地应用到已改变次序的首标的最前和最后7位上。通过将异或运算由编码已改变序列的最前7首标位所产生的代码字的最后四位与由编码已改变序列的最后7首标位所产生的代码字的最后四位,产生聚缩奇偶校验位。正如在下面范例情形1中,14个数据位和12个奇偶校验位将被存储。
优选地,根据通用的第一编码方案对所有的子组进行编码。例如,在下面范例情形1中,这个通用的第一编码方案是[11,7,3]的编码方案。
优选地,根据通用的第二编码方案对所有的子组进行编码。例如,在下面范例情形1中,这个通用的第二编码方案是[15,7,5]的编码方案。
优选地,将第二奇偶校验位转换为联合聚缩奇偶校验位,这个转换包括将对应于子组中的一个的第二奇偶校验位的至少一个和对应于子组中另一个的第二奇偶校验位的至少一个进行异或运算。例如,在下面范例情形1中,当P1与P2进行异或运算时,P1和P2是“第二奇偶校验位”的两个组。
本发明的第六个方面是一种提供用于数据位错误校正方案的方法。多个子组的位根据数据位而被生成,这样每个数据位在多个子组中至少出现一次。每个子组根据相应的编码方案进行编码以生成一个或者多个相应的第一奇偶校验位。对于每个子组,相应的所选子集是从子组的位以及(多个)相应的奇偶校验位中被选择出来的。所有的所选子集通过多对一操作被转换为联合聚缩所选位。对于每个子集而言,相应的被缩短代码字是通过将每个子集的位与(多个)相应奇偶校验位进行组合,然后去除相应所选子集的位而被生成的。最后,用于数据位的代码字是通过将所有的被缩短代码字与联合聚缩所选位进行组合而被生成的。
例如,在下面范例情形1中,数据位是首标的14位。两个子组是首标的最前7位和最后7位。每个数据位在一个子组中恰好只出现一次,而在另一个子组中根本不出现。每个子组使用[15,7,5]的编码器进行编码以生成代码字C1和C2,其中每个包括8个奇偶校验位。“所选”的子集P1和P2通过多对一的异或操作(8位进,4位出)从C1和C2中的位转换为P的联合聚缩所选位。通过将子组的位与由[15,7,5]的解码器所产生的奇偶校验位进行组合,以产生全代码字C1和C2,然后从C1中去除所选子集P1和从C2中移去所选子集P2,生成缩短的代码字C1 short和C2 short。通过将C1 short、C2 short与P写入闪存设备中,并将C1 short、C2 short与P进行组合以生成最终的代码字。
优选地,通过组装子组位与相应的奇偶校验位,将每个子组位与相应的奇偶校验位进行组合。例如,在下面范例情形1中,代码字C1是通过将第一子组与由编码第一子组所产生的奇偶校验位相级联而被产生的,代码字C2是通过将第二子组与由编码第二子组所产生的奇偶校验位相级联而被产生的。
优选地,通过组装所有被缩短的代码字与联合所选聚缩位,被缩短的代码字与联合所选聚缩位进行组合。例如,在下面范例情形1中,C1 short、C2 short与P一起被存储到闪存设备中的一个公用位置。
优选地,每个数据位在多个子组中仅仅出现一次。例如,在下面范例情形1中,每个首标的最前7位在第一子组中出现一次,而在第二子组中根本不出现,并且每个首标最后7位在第二子组中只出现一次,而在第一子组中根本不出现。可替代地,至少一个数据位在多个子组中至少出现两次。例如,在下面范例情形2中,对于编码4096信息位,在586个代码字中就有586×7=4102个数据位,这样其中一个信息位可以被复制6次。
优选地,所有的子组具有相同的大小。例如,在下面范例情形1中,两个子组每一个都具有7位。
优选地,根据一个通用的第一编码方案对所有的子组进行编码。例如,在下面范例情形1中,这个通用的第一编码方案是[15,7,5]的编码方案。
优选地,将所选的子集转换为联合聚缩所选位,这个转换包括将一个所选子集位与另一个所选子集的位进行异或运算。例如,在下面范例情形1中,当P1与P2进行异或运算。
本发明的第七个方面是一种提供用于数据位错误校正方案的方法。多个位的子组根据数据位而被生成,这样每个数据位在子组中至少出现一次。每个子组使用相应的编码方案进行编码以生成相应的代码字。对于每个代码字,相应的所选位的子集被选择。所有的所选子集通过多对一操作被转换为联合聚缩所选位。对于每个代码字而言,相应的被缩短代码字是通过从代码字中去除相应所选子集的位而被生成的。总体上,用于数据位的代码字是通过将所有被缩短代码字与联合聚缩所选位进行组合而被生成的。需要注意的是,因为本发明的第七个方面并不需要使用单独的、区别于数据位的奇偶校验位,因此本发明的这个方面同时可应用于系统编码和非系统编码。
例如,在下面范例情形1中,数据位是首标的14位。两个子组是首标的最前7位和最后7位。每个数据位在一个子组中恰好只出现一次,而在另一个子组中根本不出现。每个子组使用对应的[15,7,5]的编码方案而被编码以生成相应的代码字C1和C2,所选子集P1是从C1位中被选择出来的,所选子集P2是从C2位中被选择出来的。P1和P2通过多对一的异或操作(8位进,4位出)被转换为P。通过从C1中去除P1和从C2中去除P2以生成被缩短的代码C1 short和C2 short。总体上,用于数据位的代码字是通过将C1 short、C2 short与P写入闪存设备中,并将C1 short,C2 short与P进行组合而被生成的。
优选地,通过组装所有被缩短的代码字与联合所选聚缩位,被缩短的代码字与联合所选聚缩位进行组合。例如,在下面范例情形1中,C1 short、C2 short和P一起被存储在闪存设备中的一个公用位置上。
优选地,每个数据位在多个子集中仅仅出现一次。例如,在下面范例情形1中,每个首标的最前7位在第一子组中出现一次,而在第二子组中根本不出现,并且每个首标最后7位在第二子组中只出现一次,而在第一子组中根本不出现。可替代的,至少一个数据位在多个子组中至少出现两次。
优选地,所有的子组具有相同的大小。例如,在下面范例情形1中,两个子组每一个都具有7位。
优选地,根据通用的第一编码方案对所有的子组进行编码。例如,在下面范例情形1中,这个通用的第一编码方案是[15,7,5]的编码方案。
优选地,将所选子集转换为联合聚缩所选位,这个转换包括将一个所选子集的位与另一个所选子集的位进行异或运算。例如,在下面范例情形1中,将P1与P2进行异或运算。
本发明的第八个方面是一种解码包含M个数据位和P个奇偶校验位的代码字表示的方法。这P个奇偶校验位被划分为第一组奇偶校验位和第二组奇偶校验位。M个数据位仅采用第一组奇偶校验位进行解码,以提供校正数据位。如果仅采用第一组的奇偶校验位的解码失败了,那么M个数据位同时采用两组奇偶校验位进行编码,以提供校正数据位。
例如,在下面范例情形1中,M=14以及P=12。这14个数据位是的最前7位和
Figure S2006800425946D00142
的最前7位。这12个奇偶校验位是
Figure S2006800425946D00143
的最后4位、
Figure S2006800425946D00144
的最后4位、以及
Figure S2006800425946D00145
奇偶校验位的第一组是
Figure S2006800425946D00146
的最后4位和
Figure S2006800425946D00147
的最后4位。奇偶校验位的第二组是
Figure S2006800425946D00148
多个数据位采用[11,7,3]的、仅具有第一组奇偶校验位的解码器进行解码,以提供
Figure S2006800425946D00149
的最前7位和
Figure S2006800425946D001410
的最前7位的解码表示。如果解码
Figure S2006800425946D001411
失败但解码
Figure S2006800425946D001412
成功,那么C2 short采用[15,7,5]的编码器进行编码以再生P2,P2进行异或运算以得到
Figure S2006800425946D001414
Figure S2006800425946D001415
进行级联以得到以及
Figure S2006800425946D001417
采用[15,7,5]的解码器进行解码。
本发明的第九个方面是一种解码包含M个数据位和P个奇偶校验位的代码字表示的方法。这M个数据位被划分为两个或更多的子集,以使得每个数据位至少在各个子集中出现一次。这P个奇偶校验位被划分为第一组奇偶校验位和第二组奇偶校验位。第一组奇偶校验位进一步地被划分为相同数目的子集,如同数据位以数据位子集与第一组奇偶校验位子集之间的1∶1对应而进行划分。每个数据位子集根据其相应的第一奇偶校验位子集进行解码,以生成相应的解码数据。如果这些解码中的一个失败了,那么那个解码已失败的数据位子集再次至少部分地根据第二组奇偶校验位进行解码,以生成相应的解码数据。最后,将所有数据位子集的解码数据进行组合,以生成用于M个数据位的总解码数据。
例如,在下面范例情形1中,M=14以及P=12。这14个数据位被划分为两个子集:
Figure S2006800425946D00151
的最前7位和
Figure S2006800425946D00152
的最前7位。奇偶校验位的第一组是
Figure S2006800425946D00153
的最后4位和
Figure S2006800425946D00154
的最后4位。奇偶校验位的第二组是
Figure S2006800425946D00155
对应于
Figure S2006800425946D00156
的最前7位的第一奇偶校验位子集是
Figure S2006800425946D00157
的最后4位。对应于
Figure S2006800425946D00158
的最前7位的第一奇偶校验位子集是
Figure S2006800425946D00159
的最后4位。
Figure S2006800425946D001510
的最前7位仅采用
Figure S2006800425946D001511
的最后4位,由[11,7,3]的解码器进行解码。的最前7位仅采用
Figure S2006800425946D001513
的最后4位,由[11,7,3]的解码器进行解码。如果解码失败但解码成功,那么所解码的
Figure S2006800425946D001516
采用[15,7,5]的编码器进行编码以再生P2,P2
Figure S2006800425946D001517
进行异或运算以得到
Figure S2006800425946D001519
进行级联以得到以及
Figure S2006800425946D001521
采用[15,7,5]的解码器进行解码,由此再生代码C1。所再生的C1的最前7位和所解码的C2 short的最前7位进行级联,以生成所解码的14位首标。
优选地,数据位子集的解码数据通过组装数据位子集的解码数据而进行组合。例如,在下面的范例情形1中,所解码的C1 short的最前7位和所解码的C2 short的最前7位进行级联,以生成所解码的14位首标。
优选地,这些数据位子集是不相交的。例如,在下面的范例情形1中,的最前7位和
Figure S2006800425946D001523
的最前7位是不相交的两个子集。
优选地,所有数据位子集都具有相同的大小。例如,在下面的范例情形1中,所有数据位子集都具有7个位。
优选地,每个数据子集根据相应的第一组奇偶校验位子集、采用相应的第一解码方案进行解码;以及根据数据位子集的第二组奇偶校验位的解码包含了要采用相应的第二解码方案,这里的数据位子集已由第一解码方案解码失败。例如,在下面的范例情形1中,第一解码方案是[11,7,3]的方案,第二解码方案是[15,7,5]的方案。
优选地,对于这些数据位子集中的至少一个,相应的第一和第二解码方案使用通用的解码方法。例如,将这种选择扩展至本发明的第五方面的范例情形1,第一解码方案和第二解码方案都是[11,7,3]的方案。第一解码方案采用所存储的奇偶校验位,这个奇偶校验位由未被交换次序的首标位进行编码而生成。如果第一组7个存储数据位的解码失败但最后7个存储数据位的解码成功,那么成功地被解码的数据位被交换次序并进行编码,以再生相应的奇偶校验位。这些所再生的奇偶校验位与最后4位的存储奇偶校验位进行异或运算,以再生最前7个被交换次序的首标位的奇偶校验位,这些奇偶校验位被用于第二次尝试通过执行已交换次序的最前7个存储数据位的解码来解码最前7个存储数据位。
优选地,所有的第一解码方案都是相同的。例如,在下面的范例情形1中,所有的第一解码方案都是[11,7,3]的、同样的方案。
优选地,所有的第二解码方案都是相同的。例如,在下面的范例情形1中,所有的第二解码方案都是[15,7,5]的、同样的方案。
本发明的第十个方面是一种从具有N>M位的代码表示中解码出M个数据位的方法。至多N-M位的所选子集从这N位中被去除,由此产生剩余位的集合。剩余位被划分为两个或更多子集,以使得每个剩余位是子集中至少一个的成员。每个剩余位子集仅根据它自己的位进行解码,以生成相应的解码数据。如果剩余位子集中的一个解码失败,那个剩余位子集至少部分地根据被去除的所选子集进行解码,以生成剩余位子集的相应解码数据。最后,将所有的解码数据进行组合以生成用于M数据位的总解码数据。注意,因为本发明的第十个方面不需要使用单独的、区别于数据位的奇偶校验位,本发明的这个方面可以同时应用到系统编码和非系统编码。
例如,在下面的范例情形1中,M=14以及N=26。被去除的所选子集是
Figure S2006800425946D00161
剩余位被划分为两个子集,
Figure S2006800425946D00162
Figure S2006800425946D00163
仅根据其自己的11位进行解码,而不需要其它信息,作为结果的解码字的最前7位为对应于的解码数据。
Figure S2006800425946D00165
仅根据其自己的11位进行解码,而不需要其它信息,作为结果的解码字的最前7位为对应于
Figure S2006800425946D00166
的解码数据。如果解码
Figure S2006800425946D00167
失败但解码
Figure S2006800425946D00168
成功,那么解码的C2 short采用[15,7,5]的编码器进行编码以再生P2,P2
Figure S2006800425946D00171
进行异或运算以获得
Figure S2006800425946D00172
进行级联以获得
Figure S2006800425946D00174
以及
Figure S2006800425946D00175
采用[15,7,5]的解码器进行解码。所解码的C1 short的最前7位和所解码的C2 short的最前7位进行级联以生成解码的14位首标。
优选地,剩余位子集的解码数据通过组装剩余位子集的解码数据而进行组合。例如,在下面的范例情形1中,所解码的C1 short的最前7位和所解码的C2 short的最前7位进行级联以生成解码的14位首标。
优选地,这些剩余位子集是不相交的。例如,在下面的范例情形1中,
Figure S2006800425946D00176
的最前7位和
Figure S2006800425946D00177
的最前7位是不相交的两个子集。
优选地,所有剩余位子集都具有相同的大小。例如,在下面的范例情形1中,所有数据位子集都具有7位。
优选地,每个剩余位子集根据其自己的位、采用相应的第一解码方案进行解码;以及根据剩余位子集的被去除所选子集的解码包括采用相应的第二解码方案,这里的剩余位子集已由第一解码方案解码失败。例如,在下面的范例情形1中,第一解码方案是[11,7,3]的方案,以及第二解码方案是[15,7,5]的方案。
优选地,对于这些剩余位子集中的至少一个,相应的第一和第二解码方案使用通用的解码方法。例如,将这种选择扩展至本发明第五方面的范例情形1,第一解码方案和第二解码方案都是[11,7,3]的方案。第一解码方案采用所存储的奇偶校验位,这个奇偶校验位由对未被交换次序的首标位进行编码而生成。如果最前7个存储数据位的解码失败但最后7个存储数据位的解码成功,那么成功地解码的数据位被交换次序并进行编码,以再生相应的奇偶校验位。这些再生的奇偶校验位与最后4位的存储奇偶校验位进行异或运算,以再生最前7个被交换次序的首标位的奇偶校验位,这些奇偶校验位被用于第二次尝试通过执行已交换次序的最前7个存储数据位的解码来解码最前7个存储数据位。
优选地,所有的第一解码方案都是相同的。例如,在下面的范例情形1中,所有的第一解码方案都是同样的[11,7,3]的方案。
优选地,所有的第二解码方案都是相同的。例如,在下面的范例情形1中,所有的第二解码方案都是同样的[15,7,5]的方案。
附图说明
为较好的理解本发明其中的实施例,以附图作为参考,其中相似的附图标记在本文中表示对应的部件或单元,其中:
图1是本发明的设备的优选实施例的方框图;
图2是含有图1的多阶段编码器的组件的方框图;
图3是当在图2的状态机控制逻辑方框中执行的编码过程的流程图;
图4是含有图1的多阶段解码器的组件的方框图;
图5是含有图4的双模解码器单元的组件的方框图;
图6是关于范例情形1的解码过程的流程图;
图7是关于范例情形2的解码过程的流程图;
图8是关于范例情形1的解码过程的示意性图示说明;
图9是关于范例情形2的CER性能对SER性能的图解图示说明;
图10是关于范例情形1和范例情形2的用于块码[15,7,5]的生成器矩阵的描述;
图11是关于范例情形1和范例情形2的用于块码[15,7,5]的奇偶校验矩阵“H”的描述;
图12是关于范例情形1和范例情形2的用于块码[15,7,5]的双重错误位置的表格描述;
图13是关于范例情形1和范例情形2的用于块码[11,7,3]的奇偶校验矩阵H(1)的描述;
图14是关于范例情形1的用于块码[11,7,3]的单个错误位置的表格描述。
具体实施方式
本发明公开了一种为了确保被存储信息可靠性而提供错误校正编码方案的方法和设备。这个所提出的方法接近长代码的性能,然而却避免了长代码编码器和解码器的电路复杂性。因此,获得了硬件和软件实现的尺寸的减小和复杂性的降低。
术语“解码数据的修正”在这里是指从解码数据的第一数值到解码数据的第二数值的修正。根据本发明提供的方法,某个短代码字表示的解码数据的修正是在其它短代码字表示基础上实现的。因此,用于其解码已失败的代码字表示的附加解码尝试根据其它短代码字表示的解码数据而执行。
术语“代码字解码数据的数值”在这里是指任何有效的数值。可替代地,这个术语备选地可以指例如因为解码失败而没有当前已知数值的逻辑指示。因此,解码数据的“修正”可以是从一个有效数值到另一有效数值、从解码失败的逻辑指示到一个有效数值、或从一个有效数值到解码失败的逻辑指示的修正。
在本发明中,术语“子集”这里同时是指小于其所属于的全集的合适子集,以及是指全集它自己。
应当理解,一个短字的解码数据的修正根据其它短字的解码数据,可由本发明作为一个可选项所提供,以及不需要在解码长代码字的每个实例期间发生。对于具有错误特定出现的长字的实例,可以是所有短代码字表示都在第一次尝试中成功地解码的情形。在这种情形下,不应用解码数据的修正。这种修改仅在用于至少一个短字的解码已失败的情形才会被执行。因此,术语“实现修正”意指“根据需要可选择地实现修正”。
本发明方法的优选实施例在这里连同范例情形-1和范例情形-2一起进行描述。这两个范例情形公开了提供错误校正代码方案的设备,其中这个设备特别地、能很好地适合于数据存储的使用。因此,本发明的优选设备包括一种解码器,它被提供用于增加特定字的延迟以便在解码过程中应用进一步的步骤。由于峰延迟(在很少的例子中),这个错误校正编码方案可能并不适用于一些具有固定限制延迟的同步或半同步流的通信系统。
需要强调的是,本发明的方法所引入的平均延迟并不比在本领域中已知方法所引入的高。然而,在其中延迟相当多地增加的少有例子中,本发明的方法特别地适用于存储媒体,较少地适用于同步通信系统。
范例1:
这里提供了一种包括独立位的闪存设备,其中每一个核心单元有一个位并且信元错误率(CER)是4.7×10-5。因为闪存设备中每一单元具有一位,所以位元错误率(BER)也是4.7×10-5。闪存设备的闪存存储器包括许多块;每个块被定义为有多页。每页包括首标或控制区以及多个扇区,每一扇区长为512数据位。当提供用于包含14位的每个块的首标的可靠存储以及实现首标错误率(HER)性能低于10-10(HER<10-10)时,需要在用于闪存设备的快速控制器中设计错误校正编码方案。
为了在具有4.7×10-5CER输入的14位集合上提供HER<10-10的性能目标,需要3位错误校正能力。一个错误的校正(即t=1)可提供HER~3.8×10-7以及两个错误的校正(即t=2)可提供HER~2.1×10-10
因此,需要三错误校正[29,14]BCH代码,其中代码速率R等于0.4828(即14/29)以及首标采用一个29位长度的代码字进行表示。
编码和解码BCH代码以及构建这种电路的方式的文献在过去的多年里(参看文献[16]-[47])已被详尽地研究了。当使用本发明的方法时,编码和解码的例子可被提供以用于获得相同的HER目标性能。以下所叙述的例子利用了被简化的控制器,这个控制器包括仅能校正两个错误而不是三个错误的组件代码。而且,因为长度的减少不一定是组件代码能够校正的错误数目(是2而不是3)的直接结果,但是替代地它主要以整个方案结构来确定代码长度,该代码长度需要仅26位用于每个首标,而不是29位代码(即较高的代码速率R=14/26=0.5385可被实现)。在闪存首标大小上所获的减少增益是11.54%。这个优点可以在下面的非限制例子中而被实现:
[15,7,5]的块代码替代文献[29,14]的BCH代码而被设计(因此减少了用于编码器/解码器硬件的复杂性)。符号[n,k,d]通常定义代码参数如下:‘n’是指代码长度,‘k’是指信息位的数目,以及‘d’是指代码的最小汉明(纠错)距离。
这样一个代码的谨慎选择就获得[11,7,3]的删截码(通过提取位12-15),这使得最小汉明距离等于3。因此,采用这个删截码校正单个错误是可能的。在这个观测结果的基础上,公开了具有2位错误校正能力的15位代码。这个15位代码当去除最后4位(即仅使用最前11位)时,被提供以校正任何单个错误。
用于这个[15,7,5]块代码的生成器矩阵270被示于图10中。这个编码过程,即从7个信息位派生8个奇偶校验位,在GF(2)上采用矩阵乘法操作按以下公式而进行:
cm·G,[c]=1×15,[m]=1×7,[G]=7×15,(1.1)
其中GF(2)是用于具有两个单元的伽罗瓦有限场(Galois FiniteFiled)的符号,‘c’被定义为包含代码字的行向量,‘m’被定义为包含7个信息位的行向量,以及‘G’被定义为系统性编码矩阵。
[15,7,5]的线性系统性块代码的解码过程在两个步骤中被执行。在步骤1中,8-位故障码采用块代码[15,7,5]的奇偶校验检查矩阵‘H’280而进行计算,如图11中所示。这个故障计算在GF(2)上采用矩阵乘法操作而被按以下公式执行:
s=H·c T,[c]=1×15,[s]=8×1,[H]=8×15 (1.2)
其中‘c’为包含代码字的行向量,‘s’为包含8位故障码的列向量,以及‘H’是奇偶校验检查矩阵,以及符号OT表示转置,所以c T就是一个列向量。
在步骤2中,8位故障码被用于存取表290(参看图12)。表290提供了两个4位数字,这样4位数字中的每一个就定义了在15位代码字中单个错误的位置。
注意,在表290中数值’0’是指‘无错误’的情形。如果表290包含在特定条目中的两个数字,其中一个数值是零而另一个数值是非零,那么这表示仅有一个错误而不是两个。进一步地,在故障码自身中零表示根本没有错误。通过假定故障码向量的最上面的位是最低有效位(LSB),而最底下的位是最高有效位(MSB),以获得故障码数值。注意,在这个表中仅给出了121个数值(故障码的256个可能数值中的)。由于解码器还包括错误检测能力,那么对于未在表290中给出的情形,有超过两个的错误(参看图12)。然而,解码器不能指向它们的位置。
由于在其中这个代码被生成的特定方式中,用于单个位校正的子矩阵’H(1)’可被提供。单个位的校正被应用于同样的代码字的最前11位。子矩阵’H(1)’包括‘H’矩阵的最前4行和最前11列。15位字的最前11位的解码过程在两个相似的步骤中按以下方式而被应用:
在如上所述的第一步骤中,故障码计算通过在GF(2)上采用矩阵乘法操作按如下公式被执行:
s=H(1)·c T,[c]=1×11,[s]=4×1,[H]=4×11    (1.3)
其中‘c’为包含读取字的行向量,‘s’为包含4位故障码的列向量,以及H(1)是‘H’的子矩阵,它包含‘H’的所述的最前4行和所述的最前11列。块代码[11,7,3]的矩阵H(1)300被示于图13中。
在解码过程的第二步骤中,错误位置是从4位故障码310中提取的。这个具有一个’0’值的故障码位定义了‘没有错误’的情形。
基于15位代码字的最前11位的成功解码,(1.1)中的矩阵‘G’可用于再生15位代码字的最后4位,即使这最后4位不被提供给解码器。既然最前11位已经被解码了,解码器的大小被减少以便直接地从11解码位中的最前7位中再生最后4位。这意味着最后4位的再生仅需要矩阵‘G’的最后4列。
采用上述的所生成的代码字,单个的[29,14]的BCH代码可用被表示为C1,C2的、两个不相交字的集合进行替换。C1和C2是两个系统性代码字,每个长为15。不相交字C1包含7个信息位和8个奇偶校验位,而不相交字C1包含剩余的7个信息位和它们所关联的8个奇偶校验位。因此,首标的、相同的14信息位整个地被获得了。编码过程根据在(1.1)中所示的上述公式而被完成。
两个不相交字C1,C2中的每个的最后4个奇偶校验位被定义为子集P1,P2。上述被称为整个数据的函数仅仅是这些子集(即 P = P 1 ⊕ P 2 )的异或运算(参见图8)。在编码每个7信息位之后,这两个子集P1和P2从C1和C2可被提取。剩余的位然后被写入闪存设备(即仅仅是C1的最前11位和C2的最前11位)。用‘P’所表示的整个数据的统一函数被定义位统一数据,因为它统一了数据的不相交子组。这个统一集合P也被写入闪存设备。
这个例子因此将26(11+11+4)位一起合并。进一步强调的是写入闪存设备的位并不包括位P1、P2,因为在代码字被传送到物理存储介质之前这些位已从该代码字中被提取。在解码过程中再生的被提取的位在下文中被定义为“隐位”。如上文中解释的,在最前11位被成功解码的情形下,剩余的4位可以通过编码过程而被再生。正如在下面“从闪存设备中读取首标(解码)”的部分所详述的那样,解码过程利用了这一特性。
本领域所属技术人员能够理解,公平的比较情形是轻而易举的,并且这样的解码和编码过程的实现是可行的。这个创新的错误校正编码方案的结果就是指按如下的写入(编码)和读出(解码)操作:
1.将首标写入闪存设备(编码)
使用首标的7个信息位的第一集合对被定义为C1的第一[15,7]中块代码进行编码,并使用以上所详述的、关于公式(1.1)的过程。用P1表示15位的代码字C1的位12-15。
使用首标的7个信息位的第二集合对被定义为C2的第二[15,7]中块代码进行编码,并使用以上所详述的、关于公式(1.1)的过程。用P2表示15位的代码字C2的位12-15。
将集合P1和P2进行位与位地异或运算,以获得被定义为奇偶校验位-2或者位“P”的4个位。
将C1的位1-11和C2的位1-11写入闪存设备。将C1的位1-11记为C1 shortC2的位1-11记为C2 short
将4位“P”写入闪存设备。
2.从FLASH设备中读出首标(解码)读取两个11位字。结果是两个字,被表示为
Figure S2006800425946D00241
Figure S2006800425946D00242
如果在闪存中没有错误,那么
Figure S2006800425946D00243
以及
Figure S2006800425946D00244
如果有错误,那么包括与最初被写入闪存的代码字C1 short和C2 short相关的错误。需要注意的是,在有错误的情形下,那么
Figure S2006800425946D00247
Figure S2006800425946D00248
会分别地被表示为字(不必为代码字)。
根据以上所详述的、关于公式(1.3)的过程,即单个错误校正解码器,来解码字
Figure S2006800425946D00249
Figure S2006800425946D002410
如果两个字成功地被解码(因为
Figure S2006800425946D002411
有0或1个错误以及
Figure S2006800425946D002412
有0或1个错误)-首标成功地被读取为11位代码字
Figure S2006800425946D002413
的最前7位以及11位代码字
Figure S2006800425946D002414
的最前7位。在一个非系统代码情形中,需要进一步的信息(举例来说,一个表格或者其它转换)以成功地读取首标。
Figure S2006800425946D002415
如果两个字解码都失败(因为
Figure S2006800425946D002416
有2个或更多错误以及
Figure S2006800425946D002417
有2个或更多错误)-首标就不能成功地被读取。
Figure S2006800425946D002418
如果一个字解码失败,而另一个字解码成功(因为一个字有0或1个错误而另一个字有2个或更多错误)-解码过程进入到步骤3。
3.如果恰好只有一个子码失败就读取首标:
■从闪存设备读取位
Figure S2006800425946D002419
这些位被定义为而不是P,因为在
Figure S2006800425946D002421
与“P”之间也可能存在差异。当
Figure S2006800425946D002422
位从闪存设备中被读取时,可以假定闪存设备引入了错误。
如果解码
Figure S2006800425946D002423
失败,而解码成功,
Figure S2006800425946D002425
就会按照下述方式而从
Figure S2006800425946D002426
Figure S2006800425946D002427
中再生:
通过应用以上所详述的、关于公式(1.1)的编码过程,从C2 short中再生C2的隐P2位。
Figure S2006800425946D00252
将位与隐位P2进行异或运算以生成
Figure S2006800425946D00254
Figure S2006800425946D00255
通过将位
Figure S2006800425946D00256
安排在
Figure S2006800425946D00257
中的位位置1-11处以及将位
Figure S2006800425946D00258
安排在
Figure S2006800425946D00259
中的位位置12-15处,而从
Figure S2006800425946D002510
Figure S2006800425946D002511
中生成
Figure S2006800425946D002512
■通过应用以上所详述的、关于公式(1.2)的解码过程,使用作为两个错误校正[15,7]块代码的所有15位对
Figure S2006800425946D002513
解码。
■如果解码成功,那么首标就成功地被读取。否则,首标的读取失败。
■如果解码
Figure S2006800425946D002514
失败,而解码
Figure S2006800425946D002515
成功,那么以如下方式从1C1 short
Figure S2006800425946D002516
中再生
Figure S2006800425946D002517
通过应用以上所详述的、关于公式(1.1)的编码过程,从C1的隐P1位中再生C1 short
Figure S2006800425946D002519
将位
Figure S2006800425946D002520
与再生的隐位P1进行异或运算以生成
Figure S2006800425946D002521
Figure S2006800425946D002522
通过将位
Figure S2006800425946D002523
安排在
Figure S2006800425946D002524
中的位位置1-11处以及将位
Figure S2006800425946D002525
安排在中的位位置12-15处,而从
Figure S2006800425946D002527
Figure S2006800425946D002528
中生成
Figure S2006800425946D002529
■通过应用以上所详述的、关于公式(1.2)的解码过程,使用作为两个错误校正[15,7]块代码的所有15位对
Figure S2006800425946D002530
解码。
■如果解码成功,那么首标就成功地被读取。否则,首标的读取失败。
范例情形1的数学分析
下面一部分详细地叙述了本发明方法中所执行的数学分析,以评估在尺寸和电路复杂性方面所获得的收益。关于控制器复杂性方面的收益是显而易见的,由于能够校正两个错误的解码器的实现比能够校正3个错误的解码器的实现要更简单。
为了计算参考方案,令p被定义为闪存设备的输入BER(即,在我们的例子中p=4.7×10-5)。解码器的HER性能是根据二项式分布按下述公式所给出的,其中[n=15,k=5,t=2].
HE R t = 2 , n = 15 = Σ i = 3 24 24 i · p i · ( 1 - p ) 24 - i | p = 4.7 · 1 0 - 5 = 2.1 × 10 - 10 , - - - ( 1.4 )
其中,“t”是指错误校正能力(也就是说,能够被校正的错误位的最大数量)如下所示:因为根据(1.4),当HER高于10-10时,校正两个错误是不够的,参考方案被迫使用三-错误-校正BCH码。现在转入使用本发明方案的HER性能的计算,本发明的子码错误率(SCER),其中[n=11,k=7,d=3,t=1],根据如下公式所给出:
SCE R t = 1 , n = 11 = Σ i = 2 11 11 i · p i · ( 1 - p ) 11 - i | p = 4.7 · 10 - 5 = 1.2 · 10 - 7 - - - ( 1.5 )
HER性能的第一个贡献者是在首标中两个子码的失败解码的情形。这个概率按如下进行计算:
HER2,1=(SCERn=11,t=1)2=1.47·10-14 (1.6)
HER性能的第二个贡献者是在第一阶段的一个字的失败解码的情形,以及在第二阶段超过两个错误(当试图解码超过有15位的两个错误时)的失败解码的情形。这个概率按如下进行计算:
HER 2.2 = 2 · SCE R t = 1 , n = 11 · ( 1 - SCE R t = 1 , n = 11 ) · SCER t = 2 , n = 15 SCER t = 1 , n = 11 = 9.4 · 10 - 11 - - - ( 1.7 )
将两个可能性概率进行组合得到:
HER2=HER2,1+HER2,2≈HER2,2=9.4·10-11 (1.8)
HER性能的第二个贡献者HER2,2,按如下方式进行计算:
左边的两个因子SCERt=1,n=11(1-SCERt=1,n=11)被2相乘,因为对于第一个失败解码的子码和第二个成功解码的子码而言,存在两个概率。根据单个错误校正块代码,当第一子码解码失败而第二子码解码成功,就获得了第一概率。根据单个错误校正块代码,当第一子码解码成功而第二子码解码失败,就获得了第二概率。
最右边的因子
Figure S2006800425946D00265
是两个数相除的结果。这个结果对应于这样的概率:即假如在11位的子集中存在超过‘1’个的错误,那么在15位的集合中存在超过两个的错误。将在11位子集中超过1个错误的事件定义为事件“x”,将在15位集合中超过2个错误的事件定义为事件“y”。因此,事件P(y|x)根据Bayes定律按如下公式可得到:
P ( y | x ) = P ( y , x ) P ( x ) - - - ( 1.9 )
事件P(y,x)是指在15位集合中存在超过2个错误,并且在11位子集中存在超过1个错误。很明显,在15位集合中所有超过2个错误的情形包含这些事件,即15位的子集包括超过1个错误。因此,P(y,x)P=(y),并且在公式(1.7)中最右边的元素是P(y)/P(x)。
范例情形2:
这里也得到了同样的闪存设备,如上面在范例情形1中所公开的,即每单元可放入一位以及信元错误率(CER)为4.7×1-5。设计包含解码器的闪存设备是必要的,这样解码器就可被执行用以提供包含512字节位(每一8位中的)的扇区数据区的可靠存储。既然数据自己决不比每一扇区的首标重要,那么用于该数据的目标性能,即SER(扇区错误率),应低于5×10-8。闪存设备的设计被限于单个的ECC(错误校正代码)硬件(即15位的块代码,如已对于首标所设计的)。
t=1错误的校正得到了SER~1.36×10-4。t=2错误的校正得到了SER~2.8×10-8。代码速率R是由被代码长度n所分割的信息位的数目k所定义的。换句话说,采用总的
Figure S2006800425946D00272
代码字来表示长为4096位的扇区,这提供了R=512×8/(586×15)=0.466的总代码速率。因此,具有R=7/1.5=0.466的代码速率的两错误校正[15,7,5]块代码就足够了。
当保持上文所述的相同限制时,替代采用每个代码字长15的、586代码字的设计,这里提供了一种新设计,包含7信息位和4奇偶校验位的586删截码。来自所有子代码的4奇偶校验位的第二集合进行异或运算,而这个4位结果被存储于闪存设备中。以这种方式,本发明的方法采用同样的硬件设计以及对于每单元提供了较高的代码速率R=4096/(586×11+4)=0.635位,从而能够实现性能指标。好处在于闪存设备大小显著地减小了26.6%。扇区的读取和写入操作可按如下而被执行:
1.将扇区写入闪存设备(编码):
■采用扇区的4096个信息位,编码[15,7,5]块代码的586个代码字。
■对所有586个代码字的位12-15进行异或运算,以获得被定义为奇偶校验-2位的4位。
■写入闪存设备的所有586个代码字的位1-11。
■将4个奇偶校验-2位写入闪存设备。
2.从闪存设备中读取扇区(解码):
■从闪存设备中读取长为11的586个代码字。
■采用[11,7,3]的块代码解码器的单个错误校正解码器来解码这586个字。
■如果所有代码字都成功地被解码,那么扇区就成功地被解码。
■如果多于一个字未被编码,则在解码扇区时出现故障。
■如果单个字未能解码而其它585个字已成功地解码,执行以下步骤:
Figure S2006800425946D00281
再生所有585个字的隐奇偶校验位12-15,它们通过使用以上详述的、关于公式(1.1)的编码过程而成功地被解码。
Figure S2006800425946D00282
从闪存设备中读取奇偶校验-2位。
Figure S2006800425946D00283
将奇偶校验-2位和已成功地解码的所有585个字的隐奇偶校验位12-15进行异或运算,以便估计未被解码的第586个字的位12-15。
Figure S2006800425946D00284
使用具有双错误校正[15,7,5]的块代码解码器,并以上详述的关于公式(1.2)的过程,使用所有15位,现在再次解码已失败的字。如果解码成功,那么扇区也就成功地被读取了。否则,扇区解码失败。
采用范例情形2的本发明的方法,可获得以下的优点:
●减少了闪存设备的大小(在单元数目方面减少26%)或者提供了较高的代码速率(以0.635替代0.466)。
●同样的SER性能要求能被实现。
●具有同样的硬件复杂性-采用了[15,7,5]的块代码编码器/解码器。
●对首标和数据编码及解码进程采用了统一的硬件。
范例情形-2的数学分析:
SER分析提供了参考方案与本发明方案之间的比较,其被示于图9中。用于获得这些值的公式在下面的节中被给出。
1.参考方案(曲线262)
令p表示闪存设备的CER性能(即在我们的例子中p=4.7×10-5)。[n=15,k=7,t=2]块代码解码器的帧错误率(FER)应为:
FER t = 2 , n = 15 = Σ i = 3 15 15 i · p i · ( 1 - p ) 15 - i | p = 4.7 · 10 - 5 = 4.7 × 10 - 11 - - - ( 2.1 )
本发明的SER性能([n=15,k=7,t=2]块代码的586个代码字)应为:
SERt=1-(1-FERt=2,n=15)586|FERt=2,n=15=4.7·10 -11=2.8×10-8 (2.2)
2.本发明方案(曲线264)
[n=11,k=7,t=1]块代码解码器的帧错误率(FER)应为:
FER t = 1 , n = 11 = Σ i = 2 11 11 i · p i · ( 1 - p ) 11 - i | p = 4.7 · 10 - 5 = 1.2 · 10 - 7 - - - ( 2.3 )
闪存设备的CER性能的第一贡献者是扇区中两个或多个失败字的情形。这个概率由下式来定义:
SER 2.1 = Σ i = 2 586 586 i · FER n = 11 , t = 1 t · ( 1 - FER n = 11 , t = 1 ) 586 - i | FER n = 11 , t = 1 = 1.2 · 10 - 7 = 2.5 · 10 - 9 - - - ( 2.4 )
闪存设备的CER性能的第二贡献者是在第一阶段中的单个字失败以及在第二阶段中多于两个错误(当以能解码达到两个错误的解码器来解码15位时)的情形。这个概率由下式来定义:
SER 2.2 = 586 · FER t = 1 , n = 11 · ( 1 - FER t = 1 , n = 11 ) 586 · FER t = 2 , n = 15 FER t = 1 , n = 11 | FER t = 1 , n = 11 = 1.2 · 10 - 4 FER t = 2 , n = 15 = 4.7 · 10 - 11 = 3.0 · 10 - 8 - - - ( 2.5 )
将这两个贡献者组合起来可得到这样的概率:
SER2=SER2,1+SER2,2=3.3·10-8 (2.6)
现在参看图1,这里示出了包含本发明设备的编码器和解码器的方框图。本发明的设备1包含用于在设备1内接收来自应用的信息以及存储它的主界面模块10。
主界面10将信息传送到多阶段编码器20。这个多阶段编码器20执行如上所述的、‘将首标写入闪存设备’的过程,并且在图2和3中给出了进一步的细节。多阶段编码器20将K信息位的块转换为N位代码字,其中N>K。对于范例情形1,K=14以及N=26。
N-位块然后被传送到数字化处理单元30。数字化处理单元30被提供用于如范例情形2所述的将数据扇区加入这个块,以及在这个块被写入单元之前执行其它数字化进程。这样的数字化进程可选地包含交织和灰度映射(gray mapping)进程。这个数字化处理单元30可以是本领域已知的任何处理单元。
已处理的N-位块然后被传送到存储设备40,它被提供用来存储物理信息位。
一旦从存储设备40中读取块,这个块就被传送到数字化反向处理单元50,以便将这个N-位块转换为与呈现在多阶段编码器20的输出端的相同的格式。
这个N-位块然后从数字化反向处理单元50被传送到多阶段解码器100。多阶段解码器100被提供用于从26位首标代码字中恢复首标的14信息位,如上在‘从闪存设备中读取首标’一节中所述的,以及在图4-6中给出了进一步的细节。
这个所恢复的首标信息位然后被传送回到主界面10。
现在参看图2,它示出了包含图1的多阶段编码器20的组件的方框图。14信息位从主界面被传送以及被存储在随机存取存储器(RAM)21的上部(不相交的区)中。RAM 21的不相交区提供了用于22位的存储区域。
状态机控制逻辑24被提供用于激活子码编码器22,以采用[15,7,5]的块代码编码器将14信息位中的最前7信息位编码成15位。
当来自子码编码器22的四个新奇偶校验位(位8-11)被传送回到RAM 21的上部(指不相交区)时,这15位中的位12-15被传送到联合奇偶校验处理器23。联合奇偶校验处理器23被提供用于将数学压缩公式(即异或)应用在所有子码的第二类奇偶校验位。
7信息位的第二集合从RAM 21被传送到子码编码器,并且被编码成[15,7,5]块代码字。来自块代码的15位的信息位12-15被传送到联合奇偶校验处理器23,同时这些被加入的四奇偶校验位(位8-11)从子码编码器22被传送回RAM 21的上部,这样就完成了将7位的第二集合编码成11信息位的[11,7,3]代码。
在联合奇偶校验处理器单元23中,这四信息位12-15与已存储在单元23中的四位进行位与位之间的异或运算。这个结果被存储在RAM 21的下部(指相交区)。
现在参看图3,它示出了图2中状态机控制逻辑块中所执行的编码过程31的流程图。在第一步32中,子码数目‘N’被初始化为0。
在下一步骤33中,检查变量‘N’的值是否已达到值2,即关于范例情形1的两个子码。由于在编码过程‘N’=0的这个阶段中,‘N’的值以1进行递增(步骤34)从而指示出状态机控制逻辑块24正在编码子码1。
在下一步骤35中,子码编码器22(参看图2)被激活用于编码子码1。被定义为DJP1的位1-11被存储在RAM 21的上部。
在步骤36中,被定义为JP1的位12-15,被存储在联合部分处理器(JPP)单元23(参看图2)。
在步骤37中,更新这四位12-15(即与初始的四个0进行异或运算)。该编码过程接着返回步骤33。
在下一步骤33中,再次检验变量‘N’的值在循环的这个周期中是否已达到值2。由于在该阶段N=1,该编码过程进行到步骤34,以执行该循环的第二个周期。
在步骤34,变量‘N’的值递增1,直到等于2。
在步骤35,第二组的7位被编码为15位的代码字。被定义为DJP2的最前11位中的后4位被存储在RAM 21的上部。该15位的最后4位被定义为JP2。
在步骤36,JP2位被传送到JPP单元23(参见附图2)。
在下一步骤37中,JP1的位与JP2的位进行位与位地异或运算,以便生成JPP单元23的四输出JPP位。
跟随这个步骤之后,编码进程返回到步骤33。在到达步骤33的基础上,变量‘N’的值等于2。因此,在肯定的情形(‘N’=2)中,编码过程进入到步骤38。
在步骤38中,作为结果的JP位被写入RAM 21的下部。
在最后的步骤39中,编码过程结束。
现在参看图4,它示出了包含图1的多阶段解码器100的组件的方框图。多阶段解码器100的实现可被提供用于在存储联合信息的RAM单元(JIR)110和存储不相交信息的RAM单元(DJIR)200之间进行区分。两类信息之间的区别是由于这样的事实,即实际中当考虑先前在数学分析中使用JIR单元的概率,可以发现这种概率相当小。因此,为了减少电路的复杂性,在这两个RAM单元之间进行区分是可取的。
DJIR 200被提供用于存储第一和第二的不相交信息字的22位。这些字被传送到双模解码器单元130,其通过控制单元190读取这22位。对于如上述的范例情形1,双模解码器单元在130在单个错误校正模式中被激活。
如果第一字的解码成功,那么如果需要的话,DJIR单元200使用校正位,经过控制单元190而被更新。解码过程然后被重复用于第二11位字。
如果第一和第二字的解码都成功了,那么JIR单元110被留下不激活。如果这两个字的解码都失败了,那么全部解码过程就失败了。
在子字中的一个(第一子字或第二子字)解码失败而不是二个字都失败的情形中,那么解码失败子字的第二尝试使用已成功地解码的子代码而进行。
例如,如果第一子代码的解码已成功而第二子代码的解码已失败,那么第二尝试使用已成功地解码的第一子代码,解码第二子字。来自JIR单元110的4位通过控制单元190而被读取并被存储在中间RAM(IR)单元170。第一子代码通过控制单元190而被再读取到多阶段解码器20(参看图2)。多阶段解码器20再生4个JP1位,然后将它们传送到IR单元170。联合信息处理器(JIP)单元180被提供用于将JP和JP1进行位与位地异或运算。这个结果被存储在双模解码器单元130的[15,7,5]的块代码的位置12-15中。第二子代码从DJIR中被再读取到在双模解码器单元120的[15,7,5]的块代码的位置1-11,以生成15位字。在这种情形下,双模解码器单元130在双位错误校正模式中被激活。如果双模解码器单元130在双位错误校正模式中未被解码,那么全部解码过程就失败了。但是,一旦双模解码器单元130在双位错误校正模式中成功解码,那么DJIR单元200以校正位而进行更新,读取过程被表明为成功。
可替代地,如果第二子字(根据成功解码被定义为子码)的解码成功并且第一子字解码失败,类似的解码过程被执行,这样正如这里以上实例所述的第一子字和第二子字之间的操作功能是可以进行交换的。
本发明在这里被描述为提供了一种用于解码长码字的单个解码器。然而,本发明并不仅仅限于单个解码器,它同样地可用于提供多个解码器,每个可解码一个比长代码字位数少的代码字。
参看图5,它示出了图4的双模解码器单元130的方框图。状态机单元138被提供用于控制由双模解码器单元130所执行的解码过程。
从DJIR单元200、JIR单元110以及JIP单元(参看图4)所转送的信息位,一起被收集于数据控制器单元132。这样的收集由状态机单元138进行控制。
从数据收集器单元132得到的信息位在解码器核心单元134被解码。根据单个错误或双错误校正模式,奇偶校验矩阵单元136被使用在用于解码过程所需的计算中。该奇偶校验矩阵136在每一行包括对于所接收字的奇偶校验检验。在所检验的位置中,矩阵每一个这样的行包括一个数值“1”。检测进程就是对在奇偶校验行包含数值‘1’的位置上的字的元素进行异或的操作。如果异或操作的结果返回到0,检测进程就是成功的。如果所有检测过程都返回到零,那么所接收的字就被确定为代码字。在所接收的字上使用奇偶校验矩阵136的结果是所接收的字的故障码。包括一个非零数值的所接收字的故障码,表明所接收的字不是代码字。在所接收字上应用奇偶校验检验矩阵136是根据以上详述的、关于公式(1.2)或(1.3)过程而进行的。
关于范例情形1,在奇偶校验矩阵单元136(参见图5)中所实现的矩阵被提供以用于单个错误和双重错误校正模式,这样在单个错误校正模式中所使用的矩阵事实上就是在双重错误校正模式上所使用矩阵的一个子集。
参看图6,给出了关于范例情形1的解码过程的流程图140。在初始步骤141中,第一字从DJIR 200(参见图4)中被读出。在单个错误校正模式中,双模式解码器130被激活。
在下一步骤142中,状态机单元138(参见图5)检测第一字的解码是否成功。
在肯定的情形下,解码过程进入到步骤150。在步骤150中,如果存在校正,第一字就以校正进行更新。在该步骤中,双模解码器130(参见图4)被激活以用于解码在单个错误校正模式中从DJIR 200所读取的第二字。在下一步骤152中,状态机单元138(参见图5)检查第二字的解码是否已成功。在否定的情形(即在单个错误校正模式中第一字的解码已成功而在单个错误校正模式中第二字的解码已失败)中,解码过程进入到步骤153。然而,在肯定的情形中-解码过程进入到步骤156。在步骤156中,如果存在校正,第二字就以该校正进行更新,那么解码过程就成功地结束(步骤149)。
在第一否定情形(即如果第一字解码失败)中,解码过程进入到步骤143。在步骤143中,第二字从DJIR 200(参见图4)中被读取并且在单个错误校正模式中被解码。
在下一步骤144中,状态机单元138(参见图5)检查第二字解码是否已成功。在否定的情形中,全部解码过程失败,以及在步骤145被结束。然而,在肯定的情形中(即第二字解码成功),解码过程继续进入到步骤146。
在步骤153中,附加的解码尝试采用从已成功地解码的第一字和从4个外部联合位所获得的信息,解码第二字。在这个步骤中,第二字的11位从DIJIR单元200(参见图4)中被再读取。第二字的最后4位是由与从单元JIR110中所获得的4个联合位进行异或运算的第一字的隐位中而被再生的。第一字的隐位通过将解码器应用于从第一字所解码的11位而获得。双模解码器130(参见图4)被激活以用于在双错误校正模式中解码第二字。在下一步骤154中,状态机单元138(参见图5)检查第二字的所述附加解码是否已成功。
在否定情形中,全部解码过程失败,以及在步骤155被结束。
然而,在肯定的情形中,解码过程进入到步骤156。在步骤156中,第二字被更新到DJIR 200(参见图4),它带有在用于第二字的第二解码尝试中所发现的校正。解码过程然后进入最后步骤149。在最后步骤149中,这里声明了成功的解码过程以及解码被结束。
在步骤146中,用于解码已失败的第一字的第二尝试以与在步骤153中对于第一字所执行的解码过程相似的方式进行(这样在第一字和第二字之间的操作功能被交换)。
在下一步骤147中,状态机单元138(参看图5)检查第一字的附加的解码是否已成功。
在否定的情形下,全部解码过程失败,并且在步骤155结束。
然而,在肯定的情形中,解码过程进入到步骤148。在步骤158中,第一字被更新到DJIR 200(参见图4),它带有在用于第一字的第二解码尝试中所发现的校正。在最后步骤149中,这里声明了成功的解码过程以及解码被结束。
参考图7,示出了关于范例情形2的解码过程的流程图。图7所描述的解码过程更适合于软解码器的实现。为使用软解码器而专门地实施的单元以虚线进行标记并且对于范例情形2未被使用。
在初始步骤211中,对在解码过程中所使用的多个变量执行初始化。这些变量包括成功解码子代码的数目(k),不相交子字的数目(nc),至过程的当前字的数目(j),阶段计数器(p),最大阶段值(np),在单个错误校正模式中的失败字的数目(或在更通用的情形中的第一解码器)(f),在单个错误校正模式中失败解码的最大数目(或在更通用的情形中的第一解码器)(mf)。
向量‘v’被提供用于对每个子代码存储值‘1’,这表示在向量‘v’的相应元素地址中成功地被解码。在解码过程的开始阶段,向量‘v’的所有元素被初始化为‘0’,因为没有关于任一子代码正确性的知识。对于范例情形2,子字数目nc被初始化为586,因此向量‘v’中的元素数目为586。
变量‘j’被初始化为‘0’。变量‘j’是当前已解码子代码的数字。变量‘P’定义了当前在解码过程中运行的阶段数目,以及‘p’被初始化为‘0’。
变量‘np’定义了最大阶段数目。对于范例情形2,仅激活两个阶段是可能的,即阶段-0定义了单错误校正模式以及阶段-1定义了双错误校正模式。注意在软解码器实现的情况下,可以是多于两个阶段被执行的情形,这样单个子代码就被解码多于两次。
变量‘f’定义了在阶段-0中未解码的子字数量。对于范例情形2,如果在阶段-0中有多于一个的失败,解码过程就不能再生子字的隐位。然而,在软解码器实现的情况下-根据特定的设计考虑,变量‘f’可以被设置为直至‘nc’的任何值。
变量‘k’定义了成功地被解码子代码的数目,以及一旦在所有子字上尝试了阶段-0且‘f’的值已被设定,变量‘k’就被设置为k=586-f。为了避免变量‘k’的新的计算,每次变量‘f’被更新-变量‘k’独立于变量‘f’而被定义。一旦变量‘k’达到值586(或在通常的情形中的‘nc’),解码过程结束。
在下一步骤212中,联合奇偶校验位(JP位)从JIR单元110(参见图4)被传送到中间RAM 170(参见图4)。随后,对于每个被成功地解码的子代码,JP利用再生的成功地解码子代码的隐位而进行更新。
在步骤213中,‘j’与值586(nc)进行比较。既然在解码过程的这一点上,‘j’的值少于586(‘j=0’),那么解码过程继续进入到步骤214。
在步骤214中,从DJIR单元200所传送的不相交的字-0(即在循环的下一应用中的字-j)在双模解码器130(参见图4)中以模式-1(即对于范例-情形2单错误校正模式被激活)进行解码。
在下一步骤215中,状态机单元138(参见图5)检查这个子字的解码是否已成功。在否定的情形中,解码过程继续进入到步骤216。在肯定的情形中,解码过程继续进入到步骤219。
在步骤219中,通过将解码器应用到字-0的11个成功解码的位(即在循环的下一应用中的字-j)以及将作为结果的4个奇偶校验位与已存储在中间RAM 170(参见图5)中的JP位进行异或,位-0的隐位JP0被再构建。元素v[0]的对应值被设置为‘1’以表示位-0成功地被解码并且‘k’以1进行递增。跟随在这些变量设置操作之后,字-0(即在循环的下一应用中的字-j)在DJIR单元200(参见图4)中根据校正结果而进行更新。
在步骤221中,‘j’以‘1’进行递增,这样实现下一子字解码。解码过程然后返回到步骤213。
在步骤213中,确定变量‘j’的值是否低于586。
在否定的情形中,解码过程继续进入到步骤222。在肯定的情形中,解码过程利用变量‘j’的已递增的值,再应用步骤214、步骤215以及如果需要的话,还再应用步骤216。
在步骤216中,检查变量‘f’的值。在对已失败子字来说其数目‘f’超过值‘1’(对于范例情形-2)的情况下,解码过程声称失败以及在步骤217中被终止。否则解码过程进入到步骤220(或如果软解码器被实施就进入到步骤218)。注意在软解码器的情形下,在对于整个页扇区的解码失败被声称之前,变量‘f’的值可能超过值‘1’。
在步骤218中,对于字‘j’的隐位所执行的估计被存储在中间RAM 170中。考虑软解码器的实施时,即使软解码器未能解码,但提供有关隐位的新的知识,甚至是部分隐位的新的知识也是可能的。然而,对于范例情形-2,提供这种估计是不可能的。因此,在范例情形-2中,步骤218被绕过。
在步骤220中,变量‘f’的值以1进行递增,以指示就已失败子字而言其总数已增加。解码过程然后进入到步骤221,其中变量‘j’的值以1进行递增,以指示解码器继续解码下一子字。
在步骤222中,‘k’与值586进行比较。如果‘k’=586,那么所有子码的解码已成功,并且解码过程成功地在步骤223中完成。否则对于范例情形-2,只有一个子字没有成功地被解码,以及解码过程进入到步骤224。
在下一步骤224中,变量‘p’的值以1进行递增。
在步骤225中,检查变量‘p’的值是否低于2(或在一般情形中低于‘np’)。在否定的情形(即‘p’等于或大于2)中声称全部解码过程失败以及在步骤226中全部解码过程结束。然而,在肯定情形中,在步骤227,变量‘j’的值被重置为‘0’以用于再解码已失败子字。紧随步骤227之后,解码过程继续进入到步骤228。
在步骤228中,检查在位置‘j’向量‘v’的值(元素v[j])是否等于‘0’。在肯定情形中,在软解码器的情形下,解码过程进入到步骤229;在硬解码器的情形下,解码过程绕过步骤229并且直接进入到步骤237。然而,在否定的情形中-解码过程进入到步骤235。在步骤235中,变量‘j’的值以1进行递增,并且编码过程进入到下一步骤234。在步骤234中,检查变量‘j’的值是否低于586。在否定的情形中(即变量‘j’的值等于或大于586),所有元素已被扫描以及解码过程继续返回以应用步骤222。然而,在肯定情形中(即‘j’<586)-步骤228、225和234被重复直至发现失败子字。
注意步骤229仅在软解码器的情形下才被执行。在软解码器的情形下,采用被成功解码子字的、迄今为止已更新的JP位和被提供用于迄今为止已失败子字的、所再构建的隐位的估计,失败子字的隐位可被再构建。虽然本发明的优选方法采用异或操作,提供了已失败子字的、所再构建的隐位的估计,但是在软解码器的情形下其它操作可以被进一步地考虑。
在硬解码器的情形下,所有其它子字必须成功地被解码。对于范例情形2,在中间RAM 170中所存储的JP位,在利用所有其它被成功地解码子字而进行更新后,可被用作已失败子字‘j’隐位的估计。如果在子字‘j’的最前11位中出现两个或多个错误,所更新的JP位仅被用于已失败子字‘j’的隐位的估计。注意如果解码子字‘j’的第二尝试成功了,那么所更新的JP位就是所再构建的隐位它们自己,而不仅仅是关于范例情形-2的估计。这是因为在第二解码尝试中的成功意味着在15-位字中刚好有两个错误。进一步,还因为第一尝试已失败,在15-位字的最前11位中刚好有两个错误。因此,15-位字的最后4位没有错误并且是隐位的恰当再构建。
在步骤237中,对于同时使用硬解码器和软解码器的情形,字-‘j’从DJIR 200(参见图4)被读取到双模解码器130(参见图4)。然后联合信息从中间RAM 170中被读出。在数据收集器132(参见图5)中联合信息与字-‘j’进行组合,以形成修正后的字用于在第二解码模式的解码器核心134(参见图5)中进行解码。对于范例情形2,这种组合操作就只是级联以及第二解码模式就是[15,7,5]的块解码器。一旦修正后的字-‘j’被定位在解码器核心134(参见图5)中,状态机138(参见图5)就在步骤237的最后阶段中启动解码操作。
在步骤230中,检查用于解码字-j的第二尝试是否已成功。在肯定的情形中,解码过程执行步骤231。在步骤231中,变量‘k’的值以1进行递增,元素v[j]的值被设置为‘1’,以及代码字-j在DJIR 200(参见图4)中进行更新。在软解码器的情形下,在步骤236中,子字‘j’的完全地被再构建的隐位与在中间RAM170中所存储的联合奇偶校验位进行组合,以及被提供用于这些隐位的估计从中间RAM170中被去除。将完全地被再构建的(由于成功解码)隐位与联合奇偶校验位进行组合的一种方式,是通过将隐位与联合奇偶校验位进行位与位地异或运算。跟随步骤231(或者在软解码器的情形下步骤236)之后,解码过程直接进入到步骤233。然而,在否定的情形(即字j的第二解码已失败)中,解码过程直接进入到步骤233(或者如果实施软解码器,进入到步骤232)。在步骤232中,用于字‘j’隐位的所更新的估计被存储在中间RAM 170中。
在步骤233中,变量‘j’的值以1进行递增,解码过程返回,以应用由解码过程所提供的步骤,直到已声称了解码成功(步骤223)或解码失败(步骤226)。
参看图8,示出了关于范例情形1的解码过程的示意性图示240。由标记242所定义的每个7-位信息向量,被转换为15-位代码字244,其被表示为C1和C2。每个这样的15-位代码字244的最前11位246包含7个信息位242和最前4个奇偶校验位250。这些最前11位246被写入到闪存设备。每个15-位代码字244的最后4个奇偶校验位252一起进行位与位地异或运算,以生成以在这里被定义为‘P’位254的4个奇偶校验位的集合,这样就提供了第二类奇偶校验位。
参看图9,示出了关于范例情形2的输入CER性能(在x轴上)与输出SER性能(y轴)的图解性图示260。如在图解性图示260所示的,由参考方案262(下面的线)所获得的SER性能仅稍微地区别于由本发明方案所获得的SER性能(上面的线)。在SER低于10-10场合中性能上没有实际的差别,虽然本发明的闪存存储器大小远远地小于参考方案的。
在本发明的设备中,还可能将软解码器实施作为用于字代码的组件核心代码。软解码器被提供以用于使得例如LDPC(低密度奇偶检测)、TCM(格状编码调谐)、TURBO编码等组件代码能够使用。
解码过程可以在多个阶段中被执行,而在每个阶段中软解码器对于某个子字,使用通过联合信息(存储在中间RAM中)从其它子字进所行传播的已更新的信息而被激活。在一般的情形下,软解码器可以接受包含用于每个更新信息的值的可靠性位的多个位。这意味着被传送到软解码器的输入位值的表示可以进一步地包含多个位(即如在以上的范例情形1和范例情形2中所述的,每个更新信息的值不限于仅包含单个二进制值)。输入位软值可以被看作并且被转换为表示用于输入位i的二进制值的可靠性等于‘0’(或相反地等于‘1’)的概率。
在下面的(2.7)中所定义的对数似然比(LLR)通常被用于本领域已知的编码理论,以表示对于二进制值‘0’或‘1’的这些可靠性,按照下式:
L ( b t ) = log [ P r ( b t = 0 ) P r ( b t = 1 ) ] - - - ( 2.7 )
与通信领域形成对比,这些概率在闪存设备的存储制造过程期间已预先确定。在闪存设备中的存储单元包括在每个单元中的一组位,这样单元电压电平对应于表示这组位的符号。因此这些符号的任一集合可以被定义为信号星座图(constellation)。
闪存设备由于它的物理特征,可以引起几乎任一所写入的电压电平,以作为不同电压电平而进行读取。以交叉概率prs来表示写入电压电平‘r’和读取不同的电平‘s’的概率。
如上所提到的,由于闪存设备的特定制造过程-这些概率是固定的给定值。对于二进制值’0’或‘1’的输入可靠性可使用包含这些交叉概率prs的给定常数表,如(2.7)中所示进行计算。
在第一阶段中,软解码器解码每个不相交子字,而“隐奇偶校验位”的可靠性被设置为0(被软解码器识别为擦除)。
一旦成功解码,这些奇偶校验位就被成功地再生。从对数似然比(LLR)的格式到二进制值的转换按以下方式实现:
二进制值在LLR格式中是可靠性的符号位。在成功解码的情形下,二进制隐值根据应用(在上述的范例情形1和范例情形2中,由用于编码不相交子字的过程所执行的应用)而被再生。然后,完全地被再生的二进制隐值与从闪存设备所读取的联合信息位进行位与位地异或运算,参见图7的步骤219和236。结果,这消除了所再生的“二进制隐值位”对不相交信息位的影响。这是由于这个进程具有异或操作的特征,其中A XOR B XOR C XOR B=A XOR C。
注意,在闪存设备中所存储的联合信息位也包含内在的不可靠性。因此,如果所有子字除了一个外都被成功地解码,那么对于已失败解码子字的隐位的再生,使用其它被成功地解码子字的隐位和闪存设备中所存储的联合信息,仍可能包含源自从闪存设备所读取联合信息的错误。
如果软解码器失败,输出可靠性仍以用于“隐奇偶校验位”的LLR格式而被产生。这些可靠性被存储在中间RAM中。一旦第一解码阶段完成,如果所有子代码都被成功地解码,就确定了成功解码进程。
如果在第一解码阶段中至少一个子字失败,那么附加的解码尝试由软解码器所执行。对于每个这样的新解码尝试,软解码器使用所更新的联合信息和从其它已失败子字所获得的可靠性。这样的解码尝试由在子字之间所执行的“消息传递”进程(如在图7中的软解码器使用的情形下,步骤229、231、236和232所提到的)而被支持。消息是指可靠性,其通过中间RAM在子字之间进行传递。
假定执行这个“消息传递”进程的机制是本发明的本质,因为这个机制给予了成功解码以克服用于不相交子字的子集的已失败解码事件,而不需要额外的知识(除了联合信息外)。因为以LLR格式所获得的可靠性为单个子字贡献了新的外部信息,就可能是这样的情形,即这个子字将在下一阶段中成功地被解码。
在子字‘y’(先前未能解码)的一般的解码阶段‘p’中,其中‘p>0’,-软解码器使用所有子字的隐奇偶校验位的子字可靠性(通常以LLR格式),这样就排除了子字‘y’自身的可靠性的贡献。在解码阶段‘p’中,对于子字‘y’的隐奇偶校验位估计的幅值Ay和符号值Sy对于在同一位置的“隐奇偶校验位”的每个组而被单独地得到。换句话说,幅值Ay(amplitude)和符号值Sy按下式进行计算以用于同一子字的、单独且独立于同一子字的其它隐位的每一隐位:
A y = Ψ - 1 { Σ j = y , j ∈ F Ψ ( A j ) } , - - - ( 2.8 )
其中‘F’被定义为包含已失败解码子字的隐位和外部更新的‘P’位的组。更新的‘P’位是指在闪存设备中所存储的、由在解码过程中所有迄今为止被成功解码的子字的再生隐位所更新的位。函数ψ可以以多种方式进行计算,其中之一为:
Figure S2006800425946D00432
注意,函数ψ的一个有用的特性是:函数是它自己的负的、可逆的函数:
Ψ[Ψ(x)]=-|x|    (2.10)
符号‘Sy’在这里被定义为以LLR格式进行度量的可靠性的符号,它由在参与幅值Ay计算的同一集合‘F’上应用异或操作,按照下式:
S y = mod ( [ Σ j = y , j ∈ F S j ] , 2 ) , - - - ( 2.11 )
其中‘F’被定义为上述在式(2.8)中所指出的组。
一旦计算了用于子字‘y’的隐奇偶校验位的已更新可靠性,同样的软解码器被再激活用于解码子字‘y’。解码以及可靠性更新过程被重复直到成功解码被实现,或直到解码尝试的所预先定义的最大值以及或解码阶段由解码方案来执行。
成功解码过程包含在RAM中更新子字位‘y’,以及在中间RAM中使用成功地解码子字‘y’的被再生“隐奇偶校验位”的符号位来更新联合信息位的步骤。因此,紧随已失败解码尝试之后的是在中间RAM中更新子字‘y’的隐奇偶校验位的可靠性。虽然作为已失败解码尝试的结果,更新的可靠性已被获得,但是在同一阶段‘p’中在解码其它子字时考虑它们(更新的可靠性)会提高这些其它子字解码的效率。
然后,软解码器进入到解码下一子字直到所有子字被成功地被解码,或者直到解码阶段的预先定义的最大值被执行用于某个子代码。
如上所述,中间RAM存储了用于每个失败子字的“隐位”可靠性。然而,对于“隐位”的估计配置已减少大小的、包含仅仅一个位(即在以LLR格式保持可靠性的情形下的符号位)的中间RAM,也是可能的。在这种情况下,子字‘y’的隐奇偶校验位从其它失败子字的、当前已估计的隐奇偶校验位中以及从外部已更新‘P’位中可被推导出。换句话说,只是失败子字的隐奇偶校验位的当前估计(即,只是对于j∈F的Sj)被存储,而不是失败子字的隐奇偶校验位的可靠性的当前估计(即,对于j∈F的Aj和Sj)被存储。
本发明的新颖性可以从各种角度看出。从第一角度来看,本发明公开了一种方法和设备,其通过多次解码较短的代码字以获得成功解码长代码字。关于上述的范例情形-1,长代码字是[15,7,5]的块代码,较短的代码字是[11,7,3]的块代码。较短的[11,7,3]的块代码被解码两次。
这能使本发明的设备避免了与本领域已知的解码器相联系的高实现复杂性,而且获得了同样的输出BER/SER性能。
根据第一角度,应当认为本领域所已知的种种解码方法,被提供用于通过成功解码固定大小的子字来解码数据流,这是以与本发明的类似方式实现的。
例如,需要解码数据流,其中每个代码字有1000位以及每个这样的代码字独立于先于它或跟随它的代码字而基于它自身进行解码。根据本领域已知的解码方法,数据流被解码为N(例如N=4)组代码字。N组的整个流对于N=4被定义为4000位的单个长代码字。短解码分别地被应用在每个有1000位的四个短代码字的每一个上,这样所有短解码的解码数据进行级联以生成长代码字的解码数据。
然而,本发明的方法提供了错误校正编码方案,它不同于以上所述的现有解码方法,因为本发明的方法进一步还提供了这样的阶段,即如果短代码字解码失败,根据其它短代码字的解码数据来修改这个短代码字的解码数据。对于以上所述的范例情形1,这个失败的短代码字的解码数据的隐位根据其它成功解码的短代码字的解码数据的再构建隐位和在闪存设备中所存储的联合奇偶校验(JP)位而进行替换。
这个阶段在上述的现有方法中完全没有,它提供了本发明众多的自身优点。一个这样的优点是在一个或多个短字中克服了解码失败,因此需要较少的奇偶校验位来保护这些较短的代码字。
本领域已知的其它解码方法是基于在不同短代码字之间的连接。根据这种通常被称为级联编码方案的方法,由第一代码进行编码的几个短代码字被分组到一起,以及由第二代码再次进行编码以生成长代码字。这样的现有方法根据较长代码字的解码实现仍在编码的短代码字的修正,然后仅仅解码短代码字。
例如,4个代码字的数据流(包含4,000位),其中每个基本代码字有1000位,通过第一代码而被编码为4,500位的一个长字。长代码字的解码将需要根据第二代码首先解码长字,然后根据第一代码分别地解码每个短代码字。
然而,对于范例情形1,本发明的方法不同于这个现有方法,因为本发明的方法首先解码短代码字,然后根据其它短代码字的解码数据实现解码数据的修正。
被称为Turbo解码的其它解码方法使用了“Turbo代码”,其典型地利用软解码方法。“Turbo代码”被定义为前向错误校正技术,由相级联的代码结构加上迭代反馈算法而组成。通过应用Turbo解码,同样的数据位可被编码两次或更多次(数据位被交织以在多种编码操作中具有不同次序),这样代码字就同时包含数据位和由所有编码所生成的多个奇偶校验位的集合。在编码时,多个编码过程被应用(并列地或非并列地)。根据多种奇偶校验位集合中的一个所应用的每个解码过程,从关于同样的、但具有不同奇偶校验位的信息数据的前一解码阶段中接受外来信息。
前向错误校正技术的优点在于为解码同样数据位所应用的多种解码过程之间的交互。这种交互提高了解码器的错误校正性能。应用Turbo解码的解码器可以进一步地被配置成根据仅仅一个奇偶校验位集合来解码数据,这样只有在失败解码的情形下,如上所述,多个奇偶校验位集合才会被解码。
本发明的方法在多个方面上不同于本领域已知的Turbo解码方法。首先,在子字自身解码与实现解码字的修改进程之间有明显的分离。本发明方法分别地解码每个短字,然后只应用解码数据的一部分影响另一部分的过程。然而,根据Turbo解码方法,解码子字与实现其它子字修正之间没有明显的分离-两个步骤同时地发生。
其次,根据本发明的方法,每个短字独立于其它短字而进行解码。因此,解码子字生成解码数据的独立集合。然而根据Turbo解码方法,所有短字(在典型的并列实现中)或者至少一个短字(在两个阶段的实现中)同另一短字串接而进行解码,以生成解码位的联合集合。更进一步地,解码短代码字不需要被识别为“自身的解码数据”(即依赖于其它代码字)。
第三,根据本发明,多种短代码字是长代码字的不相交子集。然而,在Turbo解码方法中不能提供这样的实现,其中多个短代码字全部编码同样的数据位。
从第二角度来看,本发明的创新是通过使用两个编码方案来编码数据位而改进了错误校正性能,不需要保存所有作为结果的奇偶校验位,以及依靠奇偶校验位的两个集合之间的关系以使得一个集合“掩盖了”其它集合的不足。当从本发明的这一角度来看时,下面的各个方面应当进行考虑。
a.这个观点的区别特征是计算奇偶校验位多于最终被使用的中间阶段。这样将人们的注意力吸引到了现有“删截(punctured)”的方法。在错误校正理论中术语“删截”是指丢弃一些所计算的奇偶校验位以减少奇偶校验的开销,用已减少的开销来抵消较低的错误校正能力。然而,在现有技术中所理解的“删截”完全不同于本发明-本发明使用两个错误校正编码方案作为基础以用于它的操作,而在现有删截方法中不存在这个特征,其中仅使用单一的编码方案。
b.美国专利申请No.10/998,003,由Dror等所提交的、于2004年11月29日公布在美国专利申请公开No.2005/0160350、发明名称为“compact high-speed single-bit error-correction circuit”,公开了一种错误校正方法,它也在编码阶段期间停止丢弃一些所计算的奇偶校验信息。Dror等的方法比本发明更接近于上面所讨论的删截方法,因为Dror等的方法包括两个相分离的计算阶段,其中奇偶校验信息从仅仅其中一个阶段的结果中被丢弃,表面上和本发明相似。然而,Dror等的方法不同于本发明,因为以上所述的同样的事实-本发明使用了两个错误校正编码方案,而这不是在Dror等的方法中的情形。即使Dror等的方法实现了两个计算阶段,然而每个阶段不是一个错误校正方案,因为它甚至不能校正它自己的单个错误。两个计算一起仅仅是提供了用于校正错误的足够的奇偶校验信息,因此两个计算一起仅仅是构造了一个错误校正方案。
应当理解的是,虽然本发明涉及了系统性代码,但是本发明方法可同样地应用于系统性的和非系统性的错误校正代码。根据错误校正术语,系统性代码被定义为这样一种代码,其中被传送到解码器的每个输入数据位一对一的对应于在已编码代码字中的匹配位,在删截之前如果可应用的话,这样已编码代码字位可以被划分为两个不相交部分-一个包括原始数据位而另一个包括奇偶校验位。从而,非系统性代码被定义为不能满足上述条件的任何代码(即:在非系统性代码中不可能有这样的明显划分)。
本发明的方法可同样地应用于硬解码和软解码的解码器。根据错误校正术语,软解码的解码器使用这样的解码过程,即它能接受用于输入位的可靠性度量、能在解码过程中考虑它们、以及在这个过程中更新可靠性度量。硬解码器是不满足以上条件的解码器。
虽然如上所述,本发明是基于简单的BCH代码,但是也可以使用本领域已知的其它编码和解码技术,以实现相似的效率和性能增益。
更进一步地,由本发明设备所使用的代码结构可以被使用在本领域已知的任一这样的设备中,包括数字存储介质、随机读取存储器、闪存存储器、和EEPROM。术语“存储”和“存储器”在这里可互换地被使用,以及是指任何这样的存储设备。
应当注意到,当本发明在这里被提供用于闪存存储,本发明的原理可以被修改而使用,为诸如通信系统(无线的、有线的、有线电话系统、卫星、蜂窝电话,包括DSL、DVBS、3G、4G、CDMA2000,802.11和802.16的变型等)和信号处理(视频和视频应用)等其它类型应用提供便利。
如果解码过程的第一阶段不充分,缓存器可以在本领域已知的通信系统中被进一步地实现,以为进一步地解码尝试的临时激活而保存数据。然而,可以是这样的情形,即不需要额外的缓存器,因为当解码单元空闲时这样的缓存器可能已经在通信系统的其它部分被使用了。
可以理解的是,有关对于错误校正编码方案的任何方法和设备的其它实现也可能是在本发明的范围内。
已经相对于某些特定的实施方式描述了本发明,但是应当理解的是,这种描述不意味着限制,因为进一步的修改将会被所属领域的技术人员所领悟,所以进一步的修改应包含在所附的权利要求的范围内。
参考文献:
Shannon,“A mathematical theory of communications”Bell System Telephone Journal,Vol.27,1948,pt.I,pp.379-423;pt.II pp.623-656.
M.G.Luby,M.Mitzenmacher,M.A.Shokrollahi and D.A.Spielman,“Improved lowdensity parity-check codes using irregular graphs and belief propagation,″Proc.of theIEEE Int.Symp.on Inf. Theory(ISIT),p.117,1998.
R.G.Gallager,“Low-density parity-check codes,″IRE Trans.Info.Theory,vol.IT-8,pp.21-28,1962.
T.J.Richardson and R.Urbanke,“The capacity of low-density parity-check codes undermessage passing decoding,″IEEE Trans.Inform.Theory,vol.47,pp.599-618,2001.
C.Berron,A.Glavieux,and P.Thitimajshima,“Near Shannon limit error correctingcoding and decoding:Turbo codes,”in IEEE Int.Conf.on Communications,1993,pp.1064-1070.
M.M.Mansour and N.R.Shanbhag,“High-Throughput LDPC de-coders,″IEEE Trans.on Very Large Scale Integration Systems,vol.11,pp.976-995,2003.
T.J.Richardson,A.Shokrollahi and R.Urbanke,“Design of capacity approaching low-density parity-check codes,″IEEE Trans.Inform.Theory,vol.47,pp.619{637,2001.
E.Sharon,S.Litsyn,J.Goldberger“An Efficient Message-Passing Schedule for LDPCDecoding,″in proc.23rd IEEE Convention in Tel-Aviv,Israel,pp.223-226,September 6-7,2004.
R.M.Tanner,“A recursive approach to low complexity code″IEEE Trans.on Info.Theory,vol.27(5),pp.533-547,1981.
J.Zhang and M.Fossorier,“Scheduled belief propagation decoding,″The Proceedings36th Asilomar Conference on Signals,Systems and Computers,Pacific Grove,USA,vol.1,pp.8-15,2002.
Dale E.Hocevar,“Efficient encoder for low-density-parity-check-codes”,Texasinstruments incorporated.US Patent application publication No.2004/0148560,Jul.29,2004
Mustafa Eroz,Feng-Wen Sun,Lin-Nan Lee,“Method and apparatus for providingreduced memory low density parity check codes”.The direct TV group,INC.,US PatentApplication PublicationNo.2005/0091565A1,Apr.28,2005
Mustafa Eroz,Feng-Wen Sun,Lin-Nan Lee,“Method and system for providing long andshort block length low density parity check codes”.The direct TV group,INC.,US PatentApplication Publication No.2005/0091570 A1,Apr.28,2005
Mustafa Eroz,Feng-Wen Sun,Lin-Nan Lee,“Encoding low density parity check codesthrough an LDPC decoder”.The direct TV group,INC.,US Patent ApplicationPublication No.2005/0003756 A1,Jan.6,2005
Richardson,et al.“Methods and apparatus for decoding LDPC codes”,US Patent No.6,633,856,Flarion Technologies,Inc.(Bedminister,NJ),October 14,2003.
Error-correcting codes,second edition,W.Wesley Peterson,E.J.Weldon.
Elwyn R. Berlekamp/Algebraic Coding Theory,Revised 1984 Edition.
Error-Correcting Codes and Finite Fields/Oliver Pretzel
R.E.Blahut,Theory and Practice of Error-Correcting codes,Addison-Wesley,1983.
W.G.Chambers,R.E.Peile,K.Y.Tsie,and N.Zein,An algorithm for solving the Welch-Berlekamp key-equation with a simplified proof,Electronic Letters,vol.29,1993,pp.1620-1621.
V.Guruswami and M.Sudan,Improved decoding of Reed-Solomon and Algebraic-Geometry codes,IEEE Trans.Inform.Theory,6,1999,pp.1757--1767.
D.Mandelbaum,Decoding of erasures and errors for certain RS codes by decreasedredundancy,IEEE Trans.Inform.Theory,vol.28,2,1982,pp.330-336.
J.L.Massey,Shift-register synthesis and BCH decoding,IEEE Trans.Inform.Theory,vol.15,1969,pp.122-127.
W.Peterson,and W.Weldon,Error Correcting Codes,1974.
L.Welch and E.R.Berlekamp,Error correction for algebraic block codes,US Patent No.4,633,470,1983.

Claims (5)

1.一种解码代码字表示的方法,所述方法包括以下步骤:
(a)由代码字表示生成多个子字,以便每个所述子字的位都是代码字表示的位的合适子集;
(b)根据每个子字的位单独地解码它自己,以生成相应的解码子字;以及
(c)如果所述子字中的一个的所述解码失败:
(i)就修正相应于这个解码失败的所述子字的所述解码子字,由此产生一个已修正的解码子字,所述修正至少是部分地根据至少一个成功地解码的子字的所述对应解码子字;以及
(ii)将来自所述已修正的解码子字的数据与来自所有所述成功地解码的子字的所述相应解码子字的数据进行组合。
2.根据权利要求1的方法,其中来自所述已修正的解码子字的数据与来自所有所述成功地解码的子字的所述相应解码子字的数据的所述的组合,由包括组装来自所述已修正的解码子字的数据与来自所有所述成功地解码的子字的所述相应解码子字的数据的步骤来实现。
3.根据权利要求1的方法,其中所述子字是不相交的。
4.根据权利要求1的方法,其中所述子字包含同样数目的位。
5.一种用于解码代码字表示的设备,该设备包括:
(a)用于由代码字表示生成多个子字,以便每个所述子字的位都是代码字表示的位的合适子集的装置;
(b)用于根据每个子字的位单独地解码它自己,以生成相应的解码子字的装置;以及
(c)用于如果所述子字中的一个的所述解码失败:
(i)就修正相应于这个解码失败的所述子字的所述解码子字,由此产生一个已修正的解码子字,所述修正至少是部分地根据至少一个成功地解码的子字的所述对应解码子字;以及
(ii)将来自所述已修正的解码子字的数据与来自所有所述成功地解码的子字的所述相应解码子字的数据进行组合的装置。
CN2006800425946A 2005-11-15 2006-11-13 用于多个阶段错误校正的方法和设备 Expired - Fee Related CN101611549B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210390594.2A CN103023514B (zh) 2005-11-15 2006-11-13 用于多个阶段错误校正的方法和设备

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US73645805P 2005-11-15 2005-11-15
US60/736,458 2005-11-15
US11/514,182 2006-09-01
US11/514,182 US7844877B2 (en) 2005-11-15 2006-09-01 Method and device for multi phase error-correction
PCT/IL2006/001305 WO2007057885A2 (en) 2005-11-15 2006-11-13 Method and device for multi phase error-correction

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210390594.2A Division CN103023514B (zh) 2005-11-15 2006-11-13 用于多个阶段错误校正的方法和设备

Publications (2)

Publication Number Publication Date
CN101611549A CN101611549A (zh) 2009-12-23
CN101611549B true CN101611549B (zh) 2012-11-28

Family

ID=38049059

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201210390594.2A Expired - Fee Related CN103023514B (zh) 2005-11-15 2006-11-13 用于多个阶段错误校正的方法和设备
CN2006800425946A Expired - Fee Related CN101611549B (zh) 2005-11-15 2006-11-13 用于多个阶段错误校正的方法和设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201210390594.2A Expired - Fee Related CN103023514B (zh) 2005-11-15 2006-11-13 用于多个阶段错误校正的方法和设备

Country Status (7)

Country Link
US (3) US7844877B2 (zh)
EP (1) EP1949580B1 (zh)
JP (1) JP5216593B2 (zh)
KR (2) KR101135425B1 (zh)
CN (2) CN103023514B (zh)
AT (1) ATE540480T1 (zh)
WO (1) WO2007057885A2 (zh)

Families Citing this family (165)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006209928A (ja) * 2005-01-31 2006-08-10 Sony Corp 光ディスク製造方法及び装置、光ディスク、並びに、光ディスク再生方法及び装置
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US8271850B2 (en) * 2005-12-29 2012-09-18 Intel Corporation Fast low-density parity-check code encoder
EP2033368A2 (en) * 2006-05-01 2009-03-11 Adaptive Spectrum and Signal Alignment, Inc. Methods and apparatus to combine data from multiple sources to characterize communication systems
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
US8042029B2 (en) 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error
KR101037243B1 (ko) * 2006-08-02 2011-05-26 후지쯔 가부시끼가이샤 수신 장치 및 그 복호 방법
US7904783B2 (en) * 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US7805663B2 (en) * 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US7904780B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
KR100873824B1 (ko) * 2007-05-04 2008-12-15 삼성전자주식회사 오류 제어 코드 장치 및 그 방법
WO2009037697A2 (en) * 2007-09-20 2009-03-26 Densbits Technologies Ltd. Improved systems and methods for determining logical values of coupled flash memory cells
WO2009095902A2 (en) 2008-01-31 2009-08-06 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009053961A2 (en) 2007-10-25 2009-04-30 Densbits Technologies Ltd. Systems and methods for multiple coding rates in flash devices
US8453022B2 (en) 2007-12-05 2013-05-28 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
WO2009072105A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. A low power chien-search based bch/rs decoding system for flash memory, mobile communications devices and other applications
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
WO2009074979A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Chien-search system employing a clock-gating scheme to save power for error correction decoder and other applications
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
WO2009078006A2 (en) 2007-12-18 2009-06-25 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
WO2009081708A1 (ja) * 2007-12-20 2009-07-02 Nec Corporation 端末装置、端末装置の制御方法、及び記録媒体
US8301912B2 (en) * 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
US8161166B2 (en) * 2008-01-15 2012-04-17 Adobe Systems Incorporated Information communication using numerical residuals
US20090207725A1 (en) * 2008-02-11 2009-08-20 Wenfeng Zhang Method and system for joint encoding multiple independent information messages
US8832518B2 (en) 2008-02-21 2014-09-09 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
KR20090097673A (ko) * 2008-03-12 2009-09-16 삼성전자주식회사 연판정 값에 기반하여 메모리에 저장된 데이터를 검출하는장치
US8972472B2 (en) * 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US20090282267A1 (en) * 2008-05-09 2009-11-12 Ori Stern Partial scrambling to reduce correlation
US8458563B2 (en) * 2008-06-23 2013-06-04 Ramot At Tel Aviv University Ltd. Reading a flash memory by joint decoding and cell voltage distribution tracking
US8464131B2 (en) * 2008-06-23 2013-06-11 Ramot At Tel Aviv University Ltd. Reading a flash memory by constrained decoding
EP2294510B1 (en) * 2008-06-24 2011-12-28 SanDisk IL Ltd. Method and apparatus for error correction according to erase counts of a solid-state memory
CN101803205B (zh) * 2008-08-15 2013-12-18 Lsi公司 近码字的ram列表解码
US8332725B2 (en) 2008-08-20 2012-12-11 Densbits Technologies Ltd. Reprogramming non volatile memory portions
US8161345B2 (en) 2008-10-29 2012-04-17 Agere Systems Inc. LDPC decoders using fixed and adjustable permutators
US9356623B2 (en) 2008-11-26 2016-05-31 Avago Technologies General Ip (Singapore) Pte. Ltd. LDPC decoder variable node units having fewer adder stages
US8413029B2 (en) * 2009-01-16 2013-04-02 Lsi Corporation Error correction capability adjustment of LDPC codes for storage device testing
KR101473046B1 (ko) 2009-03-05 2014-12-15 엘에스아이 코포레이션 반복 복호기들을 위한 개선된 터보-등화 방법들
JP2010212934A (ja) * 2009-03-10 2010-09-24 Toshiba Corp 半導体装置
US8341509B2 (en) * 2009-03-17 2012-12-25 Broadcom Corporation Forward error correction (FEC) scheme for communications
US8572460B2 (en) * 2009-03-17 2013-10-29 Broadcom Corporation Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8484535B2 (en) 2009-04-21 2013-07-09 Agere Systems Llc Error-floor mitigation of codes using write verification
US8578256B2 (en) * 2009-04-22 2013-11-05 Agere Systems Llc Low-latency decoder
US8464123B2 (en) * 2009-05-07 2013-06-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US8914697B2 (en) * 2009-08-26 2014-12-16 Seagate Technology Llc Data corruption detection
US8868821B2 (en) 2009-08-26 2014-10-21 Densbits Technologies Ltd. Systems and methods for pre-equalization and code design for a flash memory
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8305812B2 (en) * 2009-08-26 2012-11-06 Densbits Technologies Ltd. Flash memory module and method for programming a page of flash memory cells
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8677209B2 (en) * 2009-11-19 2014-03-18 Lsi Corporation Subwords coding using different encoding/decoding matrices
US8626988B2 (en) * 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US8359515B2 (en) * 2009-12-02 2013-01-22 Lsi Corporation Forward substitution for error-correction encoding and the like
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8607124B2 (en) * 2009-12-24 2013-12-10 Densbits Technologies Ltd. System and method for setting a flash memory cell read threshold
WO2011092532A1 (en) 2010-01-28 2011-08-04 Sandisk Il Ltd. Sliding-window error correction
US8700970B2 (en) * 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
CN102823141B (zh) * 2010-03-30 2015-09-16 国际商业机器公司 用于固态存储器件的两级bch码
US8527840B2 (en) 2010-04-06 2013-09-03 Densbits Technologies Ltd. System and method for restoring damaged data programmed on a flash device
US9104610B2 (en) 2010-04-06 2015-08-11 Densbits Technologies Ltd. Method, system and medium for analog encryption in a flash memory
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8464142B2 (en) 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
US9021177B2 (en) 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8499226B2 (en) 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8510639B2 (en) 2010-07-01 2013-08-13 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8539311B2 (en) 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
US8504900B2 (en) 2010-07-02 2013-08-06 Lsi Corporation On-line discovery and filtering of trapping sets
US20120008414A1 (en) 2010-07-06 2012-01-12 Michael Katz Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8621289B2 (en) 2010-07-14 2013-12-31 Lsi Corporation Local and global interleaving/de-interleaving on values in an information word
DE102010035210B4 (de) * 2010-08-24 2012-08-30 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8879670B2 (en) * 2010-09-08 2014-11-04 Agence Spatiale Europeenne Flexible channel decoder
US8508995B2 (en) 2010-09-15 2013-08-13 Densbits Technologies Ltd. System and method for adjusting read voltage thresholds in memories
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US9450613B2 (en) * 2010-11-10 2016-09-20 Infineon Technologies Ag Apparatus and method for error correction and error detection
US8539321B2 (en) 2010-11-10 2013-09-17 Infineon Technologies Ag Apparatus and method for correcting at least one bit error within a coded bit sequence
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US10079068B2 (en) 2011-02-23 2018-09-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Devices and method for wear estimation based memory management
US8693258B2 (en) 2011-03-17 2014-04-08 Densbits Technologies Ltd. Obtaining soft information using a hard interface
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US8775218B2 (en) * 2011-05-18 2014-07-08 Rga Reinsurance Company Transforming data for rendering an insurability decision
US8667211B2 (en) 2011-06-01 2014-03-04 Densbits Technologies Ltd. System and method for managing a non-volatile memory
US8874994B2 (en) * 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
CN102323901A (zh) * 2011-07-28 2012-01-18 张岭 一种提高固态存储系统纠错码使用效率的方法
US9270297B2 (en) 2011-07-31 2016-02-23 SanDisk Technologies, Inc. Error-correction decoding with reduced memory and power requirements
US8645810B2 (en) 2011-07-31 2014-02-04 Sandisk Technologies Inc. Fast detection of convergence or divergence in iterative decoding
US8588003B1 (en) 2011-08-01 2013-11-19 Densbits Technologies Ltd. System, method and computer program product for programming and for recovering from a power failure
EP2742429A4 (en) 2011-08-09 2015-03-25 Lsi Corp I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST
US8553468B2 (en) 2011-09-21 2013-10-08 Densbits Technologies Ltd. System and method for managing erase operations in a non-volatile memory
US8862960B2 (en) * 2011-10-10 2014-10-14 Lsi Corporation Systems and methods for parity shared data encoding
US8768990B2 (en) 2011-11-11 2014-07-01 Lsi Corporation Reconfigurable cyclic shifter arrangement
WO2013093669A1 (en) * 2011-12-21 2013-06-27 International Business Machines Corporation Read/write operations in solid-state storage devices
US8645789B2 (en) 2011-12-22 2014-02-04 Sandisk Technologies Inc. Multi-phase ECC encoding using algebraic codes
US8719677B2 (en) 2011-12-22 2014-05-06 Sandisk Technologies Inc. Using ECC encoding to verify an ECC decode operation
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
GB2499424B (en) * 2012-02-16 2016-06-01 Canon Kk Methods for decoding, methods for retrieving, method for encoding, method of transmitting, corresponding devices, information storage means and computer
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8839073B2 (en) * 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
TW201346922A (zh) 2012-05-14 2013-11-16 Toshiba Kk 記憶體控制器、記憶裝置及錯誤修正方法
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
RU2012146685A (ru) 2012-11-01 2014-05-10 ЭлЭсАй Корпорейшн База данных наборов-ловушек для декодера на основе разреженного контроля четности
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
KR101951663B1 (ko) * 2012-12-14 2019-02-25 삼성전자주식회사 Crc 부호와 극 부호에 의한 부호화 방법 및 장치
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9148252B2 (en) * 2013-01-11 2015-09-29 Broadcom Corporation Methods and systems for 2-dimensional forward error correction coding
US9124300B2 (en) 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
US9407290B2 (en) 2013-03-15 2016-08-02 Sandisk Technologies Llc Error-correction decoding with conditional limiting of check-node messages
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US20150074496A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
TWI536749B (zh) * 2013-12-09 2016-06-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置與記憶體控制電路單元
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9641285B2 (en) 2014-03-06 2017-05-02 Samsung Electronics Co., Ltd. Ultra low power (ULP) decoder and decoding processing
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9614547B2 (en) 2014-06-30 2017-04-04 Sandisk Technologies Llc Multi-stage decoder
US10089177B2 (en) 2014-06-30 2018-10-02 Sandisk Technologies Llc Multi-stage decoder
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
KR102254102B1 (ko) * 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
KR102305095B1 (ko) 2015-04-13 2021-09-24 삼성전자주식회사 비휘발성 메모리 컨트롤러의 동작 방법
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US10033407B2 (en) 2016-04-08 2018-07-24 SK Hynix Inc. Optimization of low density parity-check code encoder based on a search for an independent set of nodes
DE102016107285B4 (de) * 2016-04-20 2019-04-25 Infineon Technologies Ag Verfahren zur verwendung einer speichervorrichtung, speichervorrichtung und speichervorrichtungsanordnung
US10423500B2 (en) 2016-06-01 2019-09-24 Seagate Technology Llc Technologies for limiting performance variation in a storage device
US9942005B2 (en) * 2016-08-30 2018-04-10 International Business Machines Corporation Sequence detector
US10243591B2 (en) 2016-08-30 2019-03-26 International Business Machines Corporation Sequence detectors
US10025661B1 (en) 2016-12-27 2018-07-17 Sandisk Technologies Llc Adaptive hard and soft bit decoding
US10855314B2 (en) 2018-02-09 2020-12-01 Micron Technology, Inc. Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
US11146363B2 (en) * 2018-04-13 2021-10-12 Huawei Technologies Co., Ltd. Systems and methods for HARQ retransmission using an outer code
US10606697B2 (en) * 2018-06-21 2020-03-31 Goke Us Research Laboratory Method and apparatus for improved data recovery in data storage systems
KR102678314B1 (ko) * 2018-08-03 2024-06-25 삼성전자주식회사 유저 데이터에 대한 에러 정정을 수행하는 에러 정정 회로 및 이를이용한 에러 정정 방법
TWI742371B (zh) * 2019-05-13 2021-10-11 義守大學 應用單項跡之錯誤更正方法
CN112152751B (zh) * 2019-06-27 2023-09-29 义守大学 单项迹的计算方法及应用单项迹的错误纠正方法
US11405057B2 (en) * 2019-10-28 2022-08-02 Huawei Technologies Co., Ltd. System and method for hybrid-ARQ
KR20220054096A (ko) 2020-10-23 2022-05-02 삼성전자주식회사 패리티를 저장하는 메모리 장치 및 이를 포함하는 메모리 시스템
US11481271B2 (en) 2021-03-16 2022-10-25 Western Digital Technologies, Inc. Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support
US11967342B2 (en) * 2022-09-14 2024-04-23 International Business Machines Corporation Header decoding mechanism for tape storage

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3546582A (en) * 1968-01-15 1970-12-08 Ibm Computer controlled test system for performing functional tests on monolithic devices
US4633470A (en) * 1983-09-27 1986-12-30 Cyclotomics, Inc. Error correction for algebraic block codes
US4736376A (en) * 1985-10-25 1988-04-05 Sequoia Systems, Inc. Self-checking error correcting encoder/decoder
EP0850473B1 (en) * 1996-06-13 2002-11-27 Koninklijke Philips Electronics N.V. A method and apparatus for trackwise burst error correction in a multitrack storage format
US6088387A (en) * 1997-12-31 2000-07-11 At&T Corp. Multi-channel parallel/serial concatenated convolutional codes and trellis coded modulation encoder/decoder
US6430722B1 (en) * 1998-01-23 2002-08-06 Hughes Electronics Corporation Forward error correction scheme for data channels using universal turbo codes
CN1509093A (zh) * 1998-08-06 2004-06-30 ���ǵ�����ʽ���� 通信系统中的信道编码/解码
US7356752B2 (en) * 2000-03-14 2008-04-08 Comtech Telecommunications Corp. Enhanced turbo product codes
US6526531B1 (en) * 2000-03-22 2003-02-25 Agere Systems Inc. Threshold detection for early termination of iterative decoding
US6721373B1 (en) * 2000-03-29 2004-04-13 Tioga Technologies Ltd. Multi-tone receiver and a method for operating the same
US6516035B1 (en) * 2000-04-07 2003-02-04 Actisys Corporation Intelligent encoding method for wireless data communication and control
US6865708B2 (en) * 2000-08-23 2005-03-08 Wang Xiao-An Hybrid early-termination methods and output selection procedure for iterative turbo decoders
US7093179B2 (en) * 2001-03-22 2006-08-15 University Of Florida Method and coding means for error-correction utilizing concatenated parity and turbo codes
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
AU2003298998A1 (en) * 2002-09-05 2004-04-08 Nanosys, Inc. Oriented nanostructures and methods of preparing
US7162684B2 (en) * 2003-01-27 2007-01-09 Texas Instruments Incorporated Efficient encoder for low-density-parity-check codes
US7430396B2 (en) * 2003-07-03 2008-09-30 The Directv Group, Inc. Encoding low density parity check (LDPC) codes through an LDPC decoder
US7318187B2 (en) * 2003-08-21 2008-01-08 Qualcomm Incorporated Outer coding methods for broadcast/multicast content and related apparatus
US7234098B2 (en) * 2003-10-27 2007-06-19 The Directv Group, Inc. Method and apparatus for providing reduced memory low density parity check (LDPC) codes
US7376883B2 (en) * 2003-10-27 2008-05-20 The Directv Group, Inc. Method and system for providing long and short block length low density parity check (LDPC) codes
US7546510B2 (en) * 2003-12-30 2009-06-09 Sandisk Il Ltd. Compact high-speed single-bit error-correction circuit
US20050193320A1 (en) * 2004-02-09 2005-09-01 President And Fellows Of Harvard College Methods and apparatus for improving performance of information coding schemes
US7441175B2 (en) * 2004-03-12 2008-10-21 Seagate Technology Llc Turbo product code implementation and decoding termination method and apparatus
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
CN1798012A (zh) * 2004-12-30 2006-07-05 松下电器产业株式会社 基于低密度奇偶校验码的校验式可信度的纠错方法
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US8086940B2 (en) * 2008-04-28 2011-12-27 Newport Media, Inc. Iterative decoding between turbo and RS decoders for improving bit error rate and packet error rate

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Nikolai Nefedov, Jari Salo.Performance of Low Complexity Concatenated Codes Formed by Differential Encoders.《proceeding of the international conference on telecommunication是2002》.2002,第1卷151-155. *

Also Published As

Publication number Publication date
US8086931B2 (en) 2011-12-27
US7844877B2 (en) 2010-11-30
KR20110014667A (ko) 2011-02-11
US8375272B2 (en) 2013-02-12
WO2007057885A3 (en) 2009-09-03
EP1949580A2 (en) 2008-07-30
EP1949580B1 (en) 2012-01-04
KR101275041B1 (ko) 2013-06-14
KR20080084970A (ko) 2008-09-22
JP2010509790A (ja) 2010-03-25
EP1949580A4 (en) 2010-03-31
JP5216593B2 (ja) 2013-06-19
CN103023514B (zh) 2016-12-21
US20100169737A1 (en) 2010-07-01
KR101135425B1 (ko) 2012-04-23
US20110276856A1 (en) 2011-11-10
US20070124652A1 (en) 2007-05-31
WO2007057885A2 (en) 2007-05-24
CN101611549A (zh) 2009-12-23
ATE540480T1 (de) 2012-01-15
CN103023514A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN101611549B (zh) 用于多个阶段错误校正的方法和设备
US8832518B2 (en) Method and device for multi phase error-correction
Ryan et al. Channel codes: classical and modern
CN101814975B (zh) 多级解码器和符号块解码方法
US11115051B2 (en) Systems and methods for decoding error correcting codes
WO2008021045A2 (en) System and method for correcting errors in non-volatile memory using product codes
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
WO2008087042A1 (en) Multiple-bases belief-propagation and permutation decoding for block codes
WO2011085605A1 (zh) 一种级联码的译码方法及装置
Kim et al. Symmetric block-wise concatenated BCH codes for NAND flash memories
US8631307B2 (en) Method for encoding and/or decoding multimensional and a system comprising such method
JP5543170B2 (ja) バイナリデータの誤り訂正及び誤り検出の方法
Tan et al. A general and optimal framework to achieve the entire rate region for Slepian–Wolf coding
Shin et al. New decoding scheme for LDPC codes based on simple product code structure
Xue et al. Concatenated Synchronization Error Correcting Code with Designed Markers
Han et al. Packet-LDPC codes for tape drives
Hosoya et al. Performance of Non-Binary LDPC Codes on Two-Dimensional Array Erasure Models
Sharath et al. Error Locked Encoder and Decoder for Nanomemory Application
HALIM Contributions to the decoding of linear codes over Z4
RajaSekhar et al. Implementation of Fault Secure Encoder and Decoder for Memory Application
Lee et al. Boolean functions over nano-fabrics: Improving resilience through coding
Vallés et al. Hamming codes are rate-efficient array codes
Soleymani et al. Low Density Parity Check Codes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121128

Termination date: 20161113