CN102835032B - 用于循环行列式大小非整数倍的准循环ldpc编码和解码 - Google Patents

用于循环行列式大小非整数倍的准循环ldpc编码和解码 Download PDF

Info

Publication number
CN102835032B
CN102835032B CN201180007873.XA CN201180007873A CN102835032B CN 102835032 B CN102835032 B CN 102835032B CN 201180007873 A CN201180007873 A CN 201180007873A CN 102835032 B CN102835032 B CN 102835032B
Authority
CN
China
Prior art keywords
data
padding data
judgement
reliability information
padding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180007873.XA
Other languages
English (en)
Other versions
CN102835032A (zh
Inventor
曾令琪
寇宇
吴建文
杨国华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SK Hynix Memory Solutions America Inc
Original Assignee
SK Hynix Memory Solutions America Inc
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 SK Hynix Memory Solutions America Inc filed Critical SK Hynix Memory Solutions America Inc
Publication of CN102835032A publication Critical patent/CN102835032A/zh
Application granted granted Critical
Publication of CN102835032B publication Critical patent/CN102835032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3994Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using state pinning or decision forcing, i.e. the decoded sequence is forced through a particular trellis state or a particular set of trellis states or a particular decoded symbol

Landscapes

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

Abstract

在处理准循环低密度奇偶校验(QC-LDPC)数据中,接收输入信号,所述输入信号包括与未填充数据对应的判决和可靠性信息。向输入信号中引入与填充数据对应的判决和可靠性信息。一次或者多次执行消息传递以获得解码数据。这包括通过使用(1)与未填充数据对应的判决和可靠性信息以及(2)与填充数据对应的判决和可靠性信息,其中在消息传递期间较与填充数据对应的判决和可靠性信息而言向与填充数据对应的判决和可靠性信息给予优先。从解码数据去除零填充。

Description

用于循环行列式大小非整数倍的准循环LDPC编码和解码
其它申请的交叉引用
本申请是出于所有目的而通过引用结合于此、2010年12月16日提交、标题为MULTISTAGELDPCENCODING的第12/970,731号(代理案号LINKP052)共同未决美国专利申请的部分继续申请,该美国专利申请要求对出于所有目的而通过引用结合于此、于2010年2月1日提交、标题为EFFICIENTENCODINGOFAGENERALLDPCCODE的第61/337,287号(代理案号LINKP052+)美国临时专利申请的优先权;本申请也要求对出于所有目的而通过引用结合于此、2010年3月4日提交、标题为QUASI-CYCLICLOW-DENSITY-PARTY-CHECKCODESENCODING的第61/339,564号(代理案号LINKP058+)美国临时专利申请以及对出于所有目的而通过引用结合于此、2010年5月3日提交、标题为LDPCENCODERANDDECODER的第61/330,627号(代理案号LINKP062+)美国临时专利申请的优先权。
背景技术
准循环低密度奇偶校验(QC-LDPC)代码是特殊类型的LDPC代码。QC-LDPC代码(与非QC-LDPC代码做对比)具有可以分解成构建块(称为循环行列式)的奇偶校验矩阵。使用QC-LDPC代码的编码器预计输入数据具有如下长度,该长度是循环行列式大小的整数倍。如果可以开发允许其它数据长度的新技术则将合乎需要。在一些实施例中,编码器包括多级编码器,其中奇偶校验矩阵或者生成矩阵分解成子矩阵并且多级编码器的各级使用相应子矩阵。如果允许如下数据长度的新技术也与多级编码技术一起工作则将进一步合乎需要,这些数据长度不是循环行列式大小的整数倍。
附图说明
在下文具体描述和附图中公开本发明的各种实施例。
图1是示出了配置成使用低密度奇偶校验(LDPC)代码来编码和存储数据的系统的实施例的图。
图2是图示了QC-LDPC奇偶校验矩阵和如下循环行列式的实施例的图,根据该循环行列式可以(重新)生成关联QC-LDPC奇偶校验。
图3是示出了两级QC-LDPC编码器的实施例的图。
图4是示出了在使用QC-LDPC代码来编码期间执行的矩阵乘法的一些实施例的图。
图5是图示了能够处理具有如下长度的数据的QC-LDPC编码过程的实施例的流程图,该长度不是循环行列式大小的整数倍。
图6是示出了使用填充表以交换与填充有关的信息的读取控制器和写入控制器的实施例的图。
图7是图示了如下LDPC解码过程的实施例的流程图,在该LDPC解码过程中较与未填充数据关联的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。
图8A是示出了QC-LDPC奇偶校验矩阵和校验节点更新的实施例的图,其中较用于未填充数据的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。
图8B是示出了变量节点更新的实施例的图,其中较用于未填充数据的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。
图9是示出了QC-LDPC奇偶校验矩阵的实施例的图。
图10是示出了QC-LDPC生成矩阵的实施例的图。
具体实施方式
本发明可以用诸多方式实施,包括实施为过程;装置;系统;物质组成;在计算机可读存储介质上具体化的计算机程序产品;和/或处理器,比如配置成执行在耦合到处理器的存储器上存储和/或由该存储器提供的指令的处理器。在本说明书中,这些实施方式或者本发明可以采用的任何其它形式可以称为技术。一般而言,可以在本发明的范围内变更公开的过程的步骤顺序。除非另有明示,描述为配置成执行任务的部件(比如处理器或者存储器)可以实施为暂时配置成在给定时间执行任务的一般部件或者制造成执行任务的具体部件。如这里所用,术语‘处理器’指代配置成处理数据(比如计算机程序指令)的一个或者多个设备、电路和/或处理芯。
下文与图示本发明原理的附图一起提供本发明一个或者多个实施例的具体描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,并且本发明涵盖诸多替选、修改和等效物。在下文描述中阐述诸多具体细节以便提供本发明的透彻理解。出于例子的目的而提供这些细节,并且在没有这些具体细节中的一些或者所有具体细节的情况下可以根据权利要求实现本发明。出于清楚目的,尚未具体描述与本发明有关的技术领域中已知的技术材料,从而未不必要地模糊本发明。
图1是示出了配置成使用低密度奇偶校验(LDPC)代码来编码和存储数据的系统的实施例的图。在所示例子中,LDPC编码器100接收数据输入并且包括希望存储的数据。LDPC编码数据由LDPC编码器100输出并且写入到储存器102。
在各种实施例中,储存器102包括多种储存器类型或者介质,比如(例如磁)盘驱动储存器、闪存储存器等。在一些实施例中,在收发器中运用技术,并且通过信道(例如有线或者无线)传输和接收数据而不是向储存器写入或者从储存器读取数据。
当(例如由存储数据的应用或者用户)请求或者以别的方式需要存储的数据时,软输出检测器103访问储存器102并且取回包括一些噪声或者错误的读取数据。软输出检测器102对读取数据执行解码并且输出判决和可靠性信息。例如软输出检测器103可以是软输出Viterbi解码器。硬解码器(解码器103不是硬解码器)是输出判决而未提供对应可靠性信息的解码器。例如,硬解码器可以输出特定位是“1”或者“0”的判决而未指示解码器对该判决有多么确定或者确信。对照而言,软输出解码器输出判决和与判决关联的可靠性信息。可靠性值(一般而言)指示解码器对给定判决有多么确定。在一个例子中,软输出解码器输出对数似然比(LLR),其中符号指示判决(例如正值对应于“1”判决而负值对应于“0”判决)并且量值指示检测器对该判决有多么确信或者确定(例如,大量值指示高可靠性或者确定性)。
向LDPC解码器104传递判决和可靠性信息,该LDPC解码器104使用判决和可靠性信息来执行LDPC解码。LDPC解码器104生成的数据被传递到适当实体(例如,请求该数据的用户或者应用)。利用恰当的编码和解码,数据输入与数据输出匹配。
在各种实施例中,使用多种技术(包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如高级RISC机器(ARM)芯))来实施所示系统。
在LDPC代码(准循环(QC)和非QC二者)中,代码由奇偶校验矩阵(H)定义或者以别的方式表征;对于所有LDPC代码,H是大小为m×n(即m行和n列)的矩阵。QC-LPDC代码的一个性质是它们具有相对可重复或者重复的结构,该结构使它们有吸引力,因为更少数量的储存器可以用来存储矩阵。具体而言,QC-LDPC奇偶校验矩阵(HQC-LDPC)具有称为循环行列式的如下构建块,根据该构建块可以(重新)生成QC-LDPC奇偶校验矩阵。下文更具体描述循环行列式和QC-LDPC奇偶校验矩阵的例子。
根据QC-LDPC奇偶校验矩阵可以生成QC-LDPC生成矩阵(GQC-LDPC)。生成矩阵(用于QC和非QC代码二者)用来根据输入数据生成LDPC编码数据。例如,如果将输入数据表示为u(1×(n-m)矩阵)而将编码写入数据表示为c(1×n矩阵),则c=u*G,其中“*”是矩阵乘法。在一些情况下,生成矩阵(G)被操纵成有特殊形式(即系统矩阵),其中G=[IP]并且I是单位矩阵而P是奇偶生成矩阵。在系统形式中,编码数据(c)包括以其原有形式的输入数据(u)。在一个例子中,编码数据可以是跟随有奇偶位的输入数据(u)。奇偶数据(p)可以根据u*p来获得并且在与输入数据组合(例如通过追加或者级联)时生成代码字(即编码数据)。
图2是图示了QC-LDPC奇偶校验矩阵和如下循环行列式的实施例的图,根据该循环行列式可以(重新)生成关联QC-LDPC奇偶校验。在所示例子中,QC-LDPC奇偶校验矩阵(HQC-LDPC)是m×n矩阵,其中m和n二者是两个整数(即在m的情况下为c和b而在t的情况下为t和b)的乘积。QC-LDPC奇偶校验矩阵200包括多个循环行列式Ai,j。循环行列式是具有维度b×b的方阵,其中每个行矢量或者列矢量是在它之前的行矢量或者列矢量的(例如向上或者向左)循环移位。维度b是循环行列式大小。循环行列式202示出了用于A0,0的例子循环行列式。在这一例子中,b=4并且在循环行列式202中的每个行矢量是向右循环移位一个位置的先前行矢量的副本,其中在末尾的值向开头卷绕。存储与一个或者多个循环行列式关联的信息,并且使用存储的信息可以完全重新生成QC-LPDC奇偶校验矩阵200。下文更具体描述存储什么与循环行列式有关的信息的一些例子。
在一些实施例中,在多级(例如与单遍或者单级做对比)中执行QC-LDPC编码。下图描述一个这样的实施例。
图3是示出了两级QC-LDPC编码器的实施例的图。在所示例子中,将QC-LDPC奇偶校验矩阵HQC-LDPC(未示出)分解成两个子矩阵:m×(n-m)子矩阵Hi和m×m子矩阵Hp。子矩阵Hp的逆(inversion)具有相同大小m×m并且是相对高密度矩阵(例如在一个例子中,1与0之比粗略地为1:1),由Hp -1表示;子矩阵Hi具有相对低密度(例如多数为0而相对少数1)。Hp是低密度矩阵而Hp的逆(即Hp -1)为高密度。两个子矩阵的大小根据m和n的值变化;在具有用于m和n的示例和/或典型值(即m<<n)的一些情况下,子矩阵Hp及其逆Hp -1的大小与子矩阵Hi的大小相比小得多。在一些实施例中,如在这一幅图中所示的那样实施图1中所示的QC-LDPC编码器100。
低密度子矩阵Hi和高密度矩阵Hp -1分别传递到第一QC-LDPC编码级(300)和第二QC-LDPC编码级(304)并且由它们使用。第一编码级(300)执行运算u*Hi T,其中u是输入数据的1×(n-m)矩阵。Hi T是(n-m)×m矩阵,因而矩阵乘法产生形式为1×m矩阵的中间数据(t)。
中间数据传递到中间缓冲器302,在该中间缓冲器存储中间数据。例如第二编码级304可能忙于(例如与更早输入数据关联的)其它中间数据,并且当第二编码级304空闲时,从中间缓冲器302取回存储的中间数据。在一些实施例中,中间缓冲器302包括关断的2个“往复交换”缓冲器或者存储器。例如在用于第一(例如更晚到达)组输入数据的中间数据由第一编码级300生成并且写入到第一缓冲器之时,与第二(例如更早到达)组输入数据关联的中间数据从第二缓冲器传递到第二编码级(304)。一旦第一缓冲器充满而第二缓冲器已经腾空,两个缓冲器就关断(即第一缓冲器将它的中间数据卸载到第二编码级而第二缓冲器从第一编码级接收与第三(例如甚至更晚到达)组输入数据关联的中间数据)。在一些实施例中,缓冲器302包括一个或者多个FIFO,从而第一编码级300和第二编码级304无需在加载或者卸载中间数据(t)时处理存储器地址。
第二编码级304执行运算t*(Hp -1)T,该运算产生形式为1×m矩阵的奇偶数据。通过组合奇偶数据与输入数据(例如通过级联,因而编码数据包括如下输入数据,该输入数据具有在它之后附着的奇偶数据),可以产生系统形式的QC-LDPC编码数据。
图4是示出了在使用QC-LDPC代码来编码期间执行的矩阵乘法的一些实施例的图。在所示例子中,图400示出了如何使用单级QC-LDPC编码器来生成编码数据(c)。在该例子中,通过执行用户数据(u)与生成矩阵(GQC-LDPC)的矩阵乘法来生成编码数据。在矩阵维度方面,这对应于通过将1×(n-m)矩阵乘以(n-m)×n矩阵而产生的1×n矩阵。在循环行列式大小(也就是b)方面,通过将1×(tb-cb)矩阵乘以(tb-cb)×tb来生成1×tb矩阵。
图402示出了与多级QC-LDPC编码器的第一级关联的矩阵乘法(例如图3中的第一编码级300执行的矩阵乘法)。在这一例子中,通过将用户数据(u)乘以第一级矩阵的转置(Hi T)来产生中间数据(t)。这对应于通过将1×(n-m)矩阵乘以(n-m)×m矩阵而生成的1×m矩阵;当以b、c和t为单位来表达时,这对应于通过将1×(tb-cb)矩阵乘以(tb-cb)×cb矩阵而生成的1×cb矩阵。
根据矩阵乘法规则,乘数(即用户数据)的第二维度必须在400和402二者中与被乘数的第一维度匹配。因而,用于单级QC-LDPC编码和多级QC-LDPC编码二者的用户数据必须具有是b的整数倍的长度(例如因为由于t和b均为整数,所以t-b也是整数因此tb-cb也是b的整数倍)。将希望能够处理未必满足这一约束的数据。例如一些系统可能用单个代码来“硬编码”并且将希望支持如下用户数据长度,这些用户数据长度不是循环行列式大小的整数倍。在另一例子中,系统存储多组奇偶校验矩阵和生成矩阵对(或者如下与循环行列式有关的信息,根据该信息可以重新生成矩阵对)并且将所选矩阵对加载到存储器中以供能够支持多个代码的编码器和解码器使用。在这样的实施例中,可能希望处理具有如下长度的用户数据而无需卸载矩阵对和重载矩阵对(例如加载和卸载可能耗费时间),该长度不是循环行列式大小的整数倍。这里描述的是一种实现对具有如下长度的数据进行编码的技术,该长度是循环行列式大小的整数倍。在一些实施例中,在单级QC-LDPC编码器中使用该技术;在其它实施例中,在多级QC-LDPC编码器中使用该技术。
图5是图示了能够处理具有如下长度的数据的QC-LDPC编码过程的实施例的流程图,该长度不是循环行列式大小的整数倍。在各种实施例中,图1中的QC-LDPC编码器100和/或图3中的第一QC-LDPC编码级300执行所示过程。在一些实施例中,一些更高级实体(例如驱动器或者应用)向写入控制器600传递具有可变长度的用户数据。也就是,一条用户数据可以具有一个长度,而下一条用户数据的长度可以未必具有相同长度。在一些实施例中,更高级实体传递在长度上从一条用户数据到另一条用户数据一致(例如至少持续某一时间段直至改变配置或者设置)的用户数据。
在500确定用户数据的长度是否为循环行列式大小的整数倍。如果是这样,则在502使用用户数据来生成LDPC编码数据。例如参见图4中所示的矩阵乘法。由于长度已经是循环行列式大小的整数倍,所以未执行填充。
否则,在504对用户数据进行零填充,从而具有填充的长度是循环行列式大小的整数倍。在一些实施例中已经加载QC-LDPC奇偶校验矩阵(HQC-LDPC)和/或QC-LDPC生成矩阵(HQC-LDPC)并且在504执行填充,从而填充长度与加载矩阵的维度匹配(例如从而填充数据具有长度tb-cb)。在一些实施例中,向用户数据的开头添加零填充(例如如果循环行列式大小为4位并且未填充数据的长度为9,则向数据填充已知值的3个附加位以产生[000u])。在各种其它实施例中,零填充散布于用户数据、在用户数据之后追加等。例如在先前例子中,3个用户位可以跟随有1个填充位、然后为另外3个用户位和另一填充位并且以此类推。
在506使用填充数据来生成LDPC编码数据。在各种实施例中,步骤506包括单级QC-LDPC编码或者多级QC-LDPC编码。无论使用哪种技术,都产生如下编码数据,该编码数据包含由零填充所产生的零。为了使用上面例子(其中在用户数据的开头添加3个零填充),步骤506的结果是[000c]或者替选地为系统形式,其中在编码数据[000up]中包括用户数据,其中p是奇偶数据。
在508从LDPC编码数据去除零。例如[000c]变成[c]或者[000up]变成[up]。在一些应用中,希望在用户数据的开头或者末尾插入零填充,从而更容易实现在508去除零和/或简化编码器设计。
在508去除零在一些应用中是可接受的并且甚至合乎需要。例如在储存器应用中,储存器容量尤为令人感兴趣,并且在写入到储存器之前去除零填充合乎需要,因为提高储存器容量。类似地,在一些无线应用中,通过空中传输数据成本高(例如在功率消耗方面或者由于仅一个分组可以在任何给定时间占用信道),并且去除零填充可以减少通过空中发送的分组的长度。
图6是示出了使用填充表以交换与填充有关的信息的读取控制器和写入控制器的实施例的图。在所示例子中,写入控制器600接收如下数据输入,该数据输入中的一些或者所有数据输入具有如下长度,这些长度不是循环行列式大小b的整数倍。LDPC编码器602被配置成如需要的那样/如果需要则填充数据输入从而填充数据的长度是循环行列式大小的整数倍、然后对填充数据执行LDPC编码。
写入控制器600将填充信息写入到读取控制器610在处理期间使用的填充表604。在一些实施例中,读取控制器610执行的处理根据特定扇区是否由写入控制器填充而变化;读取控制器610可以使用填充信息以确定什么处理适合于给定扇区。使用填充表604在控制器600与610之间交换的信息的一些例子包括:包括填充数据的那些扇区在储存器606上的位置(例如物理地址或者关于某一参考的偏移),填充信息位于何处(例如填充信息是否与数据输入一起混合输入、零填充是否在开头/末尾聚在一起)等。
LDPC解码器608使用604中存储的信息以确定适当处理并且对向它传递的判决和可靠性信息执行该处理。下图描述LDPC解码器608如何在解码处理期间使用填充表604中存储的填充信息的实施例。
图7是图示了如下LDPC解码过程的实施例的流程图,在该LDPC解码过程中较与未填充数据关联的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。在一些实施例中,图6中的LDPC解码器608执行下文描述的步骤中的一些或者所有步骤。
在700确定是否已经填充正被处理的数据。例如数据可能已经存储于盘上的特定扇区或者位置并且图6中的填充表604中存储的信息向LDPC解码器608指示该条数据是否与填充数据关联。注意填充数据未存储于用于那些扇区或者位置的存储器中,但是为了对那些扇区或者位置恰当解码,解码器需要知道填充由写入控制器执行。如果在700确定无填充(例如基于填充表中的存储信息),则在702使用判决和可靠性信息来执行消息传递。例如使用由图6中的软输出检测器607生成的判决和可靠性信息(并且仅使用该信息)。消息传递过程的一些例子包括求和乘积算法(SPA)、最小值求和、缩放最小值求和以及偏移最小值求和。在消息传递迭代之后,在703确定解码是否成功。例如可以校验校正子(syndrome)并且如果所有校正子为零则断言解码成功。如果解码未成功,则在702执行另一消息传递迭代(例如用来自先前消息传递迭代的更新值)。在一些实施例中,如果达到最大迭代次数,则断言解码失败。
否则,如果在700确定已经填充正被处理的数据,则在704向数据信号中引入与填充数据对应的判决和可靠性信息。例如,如果图5中的步骤508是[000c]->[c]或者[000up]->[up],则用于对应扇区或者储存器位置的步骤704是[r]->[000r],其中r是从软输出检测器接收的判决和可靠性信息。回顾图6中所示的实施例,填充数据实际上未存储于储存器606中,因而将没有LDPC解码器608针对填充数据从软输出检测器607接收的判决或者可靠性信息。多种硬件部件可以用来在704引入判决和可靠性信息,比如某一类如下信号注入器(例如复用器),该注入器输入来自软输出检测器的判决和可靠性信息(例如对应于在储存器中存储的或者通过传输信道传输的未填充数据)并且向该信号中引入用于(未存储或者传输的)填充数据的判决和可靠性信息。在一些实施例中,步骤704将与填充数据对应的判决设置成0(例如由于在对应编码器实施例中使用零填充)。在一些实施例中,将可靠性设置成最高值(例如在LLR的情况下设置成最大量值)。
在706使用用于未填充数据和填充数据的判决和可靠性信息来执行消息传递,包括通过在消息传递期间较与未填充数据关联的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。在各种实施例中,这是以多种方式执行的。一般而言,思想在于已知填充数据,从而判决和/或可靠性信息应当比与未填充数据关联的该信息有利、优先或者以别的方式占优势。例如在通信应用中,传输信道可能有损或者有噪声,或者在储存器应用中,读取头可能从相邻轨道接收信号信息。这可能使软输出检测器(例如图6中的607)针对存储或者传输的未填充数据输出不正确判决和/或不准确可靠性测量。不正确判决和不准确可靠性可能又以负面方式在消息传递期间影响填充位的判决和可靠性。通过基于已知信息给予或者以别的方式强制优先,可以去除对填充位的负面影响并且可以提高关联到未填充位的消息的质量。如何在706给予优先的特定实施方式可以依赖于所用的具体消息传递过程(例如由于不同消息传递过程具有用于信息如何交换、组合、选择等的不同规则)。可以通过以下方式实施用于实施如何较用于未填充数据的判决和/或可靠性信息而言向与填充数据关联的判决和/或可靠性信息给予优先的一些技术:1)将向消息传递过程输入的值设置成强制优先的值(例如在步骤704将可靠性值设置成最大可靠性或者确定性)和/或2)修改用于消息传递过程的规则以有利于与填充位关联的判决和可靠性信息(例如通过将在连接上传输的消息固定成某个值和/或(至少暂时)改变在多个校验节点(C-节点)与多个变量节点(V-节点)之间的网络连接(例如通过至少暂时擦除或者忽略在变量节点与校验节点之间的一个或者多个连接))。
在706执行以与填充数据关联的判决和可靠性信息为优先的消息传递之后,在708确定解码是否成功。例如可以校验多个校正子并且如果它们都为零则断言解码成功。如果在708未确定解码成功,则在706执行以与填充数据关联的判决和可靠性信息为优先的另一消息传递迭代。否则,在710从LDPC解码数据去除零填充。例如[000c](或者替选地为[000up])在步骤710之后数据将是[c](或者替选地为[up])。在一些实施例中,在解码数据是以系统形式(即[up])的情况下,也去除奇偶p,从而获得原有用户数据u(例如[up]->[u])。在硬件中,可以在步骤710中使用滤波器(例如该滤波器从信号、流或者序列去除某些位或者数据)。
下文举例说明如下消息传递算法,其中没有较另一位类型而言向一个位类型的判决和可靠性信息给予优先(例如,填充位较未填充位的优先)。在一些实施例中,以下消息传递用于未填充位(但是未必用于填充位):
1)C-节点更新:m(ci到vj)=函数C({m(vk到ci),所有k,从而vk连接到ci并且k!=j})。
这里函数C(下文简写为fc)由运用的特定消息传递算法确定;可以使用多种消息传递算法。例如,如果消息传递算法(fc)是最小函数,则fc(A)将选择集合A的最小值。
2)V-节点更新:m(vj到ci)=fv({Lj并且m(ck到vj),所有k,从而ck连接到vj并且k!=i})。
在多数消息算法中,fv是求和函数,从而fv({A})是集合A中的所有元素的求和。
3)校正子校验:计算LOj=fv({Lj并且m(ck到vj),所有k,从而ck连接到vj})。
在这一例子中,通过切分LOj并且计算校正子来做出硬判决。如果并非所有校正子为零,则回到C-节点更新。
如上文描述的那样,除了设置用于填充位的Li将为已知判决和某一(例如最高)可靠性之外,未执行对上述过程(例如用于向与填充位关联的判决和可靠性信息给予优先)的修改。例如,如果填充位i是0,则Li=Lmax,其中Lmax是最大正LLR。
对于其中(例如对上述示例未修改的消息传递算法)执行修改的那些情形,一个这样的实施例是保持C-节点更新不变而修改V-节点更新和校正子校验。例如:
2A)V-节点更新:对于所有i,m(vj到ci)=Lmax,从而ci连接到vj
3A)校正子校验:LOj=Lmax。通过切分LOj并且计算校正子来做出硬判决。如果它们并非都为零,则回到C-节点更新。
另一实施例是保持V-节点更新不变而修改C-节点更新和校正子校验。例如:
1B)C-节点更新:m(ci到vj)=fc({m(vk到ci),所有k,从而vk连接到ci并且k!=j并且vk不是填充位})。
3B)校正子校验:LOj=Lmax。通过切分LOj并且计算校正子来做出硬判决。如果它们并非都为零,则回到C-节点更新。
图8A是示出了QC-LDPC奇偶校验矩阵和校验节点更新的实施例的图,其中较用于未填充数据的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。在所示例子中,t=3,b=2并且c=2,从而QC-LDPC奇偶校验矩阵800具有6个列矢量(n=(t=3)×(b=2)=6)和4个行矢量(m=(c=2)×(b=2)=4)。
消息传递使用连接的变量节点和校验节点的网络。在变量节点与校验节点之间的连接由对应奇偶校验矩阵的值描述并且对应于这些值。网络802示出了与QC-LDPC奇偶校验矩阵800对应的网络。网络802中的变量节点对应于矩阵800中的列矢量,而网络802中的校验节点对应于矩阵800的行矢量。在节点之间的互连由矩阵800的值确定,其中1指示对应校验节点和变量节点具有连接而0指示无连接。例如矩阵800中的最左列矢量和从顶部起的第二行矢量中的1对应于在变量节点804与校验节点810之间的连接。
在这一例子中,原有用户数据包含5位,并且由于5是循环行列式大小(在这一例子中b=2)的非整数倍,所以添加单个零填充位。网络802示出了如下初始迭代,其中对于与未填充数据对应的那些变量节点(在这一例子中为变量节点V1至V5),从软输出检测器接收的LLR值(或者更一般而言为判决和可靠性信息)传递到对应变量节点或者与对应变量节点关联。对于与填充位对应的那些变量节点(在这一例子中为变量节点V0),LLR值(例如由信号注入器引入)(其是已知判决和最大可靠性)传递到或者分配到对应变量节点。
在校验节点更新期间,更新校验节点的值。在这一例子中,通过以下方式实施或者实行针对与填充位关联的判决和可靠性信息的优先:1)如果运用最小求和解码算法或者它的变体则至少暂时忽略来自填充位的连接或者2)针对在来自填充位的连接之上的消息将它们设置成已知判决和最大可靠性。为了更新校验节点C1(810)的值,至少暂时忽略在变量节点804与校验节点810之间的连接。这在网络802中由在那些节点之间的虚线指示。由于忽略(至少暂时)那些连接,所以针对上文提到的情况1)仅使用填充位的LLR来更新校验节点810的值。在一些情况下,没有到与填充位关联的变量节点的连接并且未向一个连接或者数据值给予较另一连接或者数据值而言的优先(即由于该集合或者组中的判决和可靠性信息都与未填充数据关联,所以将它们都同样对待而无针对一个较其它而言的任何优先)。例如校验节点C3未连接到与填充位关联的变量节点并且如特定消息传递技术规定的那样对待与变量节点V1、V3和V5的连接和来自这些变量节点的数据(例如将它们同样加权或者对待)。
图8B是示出了变量节点更新的实施例的图,其中较用于未填充数据的判决和可靠性信息而言向与填充数据关联的判决和可靠性信息给予优先。在所示例子中,变量节点804与填充位关联。为了向与填充数据关联的判决和可靠性信息给予优先,保持这一例子中的变量节点804的值恒定(例如保持为用于由信号注入器插入(与使用与校验节点822、810或者824关联的值来更新做对比)的填充位的LLR)。对照而言,使用与奇偶校验矩阵(例如图8A中的800)的值对应的网络连接来更新与未填充位关联的变量节点(在这一例子中为变量节点V1至V5)。
存储生成矩阵和/或奇偶校验矩阵
一些系统被配置成存储生成矩阵和/或奇偶校验矩阵。例如系统可以存储多个矩阵对,每个矩阵对与不同数据速率、不同纠错能力等关联。用户或者驱动器可以配置系统以加载指定的矩阵对并且使用加载的矩阵对来编码/解码信息。这样的系统可以比具有单个硬编码矩阵对的系统更有吸引力,因为它赋予操作的灵活性和/或多个模式。在另一例子中,系统起初“空白”并且用户或者驱动器向系统中加载矩阵对,该矩阵对存储于该系统。例如一些终端用户可能宁愿使用具体LDPC代码和/或不让其他人(包括储存器或者通信系统制造商)知道正使用什么代码。下图用来描述用于以高效方式存储生成矩阵和/或奇偶校验矩阵的一些技术。
图9是示出了QC-LDPC奇偶校验矩阵的实施例的图。在所示例子中,QC-LDPC奇偶校验矩阵900包括多个循环行列式。示出了循环行列式之一H0,0(902)并且该循环行列式在这一例子中具有循环行列式大小b=4。循环行列式902包括多个矢量(包括行矢量904和列矢量906)。
图10是示出了QC-LDPC生成矩阵的实施例的图。在所示例子中,QC-LDPC生成矩阵1000包括多个循环行列式;示出了具有例子循环行列式大小b=4的循环行列式G0,0(1002)。多个矢量组成循环行列式1002(包括行矢量1004和列矢量1006)。
LDPC奇偶校验矩阵(这些矩阵包括QC-LDPC奇偶校验矩阵)经常是低密度矩阵。换而言之,LPDC奇偶校验矩阵中的1的数目往往为低。对照而言,LDPC生成矩阵通常不是低密度并且与奇偶校验矩阵相比具有更多1。
在一些实施例中,对于循环行列式中的给定循环行列式(例如与奇偶校验矩阵或者生成矩阵关联),存储来自该循环行列式的一个且仅一个矢量。例如对于奇偶校验矩阵902,为该循环行列式存储的仅有信息是行矢量904。或者对于生成矩阵1002,为该循环行列式存储的仅有信息是列矢量1006。在一些实施例中,为每个循环行列式存储单个矢量(例如存储来自循环行列式G0,0的第一矢量、存储来自G0,1的第二矢量、等)。
在一些实施例中,存储奇偶校验矩阵包括针对多个循环行列式中的至少一个循环行列式存储一个矢量中的1的(一个或多个)位置。例如对于与QC-LDPC奇偶校验矩阵900关联的循环行列式904,存储列矢量906(根据该列矢量可以重建循环行列式904)。在一些实施例中,存储该位置对于低密度矩阵而言更为储存器高效。因而在一些实施例中,存储位置的技术用于存储与奇偶校验矩阵关联的信息、但是未必用于往往具有更高密度的生成矩阵。在一些实施例中,如果循环行列式(例如循环行列式Hi,j之一)中的1的数目少于b/(ceil(log2(b))),其中b是循环行列式大小,则存储1的位置。在一些实施例中,这一阈值基于以基数2的格式存储位置的假设。
在一些实施例中,当(例如在循环行列式的行矢量中)有相对小数目的1时,非基数2的格式用来存储1的位置。在一个例子中,如果循环行列式大小(即b)为12,则1的有效位置将是(以十进制计)1(即在矢量的第一元素中有1)、2(即在矢量的第二元素中有1)、…、11和12。在二进制(即基数2)中,这将是0001、0010、…、1011和1100。非基数2的格式的例子是[6321],这在使用这一[6321]格式时造成0000至1111的所有16个组合映射到0至12(以十进制计)。在一些情况下,这是多到一的映射(例如以这一格式的0100和0011二者将映射到以十进制计的3)。使用非基数2的格式来存储位置的一个益处是更高效的硬件设计(例如当实施为现场可编程门阵列(FPGA)或者专用集成电路(ASIC)时)。例如使对存储器寻址更容易并且有更少路由拥堵。另一优点是非基数2的格式可以用来避免一些或者所有界外地址。在上述[6321]例子中,不可能映射到以十进制计的13-15,因此不能意外地寻址那些界外地址(对于这一例子,其中循环行列式大小b=12)。在一些实施例中,0000(例如在基数2的格式或者某一非基数2的格式(比如[6321])中)代表特殊值:全零矩阵或者矢量。
虽然已经出于理解清楚的目的而以一些细节描述前述实施例,但是本发明不限于提供的细节。有实施本发明的许多替选方式。公开的实施例为示例而非限制。

