CN107872231B - Ldpc译码方法与装置 - Google Patents
Ldpc译码方法与装置 Download PDFInfo
- Publication number
- CN107872231B CN107872231B CN201610861791.6A CN201610861791A CN107872231B CN 107872231 B CN107872231 B CN 107872231B CN 201610861791 A CN201610861791 A CN 201610861791A CN 107872231 B CN107872231 B CN 107872231B
- Authority
- CN
- China
- Prior art keywords
- minimum value
- variable
- node
- decoding
- check node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
提供了LDPC译码方法与装置。公开的LDPC译码的方法,包括:接收码字;为进行第i次迭代译码,对于每个校验节点L,用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中若校验节点L是第i次迭代译码中的最后一个校验节点,还记录所有变量节点的符号的数量;计算最小值与次最小值,用因子α更新最小值与次最小值,并记录提供最小值的变量节点;用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中i是正整数;对变量节点进行硬判决译码,以及依据所记录的所有变量节点的符号的数量更新因子α。
Description
技术领域
本发明涉及低密度奇偶校验码(Low Density Parity Check Code,LDPC)译码方法,更具体地,本发明涉及对基于最小和算法的LDPC译码过程的优化。
背景技术
LDPC码是一种纠错编码,与其他纠错编码相比,在相同的码率下,LDPC码具有纠错能力强、收敛速度快的特点,因此是现阶段SSD(固态驱动器,Solid State D rive)控制器领域最佳的纠错编码。
LDPC码是一种二进制分组码,采用超稀疏矩阵作为校验矩阵。校验矩阵中每行(每列)中非零元素稀少。对于任何合法的码字V,码字V与校验矩阵H的乘积为零。现有技术中用Tanner图描述LDPC码。Tanner图由两类节点组成,一类是变量节点,一类是校验节点。每个变量节点对应码字的一个比特,每个校验节点对应校验矩阵H的一行。变量节点与校验节点的连线对应校验矩阵里的“1”。图1是LDPC码的Ta nner图。在迭代译码过程中,译码器利用校验节点和变量节点的约束关系进行迭代译码。各变量节点的输入为接收序列对应的对数似然比,以及校验节点上一次迭代的输出;随后,变量节点的输出通过“连线”送到相应的校验节点,在利用校验节点的约束关系进行译码。在这个过程中,一种节点的输出成为另一种节点的输入,矩阵中非零元素所对应的“连线”成为这两种节点交换信息的通道。在中国专利CN101615913 B中提供了LDPC码的一种译码方法,将其全文通过引用并入本发明。
常见的LDPC译码算法包括:置信传播算法(Belief Propagation,BP),最小和算法(Min-Sum)和比特反转算法(Bit Flip)等。而最小和算法和基于最小和算法的改进算法由于其硬件时间简单,且具有足够好的纠错性能在SSD控制器领域被广泛采用。
AN-MS(Adaptive Normalize Min-Sum Algorithm)算法是一种基于最小和算法改进的迭代译码算法。它是一种纠错能力强,且比较易于硬件实现的LDPC译码算法。AN-MS算法的核心译码过程包括两部分:变量节点处理与校验节点处理。在一次迭代中需要完成变量节点处理与校验节点处理。如果迭代后译码结果正确则完成译码,否则开始下一次迭代,直到译码成功或者超过预设的最大迭代次数。
AN-MS算法的特点是在Min-Sum算法的校验节点处理中增加了一个可变的因子α,因子α和Min-Sum算法计算得到的值做乘法运算,得到的结果作为AN-MS算法的校验节点处理结果。α因子的值是由上一次迭代得到的译码结果与校验矩阵做矩阵乘法得到的结果矩阵中1的个数决定的。
AN-MS算法的详细介绍参见“Wu X,Song Y,Cui L,et al.Adaptive-normali zedmin-sum algorithm[C],20102nd International Conference on Future Computer andCommunication.2010.”,将其全文通过引用并入本发明。
发明内容
在AN-MS算法中,由于α的值需要等待译码完成且码字校验结束才能确定,因此:(1)如果码字校验速度慢,则影响α值的确定,从而影响LDPC译码收敛速度,也影响LDPC译码吞吐量;(2)如果采用大规模的并行码字校验快速确定α的值,硬件实现难度大,且硬件资源消耗大。需要在LDPC码迭代译码过程中更早与更快速地获得α值。
根据本发明第一方面,提供了根据本发明第一LDPC译码的方法,包括:接收码字;为进行第i次迭代译码,对于每个校验节点L,用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中若校验节点L是第i次迭代译码中的最后一个校验节点,还记录所有变量节点的符号的数量;计算最小值与次最小值,用因子α更新最小值与次最小值,并记录提供最小值的变量节点;用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中i是正整数;对变量节点进行硬判决译码,以及依据所记录的所有变量节点的符号的数量更新因子α。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第二LDPC译码的方法,还包括:仅在硬判决译码指示第i次迭代译码失败时,才进行第i+1次迭代译码;或者响应于第i次迭代译码完成,在得到硬判决译码结果之前,启动第i+1次迭代译码。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第三LDPC译码的方法,其中依据所记录的所有变量节点的符号的数量更新因子α,包括用所有变量节点的符号的数量作为索引,从映射表中获得因子α。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第四LDPC译码的方法,其中若所访问的NVM的当前寿命小于阈值,仅在第i次迭代译码失败时,才进行第i+1次迭代译码;以及若所访问的NVM的当前寿命大于阈值,响应于第i次迭代译码完成,在得到硬判决译码结果之前,启动第i+1次迭代译码。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第五LDPC译码的方法,其中因子α的初始值为1。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第六LDPC译码的方法,其中为计算最小值与次最小值,依据最小和算法计算与校验节点L相连接的各个变量节点提供给校验节点L的外信息的最小值与次最小值。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第七LDPC译码的方法,其中用记录的最小值或次最小值更新后的与校验节点L相连接的变量节点,作为变量节点提供给校验节点L的外信息。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第八LDPC译码的方法,其中为用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,对于提供了最小值的第一变量节点,从第一变量节点中减去次最小值来更新第一变量节点,以及对于未提供最小值的第二变量节点,从第二变量节点中减去最小值来更新第二变量节点。
根据本发明第一方面的LDPC译码的方法,提供了根据本发明第一方面的第九LDPC译码的方法,其中为用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,对于提供了更新的最小值的第三变量节点,将第三变量节点与更新的次最小值相加来更新第三变量节点,以及对于未提供更新的最小值的第四变量节点,用第四变量节点与更新的最小值相加来更新第四变量节点。
根据本发明第二方面,提供了根据本发明第二方面的LDPC译码装置,包括:接收模块,用于接收码字;迭代译码模块,用于为进行第i次迭代译码,对于每个校验节点L,用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中若校验节点L是第i次迭代译码中的最后一个校验节点,还记录所有变量节点的符号的数量;计算最小值与次最小值,用因子α更新最小值与次最小值,并记录提供最小值的变量节点;用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中i是正整数;硬判决译码模块,用于对变量节点进行硬判决译码,以及因子α更新模块,用于依据所记录的所有变量节点的符号的数量更新因子α。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是LDPC码的Tanner图;以及
图2根据本发明实施例的LDPC译码方法的流程图。
具体实施方式
图2根据本发明实施例的LDPC译码方法的流程图。响应于收到长度为N(N为正整数)的码字R(200),开始对码字R进行译码。作为举例,码字R是从固态硬盘的非易失存储器(NVM,Non-Volatile Memory)中读出的数据。
将码字R转换为对数似然比LLR(R),并初始化变量节点、变量节点输出给校验节点的外信息以及校验节点输出给变量节点的外信息,以及初始化因子α=1。
开始迭代译码过程,记录迭代次数(i)(210)。在每次迭代译码中,对于Tanner图中的每个校验节点,进行步骤220到步骤250的处理。在步骤220,选择校验节点L。接下来,更新与当前校验节点L(在Tanner图中)相连接的各个变量节点(230)。为更新变量节点,从变量节点减去记录的最小值或次最小值。最小值与次最小值是校验节点L输出给变量节点的外信息,是依据最小和算法计算的与当前校验节点L相连接的各个变量节点提供给校验节点L的外信息的最小值与次最小值,以及用因子α同最小和算法计算得到的值做乘法运算。以及还同校验节点L相关联地记录向校验节点L提供最小值的变量节点Vm与向变量节点L提供次最小值的变量节点Vm’。在第一次迭代时,使用各节点的初始化信息计算最小值与次最小值。在更新变量节点时,对于提供了最小值的变量节点Vm,在更新变量节点时,从变量节点减去记录的次最小值。而对于未提供最小值的其他变量节点,在更新其变量节点时,从变量节点减去记录的最小值。以更新后的变量节点作为步骤240中用于更新最小值与次最小值的变量节点提供给校验节点的外信息。在根据本发明的实施例中,在每次迭代译码处理最后一个校验节点时,还记录并统计所有变量节点的符号。变量节点的符号是用于指示变量节点是正数还是负数的符号。统计的变量节点的符号数量在第i次迭代译码完成后更新因子α。
在步骤240,更新最小值与次最小值。最小值与次最小值是校验节点L输出给变量节点的外信息。依据最小和算法计算的与当前校验节点L相连接的各个变量节点提供给变量节点L的外信息的最小值与次最小值。用因子α同最小和算法计算得到的值做乘法运算。以及还记录提供了最小值与次最小值的变量节点(或变量节点的索引)。在第i次迭代中,因子α由第i-1次迭代时步骤240所得到的变量节点的符号的数量决定。通过比较正数符号和/或负数符号的个数与指定阈值的关系,得到因子α。可选地,维护查找表,依据正数符号和/或负数符号的个数,从查找表中得到对应的因子α。依据本发明的实施例,在完成1次迭代后,依据变量节点的符号确定因子α,而无需依赖于耗时的码字校验过程,从而消除了在AN-MS算法中两次迭代之间要等待码字校验结果来计算因子α所造成的延迟,提高了译码速度,增大了LDPC译码器的吞吐量。
在步骤250,再次更新与当前校验节点L相连接的变量节点。将变量节点加上更新后的最小值或次最小值。在更新变量节点时,对于提供了最小值的变量节点Vm,在更新变量节点时,将变量节点Vm加上记录的次最小值。而对于未提供最小值的其他变量节点,在更新其变量节点时,将变量节点加上记录的最小值。
接下来,判断是否对所有校验节点执行了步骤220到步骤250的处理。如果在第i次迭代译码中,还存在未处理的校验校验,通过重复步骤220到步骤250对下一校验节点进行处理。
在步骤260,对变量节点进行硬判决译码。若译码成功,输出译码得到的码字,译码过程结束,译码完成。若译码失败,以及迭代次数尚未达到指定阈值,启动下一次(例如使迭代译码的索引i递增为i+1)迭代译码(返回步骤210)。以及可选地,在步骤250之后步骤260之前,启动第i+1次迭代译码,而不等待硬判决译码的结果。从而取消两次迭代译码之间的等待时间,加快译码速度。若在起动第i+1次迭代译码后,硬判决译码成功,则终止第i+1次迭代译码。
在进一步的实施例中,依据NVM芯片或被读取的物理地址的状态(擦写次数、读取次数、温度、数据保持时间、生命周期阶段等)选择在步骤260的译码策略。例如,在NVM芯片的生命周期早期,其存储数据的故障率较低,译码过程所需的迭代译码次数较少,则在步骤260等待硬判决译码的结果,仅在译码失败时才启动第i+1次译码,以降低迭代译码的能量开销。而在NVM芯片的生命周期后期,所存储数据的故障率较高,译码过程所需的平均迭代译码次数较高,则在步骤260,不依赖于硬判决译码的结果而启动第i+1次迭代译码,以降低两次迭代译码间的等待时间。
可由软件、硬件、固件、FPGA(现场可编程门阵列,Field Programmable GateArray)和/或ASIC(应用专用集成电路,Application Specific Integrated Circuit)等实现根据本发明实施例的LDPC译码方法。以及根据本发明实施例的LDPC译码方法可应用于基于NVM芯片的固态存储设备,包括但不限于固态硬盘、U盘、SD卡,还可以应用于手机、平板电脑等便携式电子设备,以及其他多种使用NVM芯片(诸如NAND闪存)的需要存储信息的电子设备。根据本发明实施例的LDPC译码方法还可应用于通信、磁存储、光存储等使用的LDPC码的设备或服务。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。
Claims (10)
1.一种LDPC译码的方法,包括:
接收码字;
为进行第i次迭代译码,对于每个校验节点L,用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中若校验节点L是第i次迭代译码中的最后一个校验节点,还记录所有变量节点的符号的数量;计算最小值与次最小值,用因子α更新最小值与次最小值,并记录提供最小值的变量节点;用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中i是正整数;
对变量节点进行硬判决译码,以及
依据所记录的所有变量节点的符号的数量更新因子α。
2.根据权利要求1所述的方法,还包括:
仅在硬判决译码指示第i次迭代译码失败时,才进行第i+1次迭代译码;或者
响应于第i次迭代译码完成,在得到硬判决译码结果之前,启动第i+1次迭代译码。
3.根据权利要求1-2之一所述的方法,其中依据所记录的所有变量节点的符号的数量更新因子α,包括用所有变量节点的符号的数量作为索引,从映射表中获得因子α。
4.根据权利要求1-2之一所述的方法,其中
若所访问的NVM的当前寿命小于阈值,仅在第i次迭代译码失败时,才进行第i+1次迭代译码;以及
若所访问的NVM的当前寿命大于阈值,响应于第i次迭代译码完成,在得到硬判决译码结果之前,启动第i+1次迭代译码。
5.根据权利要求1-2之一所述的方法,其中因子α的初始值为1。
6.根据权利要求1-2之一所述的方法,其中为计算最小值与次最小值,依据最小和算法计算与校验节点L相连接的各个变量节点提供给校验节点L的外信息的最小值与次最小值。
7.根据权利要求6所述的方法,其中用记录的最小值或次最小值更新后的与校验节点L相连接的变量节点,作为变量节点提供给校验节点L的外信息。
8.根据权利要求1-2之一所述的方法,其中为用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,对于提供了最小值的第一变量节点,从第一变量节点中减去次最小值来更新第一变量节点,以及对于未提供最小值的第二变量节点,从第二变量节点中减去最小值来更新第二变量节点。
9.根据权利要求1-2之一所述的方法,其中为用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,对于提供了更新的最小值的第三变量节点,将第三变量节点与更新的次最小值相加来更新第三变量节点,以及对于未提供更新的最小值的第四变量节点,用第四变量节点与更新的最小值相加来更新第四变量节点。
10.一种LDPC译码的装置,包括:
接收模块,用于接收码字;
迭代译码模块,用于为进行第i次迭代译码,对于每个校验节点L,用记录的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中若校验节点L是第i次迭代译码中的最后一个校验节点,还记录所有变量节点的符号的数量;计算最小值与次最小值,用因子α更新最小值与次最小值,并记录提供最小值的变量节点;用更新后的最小值或次最小值更新与校验节点L相连接的各个变量节点,其中i是正整数;
硬判决译码模块,用于对变量节点进行硬判决译码,以及因子α更新模块,用于依据所记录的所有变量节点的符号的数量更新因子α。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610861791.6A CN107872231B (zh) | 2016-09-28 | 2016-09-28 | Ldpc译码方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610861791.6A CN107872231B (zh) | 2016-09-28 | 2016-09-28 | Ldpc译码方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107872231A CN107872231A (zh) | 2018-04-03 |
CN107872231B true CN107872231B (zh) | 2023-04-28 |
Family
ID=61761873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610861791.6A Active CN107872231B (zh) | 2016-09-28 | 2016-09-28 | Ldpc译码方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107872231B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117040546A (zh) * | 2018-04-24 | 2023-11-10 | 北京忆芯科技有限公司 | 低延迟ldpc译码器及其译码方法 |
CN111694764B (zh) * | 2020-05-29 | 2023-03-14 | 四川效率源信息安全技术股份有限公司 | 一种故障固态硬盘的数据读取方法 |
CN113055028B (zh) * | 2021-03-18 | 2022-05-17 | 北京得瑞领新科技有限公司 | Ldpc解码方法、解码器、解码装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101094000A (zh) * | 2007-06-20 | 2007-12-26 | 北京大学 | 一种基于peg算法的时不变ldpcc码的构造方法及其编译码器 |
CN105763203A (zh) * | 2016-02-14 | 2016-07-13 | 广西大学 | 一种基于硬可靠度信息的多元ldpc码译码方法 |
CN105846830A (zh) * | 2015-01-14 | 2016-08-10 | 北京航空航天大学 | 数据处理装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012118766A1 (en) * | 2011-02-28 | 2012-09-07 | Clariphy Communications, Inc. | Non-concatenated fec codes for ultra-high speed optical transport networks |
-
2016
- 2016-09-28 CN CN201610861791.6A patent/CN107872231B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101094000A (zh) * | 2007-06-20 | 2007-12-26 | 北京大学 | 一种基于peg算法的时不变ldpcc码的构造方法及其编译码器 |
CN105846830A (zh) * | 2015-01-14 | 2016-08-10 | 北京航空航天大学 | 数据处理装置 |
CN105763203A (zh) * | 2016-02-14 | 2016-07-13 | 广西大学 | 一种基于硬可靠度信息的多元ldpc码译码方法 |
Non-Patent Citations (1)
Title |
---|
A Relaxed Min-Sum LDPC Decoder With Simplified Check Nodes;Saied Hemati等;《IEEE》;20160112;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107872231A (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10298261B2 (en) | Reduced complexity non-binary LDPC decoding algorithm | |
US9432053B1 (en) | High speed LDPC decoder | |
JP4038519B2 (ja) | 統合ノード処理を用いる低密度パリティ検査符号の復号方法及び装置 | |
US9294132B1 (en) | Dual-stage data decoding for non-volatile memories | |
US8869003B2 (en) | Method, apparatus, computer program product and device providing semi-parallel low density parity check decoding using a block structured parity check matrix | |
TWI592937B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20110191653A1 (en) | Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size | |
EP2307960A1 (en) | Error-floor mitigation of codes using write verification | |
US8751895B2 (en) | Semiconductor memory device and decoding method | |
US20170294217A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
JP5723975B2 (ja) | Ldpcコードの復号のための方法、システム、およびプログラム | |
CN107872231B (zh) | Ldpc译码方法与装置 | |
US8832525B2 (en) | Memory controller with low density parity check code decoding capability and relevant memory controlling method | |
US9564921B1 (en) | Method and system for forward error correction decoding based on a revised error channel estimate | |
US20170134049A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20200091933A1 (en) | Iterative decoding with early termination criterion that permits errors in redundancy part | |
US10790854B2 (en) | Coset probability based majority-logic decoding for non-binary LDPC codes | |
US9590658B1 (en) | High-speed low-power LDPC decoder design | |
KR101631128B1 (ko) | 크기조정 상수를 사용하는 가변 노드 업데이터를 갖는 ldpc 디코더 | |
CN111769839B (zh) | 快速的比特翻转译码方法 | |
CN110708077B (zh) | Ldpc码大数逻辑译码方法、装置和译码器 | |
EP4072023A1 (en) | Decoding method, decoder, and decoding device | |
CN108322225B (zh) | 基于互信息的ldpc译码方法与装置 | |
RU2747050C1 (ru) | Способ декодирования данных на основе LDPC кода | |
CN111211792B (zh) | Turbo译码方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |