CN111615793B - 竖直分层式有限字母表迭代解码 - Google Patents

竖直分层式有限字母表迭代解码 Download PDF

Info

Publication number
CN111615793B
CN111615793B CN201880061486.6A CN201880061486A CN111615793B CN 111615793 B CN111615793 B CN 111615793B CN 201880061486 A CN201880061486 A CN 201880061486A CN 111615793 B CN111615793 B CN 111615793B
Authority
CN
China
Prior art keywords
decoding
block
column
parity check
input
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
CN201880061486.6A
Other languages
English (en)
Other versions
CN111615793A (zh
Inventor
B·J·雷伊瓦尔
S·K·普兰杰里
D·德克莱尔
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.)
Codelucida Inc
Original Assignee
Codelucida 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 Codelucida Inc filed Critical Codelucida Inc
Publication of CN111615793A publication Critical patent/CN111615793A/zh
Application granted granted Critical
Publication of CN111615793B publication Critical patent/CN111615793B/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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • 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/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • 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
    • 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/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • H03M13/1122Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule storing only the first and second minimum values per check node
    • 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/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC 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/2957Turbo codes and decoding
    • H03M13/2975Judging correct decoding, e.g. iteration stopping criteria
    • 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
    • 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/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0047Decoding adapted to other signal detection operation
    • H04L1/005Iterative decoding, including iteration between signal detection and decoding operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0054Maximum-likelihood or sequential decoding, e.g. Viterbi, Fano, ZJ algorithms

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

本发明呈现一种用于低密度奇偶校验码LDPC的竖直分层式有限字母表迭代解码的方法和设备,其作用于由子矩阵块组成的奇偶校验矩阵。所述迭代解码涉及在泰纳图中与构成解码块的一或多个子矩阵相关联的变量节点和校验节点之间传递消息,并且所述消息属于有限字母表。呈现本发明的所述方法和设备的各个实施例,它们可实现极高吞吐量及低硬件资源使用和功率。

Description