Claims (23)

1.一种用于处理与生成矩阵(G)和/或奇偶校验矩阵(H)相关联的准循环低密度奇偶校验(QC-LDPC)数据的系统,包括:
信号注入器,配置成接收包括与未填充数据对应的判决和可靠性信息的输入信号并且向所述输入信号中引入与填充数据对应的判决和可靠性信息;
解码器,配置成一次或者多次执行消息传递以获得解码数据,包括通过使用(1)与所述未填充数据对应的所述判决和可靠性信息以及(2)与所述填充数据对应的所述判决和可靠性信息,包括通过在消息传递期间较与所述未填充数据对应的所述判决和可靠性信息而言向与所述填充数据对应的所述判决和可靠性信息给予优先;以及
滤波器,配置成从所述解码数据去除零填充。
2.根据权利要求1所述的系统,其中所述未填充数据与存储于储存器上的数据关联并且所述未填充数据与未存储于所述储存器上的数据关联。
3.根据权利要求2所述的系统,还包括:
填充表,配置成存储信息,所述信息标识所述储存器上的哪些位置与填充数据关联但是未包含所述填充数据;以及
控制器,配置成访问所述填充表并且至少部分基于所述填充表中的存储的信息确定所述输入信号是否与填充数据关联但是未包含所述填充数据,其中所述信号注入器、解码器和滤波器被配置成在确定所述输入信号与填充数据关联但是未包含所述填充数据的情况下操作。
4.根据权利要求2所述的系统,其中所述储存器包括以下储存器中的一个或者多个储存器:磁盘储存器或者闪存储存器。
5.根据权利要求1所述的系统,其中消息传递包括以下中的一个或者多个:求和乘积算法(SPA)、最小值求和、缩放最小值求和或者偏移最小值求和。
6.根据权利要求1所述的系统,还包括配置成生成与所述未填充数据对应的所述判决和可靠性信息的软输出检测器。
7.根据权利要求6所述的系统,其中所述软输出检测器包括软输出Viterbi解码器。
8.根据权利要求1所述的系统,其中所述生成矩阵(G)包括多个循环行列式(Gi,j)并且存储所述生成矩阵包括针对所述多个循环行列式中的至少一个循环行列式存储来自所述多个循环行列式中的所述至少一个循环行列式的一个且仅一个矢量。
9.根据权利要求1所述的系统,其中所述奇偶校验矩阵(H)包括多个循环行列式(Hi,j)并且存储所述奇偶校验矩阵包括针对所述多个循环行列式中的至少一个循环行列式存储来自所述多个循环行列式中的所述至少一个循环行列式的一个且仅一个矢量。
10.根据权利要求1所述的系统,其中所述奇偶校验矩阵(H)包括多个循环行列式(Hi,j)并且存储所述奇偶校验矩阵包括针对所述多个循环行列式中的至少一个循环行列式存储来自所述多个循环行列式中的所述至少一个循环行列式的一个且仅一个矢量中的1的位置。
11.根据权利要求10所述的系统,其中在所述奇偶校验矩阵中的1的数目少于b/(ceil(log2(b)))的情况下执行存储1的位置,其中b是循环行列式大小。
12.根据权利要求10所述的系统,其中存储1的位置包括以非基数2存储位置。
13.根据权利要求1所述的系统,其中在消息传递期间较与所述填充数据对应的所述判决和可靠性信息而言向与所述填充数据对应的所述判决和可靠性信息给予优先包括:
在V-节点更新期间:对于所有i,m(vj到ci)=Lmax,从而ci连接到vj;并且
在校正子校验期间:LOj=Lmax
14.根据权利要求1所述的系统,其中在消息传递期间较与所述填充数据对应的所述判决和可靠性信息而言向与所述填充数据对应的所述判决和可靠性信息给予优先包括:
在C-节点更新期间:m(ci到vj)=fc({m(vk到ci),所有k,从而vk连接到ci并且k!=j并且vk不是填充位});并且
在校正子校验期间:LOj=Lmax
15.一种用于处理准循环低密度奇偶校验(QC-LDPC)数据的方法,包括:
接收输入信号,所述输入信号包括与未填充数据对应的判决和可靠性信息;
向所述输入信号中引入与填充数据对应的判决和可靠性信息;
一次或者多次执行消息传递以获得解码数据,包括通过使用(1)与所述未填充数据对应的所述判决和可靠性信息以及(2)与所述填充数据对应的所述判决和可靠性信息,包括通过在消息传递期间较与所述未填充数据对应的所述判决和可靠性信息而言向与所述填充数据对应的所述判决和可靠性信息给予优先;并且
从所述解码数据去除零填充。
16.根据权利要求15所述的方法,其中所述未填充数据与存储于储存器上的数据关联并且所述未填充数据与未存储于所述储存器上的数据关联。
17.根据权利要求16所述的方法,还包括:
在填充表中存储信息,所述信息标识所述储存器上的哪些位置与填充数据关联但是未包含所述填充数据;以及
访问所述填充表并且至少部分基于所述填充表中的存储的信息确定所述输入信号是否与填充数据关联但是未包含所述填充数据,其中所述引入、消息传递和去除被配置成在确定所述输入信号与填充数据关联但是未包含所述填充数据的情况下被执行。
18.根据权利要求16所述的方法,其中所述储存器包括以下储存器中的一个或者多个储存器:磁盘储存器或者闪存储存器。
19.根据权利要求15所述的方法,其中消息传递包括以下中的一个或者多个:求和乘积算法(SPA)、最小值求和、缩放最小值求和或者偏移最小值求和。
20.根据权利要求15所述的方法,还包括使用软输出检测器以生成与所述未填充数据对应的所述判决和可靠性信息。
21.根据权利要求20所述的方法,其中所述软输出检测器包括软输出Viterbi解码器。
22.根据权利要求15所述的方法,在消息传递期间较与所述填充数据对应的所述判决和可靠性信息而言向与所述填充数据对应的所述判决和可靠性信息给予优先包括:
在V-节点更新期间:对于所有i,m(vj到ci)=Lmax,从而ci连接到vj;并且
在校正子校验期间:LOj=Lmax
23.根据权利要求15所述的方法,其中在消息传递期间较与所述填充数据对应的所述判决和可靠性信息而言向与所述填充数据对应的所述判决和可靠性信息给予优先包括:
在C-节点更新期间:m(ci到vj)=fc({m(vk到ci),所有k,从而vk连接到ci并且k!=j并且vk不是填充位});并且
在校正子校验期间:LOj=Lmax
CN201180007873.XA 2010-03-04 2011-02-28 用于循环行列式大小非整数倍的准循环ldpc编码和解码 Active CN102835032B (zh)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
US33956410P 2010-03-04 2010-03-04
US61/339,564 2010-03-04
US61/339564 2010-03-04
US33062710P 2010-05-03 2010-05-03
US61/330,627 2010-05-03
US61/330627 2010-05-03
US13/035,770 2011-02-25
US13/035,770 US8572463B2 (en) 2010-02-01 2011-02-25 Quasi-cyclic LDPC encoding and decoding for non-integer multiples of circulant size
US13/035770 2011-02-25
PCT/US2011/000385 WO2011109084A1 (en) 2010-03-04 2011-02-28 Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size

Publications (2)

Publication Number Publication Date
CN102835032A CN102835032A (zh) 2012-12-19
CN102835032B true CN102835032B (zh) 2016-05-04

Family

ID=44542485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180007873.XA Active CN102835032B (zh) 2010-03-04 2011-02-28 用于循环行列式大小非整数倍的准循环ldpc编码和解码

Country Status (4)

Country Link
US (1) US8572463B2 (zh)
KR (1) KR101588304B1 (zh)
CN (1) CN102835032B (zh)
WO (1) WO2011109084A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9377960B2 (en) * 2009-07-29 2016-06-28 Hgst Technologies Santa Ana, Inc. System and method of using stripes for recovering data in a flash storage system
US8443249B2 (en) * 2010-04-26 2013-05-14 Lsi Corporation Systems and methods for low density parity check data encoding
JP5310701B2 (ja) * 2010-10-29 2013-10-09 株式会社Jvcケンウッド 復号装置および復号方法
US8499218B2 (en) * 2011-09-30 2013-07-30 Mitsubishi Electric Research Laboratories, Inc. System and method for determining quasi-cyclic low-density parity-check codes having high girth
US20130139022A1 (en) * 2011-11-28 2013-05-30 Lsi Corporation Variable Sector Size LDPC Decoder
US9087398B2 (en) * 2012-12-06 2015-07-21 Nvidia Corporation System and method for compressing bounding box data and processor incorporating the same
US9385753B2 (en) 2013-02-14 2016-07-05 Marvell World Trade Ltd. Systems and methods for bit flipping decoding with reliability inputs
WO2014138246A1 (en) * 2013-03-07 2014-09-12 Marvell World Trade Ltd. Systems and methods for decoding with late reliability information
KR20150131370A (ko) 2013-03-21 2015-11-24 마벨 월드 트레이드 리미티드 멀티-스테이지 소프트 입력 디코딩을 위한 방법 및 시스템
WO2014179502A1 (en) * 2013-04-30 2014-11-06 Western Digital Technologies, Inc. Decoder having early decoding termination detection
CN105811996B (zh) * 2014-12-30 2019-12-06 华为技术有限公司 一种基于准循环ldpc的数据处理方法及系统
JP6511284B2 (ja) * 2015-02-13 2019-05-15 パナソニック株式会社 最小値選択回路、復号器及び最小値選択方法
US20210167800A1 (en) * 2017-01-06 2021-06-03 Lg Electronics Inc. Method for selecting ldpc base code in multiple ldpc codes and apparatus therefor
US10263639B2 (en) * 2017-02-07 2019-04-16 Alibaba Group Holding Limited Managing soft information in high-capacity solid state drive
US11182939B2 (en) * 2019-10-07 2021-11-23 Rohde & Schwarz Gmbh & Co. Kg Method and system for transforming message logs into images
KR20220015556A (ko) * 2020-07-31 2022-02-08 삼성전자주식회사 이미지 처리 장치 및 프레임 버퍼 컴프레서
WO2022082137A1 (en) * 2020-10-13 2022-04-21 Microchip Technology Incorporated Reduced complexity ldpc decoder with improved error correction and related systems, methods, and devices
US11979171B2 (en) 2020-10-13 2024-05-07 Microchip Technology Incorporated Reduced complexity encoders and related systems, methods, and devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862971A (zh) * 2005-05-11 2006-11-15 电子科技大学 一种低密度校验码高速编码方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905666A (en) 1995-01-03 1999-05-18 International Business Machines Corporation Processing system and method for performing sparse matrix multiplication by reordering vector blocks
WO2002099976A2 (en) 2001-06-06 2002-12-12 Seagate Technology Llc A method and coding apparatus using low density parity check codes for data storage or data transmission
US6757122B1 (en) 2002-01-29 2004-06-29 Seagate Technology Llc Method and decoding apparatus using linear code with parity check matrices composed from circulants
US8095659B2 (en) * 2003-05-16 2012-01-10 Jp Morgan Chase Bank Service interface
KR100809619B1 (ko) 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US7346832B2 (en) 2004-07-21 2008-03-18 Qualcomm Incorporated LDPC encoding methods and apparatus
US7543212B2 (en) 2004-09-13 2009-06-02 Idaho Research Foundation, Inc. Low-density parity-check (LDPC) encoder
US7900127B2 (en) 2005-01-10 2011-03-01 Broadcom Corporation LDPC (Low Density Parity Check) codes with corresponding parity check matrices selectively constructed with CSI (Cyclic Shifted Identity) and null sub-matrices
KR100946905B1 (ko) * 2005-09-27 2010-03-09 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
WO2007108396A1 (ja) * 2006-03-17 2007-09-27 Mitsubishi Electric Corporation 通信装置、復号装置、情報伝送方法および復号方法
US8028216B1 (en) * 2006-06-02 2011-09-27 Marvell International Ltd. Embedded parity coding for data storage
US7724833B2 (en) 2006-07-25 2010-05-25 Legend Silicon Corporation Receiver for an LDPC based TDS-OFDM communication system
US7831895B2 (en) 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
US20080052594A1 (en) 2006-07-28 2008-02-28 Yedidia Jonathan S Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes
US8418023B2 (en) 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
US8196010B1 (en) 2007-08-17 2012-06-05 Marvell International, Ltd. Generic encoder for low-density parity-check (LDPC) codes
US8307268B2 (en) 2007-12-06 2012-11-06 Marvell World Trade Ltd. Iterative decoder systems and methods
US8095859B1 (en) 2008-01-09 2012-01-10 L-3 Communications, Corp. Encoder for low-density parity check codes
KR20090093778A (ko) * 2008-02-29 2009-09-02 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 채널부호/복호 장치 및 방법
US8341492B2 (en) 2008-07-28 2012-12-25 Broadcom Corporation Quasi-cyclic LDPC (low density parity check) code construction
US20100153819A1 (en) 2008-12-12 2010-06-17 Yeong-Luh Ueng Decoding Method and System for Low-Density Parity Check Code
KR101211433B1 (ko) 2008-12-19 2012-12-12 한국전자통신연구원 낮은 복잡도를 가지는 고속의 qc-ldpc 부호의 부호화 장치 및 방법
US8397125B2 (en) 2008-12-31 2013-03-12 Stmicroelectronics, Inc. Encoding apparatus, system, and method using low density parity check (LDPC) codes
US8433972B2 (en) 2009-04-06 2013-04-30 Nec Laboratories America, Inc. Systems and methods for constructing the base matrix of quasi-cyclic low-density parity-check codes
EP2309650B1 (en) 2009-09-23 2012-12-05 Rohde & Schwarz GmbH & Co. KG A systematic encoder with arbitrary parity positions
US8359515B2 (en) 2009-12-02 2013-01-22 Lsi Corporation Forward substitution for error-correction encoding and the like
US8788922B2 (en) 2011-02-28 2014-07-22 Apple Inc Error correction codes for incremental redundancy

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862971A (zh) * 2005-05-11 2006-11-15 电子科技大学 一种低密度校验码高速编码方法