竖直分层式有限字母表迭代解码
相关申请的交叉引用
本申请要求2017年7月31日提交的第62/539,476号美国临时申请案和2018年7月30日提交的第16/049,724号美国非临时申请的权益,其中每一申请的全部内容特此以引用的方式并入本文中,如同在本文中完整阐述一般。
关于联邦政府资助的研究的陈述
本发明的部分是在美国国家科学基金会奖IIP-1534760的支持下完成的。美国政府在本发明中享有某些权利。
技术领域
本发明大体上涉及信息传输、存储和处理系统的错误校正译码,例如有线和无线通信系统、快闪存储器和其它存储器、大容量数据存储系统及存储驱动系统。更具体地说,它涉及例如低密度奇偶校验(LDPC)码的分组码的迭代消息传递,且更确切地说,涉及具有由子矩阵块组成的奇偶校验矩阵的LDPC码,所述子矩阵块包含其中子矩阵是循环矩阵的一类准循环LDPC码。
背景技术
错误校正码通过确保数据的完整性而在通信、计算机和存储系统中发挥着重要的作用。本发明涉及被称为低密度奇偶校验(LDPC)码的一类错误校正码及它们的迭代消息传递解码算法。LDPC码以其在无限码字长度范围内逼近信息论通道容量的能力而备受瞩目。它们在许多应用中是标准化的,包含无线通信、卫星通信、深空通信、光通信,以及在固态驱动器和硬盘驱动器等存储系统中。近年来,由于快闪存储器的密度不断增加,它们在NAND快闪存储器应用中越来越突出。所有这些应用都被认为在本发明的使用范围内。
二进制LDPC码由具有N列和M行以及其对应的泰纳图G的奇偶校验矩阵(PCM)H定义。泰纳图G是由基数N的变量节点集合V={v1,v2,...,vN}和基数M的校验节点集合C={c1,c2,...,cM}组成的二分图,这些节点通过边线连接,其中,如果奇偶校验矩阵中的矩阵元素等于Hi,j=1,那么在节点ci和vj之间存在边线。H中列(或行)的权重是它含有的非零值的数目。变量节点(或校验节点)的阶次是其等于H中对应列(或行)的权重的相邻项的数目。因此,变量节点vj的阶次将等于奇偶校验矩阵的第j个列的权重,且校验节点ci的阶次将等于第i行的权重。如果H中的每个列具有权重dv,那么LDPC码被视为具有固定的列权重dv,如果H中存在至少两个具有不同权重的列,那么LDPC码具有可变列权重。类似地,如果H中每个行具有权重dc,那么LDPC码被视为具有固定的行权重dc。奇偶校验矩阵的实例在下面的等式1中给出。
LDPC码的码字x=(x1,x2,...,xN)通过通道发送,所述通道可以是通信通道,也可以是存储码字的数据存储媒体。码字中的值xi是与G中的变量节点vi相关联的二进位值。通道向量y=(y1,y2,...,yN)是基于从通道接收到的向量计算出的向量,由于通道所引入的错误,所以它可不同于x。例如,在二进制对称通道(BSC)的特定情况中,r=x+e,其中+表示异或(XOR)运算,并且向量e的元素表示因为翻转x中的码字位而引入的错误,概率为α。在本公开中被称为通道值的值yi∈Y属于通道输出字母表Y。向量y输入到迭代解码器以便恢复x。
本发明适用于BSC以及更多通用类别的具有较大通道输出字母表的通道,例如量化加性高斯白噪声(AWGN)通道。在只具有两个可能通道输出的BSC的情况下,Y可以定义为Y={±1},其中按照惯例,+1对应于接收到的位值0,-1对应于接收到的位值1。在具有较大通道输出字母表的情况下,如果可能通道输出的数目是偶数且等于2q,那么Y可以定义为Y={±1,±2,...±q},或者如果可能通道输出的数目是奇数且等于2q+1,那么Y={0,±1,±2,...±q}。
在更一般的情况下,对于偶数基数,任何通道输出都可以定义为Y={±Y1,±Y2,...±Yq},对于奇数基数,Y={0,±Y1,±Y2,...±Yq},其中也可使用本发明。对于本公开,如果通道向量y的元素只能采用两个可能值,那么解码被称为硬决策解码,并且y被称为硬决策输入。如果向量y的元素可以采用超过两个可能值,那么解码被称为软决策解码,并且输入被称为软决策输入。对于软决策解码,y被称为nq位软决策输入,其中在偶数基数的情况下,在奇数基数的情况下,/> 是大于x的最小整数。
本发明的实施例可以通过使用泰纳图G来说明,其中解码涉及沿着图形边线迭代地传递消息。此类型的解码被称为LDPC码的消息传递解码。图1示出等式1的LDPC码的泰纳图的实例,其中圆形表示变量节点,正方形表示校验节点。解码器通过输入通道向量y初始化,然后消息在变量节点和校验节点之间沿着图形G的边线迭代地传递。消息在每次到达节点时更新,其方式使得特定边线上的传出消息基于所述节点的除所述特定边线的传入消息之外的所有传入消息计算。当图形中的所有节点已经以通常被称为调度的处理的特定次序至少处理一次时,执行解码迭代。在每个迭代结束时以及在一个解码迭代的处理期间,针对所有变量节点vi,基于它们从它们相邻的校验节点接收的消息以及通道值yi而计算位值的估计值位值的硬决策估计值/>是使用决策函数Ψ来计算的,并且通过将它们发送到计算向量/>的校正子的验证器而用于校验解码器是否已收敛到码字。校正子被定义为
其中xT表示向量x的转置。校正子向量的元素被称为校正子位。验证器校验在给定的校验节点处,它们相邻的变量节点的对应硬决策估计值是否形成偶数奇偶校验,并且此类校验节点被认为是符合的,否则它被认为是不符合的。如果每个校验节点都是符合的,那么校正子是零,并且解码器收敛到码字。迭代过程一直继续到解码器收敛到码字或达到最大迭代次数为止。如果解码器没有收敛到码字,那么它被视为发生故障。
本发明的实施例另外涉及称为有限字母表迭代解码器(FAID)的一类迭代消息传递解码器。在这些解码器中,消息属于由通常有限的少量层级组成的有限字母表M。对于其中M具有奇数基数的特定说明性情况,消息字母表表示为M={0,±Li:1≤i≤s},其中对于任何i>j,且Li>Lj
FAID中阶次dv的变量节点的变量节点更新函数是预定义映射Φv在本公开中,它被称为依据节点处的除特定边线上的传入消息之外的dv-1传入消息以及通道值yi计算所述特定边线上的传出消息的变量节点(VN)映射或VN映射。变量节点更新函数可以设计成改进解码器的错误校正能力。阶次dv=3的变量节点的映射Φv的实例在下表1中提供。在此实例中,VN映射具有7个可能层级,即s=3,我们只示出了对应于y=-Y的VN映射,使得表条目是Φv(-Y,m1,m2)。
表1
m1/m2 -L3 -L2 -L1 0 +L1 +L2 +L3
-L3 -L3 -L3 -L3 -L3 -L3 -L3 -L1
-L2 -L3 -L3 -L3 -L3 -L3 -L1 +L1
-L1 -L3 -L3 -L3 -L3 -L1 -L1 +L1
0 -L3 -L3 -L3 -L1 0 0 +L1
+L1 -L3 -L3 -L1 0 0 +L1 +L2
+L2 -L3 -L1 -L1 0 +L1 +L1 +L3
+L3 -L1 +L1 +L1 +L1 +L2 +L3 +L3
应注意,通道值y=+Y的VN映射可以通过对称性从具有通道值y=-Y的VN映射推断出:
Φv(Y,m1,m2)=-Φv(-Y,-m1,-m2),m1∈M,m2∈M (3)
用于FAID的校验节点更新函数Φc类似于用于目前先进技术通常所使用的最小和解码器的函数。假设关联到阶次dc的校验节点的边线从1标记到dc,称为边线索引,并且假设表示阶次dc的校验节点的传入消息,使得mk表示对应于第k个边线索引的传入消息。接着,为了计算对应于第dc个边线索引的校验节点的传出消息,Φc通过下式给出:
值得注意的是,FAID和目前先进技术最小和解码器(和其变化形式)之间的主要差异在于Φv的定义。已经表明,FAID的性能在BSC的错误平层区域中可优于传统的消息传递解码器,并且存在具有阶次dv=3的变量节点的代码的数值结果。另外,已经表明,具有不同VN映射的多个FAID可用于进一步改进性能,代价是复杂性更高。
本发明的优选实施例具体集中于LDPC码,它的奇偶校验矩阵由子矩阵块构成,但是本发明不限于此类代码。在这些优选实施例中,奇偶校验矩阵H组织成块或子矩阵,如等式5中所定义,
其中子矩阵Hi,j(1≤i≤Mb,1≤j≤Nb)针对任何固定的j具有相等的竖直维度,并且针对每个固定的i具有相等的水平维度。
列块被称为奇偶校验矩阵的子矩阵块的整列,列块索引j是指由子矩阵{Hi,j,1≤i≤Mb}组成的第j个列块。类似地,行块被称为奇偶校验矩阵的子矩阵块的整行,并且行块索引i是指由子矩阵{Hi,j,1≤j≤Nb}组成的第i个行块。子矩阵的维度可以是任意的,并且在子矩阵Hi,j是LxL方形矩阵的情况下,L可以是任意的。在本公开的优选实施例中,子矩阵Hi,j是LxL方形矩阵,并且可为循环置换矩阵(CPM)、全零矩阵或循环置换矩阵的总和。此类型的子矩阵常用于目前先进技术中,并且具有以下特殊性:它们可以由它们的第一行/列以及生成其余行/列的程序定义。在循环置换矩阵中,每个行/列可以通过另一行/列的圆形(循环)移位获得。其中奇偶校验矩阵组织成是循环置换矩阵的块的LDPC码被称为准循环LDPC(QC-LDPC)码。
CPM被定义为循环群组的基元的幂。例如,基元由等式6中所示的LxL矩阵P定义,其中L=8。
因此,CPM Pk(k∈{0,...,L-1})具有恒等矩阵的形式,向左移位k个位置。换句话说,Pk的第一列的非零值的行索引是k+1。索引k在本公开中将称为CPM移位值。由CPM的幂构成的奇偶校验矩阵的实例(L=5,Mb=3和Nb=5)在等式7中给出。
在本公开中,如果Hi,j是全零子矩阵,那么子矩阵Hi,j被称为零子矩阵,否则它是非零子矩阵,并且列块中所含的非零子矩阵的数目被称为列块阶次。含有零和非零子矩阵的奇偶校验矩阵的实例在等式8中示出。
同样与本公开相关的是用于提高解码器收敛速度同时仍然维持低硬件复杂性的分层式解码的概念。分层式LDPC解码方案通过减少实现成功解码所需要的解码迭代次数而有效改进了收敛。分层式解码器产生从校验节点的子集到变量节点的子集的消息,然后产生从变量节点的子集到校验节点的子集的消息。分层式解码器具有低资源使用,并且需要较低的迭代平均次数。对于QC-LDPC码,行层通常由通过一组循环置换矩阵定义的PCM的L个连续行构成。例如,等式5中的第i个行块定义第i个行层。类似地,列层由PCM的L个连续列构成。例如,等式5中的第j个列块定义第j个列层。
存在两类主要的分层式解码:行或水平分层式解码和列或竖直分层式解码。在水平分层式解码中,LDPC码的奇偶校验矩阵细分成多个行层,并且逐行层执行消息更新。在竖直分层式解码中,奇偶校验矩阵分割成多个列层,并且逐列层执行消息计算。
层的概念可以进一步扩展到通用行层的概念,定义是:
·通用行层被定义为基矩阵的两个或更多个行层的串联,使得在通用行层的每个列块中,存在最多一个非零子矩阵,同时它的其它块是零子矩阵。
·完全通用行层还具有以下特性:通用行层的每个列块正好包含一个非零子矩阵。
此定义确保对于具有最大列阶次dv的QC-LDPC码,PCM可以结构化成具有至少dv个通用行层。为简单起见,并且在不损失一般性的情况下,在本公开中假设通用行层的数目通常等于最大列阶次dv。在具有由通用行层组成的结构的PCM中,每个通用行层的行块可以按照任意次序组织,并且不限于只是PCM中的连续行层。另外,每个通用行层中的行块的数目针对不同通用行层可为不同的。PCM的通用行层结构能够并行执行至少dv个子矩阵的处理,而不具有数据存取冲突。
尽管具有上文所描述的现有技术,但是仍然非常需要可以提供错误率低得多的性能并且能够以高得多吞吐量操作同时仍然维持低硬件成本的LDPC解码器。常规LDPC解码器的一个主要问题是错误平层"的问题,其中解码器可能无法实现不足以用于许多存储系统的足够低的错误率。常规方法会使用解码器,这些解码器使用大量硬件资源和功率来解决错误平层问题,并且在需要高吞吐量时,这个问题会更严重。此外,需要解码器的硬件架构是柔性的,使得解码器可以调谐到通道的特定条件,以实现最佳错误率性能。并且,先前文献和公开案只关注了具有固定的列权重dv=3的LDPC码的FAID,在错误校正方面并没有坚固到足以用于存储应用。本发明旨在解决所有这些问题。
发明内容
根据本发明,呈现一种与低密度奇偶校验(LDPC)码的迭代消息传递相关的方法和设备。所述方法被称为竖直分层式有限字母迭代解码,它从属于通道输出字母表的通道接收值作为输入,并作用于由子矩阵的行块和列块组成的奇偶校验矩阵,其中处理在构成多个解码块的一或多个子矩阵上完成。在每个处理中,所述方法分别使用变量节点更新函数和校验节点更新函数计算、更新和在代码的泰纳图中与解码块相关联的变量节点和校验节点之间传递属于有限字母表的消息。所述处理按照任意次序从列块内的一个解码块向另一解码块地或跨奇偶校验矩阵的不同列块地遍历整个奇偶校验矩阵。所述方法从通道接收可构成用于硬决策解码的硬决策输入或用于软决策解码的软决策输入的值。
所述方法可使用单个或多个解码级,其中在每个解码级中,它可使用通道值或从先前解码级生成的硬决策估计值或软决策估计值作为输入。在计算与解码块相关联的图形的变量节点处的传出消息期间,可以在每个解码级中使用一或多个不同变量节点更新函数来进一步提高成功解码的概率。所述方法适用于固定列权重和可变列权重的LDPC码。
在所述方法的实施例中的一个中,解码块是单个子矩阵,并且所述处理按照任意次序从列块内的一个解码块遍历到另一解码块。此类方法被称为单子矩阵竖直分层式解码。在另一实施例中,解码块是整个列块,其中处理遍历不同列块,并且所述方法作用于由通用行层组成的奇偶校验矩阵,其中行层的数目至少等于奇偶校验矩阵的最大列块阶次。此类方法被称为通用型单列竖直分层式解码。在另一实施例中,解码块含有奇偶校验矩阵的一或多个列块,并且所述处理按照任意次序跨列块群组从一个解码块遍历到另一解码块。此类方法被称为多列竖直分层式解码。
各个实施例呈现一种用于竖直有限字母表迭代解码器的设备,其中所述设备包括:负责迭代地更新和在一或多个变量节点处理器和一或多个校验节点处理器之间传递消息的模块,以及用于校验解码器是否已经收敛到码字并输出所述码字的模块。根据实施例,所述设备另外包括用于计算校正子位的初始化模块。所述设备可基于接收到的输入而执行硬决策解码或软决策解码,还可使用单个或多个解码级。
所述设备和它们的组件的各个实施例作为单子矩阵竖直分层式解码器、通用型单列竖直分层式解码器和多列竖直分层式解码器的本发明的部分。所呈现的各个实施例实现解码器的极其高效的硬件实施方案,从而实现极高吞吐量及低硬件资源使用和电力使用。本发明适用于采用LDPC码的系统和应用,例如固态驱动系统、嵌入式存储器系统和广泛的任何采用LDPC码的存储和通信系统(包含无线和光通信)的快闪控制器。本发明中的设备还适用于基于应用的现场可编程门阵列(FPGA)以及基于应用的专用集成电路(ASIC)。现将通过实例和附图更详细地描述本发明的方法和设备的各个非限制性实施例和优选实施例。
附图说明
包含附图是为了提供对本发明的更深入理解,附图结合在本说明书中并且构成本说明书的一部分,附图说明本发明的非限制性实施例,并且与描述内容一起用于阐释本发明的原理。
图1示出具有列权重3的低密度奇偶校验码的泰纳图G的实例;
图2示出根据实施例的作用于由子矩阵组成的奇偶校验矩阵的竖直分层式有限字母表迭代解码的方法,其中处理是在单个或多个子矩阵上进行的;
图3示出根据实施例的描述单子矩阵竖直分层式(SSVL)解码器、通用型单列竖直分层式(SCVGL)解码器和多列竖直分层式(MCVL)解码器的顶层解码器架构的设备;
图4示出根据实施例的在列块阶次dv=4的SCVGL解码器的情况下和在模块的输入包括通道值时使用的初始化模块的架构;
图5示出根据实施例的在MCVL解码器的情况下使用的初始化模块的架构,其中列块阶次dv=4,并且解码块中所含的列块的数目W=2;
图6示出根据实施例的在SSVL解码器的情况下的初始化模块的架构;
图7示出根据实施例的在SCVGL解码器的情况下的验证和输出模块的架构,其中列块阶次dv=4;
图8示出根据实施例的在MCVL解码器的情况下的验证和输出模块的架构,其中列块阶次dv=4,并且解码块中所含的列块的数目W=2;
图9示出根据实施例的在SSVL解码器的情况下的验证和输出模块的架构;
图10示出根据实施例的在SCVGL解码器的情况下的解码环路的架构,其中列块阶次dv=4;
图11示出根据实施例的在MCVL解码器的情况下的解码环路的架构,其中列块阶次dv=4,并且解码块中所含的列块的数目W=2;
图12示出根据实施例的在SSVL解码器的情况下的解码环路模块的架构;
图13示出根据实施例的用于SCVGL、MCVL和SSVL解码器的解码环路模块的变量节点处理器的架构;
图14示出根据实施例的用于SCVGL、MCVL和SSVL解码器的变量节点单元(VNU)的架构;
图15示出根据实施例的用于SCGVL和SSVL解码器的解码环路模块的校验节点处理器的架构;
图16示出根据实施例的用于SCGVL和SSVL解码器的解码环路模块的校验节点处理器的另一架构,其利用3端口存储器;
图17示出根据实施例的用于MCVL解码器的解码环路模块的校验节点处理器的架构;
图18示出根据实施例的SSVL解码器、SCVGL解码器和MCVL解码器的描述不包括初始化模块的顶层解码器架构的设备;
图19示出根据实施例的SCVGL解码器的用于不包括初始化模块的顶层解码器架构的解码环路模块的架构,其中列块阶次dv=4;以及
图20示出根据实施例的SCVGL解码器、SCGVL解码器和SSVL解码器的用于不包括初始化模块的顶层解码器架构的解码环路模块的校验节点处理器的架构。
具体实施方式
本公开中的方法涉及作用于由图形表示的奇偶校验矩阵的迭代消息传递解码。所述方法的优选实施例作用于由大小LxL的子矩阵组成的奇偶校验矩阵。在另一优选实施例中,奇偶校验矩阵中的LxL子矩阵是循环置换矩阵(CPM)。
图2通过实例描绘以竖直分层的方式作用于由子矩阵组成的奇偶校验矩阵的方法的数个实施例。在图2中,每个方形描绘子矩阵,其中黑色正方形指示LxL非零子矩阵,白色正方形指示LxL零子矩阵。出于描述方法的各个非限制性实施例的目的,我们将在解码期间处理的一或多个特定子矩阵统称为解码块,由图2中的粗线指示。
根据本发明中的解码方法,处理解码块中所含的单个子矩阵或多个子矩阵涉及计算、更新和在与代码的图形上的那些子矩阵相关联的变量节点和校验节点之间传递消息。与解码块相关联的变量节点和校验节点将分别称为变量节点群组和校验节点群组。
在本公开中呈现的第一解码方法被称为单子矩阵竖直分层式(SSVL)解码,其中一个实施例由图2的201描绘,其中解码块是单个LxL非零子矩阵。处理按照任意次序依序从奇偶校验矩阵的列块内的一个非零子矩阵向另一非零子矩阵进行,并按照任意次序跨不同列块完成。在优选实施例中,处理次序开始于第一列块中的第一非零子矩阵,然后前进到所述列块中的下一非零子矩阵,如由201中的箭头指示,直到到达列块末尾为止,然后在下一列块中重复这一操作,直到处理已经遍历整个奇偶校验矩阵从而完成一个解码迭代为止。接着,处理回到第一列块中的第一非零子矩阵以开始下一解码迭代,并且处理一直继续进行到解码结束为止。
在本公开中呈现的第二解码方法被称为通用型单列竖直分层式(SCVGL)解码,其中一个实施例由图2的202描绘,并且其中解码块是奇偶校验矩阵的一个整个列块。此外,此方法作用于由dv个通用行层构成的奇偶校验矩阵,其中dv是最大列块阶次。奇偶校验矩阵的这一结构特别有利于高效实施方案,从而实现高吞吐量及低硬件复杂性。在此方法中,处理从一个列块向另一列块依序进行,直到奇偶校验矩阵的所有列块都被处理从而完成一个解码迭代为止。列块的处理可以按照任意次序跨不同列块进行,并且在此方法的优选实施例中,如由202说明,处理开始于第一列块,接着前进到下一邻近列块,以此方式继续遍历整个奇偶校验矩阵,如由202中的箭头指示。
在本公开中提议的第三解码方法被称为多列竖直分层式(MCVL)解码,其中一个实施例由图2的203描绘,并且其中解码块包含单个列块或W个列块。203示出由W=2个行块构成的解码块的实例。处理从列块的一个群组遍历到下一群组,直到奇偶校验矩阵的所有列块都被处理从而完成一个解码迭代为止。列块群组的处理次序可以是任意的。
本发明的竖直分层式有限字母表迭代解码(FAID)的方法开始于接收通道向量y,它是硬决策输入或nq位软决策输入。出于解释的目的,贯穿本公开,将假设当解码方法处于从y恢复码字的过程中时,所述码字正在进行处理,并且假设当解码方法成功地收敛到码字时,码字被解码,即,其中校正子是零(根据等式2)。
在本发明的一个优选实施例中,消息属于由基数|M|=2s+1的M={0,±Li:1≤i≤s}定义的有限字母表。因此,消息的表示精确度为ns位,其中并且此类FAID将被称为ns位FAID,其可施加到硬决策输入通道或nq位软决策输入通道,其中通道输出字母表Y={±Y1,±Y2,...±Yq}。
用于确定变量节点的传出消息的方法所需要的VN映射的最小数目取决于方法所使用的通道输出字母表的基数,并且通常等于通道输出字母表中的不同负(或正)值的数目,即,q值,因为对应于+Yi的VN映射可以根据等式3通过对称性从对应于-Yi的VN映射推断出。可替代地,对应于-Yi的VN映射还可以通过对称性从对应于+Yi的VN映射推断出。出于解释的目的,并且在不损失一般性的情况下,我们通过对应于-Yi的VN映射来定义FAID。对于硬决策解码,其中y∈{±Y},FAID由单个VN映射定义: mi∈M。对于软决策解码,FAID由q个VN映射定义:/>mi∈M,1≤j≤q。
在第一次迭代中,所有消息都设置成零。第一解码块的变量节点群组中的变量节点接收它们对应的通道值。基于通道值,使用VN映射Φv计算变量节点的传出消息,VN映射Φv是传入消息和通道值的函数,定义如下
接着,沿着关联到变量节点的边线将这些传出消息传递到它们在解码块的校验节点群组中相邻的校验节点。作为实例,在第一解码块的变量节点群组中具有阶次dv=4的变量节点vi发送消息Φv(yi,0,0,0)。Φv的许多实施例仍在本公开的范围内,其中Φv可以定义为闭合形式函数、查找表、任意映射或在本发明的范围内考虑的任何其它适用实施例。以此方式,第一解码块中的变量节点群组的所有变量节点都将消息发送到解码块的校验节点群组中的校验节点。
接着,第一解码块的校验节点群组中的校验节点接收消息并使用校验节点更新函数ΦC计算它们的传出消息。本公开的方法中所使用的函数的优选实施例与等式4中所描述的函数相同。如果解码块由整个列块或多个列块组成,那么校验节点群组中的校验节点一从变量节点群组中的相邻变量节点接收它们的消息就计算新传出消息。如果解码块是单个子矩阵块,那么校验节点群组中的校验节点必须一直等到列块中的所有非零子矩阵块在将它们的传出消息发送回到变量节点群组中的变量节点之前都已经被处理为止。随后将在描述用于SSVL解码方法的设备时,在一或多个实施例中论述校验节点更新的高效实施方案。
在第二解码块和后续解码块上重复先前描述的消息的计算和更新,直到整个奇偶校验矩阵都被遍历从而构成一个解码迭代为止,然后解码处理从第一解码块再次重新开始,以便开始下一解码迭代。
在一或多个解码块于变量节点群组和校验节点群组之间传递消息的处理结束时,每个变量节点vi的硬决策估计值进行计算并被发送到验证器,以便校验解码是否已收敛到码字。硬决策估计值是使用函数Ψ确定的,所述函数Ψ将变量节点vi的所有传入消息和通道值yi视为自变量。函数Ψ可以是任意布尔函数或代数函数。假设/>表示阶次dv的变量节点vi的dv个传入消息。在优选实施例中的一个中,Ψ可以定义为所有传入消息和通道值的总和:
其中如果x为正,那么Q(x)=0,如果x为负,那么Q(x)=1。
此外,在方法的一或多个实施例中,整个解码过程使用单个或多个解码级来改进从通道向量y恢复码字时的成功解码速率。解码级由包括在段落0059到0062中呈现的所有步骤(即,初始化、变量节点和校验节点之间消息的更新和传递以及验证)的nl个解码迭代预定义数目定义,并且对于解码级,方法使用VN映射集合和输入。在其中通道向量y作为输入的解码期间,与奇偶校验矩阵相关联的参数相同,但是供解码方法使用的参数针对不同解码级可改变。例如,在方法的一个非限制性实施例中,不同解码级可涉及使用对应于通道值的不同VN映射,以便进一步改进解码方法的错误校正能力。在方法的另一非限制性实施例中,解码方法的输入和所使用的VN映射集合可针对不同解码级改变。下面的描述进一步解释了用于在(例如)两个级的情况下通过所述方法使用多个解码级的机制。
假设VNmap1是供方法用于第一解码级的VN映射集合,VNmap2是供方法用于第二解码级的VN映射集合。还假设表示第一解码级所允许的最大解码迭代次数,假设/>是第二解码级所允许的最大解码迭代次数。如果方法在/>次解码迭代之后在第一解码级中使用VNmap1未能收敛到码字,那么针对另外/>次迭代触发第二解码级。在第二解码级开始时,方法重新初始化为所有消息都设置为零,并且方法的输入是通道值,在第一解码级的第/>次迭代结束时生成硬决策估计值,或在第一解码级的第/>次迭代结束时生成软决策估计值,在下文进一步解释估计值的计算。接着,方法使用VNmap2而不是VNmap1来计算整个第二解码级的变量节点的传出消息。
硬决策估计值或p位软决策估计值或这两者在变量节点处使用定义如下的函数Λ计算
其中L是基数|L|>2的软决策输出字母表。函数Λ将阶次dv的特定变量节点vi的所有dv个传入消息和其通道值yi视为其自变量,以确定变量节点vi的硬决策或软决策估计值λi。如果L的基数只为2,那么λi是硬决策估计值,如果L的基数大于2,那么λi是p位软决策估计值,其中
现在将描述本发明的设备。出于说明和易于解释的目的,考虑QC-LDPC码,其中LxL子矩阵是CPM。尽管出于说明性目的,通过举例的方式可以在特定列块阶次dv的情况下描述设备的一些实施例,但是所属领域的技术人员清楚,所述设备适用于具有固定或可变列权重的LDPC码,以及任何列块阶次dv。设备的优选实施例是在消息是属于有限字母表M={0,±L1,±L2,±L3}的3位消息时。
此外,出于解释的目的,假设当对应于当前经处理码字的通道向量y当前正在供设备用于恢复所述码字时,设备作用于所述特定码字,所述设备将对应于设备中等待处理的下一经处理码字的通道向量视为输入,这在完成当前经处理码字商的解码之后开始。
图3示出实施竖直分层式FAID的本发明的设备的优选实施例,其构成解码器。图3中所描绘的设备示出用于实施三个SSVL、SCVGL和MCVL解码方法的顶层解码器架构,这三个方法分别构成SSVL、SCVGL和MCVL解码器。解码器的输入由从通道向量y提取的X个通道值构成,并且解码器的输出由经解码码字的X个位组成。通道值可以是硬决策输入或nq位软决策输入,并且X对应于特定解码器的解码块为了执行处理所需要的输入的数目。在SSVL解码器的情况下,设备使用奇偶校验矩阵,其中循环大小L可被奇偶校验矩阵的最大列阶次dv除尽,并且存在解码器的X=L/dv个输入和输出。在SCVGL解码器的情况下,存在解码器的X=L个输入和输出,最后在MCVL解码器的情况下,存在解码器的X=W*L个输入和输出,其中W是存在于解码块中的列块的数目,之后将针对本公开的其余部分如此称谓。
图3所示的顶层解码器架构由下文描述的五个主要模块(301,303,304,307,308)和三个存储器块(302,305,306)组成。
·输入控制301:此模块通过接受X个通道值来控制输入。模块还向状态机模块308发送关于通道值的相关信息,包含依据输入是硬决策输入还是nq位软决策输入的解码模式(硬决策或软决策)。模块还负责向初始化模块303和解码环路模块304发送适当的输入。在解码期间使用多个解码级的设备的实施例中,输入控制针对第一解码级发送X个通道值,但是对于后续解码级,它决定是发送通道值的X数据还是作为解码环路模块304的输出从先前解码级生成的硬决策估计值或软决策估计值的X数据。为了向这些模块发送适当的数据,301从状态机308接收命令,并存取代码存储器302以获得与输入数据相关联的相关参数,例如正在处理的列块的索引。
·代码存储器302:此存储器块含有存储关于可供解码器利用的各个不同代码参数的信息以及必须的解码器的经解码码字位的输出次序的存储器单元。在设备的优选实施例中,对于奇偶校验矩阵中的每个列块,代码存储器存储dv个CPM移位值和存在于列块中的非零CPM的dv个地址,以及一些额外控制位。在SCVGL解码器的情况下,302还存储存在于列块中的每个非零CPM的通用行层索引,其指定通用行层内含有非零CPM的行层,以及通用行层内非零CPM的地址。作为实例,在SCVGL解码器的优选实施例中,对于具有奇偶校验矩阵的QC-LDPC码,其中循环大小L=32,dv=4个通用行层由Mb/dv=32个行块和Nb=1024个列块构成,代码存储器将含有以下存储器单元以便存储四个不同参数集合:
-用于存储代码信息以供初始化的40位宽、1024位深的存储器:CPM移位值和地址。
-用于存储代码信息以用于主要环路和验证的40位宽、1024位深的存储器:CPM移位值和地址。
-用于存储必须的位输出次序的10位宽、1024位深的存储器。
·初始化303:在第一解码级中,此模块基于从输入控制模块301接收的X个输入计算通道值的校正子,并向解码环路模块304发送Y个校正子位。在给定时刻由初始化模块输出的校正子位的数目取决于解码器。在SSVL解码器的情况下,Y=L,在SCVGL解码器的情况下,Y=dv*L,并且在MCVL解码器的情况下,Y=Mb*L。在第一解码级以外的后续解码级中,模块基于输入值计算校正子位,所述输入值是输入到设备的通道向量y中的通道值或作为解码环路模块的一个输出在先前解码级中生成的λ中的硬决策或软决策估计值。当处理从第一解码块向下一解码块地遍历奇偶校验矩阵时,校正子位通过在它们的当前值和由初始化模块接收的输入的新位之间执行XOR运算来逐渐更新。一旦303向304发送根据由解码器接收的通道向量y的所有N个输入值计算出的所有校正子位,并且一旦它从状态机308接收‘restart_init’信号,它就能够接受对应于下一经处理码字的下一通道向量。解码环路模块304仍然可以处理当前经处理码字的输入数据和校正子位,同时303开始接受下一经处理码字的多束X个通道值。
·解码环路304:这是负责计算和在SSVL、SCVGL或MCVL解码器的解码块的变量节点群组和校验节点群组之间迭代地传递消息的模块。模块存取存储器块305的VN映射以便载入由图3中的‘writefaid’信号指示的适当VN映射,其用于供变量节点群组更新消息。模块将从初始化模块发送的校正子位以及从输入控制模块301接收的通道值用作输入,以便处理变量节点群组和校验节点群组之间的消息,并将硬决策估计值计算作为发送到验证和输出模块307并发送到输入控制模块301以供下一解码级中的可能使用的输出。在一些优选实施例中,模块还计算同样发送到输入控制模块以供下一解码级中的可能使用的软决策估计值。
·VN映射存储器305:此存储器块存储解码器针对供解码器使用各个不同代码参数和解码模式(硬决策和软决策解码)所需要的所有所需VN映射。存储在此存储器块中的信息总量取决于用于消息的精确度的位的数目ns、存储VN映射的输出值所需要的地址的数目和解码所需要的VN映射的数目。此存储器的宽度取决于解码环路304进行存取所需要的速度。‘writefaid’信号指示304存取305以载入VN映射。
·级存储器306:在利用多个解码级的实施例中,此存储器存储在每个解码级中进行解码所需的信息。存储器单元存储特定解码级所需的所有参数,可包含(但不限于)用于所述级的VN映射,不管来自先前解码级的λ中的通道向量y或估计值是否用作所述解码级的输入,以及用于解码级解码迭代总数nl。存储器单元的宽度和深度取决于供解码器使用的解码级的数目。
·验证和输出307:此模块负责校验它从解码环路304接收的硬决策估计值是否对应于码字,即,校正子是不是零(根据等式2)。模块具有用于存储硬决策估计值的存储器单元,并且在它每次从304接收一束X个硬决策估计值时计算校正子。每当经解码码字存储在它的存储器单元中时或每当它在经过最大所允许nl次的迭代未能收敛到码字之后决定终止解码时,模块307向状态机308发送‘terminate’信号。在发送‘terminate’信号的同时,307向解码器输出发送存储于存储器单元中的硬决策估计值。在本发明的优选实施例中,模块307向存储由多束X位输出的解码器的存储器单元发送硬估计值。
·状态机308:此模块主要负责管理基于存储器305和306中的信息发送到模块(301,303,304,307)的所有控制信号,以及它从模块301和307接收的控制信号。解码器的状态机308使用多个解码级的典型运算如下。如果模块308从验证和输出模块307接收指示解码已经成功的‘terminate’信号,那么308向模块(303,304,307)发送信号以指示当前硬决策估计值可以输出,并且对应于下一经处理码字的通道值可供解码环路304用于处理。它还向301发送接受新的经处理码字的通道值的信号。
如果状态机308从验证和输出模块307接收指示解码失败的‘terminate’信号,那么模块决定是否重新开始及如何重新开始下一解码级的解码。如果308决定开始新的解码级,那么它从305和306存取下一解码级所需的参数,并向模块304和307发送‘restart_main’信号以指示当前经处理码字需要进行开始于新解码级的解码。308还向模块303和304发送关于新解码级的所需信息,也就是针对此解码级304需要存取的VN映射,以及针对此解码级在模块303中需要的λ中的解码器输入y或估计值。
在图4中借助实例描绘了在dv=4的情况下并且当初始化模块的输入是通道值的符号时用作SCVGL解码器的本发明的设备中的顶层解码器架构的部分的初始化模块303的优选实施例。对于SCVGL解码器,因为奇偶校验矩阵被构造成dv=4个通用行层,所以校正子是由dv=4个不同子向量构成的向量,其中每个子向量含有构成每个通用行层的行块的校正子位。此模块303由下文描述的桶形移位器(401-404)、XOR单元(405-408)和校正子存储器单元(409-412)组成。
·桶形移位器(401-404):dv个桶形移位器接收对应于后文称为通道符号的通道值的符号的一组L个位,并且以某一量循环地置换那些位,所述量取决于列块中的dv个非零CPM的PCM移位值。
·XOR和校正子存储器:dv个通用行层的校正子位存储在dv个校正子存储器(409-412)中,其中每个存储器具有宽度L和通过每个通用行层内的行块的数目给定的深度,所述数目等于Mb/dv。存储器中的校正子位通过执行存储器的内容物和经移位通道符号之间的XOR来更新。以此方式,当继续接收每一束新的X个通道值的通道符号使,校正子位通过(405-408)更新,并存储在(409-412)中。一旦处理遍历过所有解码块,并且所有通道符号都已经被处理,通道向量y的最终校正子就存储在dv个校正子存储器中。校正子位保持在存储器中,直到接收到restart_init信号为止,在这之后,从dv个存储器将校正子发出到解码环路模块304。
在图5中借助实例示出在dv=4、W=2的情况下和当初始化模块的输入是通道值的符号时用作针对MCVL解码器的本发明的设备中的顶层解码器架构的部分的初始化模块303的优选实施例。MCVL解码器的初始化模块含有一些与SCVGL解码器情况下相同的单元,即桶形移位器(501-508)、XOR单元511,并且还含有额外的扩展单元509和510。此外,在优选实施例中,校正子位存储在一组Mb*L个寄存器512而不是存储器中。
因为MCVL解码器的解码块由奇偶校验矩阵的W个列块构成,所以在此模块的输入处存在L*W个通道符号。L个通道符号的每个群组对应于一个列块,列块首先通过桶形移位器单元循环地置换,其中对应的CPM移位值由代码存储器302提供。扩展单元509在第一组桶形移位器(501-504)的输出处采用dv*L个经移位通道符号,并将它们放置在长度为Mb*L的寄存器中的正确位置,即,行索引对应于进行处理的dv个CPM。扩展单元510利用桶形移位器(505-508)的输出以相同方式继续进行。XOR单元511将扩展单元的输出处的通道符号组合在一起,并组合存储在校正子存储器512中的校正子位。
在图6中借助实例示出在模块的输入是通道值的符号的情况下用作针对SSVL解码器的本发明的设备中的顶层解码器架构的部分的初始化模块303的优选实施例。此模块含有以下单元:收集器单元601、桶形移位器602、XOR单元603和校正子存储器单元64。单元(602-604)的作用与图4的SCVGL解码器情况下的相同。收集器单元601负责收集通道符号并将它们转移到桶形移位器。
在SSVL解码器中,通道符号分成L/dv位的群组到达初始化模块303的输入。收集器单元601收集dv个此类群组,并组合它们以获得通道符号的L个位,其对应于含有进行处理的非零CPM的列块。所收集的符号通过602以经处理解码块的CPM移位值进行桶形移位。接着,L个校正子位在CPM的地址处更新,方式与段落0070中的相同。
在图7中借助实例示出在dv=4的情况下用作针对SCVGL解码器的本发明的设备中的顶层解码器架构的部分的验证和输出模块307的优选实施例。模块由以下在下文描述的单元组成。
·移位寄存器701:移位寄存器具有L位的宽度和等于验证器中的管线级的数目的深度。它逐L位地存储正由模块接收的硬决策估计值,同时验证器正在确定硬决策估计值是否构成码字。
·改变存储器702:改变存储器含有一系列最近计算出的硬决策估计值。例如,当模块接收对应于第j个列块的L个硬决策估计值时,改变存储器含有当前迭代的硬决策估计值,其中对于所有块,k<j,同时它含有先前迭代的硬决策估计值,对于所有块,k≥j。此实例假设解码块的处理有规律地从j=1到j=Nb完成,并且解码块的任何其它处理次序将遵循相同原理。当第j个列块的L个新硬决策估计值到达模块307的输入时,703利用先前迭代的对应值(存储在702中)执行XOR运算。因此,XOR单元703输出在当前迭代和先前迭代之间硬决策估计值的‘改变’。除了XOR运算之外,对应于当前迭代的第j个列块的L个新硬决策估计值存储在改变存储器702中。因此,进入单元的其余部分的数据流719由硬决策估计值的改变构成,而不是由硬决策估计值自身构成。
·桶形移位器(704-707)和校正子存储器(712-715):dv个桶形移位器以所述特定列的CPM移位值循环地置换由XOR单元703产生的数据。接着,校正子位通过XOR单元708-711从它们存储在存储器(712-715)中的先前值更新。更新后的校正子位存储在校正子存储器中,并被发送到零校正子校验模块716。因为在SCVGL解码器中,PCM组织成dv个通用行层,校正子位分裂成dv个子集,其中每个子集存储在不同的校正子存储器中。例如,712存储对应于第一通用行层的校正子位。类似地,桶形移位器704只负责处理第一通用行层的CPM。因此,校正子存储器各自具有L位的宽度和等于通用行层中的行块的数目的深度,即Mb/dv
·零校正子校验716:零校正子校验单元基于L个新硬决策估计值影响的校正子值的改变而校验整个校正子向量是否全为零。它向终止器单元717发送指示解码器是否已收敛到码字的信号。
·终止器717:终止器单元基于它从零校正子校验单元716接收的信号而决定是否终止解码。如果它接收校正子是零的信号,那么它向状态机模块308发送‘terminate’信号,并且它还向输出存储器718指示硬决策估计值可以作为经解码码字输出。如果它接收校正子不是零的信号,并且已经达到当前解码级的最大迭代次数,那么它向状态机308发送终止信号,以及指示触发下一解码级或停止解码(已经达到最大级数目的情况下)的信号。
·输出存储器718:此存储器块具有两个目的。第一,它存储准备好从解码器输出的当前经解码码字。当在解码器下游的模块或系统准备好接收经解码码字时,经解码码字以L个位的群组输出。输出存储器还开始收集下一经解码码字的硬决策估计值。接着,存储器可存储两个经解码码字,具有L个位的宽度和2*Nb的深度。
在图8中借助实例示出在dv=4和W=2的情况下用作针对MCVL解码器的本发明的设备中的顶层解码器架构的部分的验证和输出模块307的优选实施例。架构类似于段落0075的SCVGL解码器的情况,差异与段落0070和0071中针对初始化模块303实施的相同。MCVL解码器的验证和输出模块将L*W个硬决策估计值视为经解码码字的输入和输出L*W个位。它主要含有与SCVGL解码器相同的基本单元。参考段落0075中的描述来使细节完整:
·移位寄存器单元814具有与701相同的作用,
·改变存储器单元802具有与702相同的作用,
·数据流819含有从先前到当前迭代的硬决策估计值的改变,就像719,
·桶形移位器单元(803-810)具有与704-707相同的作用。因为MCVL解码器的解码块由W个列块构成,所以现在模块中需要dv*W=8个桶形移位器,
·两个扩展单元(811-812)将桶形移位器连接到单个XOR单元813。因为在MCVL解码器中,校正子位存储在寄存器中,校正子寄存器块815含有整个PCM的Mb*L个校正子位。
·零校正子校验单元816具有与716相同的作用,
·终止器单元817具有与717相同的作用,
·输出存储器单元818具有与718相同的作用,但它一次输出L*W个位。
在图9中借助实例示出在dv=4的情况下用作针对SSVL解码器的本发明的设备中的顶层解码器架构的部分的验证和输出模块307的优选实施例。架构类似于段落0075的SCVGL解码器的情况,差异与段落0070和0073中针对初始化模块303实施的相同。SSVL解码器的验证和输出模块将L/dv个硬决策估计值视为经解码码字的输入和输出L/dv个位。它主要含有与SCVGL解码器相同的基本单元。参考段落0075中的描述来使细节完整:
·移位寄存器单元903具有与701相同的作用,
·改变存储器单元902具有与702相同的作用,
·在XOR单元901的输出处,存在额外收集器904,用于收集硬决策估计值的L/dv位的每个群组,直到对应于PCM的列块的硬决策估计值的L个位被模块接收为止。它们向桶形移位器发送dv次,因为列块中存在对应于那些L个收集的硬决策估计值的dv个非零CPM。
·桶形移位器单元905具有与704-707相同的作用。应注意,在SSVL解码器中,模块中只需要一个桶形移位器。
·XOR单元906和校正子存储器单元907更新正处理的CPM的L个校正子位,
·零校正子校验单元908具有与716相同的作用,
·终止器单元909具有与717相同的作用,
·输出存储器单元910具有与718相同的作用,但它一次输出L/dv个位。
现在详细地描述顶层解码器架构的解码环路模块304。在图10中借助实例示出在dv=4的情况下和当模块的输入包括通道值时用作针对SCVGL解码器的本发明的设备中的顶层解码器架构的部分的解码环路模块的优选实施例。此模块的主要单元是:变量节点处理器1020、校验节点处理器(1008-1011)、桶形移位器(1004-1007)和(1012-1019)、移位寄存器单元1003、通道符号存储器1001和通道量值存储器1002。它们在下文描述。
·通道符号存储器1001:通道符号存储器是存储当前供解码环路模块使用的当前经处理码字的通道值的符号以及下一经处理码字的通道值的符号的存储器单元。存储器单元具有宽度L和等于2*Nb的深度。
·通道量值存储器1002:通道量值存储器是存储表示通道值的量值(后文为易于解释将其称为通道量值)的位的存储器单元。通道量值是从进入模块的L个通道值计算出来的。在单元1001中,当前经处理码字的通道值和下一经处理码字的通道值的量值均存储在1002中。通道量值存储器具有宽度L*(nq-1)和等于2*Nb的深度,其中nq是用于表示通道值的精确度的位的数目。
·变量节点处理器1020:变量节点处理器(VNP)单元负责计算解码块中的变量节点群组的传出消息以及硬决策估计值和软决策估计值(如果解码级中的解码器使用的话)。单元通过桶形移位器(1012-1015)接收来自1001的通道符号、来自1002的通道量值以及来自校验节点处理器(CNP)(1008-1011)的ns位消息作为输入。它还从状态机接收‘writefaid’信号,其指示在当前解码级期间应该使用的VN映射。单元通过桶形移位器(1016-1019)计算发送回到dv个CNP的VNP的传出消息。它还计算发送到验证和输出模块307的硬决策估计值及软决策估计值。当状态机决定触发新解码级时,将硬决策估计值和软决策估计值发送回到输入控制模块303。
·校验节点处理器(1008-1011):校验节点处理器(CNP)单元负责计算解码块中的校验节点群组的传出消息。在SCVGL解码器中,存在dv个CNP,每个CNP用于计算对应于奇偶校验矩阵中的通用行层的校验节点的传出消息。例如,在图10中,CNP 1008计算对应于第一通用行层中的行块的校验节点的传出消息。每个CNP通过桶形移位器(1016-1019)从VNP接收L个ns位消息,从桶形移位器(1004-1007)接收L个经移位通道符号,并接收对应于CPM的行的L个校正子位。在第一次解码迭代期间需要通道符号来从校正子位计算CNP的传出消息。一旦CNP中的消息经处理,它们就通过桶形移位器(1012-1015)发送回到VNP。
·桶形移位器:存在三组dv个桶形移位器用于解码环路模块。每组负责循环地置换存在于正处理的列块中的CPM的消息或通道符号。当PCM组织成通用行层并且每个通用行层含有单个CPM时,每组中的dv个桶形移位器指派给不同通用行层。例如,桶形移位器(1004,1012,1016)正处理第一通用行层中的数据。桶形移位器组(1012-1015)根据所述列块的CPM移位值将ns位的L个消息从VNP置换到CNP。一组桶形移位器(1004-1007)置换所述列块中的通道符号的L个位。一组桶形移位器(1015-1019)根据所述列块的逆CPM移位值将L个ns位消息从CNP置换到VNP。
·移位寄存器1003:移位寄存器用于调节发送到VNP的L个通道符号的数据流,使得VNP接收对应于与VNP从CNP接收的消息相同的解码块的通道符号。移位寄存器的深度取决于遍历一系列单元(桶形移位器-CNP-桶形移位器)所需要的时钟循环数,所述时钟循环数自身取决于用于CNP单元的管线级的数目。
SCVGL解码器的图10中所示的优选实施例中的解码环路模块通过接收校正子的dv束L个位来开始解码过程。接着,这些数据流发送到dv个CNP,并用于初始化CNP中所含的存储器。在校正子位已经存储在CNP中之后,通道符号的L个位从通道符号存储器单元1001读取,通过(1004-1007)移位,并被发送到CNP(1008-1011)。CNP生成传出消息,传出消息接着以逆CPM移位值(1015-1019)经桶形移位,并被发送到VNP 1020。如等式4中所见,CNP更新使用从VNP获得的消息的符号以计算传出消息。在第一次迭代中,那些符号尚不可用,它们从读取自通道符号存储器1001的经桶形移位的通道符号推断。在第二次迭代和后续迭代,CNP使用它们从VNP接收的消息的符号,而不是通道符号。
当CNP的输出处的消息可用时,VNP存取dv束L个ns位消息,以及来自移位寄存器1003的相同块列的通道符号的L个位和来自1002的L个通道量值。VNP生成通过桶形移位器(1012-1015)发送到dv个CNP的dv束L个ns位消息。VNP还计算发送到验证和输出模块307的硬决策估计值。在一些优选实施例中,VNP还计算发送到输入控制模块303以用于下一解码级的软决策估计值。
解码环路模块以此方式继续在VNP和CNP之间迭代地交换最新更新的消息,直到解码环路模块从状态机308接收到指示当前解码级完成(成功或失败)的‘restart’信号为止。
在图11中借助实例示出在dv=4、W=2的情况下和当模块的输入包括通道值时用作针对MCVL解码器的本发明的设备中的顶层解码器架构的部分的解码环路模块304的优选实施例。架构类似于图10的SCVGL解码器的情况,其中相同单元组成模块:通道符号和量值存储器、CNP和VNP单元、桶形移位器和移位寄存器。所需要的桶形移位器的总数是3*dv*W,其中第一组dv*W个桶形移位器置换通道符号,其它两组dv*W个桶形移位器置换ns位消息。解码环路模块还含有W个VNP,而不是SCVGL解码器情况下的一个。与SCVGL解码器的另一差异在于只存在一个CNP模块,而不是dv个模块,因为对于MCVL解码器,PCM不组织成通用行层。
解码环路模块接受L*W个通道值的群组,并从初始化模块303接收Mb*L个校正子位。模块输出发送到验证和输出模块307的L*W个硬决策估计值,并且在一些优选实施例中,它还输出发送到输入控制模块303以用于下一解码级的L*W个软决策估计值。VNP、CNP和其它单元的作用与SCVGL情况中的相同,更多细节见段落0078和0079。
在图12中借助实例示出在dv=4的情况下和当模块的输入包括通道值时用作针对SSVL解码器的本发明的设备中的顶层解码器架构的部分的解码环路模块304的优选实施例。架构类似于图10的SCVGL解码器的情况,其中相同单元组成模块:通道符号和量值存储器、CNP和VNP单元、桶形移位器和移位寄存器,除了这些相同单元之外,还存在收集器1204和两个缓冲器单元1206和1207。
因为SSVL解码器一次处理一个列块中的单个CPM,所以只需要一个从CNP到VNP置换消息的桶形移位器1209,以及从VNP到CNP的一个桶形移位器1210。还需要单个桶形移位器1208来使通道符号移位。解码环路模块接受L/dv个通道值的群组和来自初始化模块303的校正子位,并输出L/dv个硬决策估计值的群组。在一些优选实施例中,模块还输出L/dv个软决策估计值。
收集器1204收集dv束L/dv个通道符号,组合它们并形成向桶形移位器1208传输dv次的单束L个通道符号。缓冲器1206的目的是重新布置将消息从CNP传输到VNP的次序。因为CNP一次处理一个循环,所以它采用dv个连续步骤来输出给定列块的dv*L个消息。VNP无法处理解码块的变量节点群组中的变量节点,除非它已经接收到这些dv*L个消息,但是接收次序不同于从CNP输出的次序。例如,第一解码块对应于所述列块的L/dv个第一变量节点,其处理需要L个消息的每个群组内从CNP输出的L/dv个第一消息。缓冲器1206确保VNP接收每个解码块的一组适当消息。类似地,缓冲器1207用于将一组适当的消息从VNP发送到CNP。除了使用收集器和缓冲器,此模块中的单元的其余部分具有与先前描述的SCVGL解码器情况相同的作用。
在图13中示出用作本发明的设备中的解码环路模块304的部分的VNP单元的优选实施例。实施例可针对SCVGL解码器中的单元1020、MCVL解码器中的单元1129-1130和SSVL解码器中的单元1205供这三个解码器使用。
VNP单元将来自一或多个CNP的经移位输出的dv束X个消息、X个通道符号和X个通道量值视为输入。VNP由X个变量节点单元(VNU)(1301-1303)组成,它们基于在段落00010中定义的VN映射而生成输出消息。VNP单元输出将通过桶形移位器发送回到一或多个CNP的dv束X个消息,以及X个硬决策估计值。在一些优选实施例中,它还输出X个软决策估计值。每束中的消息的数目在SCVGL解码器的情况下是X=L,在SSVL解码器的情况下是X=L/dv。在MCVL解码器情况下,每束中的消息的数目是X=L,但是因为解码环路模块还含有W个并行处理的VNP单元,所以VNP计算L*W个消息。
在图14中借助实例示出在dv=4的情况下和当解码环路模块的输入包括通道值时用于本发明的设备中的解码环路模块304的VNP(1020,1129,1130,1205)的VNU 1301-1303的优选实施例。所描述的VNU的优选实施例对于SCVGL、MCVL和SSVL这三个解码器来说是相同哦。下文描述如图14中所示的VNU的各种组件。
·硬/软决策1401:此单元接收dv个消息以及通道符号和通道量值作为输入,以便计算硬决策估计值。硬决策估计值发送到验证和输出模块307,在触发新解码级时,还发送到输入控制模块303。在一些优选实施例中,还计算软决策估计值以用于下一解码级。存在许多所属领域的技术人员可以考虑的用于实施此单元的实施例,例如后跟着量化的输入的查找表或加权和,或任何另一非线性函数,并且所有这些实施例都是此设备的部分。
·翻转消息符号1402和1411:此单元用于翻转消息的符号,使得需要存储在VN映射存储器305中的VN映射的数目减少。在实施例中,如果存储在VN映射存储器单元305中的VN映射对应于通道输出字母表的负通道值,那么当通道值为正时,翻转消息符号单元1402翻转输入到VNU的dv个消息,使得VN更新单元(1407-1410)中只需要VN映射如段落0058中所解释。类似地,当通道值为正时,另一翻转消息符号单元1411用于翻转最新计算出的输出消息,以便确保根据等式3,输出消息具有正确符号。
·获得地址(1403-1406)和VN更新(1407-1410):变量节点更新(VN更新)单元基于用于当前解码级的VN映射而确定输出消息。在SCVL、MCVL和SSVL这三个解码器的情况下,VNU并行计算dv个消息,因此需要dv个VN更新单元(1407-1410)。每个VN更新单元是存储对应于VN映射的所有可能输入的ns位输出的存储器单元。获得地址单元(1403-1406)基于dv-1个输入消息和通道量值而确定在VN更新单元中需要存取的适当地址。获得地址单元将dv-1个ns位输入消息变换成随后由其存储器中的VN更新单元存取的地址以发送输出消息。每个VN更新单元中的存储器的宽度是ns,它的深度取决于通道值的精确度。例如,对于通道值来自具有基数4的通道输出字母表的软决策解码器,即Y={±Y1,±Y2},存储器的深度是硬决策解码器的两倍。来自VN映射存储器模块305的‘writeFAID’信号将用于当前解码级的VN映射写入到VN更新单元存储器中。
基于目标应用产生高效实施方案的VN更新单元的许多优选实施例是可能的,并且被视为在本发明的范围内。尽管在图14中借助于实例使用VN更新存储器描述VNU的优选实施例,但是所属领域的技术人员可以轻易地将此实施方案扩展到可包含组合逻辑电路、求和算子或此类与其它逻辑和存储器单元的组合的其它实施例。
在图15中借助实例示出在解码环路模块的输入包括通道值的情况下用作针对SCVGL解码器的本发明的设备中的解码环路模块304的部分的CNP模块1020的优选实施例,其在SSVL解码器的情况下是相同的。CNP模块的输入是来自VNP的经桶形移位的输出的L个输入消息、将用于第一次迭代的L个通道符号,和L个校正子位。模块在两个单独部分中计算L个输出消息:1)从在图15中也称为消息符号的传入消息的符号生成输出消息的符号,和2)从在图15中也称为消息量值的输入消息的量值生成输出消息的量值。
CNP模块1020通过存储和更新解码块中正处理的校验节点群组中的校验节点的校正子位和量值状态来计算输出消息。校验节点群组中阶次dc的校验节点的量值状态由传入消息的单个或多个量值以及它们相应的边线索引组成。量值状态内的边线索引指示dc个边线中连接到此校验节点的哪一个含有对应于所存储量值的传入消息。CNP模块的优选实施例的各个单元在下文示出。
·控制器1509:此单元负责通过将第一数据载入到在第一次解码迭代中不含任何数据的存储器(1506-1507)和(1512-1513)中来初始化CNP。单元接收从初始化模块303发送的L个校正子位,并输出校验节点群组中的校验节点的初始校正子位和初始量值状态。初始校正子位设置成正由单元接收的L个校正子位的值,并且初始量值状态设置成属于消息字母表M的值。在第一次迭代时量值状态的选定值是任意的,并且并且可以针对给定QC-LDPC码优化,以最大化解码器的错误校正能力。两个多路复用器(1505和1511)在第一次迭代开始时选择初始校正子位和初始量值状态,随后它们被发送到适当的存储器单元。
·符号存储器1501:此存储器单元存储将供XOR单元1504用于下一解码迭代并且用于计算生成器1508中的输出消息的符号的L个输入消息的符号。此存储器的宽度是L,并且它的深度取决于所使用的解码器。深度是PCM中的列块的数目,对于SCVGL解码器来说等于Nb,对于SSVL解码器来说等于dv*Nb
·符号选择器1502:此单元选择适当的符号来用于生成输出消息并更新CNP中的校正子位。在第一次解码迭代中,符号选择器选择通过解码环路模块中的桶形移位器来自通道符号存储器1001单元的符号。对于第一次迭代之后的所有后续迭代,符号选择器选择来自符号存储器1501的消息符号。
·移位寄存器1503:此单元用于调节来自符号选择器1502的输出的符号流,使得存储在符号存储器1501中的来自先前迭代的消息的符号与对应于XOR单元1504中的相同边线的当前迭代的消息的符号组合。移位寄存器的深度取决于用于解码环路模块304的管线级的数目。
·XOR 1504:此单元在当前解码迭代中由CNP接收的消息的符号和存储在移位寄存器中表示来自先前解码迭代的相同消息的符号的符号之间执行XOR运算。此XOR运算的结果对应于不同迭代之间消息符号的改变。接着,使用XOR,组合符号的这一改变与来自更新器校正子存储器1506的校正子位的当前值以便更新是XOR模块的输出的校正子位。在第一次迭代中,CNP从VNP接收它的第一消息,并且消息符号与来自通道符号存储器的初始符号组合。接着,将更新后的校正子位存储在更新器校正子存储器块1506以及生成器校正子存储器块1507中。
·更新器校正子存储器1506和生成器校正子存储器1507:这是两个用于存储均含有相同数据的校验节点的校正子位的存储器块。它们均具有L个位的宽度和取决于解码器的深度。深度等于通用行层中块行的数目,对于SCVGL解码器来说等于Mb/dv,对于SSVL解码器来说,深度等于Mb。更新器校正子存储器1506用于存取校正子位以便确定更新后的校正子位,而生成器校正子存储器1506用于存取校正子位以便确定进入生成器单元1508的CNP的输出消息的符号(或输出消息符号)。使用两个单独的存储器块允许同时存取两个不同的地址,一个用于更新校正子位,另一个用于生成输出消息符号。
·更新器量值状态存储器1513和生成器量值状态存储器1512:这是两个存储均含有相同信息的校验节点的量值状态的存储器块。类似于更新器校正子存储器1506和生成器校正子存储器1507的原因,存取更新器量值状态存储器1513以更新量值状态,存取生成器量值状态存储器1512以确定进入生成器单元1508的CNP的输出消息的量值(或输出消息量值)。在CNP的优选实施例中,校验节点的量值状态包括校验节点在解码期间接收的传入消息的所有量值当中最低的两个量值以及它们相应的边线索引。出于解释的目的,所述最低的两个量值表示为mag1和mag2,它们相应的索引表示为index1和index2。对含有大量最低量值的量值状态的任何通用化也被视为本发明的部分。在此优选实施例中,存储器1513和1512具有等于的宽度,因为需要ns-1个位来存储一个消息量值,并且需要/>个位来存储一个边线索引。存储器的深度取决于解码器:对于SCVGL解码器来说,它是Mb/dv,对于SSVL解码器来说,它是Mb。在另一优选实施例中,index2的值不存储在生成器量值状态存储器1512中,因为这在生成输出消息时是不需要的。在此情况下,存储器1512具有等于/> 的宽度。
·量值状态更新器1510:此单元用于基于传入消息的量值而更新校验节点群组中的每个校验节点的量值状态。单元读取来自更新器量值状态存储器1513的旧量值状态,依据从VNP发送的输入消息的量值而确定更新后的量值状态,然后将更新后的量值状态写入到更新量值状态存储器1513和生成器量值状态存储器1512中。在CNP的优选实施例中,如果量值状态由[mag1,mag2,index1,index2]构成,那么量值状态更新器1510继续以以下方式计算新量值状态。
对于正处理的校验节点群组中的校验节点,量值状态更新器1510从VNP接收单个消息,其具有量值magnew和索引indexnew
1.首先,单元校验当前索引indexnew是否对应于存储在量值状态中的索引。
2.如果(indexnew=index1),那么更新后的量值状态是[magnew,mag2,indexnew,index2](若(magnew≤mag2)),或者[mag2,magnew,index2,indexnew](若(magnew>mag2))。
3.如果(indexnew=index2),那么更新后的量值是[magnew,mag1,indexnew,index1](若(magnew≤mag1)),或者[mag1,magnew,index1,indexnew](若(magnew>mag1))。
4.如果当前索引不对应于任一个所存储的索引,那么更新后的量值状态是[magnew,mag1,indexnew,index1](若(magnew≤mag1)),或者[magi,magnew,index1,indexnew](若(magnew>mag1)且(magnew≤mag2)),或者[mag1,mag2,index1,index2](若(magnew>mag2))。
·生成器1508:此单元通过存取来自生成器校正子存储器1507的校正子位、来自生成器量值状态存储器1512的量值状态和来自符号选择器1502的符号而确定从CNP发出的输出消息的符号和量值。对于正处理的校验节点群组中的校验节点,生成器1508通过桶形移位器向VNP发送对应于连接到校验节点的一组dc个边线中索引indexout的消息。在CNP的优选实施例中,当量值状态由[mag1,mag2,index1,index2]构成时,如果输出边线索引indexout匹配边线索引index1,那么输出消息量值将是mag2。否则输出消息量值将是mag1。输出消息的符号通过在由符号选择器1502选定的消息符号和存储在生成器校正子存储器1507中的所述校验节点的校正子位之间执行XOR运算来确定。接着,通过桶形移位器将通过生成器确定的L个输出消息发送到解码环路模块304中的VNP。
在CNP的另一优选实施例中,使用单个三端口存储器1606(一个写入两个读取存储器),而不是作为更新器校正子存储器1506和生成器校正子存储器1507的两个存储器块,如图16中借助实例在解码环路模块的输入包括通道值的情况下所示。类似地,使用单个三端口存储器1608(一个写入两个读取的存储器),而不是作为更新器量值状态存储器1513和生成器量值状态存储器1512的两个存储器块,如图16中借助实例在解码环路模块的输入包括通道值的情况下所示。单元的其余部分与图15中的情况相同。
在图17中借助实例示出在解码环路模块的输入包括通道值的情况下用作针对MCVL解码器的本发明的设备中的解码环路模块304的部分的CNP 1020的优选实施例。架构类似于图15的SCGVL/SSVL解码器,但模块接受W*dv*L个输入消息、W*L个通道符号和Mb*L个校正子位。图17中除了扩展单元(1704,1706,1713)和合约单元1711以外的不同单元的功能性对于SCGVL/SSVL解码器来说是相同的,如段落0092中所描述。
扩展单元采用dv*L个数据的W群组中的每一个,并在长度为Mb*L的寄存器中将它们放置在对应于当前列块中正处理的dv个CPM的行的位置处。对于扩展单元1704,数据输入包括通道符号或消息符号,对于1706,数据输入包括消息符号的改变,并且对于1706,数据输入包括消息量值。合约单元1711将逆运算实施为扩展单元,即,它从Mb*L个数据的W个寄存器中的每一个当中提取,所述dv*L个数据对应于当前列块中正处理的CPM。
现在描述本发明的另一设备。图18示出其中顶层解码器架构不包括初始化模块的设备的另一实施例。设备的此实施例对于低吞吐量应用来说可以是优选的,以进一步减少硬件资源使用。在如图18中所描绘的此架构中,输入控制的输出发送到现在负责初始化解码过程的解码环路模块。因此,解码环路模块和解码环路模块内使用的CNP相较于包括初始化模块的设备中所使用的模块具有一些差异。然而,其余所有模块的作用都与包括初始化模块的先前设备中所描述的相同。
在图19中借助实例示出在dv=4的情况下和当模块的输入是通道值时用作针对SCVGL解码器的不包括初始化模块的设备中的顶层解码器架构的部分的解码环路模块1804的优选实施例。模块1804通过以下方式利用第一次解码迭代来执行解码过程的初始化步骤。
当通道值到达解码环路模块的输入时,它们的符号和量值均存储在通道存储器1901中并被立即发送到VNP 1914。VNP通过桶形移位器(1910-1913)确定发送到CNP(1902-1905)的初始消息。那些初始消息在CNP中用于计算校正子位和量值状态的初始值。CNP直到它们从每个变量节点接收到消息,也就是说直到已经计算出整个经处理码字的校正子位,才开始将消息发送回到VNP。一旦校正子计算使用所有通道值完成并且可在CNP处供我们使用,并且也已经计算出初始量值状态,CNP就通过桶形移位器(1906-1909)将它们的输出消息发送到VNP,并且模块中的处理继续以类似于如段落0078-0079中所描述的解码环路模块304的方式在VNP和CNP之间迭代地进行。在SCVGL解码器的情况下针对解码环路模块呈现的修改同样以类似方式应用于MCVL和SSVL解码器。
在图20中借助实例示出当解码环路模块1804的输入是通道值并且架构用于SCVGL和SSVL解码器时用于不包括初始化模块的设备的解码环路模块1804的CNP单元(1902-1905)的优选实施例。相比于先前设备的CNP单元(1008-1011),此实施例中的CNP单元不再需要通道值的符号,因为在第一次解码迭代期间计算出的和从VNP发送的消息符号足以计算初始校正子位。类似地,CNP不包括控制器单元,因为校验节点的校正子位和量值状态在解码环路模块中的第一次迭代期间进行计算。CNP的架构的其余部分与段落0092中的描述相同。
虽然已参考说明性实施例描述了本发明,但此描述并不意图限制本发明。对于本发明所属领域的技术人员来说显而易见的是,所描述的实施例的各种修改以及本发明的其它实施例被认为是在如在所附权利要求书中表达的本发明的原理和范围内。
一些实施例可被实施为基于电路的过程,包含关于单个集成电路的可能实施方案。
除非另有明确陈述,否则每个数值和范围应解释为近似值,就像词“约”或“大致”在所述值或范围的值之前一样。
应进一步理解,在不脱离如在所附权利要求中表达的本发明的范围的情况下,所属领域的技术人员可对已进行描述和说明以便解释本发明的性质的各部分的细节、材料和布置进行各种改变。
尽管在所附方法权利要求(如果存在)中的元件按对应标记以特定顺序叙述,但除非权利要求叙述另外暗示用于实施那些元件中的一些或全部的特定顺序,否则那些元件不一定意在限于以所述特定顺序实施。
描述和图式仅说明本发明的原理。因此将了解,所属领域的技术人员将能够设计各种布置,尽管本文中未明确地描述或展示所述布置,但其体现本发明的原理且包含在本发明的范围内。此外,本文中所列举的所有实例主要明确地意在用于教学目的以辅助读者理解本发明的原理以及由本发明人所提供的概念,从而深化本领域,且所有实例应解释为不限于此类具体列举的实例和条件。此外,本文中叙述本发明的原理、方面和实施例的所有陈述以及其特定实例希望涵盖其等效内容。
还应了解,所附权利要求书意图涵盖本文中描述的本发明的所有通用和特定特征,以及对本发明的范围的所有陈述,所述陈述按照语言可称为属于所述范围。
图中所示的各个元件的功能可以通过使用专用硬件或电路以及能够执行与适当的软件相关联的软件的硬件来提供,所述元件包含标记为或称为“模块”、“处理器”、“架构”、“单元”、“移位器”、“控制器”、“寄存器”和“更新映射”的任何功能块。此外,对这些术语的明确使用不应解释为只提及能够执行软件的硬件,而是可以隐含地包含但不限于数字信号处理器(DSP)硬件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)和非易失性存储装置。也可包含常规和/或定制的其它硬件。此类硬件可以用半导体技术(例如基于硅、锗或镓的技术)\光子技术以及新兴技术(例如,化学、生物或量子技术)物理地实施。
所属领域的技术人员应了解,本文中的任何框图表示体现本发明的原理的说明性电路系统的概念视图。类似地,应了解,任何流程图、流程图、状态迁移图、示意图、伪代码等等表示可以大体上在计算机可读媒体中表示并因此由计算机或处理器执行的各个过程,而不管此类计算机或处理器有没有明确地示出。

Claims (30)

1.一种用于低密度奇偶校验LDPC码的竖直分层式有限字母表迭代解码的方法,包括:
接收属于通道输出字母表的通道值作为输入;
迭代地处理构成多个解码块的奇偶校验矩阵的一或多个子矩阵,其中所述处理包含:按照任意次序从列块内的一个解码块向另一解码块地依序遍历奇偶校验矩阵或按照任意次序跨一或多个列块遍历奇偶校验矩阵;计算、更新和传递属于有限字母表的消息,其中所述消息在与所述解码块中的所述一或多个子矩阵相关联的变量节点和校验节点之间迭代地传递;以及使用一或多个变量节点更新函数来计算所述变量节点的传出消息;
基于由所述变量节点接收的所述消息计算硬决策估计值;校验所述硬决策估计值是否构成码字;以及
根据所述硬决策估计值构成码字,输出所述码字。
2.根据权利要求1所述的方法,另外包括接收构成用于硬决策解码的硬决策输入的通道值作为输入。
3.根据权利要求1所述的方法,另外包括接收构成用于软决策解码的软决策输入的通道值作为输入。
4.根据权利要求1所述的方法,另外包括接收通道值作为输入,其中所述通道值属于具有基数4的通道输出字母表。
5.根据权利要求1所述的方法,另外包括使用多个解码级,其中从先前解码级生成的位值的估计值用作当前解码级中的输入。
6.根据权利要求1所述的方法,另外包括使用多个解码级,以及在每个解码级中使用一或多个不同变量节点更新函数来计算变量节点的所述传出消息。
7.根据权利要求1所述的方法,另外包括使用校验节点更新函数,所述校验节点更新函数通过只使用传入消息的最低两个量值以及它们对应的边线索引来计算校验节点的所述传出消息的量值。
8.根据权利要求1所述的方法,另外包括在与解码块相关联的变量节点和校验节点之间迭代地传递3位消息。
9.根据权利要求1所述的方法,对于单子矩阵竖直分层式解码,另外包括:
处理构成解码块的单个非零子矩阵,其中,所述处理按照任意次序从所述奇偶校验矩阵的列块内的一个解码块遍历到另一解码块;并且按照任意次序跨所述奇偶校验矩阵的不同列块遍历。
10.根据权利要求1所述的方法,对于通用型单列竖直分层式解码,包括:
作用于具有由通用行层构成的结构的奇偶校验矩阵,其中通用行层的数目至少等于最大列块阶次;以及
处理构成解码块的所述奇偶校验矩阵的整个单个列块,其中所述处理按照任意次序跨所述奇偶校验矩阵的所述列块从一个解码块遍历到另一解码块。
11.根据权利要求1所述的方法,对于多列竖直分层式解码,包括:
处理构成解码块的所述奇偶校验矩阵的一或多个列块的群组,其中,所述处理按照任意次序跨所述奇偶校验矩阵的列块的所述群组从一个解码块遍历到另一解码块。
12.一种用于低密度奇偶校验LDPC码的竖直分层式有限字母表迭代解码器的设备,包括:
初始化模块,其计算校正子位;
解码环路模块,其计算、更新和在一或多个变量节点处理器和一或多个校验节点处理器之间迭代地传递与解码块相关联且属于有限字母表的消息,并向验证和输出模块发送硬决策估计值;以及
验证和输出模块,其接收所述硬决策估计值,校验所述硬决策估计值是否对应于码字,并且根据所述硬决策估计值对应于所述码字,输出所述码字。
13.根据权利要求12所述的设备,其中设备输入是构成用于硬决策解码的硬决策输入的通道值。
14.根据权利要求12所述的设备,其中设备输入是构成用于软决策解码的软决策输入的通道值。
15.根据权利要求12所述的设备,其中设备输入是来自具有基数4的通道输出字母表的通道值。
16.根据权利要求12所述的设备,其中在一或多个变量节点处理器和一或多个校验节点处理器之间迭代地传递的所述消息是3位消息。
17.根据权利要求12所述的设备,对于通用型单列竖直分层式解码器,其中:
解码作用于具有由通用行层构成的结构的奇偶校验矩阵,其中通用行层的数目至少等于最大列块阶次;以及
在构成解码块的所述奇偶校验矩阵的整个单个列块上进行处理,并且所述处理按照任意次序跨所述奇偶校验矩阵的所述列块从一个解码块遍历到另一解码块。
18.根据权利要求12所述的设备,对于多列竖直分层式解码器,其中在构成解码块的奇偶校验矩阵的一或多个列块的群组上进行处理,并且所述处理按照任意次序跨所述奇偶校验矩阵的列块的所述群组从一个解码块遍历到另一解码块。
19.根据权利要求12所述的设备,对于单子矩阵竖直分层式解码器的方法,其中在构成解码块的单个非零子矩阵上进行处理;且
所述处理按照任意次序从列块内的一个解码块向另一解码块地和跨奇偶校验矩阵的不同列块地遍历。
20.根据权利要求12所述的设备,其中,所述解码器使用多个解码级,并且所述初始化模块在解码级开始时接收通道值的符号作为其输入。
21.根据权利要求12所述的设备,其中,所述解码器使用多个解码级,并且所述初始化模块在解码级开始时接收从先前解码级生成的估计值的符号作为其输入。
22.根据权利要求12所述的设备,其中,所述解码器使用多个解码级,并且在解码级开始时的所述解码环路模块的输入包括通道值。
23.根据权利要求12所述的设备,其中,所述解码器使用多个解码级,并且在解码级开始时的所述解码环路模块的输入包括从先前解码级生成的估计值。
24.根据权利要求12所述的设备,其中,所述解码器使用多个解码级,并且所述解码环路模块在解码级中生成估计值以用于下一解码级。
25.根据权利要求12所述的设备,另外包括供所述变量节点处理器使用的变量节点更新单元,其中:
存储器单元存储表示变量节点更新函数的每个映射的可能输出值;且
单元依据所述变量节点的通道值的符号翻转输入到所述变量节点更新单元的所述消息的符号以便减少存储于所述存储器单元中的映射的数目。
26.根据权利要求12所述的设备,其中所述解码环路模块中的每个校验节点处理器包括:
各自用于存储所述校验节点的校正子位的两个存储器单元,其中第一存储器单元经存取以更新所述校正子位,并且第二存储器单元经存取以生成所述校验节点处理器的输出消息的符号;以及
用于存储所述校验节点的量值状态的两个存储器单元,其中校验节点的量值状态由其传入消息的多个量值以及它们相应的边线索引组成,并且其中第一存储器单元经存取以更新所述校验节点的量值状态,并且第二存储器单元经存取以生成所述校验节点处理器的所述输出消息的量值。
27.根据权利要求12所述的设备,其中所述解码环路模块中的每个校验节点处理器包括:
用于存储所述校验节点的所述校正子位的单个存储器单元,其经存取以更新所述校正子位并生成所述校验节点处理器的输出消息的符号;以及
用于存储所述校验节点的量值状态的单个存储器单元,其中校验节点的量值状态由传入消息的多个量值以及它们相应的边线索引组成,并且其中所述存储器单元经存取以更新所述校验节点的所述量值状态并生成所述校验节点处理器的所述输出消息的所述量值。
28.根据权利要求12所述的设备,其中存储在所述校验节点处理器的一或多个存储器单元中的校验节点的量值状态只包含其所有传入消息的量值当中最低的两个量值以及它们相应的边线索引。
29.根据权利要求17所述的设备,其中所述解码环路模块包含校验节点处理器,其中基数等于奇偶校验矩阵的通用行层的数目。
30.一种用于低密度奇偶校验LDPC码的竖直分层式有限字母表迭代解码器的设备,包括:
解码环路模块,其计算、更新和在与解码块相关联的一或多个变量节点处理器和一或多个校验节点处理器之间迭代地传递属于有限字母表的消息,并向验证和输出模块发送硬决策估计值;以及
验证和输出模块,其接收所述硬决策估计值,校验所述硬决策估计值是否对应于码字,并且根据所述硬决策估计值对应于所述码字,输出所述码字。
CN201880061486.6A 2017-07-31 2018-07-31 竖直分层式有限字母表迭代解码 Active CN111615793B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762539476P 2017-07-31 2017-07-31
US62/539,476 2017-07-31
US16/049,724 US10530392B2 (en) 2017-07-31 2018-07-30 Vertical layered finite alphabet iterative decoding
US16/049,724 2018-07-30
PCT/US2018/044691 WO2019028072A1 (en) 2017-07-31 2018-07-31 VERTICAL LAYER FINAL ALPHABET ICE DECODING