Also Published As

Publication number Publication date
US8572463B2 (en) 2013-10-29
US20110191653A1 (en) 2011-08-04
WO2011109084A1 (en) 2011-09-09
CN102835032A (zh) 2012-12-19
KR101588304B1 (ko) 2016-01-26
KR20130038184A (ko) 2013-04-17

Similar Documents

Publication Publication Date Title
CN102835032B (zh) 用于循环行列式大小非整数倍的准循环ldpc编码和解码
US7120857B2 (en) LDPC decoding apparatus and method
US7552097B2 (en) Methods and apparatus for decoding LDPC codes
US7730377B2 (en) Layered decoding of low density parity check (LDPC) codes
US7376885B2 (en) Memory efficient LDPC decoding methods and apparatus
US9015547B2 (en) Multi-level LDPC layered decoder with out-of-order processing
US8656249B2 (en) Multi-level LDPC layer decoder
US8739001B2 (en) LDPC encoding and decoding techniques
US11115051B2 (en) Systems and methods for decoding error correcting codes
KR100861674B1 (ko) 송신기 및 수신기를 동작시키는 방법, 및 데이터를 엔코딩 및 디코딩하는 장치
US8869003B2 (en) Method, apparatus, computer program product and device providing semi-parallel low density parity check decoding using a block structured parity check matrix
WO2009004572A1 (en) Shuffled ldpc decoding
US8443257B1 (en) Rate-scalable, multistage quasi-cyclic LDPC coding
US8321746B2 (en) Systems and methods for quasi-cyclic LDPC code production and decoding
US20110083058A1 (en) Trapping set based ldpc code design and related circuits, systems, and methods
US20160020783A1 (en) Low Density Parity Check Decoder With Relative Indexing
US8843810B2 (en) Method and apparatus for performing a CRC check
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
KR100785671B1 (ko) 고속 acs 비터비 디코더 구현을 위하여 메모리내의상태 메트릭들을 효과적으로 판독하고 저장하는 방법 및장치
WO2007116339A1 (en) Iterative soft decoding of constrained code words
JP4755238B2 (ja) 復号器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: American California

Applicant after: SK Sea Nicks storage technologies

Address before: American California

Applicant before: Link A Media Devices Corp

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: LINK A MEDIA DEVICES CORP. TO: SK HAINICKS STORAGE TECHNOLOGY CO., LTD.

C14 Grant of patent or utility model
GR01 Patent grant