Publications (2)

Publication Number Publication Date
CN111615793A CN111615793A (zh) 2020-09-01
CN111615793B true CN111615793B (zh) 2024-06-07

Family

ID=65230441

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880061486.6A Active CN111615793B (zh) 2017-07-31 2018-07-31 竖直分层式有限字母表迭代解码

Country Status (4)

Country Link
US (2) US10530392B2 (zh)
EP (1) EP3662581A4 (zh)
CN (1) CN111615793B (zh)
WO (1) WO2019028072A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10700708B2 (en) * 2015-11-05 2020-06-30 Shenzhen Epostar Electronics Limited Co. Permutation network designing method, and permutation circuit of QC-LDPC decoder
US10530392B2 (en) * 2017-07-31 2020-01-07 Codelucida, Inc. Vertical layered finite alphabet iterative decoding
WO2020028873A1 (en) 2018-08-03 2020-02-06 Codelucida, Inc. Method and apparatus for encoding quasi-cyclic low-density parity check codes
KR20200122064A (ko) * 2019-04-17 2020-10-27 에스케이하이닉스 주식회사 오류 정정 회로 및 이를 포함하는 메모리 컨트롤러
KR20210004185A (ko) * 2019-07-03 2021-01-13 에스케이하이닉스 주식회사 메모리 시스템
US11050442B2 (en) * 2019-09-17 2021-06-29 SK Hynix Inc. Reducing the latency of a syndrome-based quasi-cyclic decoder
KR20210061504A (ko) 2019-11-19 2021-05-28 삼성전자주식회사 에러 정정 회로, 및 그것을 동작하는 방법
JP7051024B2 (ja) * 2020-02-27 2022-04-08 三菱電機株式会社 復号方法、復号装置、制御回路およびプログラム記憶媒体
FR3108221B1 (fr) * 2020-03-11 2022-03-11 Commissariat Energie Atomique Méthode de décodage de codes ldpc à inversion de bits et effet inertiel
US11496155B2 (en) * 2020-04-09 2022-11-08 Codelucida, Inc. Method and apparatus for vertical layered decoding of quasi-cyclic low-density parity check codes using predictive magnitude maps
TW202205815A (zh) 2020-06-10 2022-02-01 美商科得魯西達股份有限公司 用於自循環置換矩陣之叢集建構之準循環低密度奇偶檢查碼之垂直分層解碼之方法及裝置
US11316532B1 (en) * 2020-12-17 2022-04-26 SK Hynix Inc. Decoding of low-density parity-check codes with high-degree variable nodes
CN114785451B (zh) * 2021-01-22 2023-10-31 深圳富桂精密工业有限公司 上行图像分割多址接入传输的接收方法、装置及存储介质
US20220303047A1 (en) * 2021-03-17 2022-09-22 Qualcomm Incorporated Network coding to mitigate blockage with spatial division multiplexing beams
US11394403B1 (en) * 2021-08-23 2022-07-19 Micron Technology, Inc. Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices
US11929762B2 (en) 2021-11-24 2024-03-12 Samsung Electronics Co., Ltd. Low density parity check decoder and storage device
US11664821B1 (en) * 2022-02-08 2023-05-30 SK Hynix Inc. Error floor performance of a bit flipping decoder through identifying unreliable check nodes
TWI804347B (zh) * 2022-06-16 2023-06-01 慧榮科技股份有限公司 編碼器與快閃記憶體控制器
TWI831333B (zh) * 2022-08-18 2024-02-01 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法
CN117097559B (zh) * 2023-10-17 2023-12-19 天津德科智控股份有限公司 Eps转向角度报文传输验证方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582697A (zh) * 2008-02-23 2009-11-18 澜起科技(上海)有限公司 低密度奇偶校验(ldpc)解码器
CN101951264A (zh) * 2010-08-31 2011-01-19 宁波大学 一种多码率准循环低密度奇偶校验码解码器
CN103155421A (zh) * 2011-01-14 2013-06-12 马维尔国际贸易有限公司 Ldpc多解码器架构

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2335001A (en) 1999-12-20 2001-07-03 Research In Motion Limited Hybrid automatic repeat request system and method
DK2190123T3 (da) 2002-07-03 2012-05-29 Dtvg Licensing Inc Fremgangsmåde og system til generering af Low Density Parity Check (LDPC) koder
KR100918763B1 (ko) 2003-11-14 2009-09-24 삼성전자주식회사 병렬 연접 저밀도 패리티 검사 부호를 사용하는 채널 부호화/복호 장치 및 방법
US7281192B2 (en) * 2004-04-05 2007-10-09 Broadcom Corporation LDPC (Low Density Parity Check) coded signal decoding using parallel and simultaneous bit node and check node processing
US7506238B2 (en) 2004-08-13 2009-03-17 Texas Instruments Incorporated Simplified LDPC encoding for digital communications
US8006161B2 (en) * 2005-10-26 2011-08-23 Samsung Electronics Co., Ltd Apparatus and method for receiving signal in a communication system using a low density parity check code
KR100975558B1 (ko) * 2006-05-03 2010-08-13 삼성전자주식회사 통신 시스템에서 신호 송수신 장치 및 방법
FR2904499B1 (fr) * 2006-07-27 2009-01-09 Commissariat Energie Atomique Procede de decodage a passage de messages avec ordonnancement selon une fiabilite de voisinage.
KR101395778B1 (ko) 2007-03-14 2014-05-19 삼성전자주식회사 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
CN101350625B (zh) * 2007-07-18 2011-08-31 北京泰美世纪科技有限公司 一种高效通用的qc-ldpc码译码器及其译码方法
US8161345B2 (en) 2008-10-29 2012-04-17 Agere Systems Inc. LDPC decoders using fixed and adjustable permutators
KR101570472B1 (ko) 2009-03-10 2015-11-23 삼성전자주식회사 연접 부호화 및 복호화 구조를 갖는 데이터 처리 시스템
US8458556B2 (en) * 2009-10-09 2013-06-04 Stmicroelectronics, Sa Low complexity finite precision decoders and apparatus for LDPC codes
US8918694B2 (en) 2011-02-28 2014-12-23 Clariphy Communications, Inc. Non-concatenated FEC codes for ultra-high speed optical transport networks
US9015550B2 (en) 2012-10-05 2015-04-21 Lsi Corporation Low density parity check layer decoder for codes with overlapped circulants
US8977939B2 (en) * 2012-12-21 2015-03-10 Lsi Corporation Majority-tabular post processing of quasi-cyclic low-density parity-check codes
US9100052B2 (en) 2013-02-01 2015-08-04 Samsung Electronics Co., Ltd. QC-LDPC convolutional codes enabling low power trellis-based decoders
US9385753B2 (en) * 2013-02-14 2016-07-05 Marvell World Trade Ltd. Systems and methods for bit flipping decoding with reliability inputs
US9048867B2 (en) 2013-05-21 2015-06-02 Lsi Corporation Shift register-based layered low density parity check decoder
US9459956B2 (en) 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
EP2833553B1 (en) * 2013-07-30 2021-03-31 Alcatel Lucent LDPC decoder
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation
RU2014104571A (ru) 2014-02-10 2015-08-20 ЭлЭсАй Корпорейшн Системы и способы для эффективного с точки зрения площади кодирования данных
EP3001585B1 (en) * 2014-09-29 2017-07-12 Alcatel Lucent Optical coherent receiver with forward error correction and parallel decoding
US20160365873A1 (en) * 2015-06-09 2016-12-15 Broadcom Corporation Non-Binary LDPC Codes Over Non-Associative Finite Division Near Rings
US9806743B2 (en) * 2015-11-16 2017-10-31 Mitsubishi Electric Research Laboratories, Inc. System and method of belief propagation decoding
US10367526B2 (en) 2015-11-23 2019-07-30 Avago Technologies International Sales Pte. Limited Irregular low density parity check processing system with non-uniform scaling
US10110249B2 (en) * 2016-08-23 2018-10-23 Sandisk Technologies Llc Column-layered message-passing LDPC decoder
US10594339B2 (en) 2017-02-03 2020-03-17 Huawei Technologies Co., Ltd. Method for generating parity check matrix for low density parity check coding
EP3373488B1 (en) 2017-03-07 2020-05-06 Commissariat à l'Energie Atomique et aux Energies Alternatives Stopping criterion for decoding quasi-cyclic ldpc codes
US10530392B2 (en) * 2017-07-31 2020-01-07 Codelucida, Inc. Vertical layered finite alphabet iterative decoding
WO2020028873A1 (en) 2018-08-03 2020-02-06 Codelucida, Inc. Method and apparatus for encoding quasi-cyclic low-density parity check codes
TW202205815A (zh) 2020-06-10 2022-02-01 美商科得魯西達股份有限公司 用於自循環置換矩陣之叢集建構之準循環低密度奇偶檢查碼之垂直分層解碼之方法及裝置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101582697A (zh) * 2008-02-23 2009-11-18 澜起科技(上海)有限公司 低密度奇偶校验(ldpc)解码器
CN101951264A (zh) * 2010-08-31 2011-01-19 宁波大学 一种多码率准循环低密度奇偶校验码解码器
CN103155421A (zh) * 2011-01-14 2013-06-12 马维尔国际贸易有限公司 Ldpc多解码器架构

Also Published As

Publication number Publication date
US20200220557A1 (en) 2020-07-09
WO2019028072A1 (en) 2019-02-07
EP3662581A4 (en) 2020-08-05
US20190044537A1 (en) 2019-02-07
US11381255B2 (en) 2022-07-05
CN111615793A (zh) 2020-09-01
EP3662581A1 (en) 2020-06-10
US10530392B2 (en) 2020-01-07

Similar Documents

Publication Publication Date Title
CN111615793B (zh) 竖直分层式有限字母表迭代解码
KR100899738B1 (ko) 노드 메모리 기반의 ldpc 복호기 및 복호방법
CN104868925B (zh) 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
US10298261B2 (en) Reduced complexity non-binary LDPC decoding algorithm
CN107370490B (zh) 结构化ldpc的编码、译码方法及装置
US10367526B2 (en) Irregular low density parity check processing system with non-uniform scaling
US20060020870A1 (en) Layered decoding of low density parity check (PDPC) codes
WO2016112857A1 (zh) Ldpc码编码器和译码器
WO2002103631A1 (en) Methods and apparatus for decoding ldpc codes
US20170041024A1 (en) Method and apparatus for reducing idle cycles during ldpc decoding
US11258460B2 (en) Method and apparatus for vertical layered decoding of quasi-cyclic low-density parity check codes built from clusters of circulant permutation matrices
WO2007018590A1 (en) Method and apparatus for block and rate independent decoding of ldpc codes
KR20070003294A (ko) 준순환 저밀도 패리티 검사 부호의 생성 방법 및 장치
WO2009053942A2 (en) Method, apparatus, computer program product and device providing semi-parallel low density parity check decoding using a block structured parity check matrix
US9853661B2 (en) On-the-fly evaluation of the number of errors corrected in iterative ECC decoding
US10128869B2 (en) Efficient convergence in iterative decoding
KR101657912B1 (ko) 비이진 저밀도 패리티 검사 코드의 복호화 방법
Oh et al. Efficient highly-parallel decoder architecture for quasi-cyclic low-density parity-check codes
Kakde et al. FPGA implementation of decoder architectures for high throughput irregular LDPC codes
Ren et al. An NB-LDPC decoder algorithm combined using channel information for storage application
US11996862B2 (en) High performance decoder
TW202203238A (zh) 使用預測性量值映射以用於準循環低密度奇偶校驗碼之垂直分層解碼之方法及設備
Nakhjavani FPGA Micro-Architecture-Code Co-Design For Low-Density Parity-Check Codes For Flash Memories
KR20230029168A (ko) 비이진 저밀도 패리티 검사 코드 디코더, 그것의 동작방법 및 메모리 시스템
Choi et al. An LDPC decoder architecture for multi-rate QC-LDPC codes

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant