CN111769839B - 快速的比特翻转译码方法 - Google Patents
快速的比特翻转译码方法 Download PDFInfo
- Publication number
- CN111769839B CN111769839B CN201910253874.0A CN201910253874A CN111769839B CN 111769839 B CN111769839 B CN 111769839B CN 201910253874 A CN201910253874 A CN 201910253874A CN 111769839 B CN111769839 B CN 111769839B
- Authority
- CN
- China
- Prior art keywords
- bit
- decoding
- codeword
- flipping
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 127
- 239000011159 matrix material Substances 0.000 claims abstract description 131
- 208000011580 syndromic disease Diseases 0.000 claims abstract description 83
- 238000004422 calculation algorithm Methods 0.000 description 65
- 230000006870 function Effects 0.000 description 32
- 230000008569 process Effects 0.000 description 20
- 238000012795 verification Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000012937 correction Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
本申请公开了比特翻转译码方法,包括:根据伴随式矩阵验证待译码的码字的正确性;若待译码的码字不正确则进行迭代译码,包括:根据伴随式矩阵中非零元素的数量设置阈值;根据反演函数的值与阈值的比较结果确定需要翻转的一个或多个比特;翻转需要翻转的比特以更新待译码的码字。
Description
技术领域
本申请涉及信息解码技术,特别地,涉及对用于LDPC译码算法的比特翻转译码方法的改进。
背景技术
错误校正码(Error Corrected Code,ECC)在信息处理技术中被广泛使用,以识别和校正信息存储、传输乃至计算过程中产生的错误。
例如,非易失存储介质一般都不是完全可靠的介质,读出数据和写入数据会有差别,需要通过ECC技术保证用户得到准确的数据。现有技术中采用例如低密度奇偶校验码(LDPC,Low Density Parity Check Code)来保护非易失存储介质中的数据。
LDPC码是一种纠错能力极强的ECC编码方法,被广泛应用于通信和存储等多个领域。LDPC译码算法分为两类:硬判决译码算法和软判决译码算法。硬判决译码算法的输入数据(硬信息)量小,译码算法简单,但是纠错能力一般;软判决译码算法的输入数据(软信息)量大,译码算法复杂度高,纠错能力极强。对于存储领域的应用,由于存储器需要比较大的代价(需要多次读存储器)才能获得软信息,因此优先使用硬判决译码算法。
比特翻转译码算法(Bit Flipping Algorithm)是一种常见的硬判决译码算法,其主要优点是译码算法简单,利于硬件实现,且功耗和面积小,因此存储控制器的前期数据纠错常常采用比特翻转算法。比特翻转算法的核心思想是在完成一次基于特纳图的译码迭代后,统计每个变量节点获得的消息,将获得“翻转”消息最多的变量节点翻转,并对翻转后的数据做校验。如果校验成功则译码结束,否则开始第二次基于特纳图的译码迭代。如此反复直到数据译码成功或因超过最大迭代次数而译码失败。一次译码后的校验是通过码字矩阵C和校验矩阵H做矩阵乘法,判断结果矩阵(伴随式矩阵)R是否是全零矩阵来判断的。
对于所有的LDPC译码算法,包括比特翻转算法,都需要在每次接收到待译码数据以及每次迭代译码完成后去校验当前的数据是否是正确数据,是否还需要继续做迭代译码。比特翻转译码算法有多种变体,根据译码的每次迭代中翻转的变量节点的数量的不同,包括单比特(Single Bit)比特翻转译码算法和多比特(Multiple Bit)比特翻转译码算法。对于涉及多比特的比特翻转译码算法,在译码的每次迭代中如何决定翻转的比特个数是一个难题。现有技术中,根据反演函数(Inversion function)Δk(x)的值与阈值θ比较的结果来确定在一次迭代中要翻转的比特。现有技术的比特翻转译码算法定义了各自的反演函数Δk(x),但确定阈值θ往往依赖于经验。
图1展示了现有技术中比特翻转译码算法的流程图。
响应于接收到待译码的数据x(110),验证从待译码的数据x得到的码字C的正确性(120)。
数据正确性验证是通过码字矩阵C(可以是刚刚接收到的数据x,或者是经过迭代译码翻转了部分比特后得到的码字)和校验矩阵H做矩阵乘法,判断得到的伴随式矩阵R是否是全0矩阵(130)。
如果R是一个全0矩阵,则译码成功,指示码字C是合法码字,将译码结果作为从存储介质读出数据的真实值。否则译码不成功,码字C是非法码字。
若矩阵R不是全0矩阵,开始一次迭代译码(140)。在迭代译码中通过计算反演函数Δk(x)的值与阈值θ的比较结果来确定要翻转的比特。例如,对于单比特的比特翻转译码算法,在码字中寻找使得反演函数Δk(x)取极小值的比特的位置(记为i),并翻转该比特得到新的码字C’(150),以及再次验证码字C’的正确性(120)。作为又一个例子,在码字中寻找所有使得反演函数Δk(x)小于阈值θ的比特的位置,确定需要翻转的一个或多个比特,并翻转所有这些比特得到新的码字C’(150)并再次验证码字C’的正确性(120)。
若验证码字C’成功(伴随式矩阵R是全0矩阵),则译码结束,将码字C’作为译码结果;若验证码字C’未成功,则开始下一轮的迭代译码。
在论文“Gradient Descent Bit Flipping Algorithms for Decoding LDPCCode”(IEEE Transactions on Communications,58卷第6期)描述了一种优化的多比特翻转算法(称为GDBF,梯度下降比特翻转算法,Gradient Descent Bit FlippingAlgorithms)。为了达到比较好的纠错能力和收敛速度,在GDBF中,结合了多比特和单比特的比特翻转译码算法。在GDBF算法的一种实施方式中,译码前期使用固定翻转判断阈值为θ1的多比特的比特翻转算法,之后转换为单比特的比特翻转算法。在GDBF算法的又一种实施方式中,还包括逃逸(Escape Process)过程,在转换为单比特的比特翻转算法后,还在某一个时间点根据某些译码结果,将译码算法转为翻转判断阈值为θ2的多比特的比特翻转算法。
图2展示了现有技术中带有逃逸过程的GDBF算法的示意图。
初始化后,进行多比特的比特翻转算法译码,并且使用阈值θ1,以获得较快的对合法码字C的搜索过程。在一定情况下,例如识别出码字C接近搜索目标点后,切换为单比特的比特翻转译码算法,以避免在搜索过程中因翻转的比特过多而错过正确的码字C。进一步地,一些情况下,在使用单比特的比特翻转译码算法迭代了一轮或多轮后,还切换回多比特的比特翻转译码算法,并且使用阈值θ2,以避免搜索过程陷入到局部最优解。
发明内容
现有技术的多比特比特翻转译码算法,有如下缺点:
1、缺乏明确的阈值θ的设置方式;
2、在GDBF中,由于阈值θ不准确,导致需要完成“单比特->多比特-单比特”的2次切换过程。
本申请提出了根据译码过程中获得的有效信息来决定比特翻转算法中的阈值θ的值,通过有效的设置阈值θ来提高比特翻转译码的效率。
根据本申请的第一方面,提供了根据本申请第一方面的第一比特翻转译码方法,包括:根据伴随式矩阵验证待译码的码字的正确性;若待译码的码字不正确则进行迭代译码,包括:根据伴随式矩阵中非零元素的数量设置阈值;根据反演函数的值与阈值的比较结果确定需要翻转的一个或多个比特;翻转需要翻转的比特以更新待译码的码字。
根据本申请的第一方面的第一比特翻转译码方法,提供了根据本申请第一方面的第二比特翻转译码方法,其中,还包括验证更新后的码字的正确性;若更新后的码字验证失败,则重复进行迭代译码。
根据本申请的第一方面的第一或第二比特翻转译码方法,提供了根据本申请第一方面的第三比特翻转译码方法,其中,还包括:若待译码的码字正确,将待译码的码字作为译码结果。
根据本申请的第一方面的第一至第三比特翻转译码方法,提供了根据本申请第一方面的第四比特翻转译码方法,其中,翻转码字中所有使得反演函数小于阈值的比特以更新待译码的码字。
根据本申请的第一方面的第一至第四比特翻转译码方法,提供了根据本申请第一方面的第五比特翻转译码方法,其中,当伴随式矩阵中非零元素的数量NC大于第一值T1时,则将阈值设置为第一阈值;当伴随式矩阵中非零元素的数量NC介于第一值T1与第二值T2之间时,则将阈值设置为第二阈值;其中,第一值T1大于第二值T2。
根据本申请的第一方面的第一至第四比特翻转译码方法,提供了根据本申请第一方面的第六比特翻转译码方法,其中,根据校验矩阵的平均列重W与伴随式矩阵中非零元素的数量NC的比值来设置阈值。
根据本申请的第一方面的第六比特翻转译码方法,提供了根据本申请第一方面的第七比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与校验矩阵的平均列重W之间的比值大于第三值T3,则设置阈值为W*T3。
根据本申请的第一方面的第六至第七比特翻转译码方法,提供了根据本申请第一方面的第八比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与校验矩阵的平均列重W之间的比值在第四值T4与第三值T3之间,则设置阈值为W*(1-T4)、W-NC或者k*(W-NC),其中第四值小于第三值,并且0<k<1。
根据本申请的第一方面的第一至第四比特翻转译码方法,提供了根据本申请第一方面的第九比特翻转译码方法,其中,根据伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N的比值来设置阈值。
根据本申请的第一方面的第九比特翻转译码方法,提供了根据本申请第一方面的第十比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值大于第五值T5,则设置阈值为W*T5。
根据本申请的第一方面的第九或第十比特翻转译码方法,提供了根据本申请第一方面的第十一比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值介于第五值T5与第六值T6之间,则设置阈值为W*(1-T6)或W*(1-NC/N),其中第五值大于第六值。
根据本申请的第一方面的第一至第四比特翻转译码方法,提供了根据本申请第一方面的第十二比特翻转译码方法,其中,相对于伴随式矩阵中非零元素的数量较少的情况,伴随式矩阵中非零元素的数量较多时设置的阈值较低。
根据本申请的第一方面的第一至第十二比特翻转译码方法,提供了根据本申请第一方面的第十三比特翻转译码方法,其中,还包括:根据存储介质读出数据,生成待译码的码字。
根据本申请的第一方面的第十三比特翻转译码方法,提供了根据本申请第一方面的第十四比特翻转译码方法,其中,还包括:将译码结果作为从存储介质读出数据的真实值。
根据本申请的第一方面的第一至第十四比特翻转译码方法,提供了根据本申请第一方面的第十五比特翻转译码方法,其中,还包括:比特翻转译码方法是用于LDPC码的比特翻转译码方法。
根据本申请的第二方面,提供了根据本申请第二方面的第一比特翻转译码方法,包括至少一个多比特的比特翻转译码阶段和至少一个单比特的比特翻转译码阶段,其中,在第一多比特的比特翻转译码阶段,包括:根据伴随式矩阵验证待译码的码字的正确性;若待译码的码字不正确,则进行迭代译码,包括:根据伴随式矩阵中非零元素的数量设置第一阈值;根据反演函数的值与第一阈值的比较结果确定需要翻转的一个或多个比特;翻转需要翻转的比特以更新待译码的码字。
根据本申请的第二方面的第一比特翻转译码方法,提供了根据本申请第二方面的第二比特翻转译码方法,其中,还包括验证更新后的码字的正确性;若更新后的码字验证失败,则重复进行迭代译码。
根据本申请的第二方面的第一或第二比特翻转译码方法,提供了根据本申请第二方面的第三比特翻转译码方法,其中,还包括:若待译码的码字正确,将待译码的码字作为译码结果。
根据本申请的第二方面的第一至第三比特翻转译码方法,提供了根据本申请第二方面的第四比特翻转译码方法,其中,在单比特的比特翻转译码阶段,若待译码的码字不正确,仅翻转使反演函数取极值的比特。
根据本申请的第二方面的第一至第四比特翻转译码方法,提供了根据本申请第二方面的第五比特翻转译码方法,其中,在第二多比特的比特翻转译码阶段,包括:根据伴随式矩阵验证待译码的码字的正确性;若待译码的码字不正确,则进行迭代译码,包括:根据伴随式矩阵中非零元素的数量设置第一或第二阈值;根据反演函数的值与第一或第二阈值的比较结果确定需要翻转的一个或多个比特;翻转需要翻转的比特以更新待译码的码字。
根据本申请的第二方面的第一至第五比特翻转译码方法,提供了根据本申请第二方面的第六比特翻转译码方法,其中,在第一和/或第二多比特的比特翻转译码阶段,翻转码字中所有使得反演函数小于阈值的比特以更新待译码的码字。
根据本申请的第二方面的第一至第六比特翻转译码方法,提供了根据本申请第二方面的第七比特翻转译码方法,其中,在第一和/或第二多比特的比特翻转译码阶段,若码字接近搜索目标,则从多比特的比特翻转译码阶段切换至单比特的比特翻转译码阶段。
根据本申请的第二方面的第一至第七比特翻转译码方法,提供了根据本申请第二方面的第八比特翻转译码方法,其中,在单比特的比特翻转译码阶段迭代译码了一轮或多轮后,从单比特的比特翻转译码阶段切换至多比特的比特翻转译码阶段。
根据本申请的第二方面的第一至第八比特翻转译码方法,提供了根据本申请第二方面的第九比特翻转译码方法,其中,当伴随式矩阵中非零元素的数量NC同校验矩阵的平均列重W的比值大于第一值T1时,则将阈值设置为第三阈值;当伴随式矩阵中非零元素的数量NC同校验矩阵的平均列重W的比值介于第三值T3与第二值T2之间时,则将阈值设置为第四阈值;其中,T1>T2>T3。
根据本申请的第二方面的第一至第八比特翻转译码方法,提供了根据本申请第二方面的第十比特翻转译码方法,其中,当伴随式矩阵中非零元素的数量NC同校验矩阵的平均列重W的比值大于50%时,则将阈值设置为第一常数或W/2;当伴随式矩阵中非零元素的数量NC同校验矩阵的平均列重W的比值介于10%~20%时,则将阈值设置为W*0.9并取整。
根据本申请的第二方面的第一至第八比特翻转译码方法,提供了根据本申请第二方面的第十一比特翻转译码方法,其中,根据伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值来设置阈值。
根据本申请的第二方面的第十一比特翻转译码方法,提供了根据本申请第二方面的第十二比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值大于第四值T4,则设置阈值为第二常数、W*(1-T4)或者W*(1-NC/N)。
根据本申请的第二方面的第十一或第十二比特翻转译码方法,提供了根据本申请第二方面的第十三六比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值介于第五值T5与第四值T4之间,则设置阈值为第三常数或W*(1-T5)或W*(1-NC/N),其中第四值大于第五值。
根据本申请的第二方面的第十一至第十三比特翻转译码方法,提供了根据本申请第二方面的第十四比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值介于第五值T5与第六值T6之间,则设置阈值为第四常数或W*(1-T6)或W*(1-NC/N),其中第五值大于第六值。
根据本申请的第二方面的第十一至第十四比特翻转译码方法,提供了根据本申请第二方面的第十五比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值介于第七值T7与第六值T6之间,则设置阈值为第五常数或W*(1-T7)或W*(1-NC/N),其中第六值大于第七值。
根据本申请的第二方面的第十一至第十五比特翻转译码方法,提供了根据本申请第二方面的第十六比特翻转译码方法,其中,若伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值小于第七值T7,则设置阈值为第五常数或W*(1-T7)或W*(1-NC/N),其中第六值大于第七值。
根据本申请的第二方面的第十六比特翻转译码方法,提供了根据本申请第二方面的第十七比特翻转译码方法,其中,如果码字中没有任何位置的比特使得反演函数的值超过第五常数或W*(1-T7)或W*(1-NC/N),则仅翻转码字中使反演函数取极值的一个比特。
根据本申请的第二方面的第十一至第十七比特翻转译码方法,提供了根据本申请第二方面的第十八比特翻转译码方法,其中,还包括:根据存储介质读出数据,生成待译码的码字。
根据本申请的第二方面的第十八比特翻转译码方法,提供了根据本申请第二方面的第十九比特翻转译码方法,其中,还包括:将译码结果作为从存储介质读出数据的真实值。
根据本申请的第二方面的第十一至第十九比特翻转译码方法,提供了根据本申请第二方面的第二十比特翻转译码方法,其中,还包括:比特翻转译码方法是用于LDPC码的比特翻转译码方法。
根据本申请的第二方面的第十一至第二十比特翻转译码方法,提供了根据本申请第二方面的第二十一比特翻转译码方法,其中,还包括:比特翻转译码方法是用于LDPC码的梯度下降比特翻转译码方法。
根据本申请的第三方面,提供了根据本申请第三方面的第一译码器,其中,包括译码单元、数据获取单元以及至少一个通道,数据获取单元与各个通道耦合,译码单元与数据获取单元耦合;其中,译码单元用于执行上述的比特翻转译码方法。
根据本申请的第三方面的第一译码器,提供了根据本申请第三方面的第二译码器,其中,译码器为LDPC译码器。
根据本申请的第四方面,提供了根据本申请第四方面的第一存储设备,其中,存储设备包括控制部件和至少一个非易失性存储器芯片,控制部件包括上述的译码器。
根据本申请的第四方面的第一存储设备,提供了根据本申请第四方面的第二存储设备,其中,译码器的每个通道连接至少一个非易失性存储器芯片。
本申请在译码过程使用每次迭代中根据伴随式矩阵计算得到的阈值,并根据阈值得到待翻转的比特数量,在提高码字的搜索速度的基础上兼顾了搜索的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1展示了现有技术中比特翻转译码算法的流程图。
图2展示了现有技术中带有逃逸过程的GDBF算法的示意图。
图3展示了根据本申请实施例的比特翻转译码算法的流程图。
图4展示了根据本申请实施例的存储设备的结构图。
图5展示了译码器对来自多个通道的数据进行译码的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在LDPC译码过程中,为验证码字C的正确性,使用码字矩阵C和校验矩阵H做矩阵乘法,判断获得的伴随式矩阵R是否是全0矩阵。
根据本申请的实施例,根据伴随式矩阵R来估计码字C的错误程度,并且将码字C的错误程度作为确定比特翻转译码算法中的阈值θ的依据。从而在迭代译码过程中,可以不再机械地区分多比特的比特翻转译码阶段与单比特的比特翻转译码阶段,而是依据码字C的错误程度来确定要翻转的比特数量。
观察伴随式矩阵R,其中的每个元素代表一个校验方程的计算结果。R的元素为1,代表用对应的校验方程的校验失败,而R的元素为0,代表用对应的校验方程校验成功。而正确的码字是所有的校验方程的校验都成功的码字。因此,校验矩阵H所代表的多个校验方程中,校验失败的校验方程的数量,一定程度上体现了被校验的码字矩阵C的错误程度。从而,可以用伴随式矩阵R中的元素的“1”的个数来表征被验证的码字C的错误程度。
根据本申请的实施例,当码字C的错误程度较大时,在一次迭代译码过程中,翻转相对较多数量的比特,以加快对正确码字的搜索过程;而当码字C的错误程度较小时,在一次迭代译码过程中,翻转相对较少数量的比特,以提高对正确码字的搜索精度,降低错过正确码字的几率。
图3展示了根据本申请实施例的比特翻转译码算法的流程图。
响应于接收到待译码的数据x(310)(例如,根据存储介质的读出数据,作为待译码的数据,并生成待译码的码字),验证从待译码的数据x得到的码字C的正确性(320)。
判断得到的伴随式矩阵R是否是全0矩阵(330)。如果R是一个全0矩阵,则译码成功,指示码字C是合法码字,将码字C作为译码结果,结束译码,将译码结果作为从存储介质读出数据的真实值。否则译码不成功,码字C是非法码字。
若矩阵R不是全0矩阵,开始一次迭代译码。在迭代译码中,统计伴随式矩阵R指示的校验失败的校验方程数量(或者矩阵R中的非零元素数量),并设置阈值θ(340)。在迭代译码中还计算反演函数Δk(x)的值与阈值θ比较的结果来确定要翻转的一个或多个比特(350)。例如,在码字中寻找所有使得反演函数Δk(x)小于阈值θ的比特的位置,并翻转所有这些比特得到新的码字C’,以及对于码字中所有使得反演函数Δk(x)不小于阈值θ的比特,在码字C‘中使这些比特保持不变。可以理解地,在多种量化规则下,反演函数Δk(x)的值具有不同的取值或绝对值,并影响其与阈值θ比较的结论(“大于”或“小于”),这依赖于计算过程的具体实现,从而反演函数Δk(x)的值“超过”阈值θ中的“超过”可以代表“大于”、“大等于”、“小于”或“小等于”。
以用于存储设备的LDPC译码器为例,从存储介质中获得的待译码的码字具有指定或已知的长度(例如,512~4096),校验矩阵H也是已知的,从而得以在实验室中获得伴随式矩阵R中的非零元素数量与阈值θ的优化的对应关系。例如,当矩阵R的非零元素数量大于T1时,设置阈值θ1,在矩阵R的非零元素数量介于T1与T2之间时,设置阈值θ2。
作为又一个例子,根据校验矩阵H的平均列重W与伴随式矩阵R中非零元素的数量(记为NC)的关系来设置阈值θ。例如,若NC/W大于50%,设置阈值θ为平均列重W的50%,若NC/W在30%到50%之间,设置阈值θ为平均列重W的30%。又例如,若NC/W在a到b之间(0<a<b<1),设置阈值θ为W(1-a)、W-NC或者k(W-NC),其中0<k<1。
作为再一个例子,根据伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N的比值来设置阈值。若NC/N大于50%,设置阈值θ为平均列重W的50%,若NC/N在30%到50%之间,设置阈值θ为平均列重W的30%。又例如,若NC/N在a到b之间(0<a<b<1),设置阈值θ为W(1-a)或W(1-NC/N)。
比较阈值θ与反演函数Δk(x),确定需要翻转的一个或多个比特(360),将使得反演函数Δk(x)超出了阈值θ的一个或多个比特进行翻转,得到码字C’(370)。继续验证码字C’的正确性(320)。若验证码字C’成功(伴随式矩阵R是全0矩阵),则译码结束,将码字C’作为译码结果,将译码结果作为从存储介质读出数据的真实值;若验证码字C’未成功,则开始下一轮的迭代译码。
同单比特的比特翻转算法或多比特的比特翻转算法相比,根据本申请实施例的译码方法,根据伴随式矩阵R中非零元素的数量来设置阈值θ,并根据比较反演函数与阈值θ来确定要翻转的码字C或C’中的一个或多个比特,不再机械地实施单比特的比特翻转算法或多比特的比特翻转算法。
一般地,伴随式矩阵的非零元素较多的时候设定相对低的阈值θ,使得码字C或C’的更多的比特满足被翻转的条件,从而一次迭代中将翻转较多的比特,加快搜索速度;当伴随式矩阵的非零元素的个数较少的时候设定相对较高的阈值θ,从而一次迭代中将翻转较少的比特,增加搜索过程的准确度,从而兼顾了码字C或C’的搜索过程的效率与速度。
同GDBF算法相比,根据本申请的实施例,译码过程使用每次迭代中根据伴随式矩阵R计算得到的阈值θ,并根据阈值θ得到待翻转的比特数量,而无须将译码过程分为多比特的比特翻转译码与单比特的比特翻转译码两个、3个或更多阶段,从而简化了译码过程,并在提高码字C的搜索速度的基础上兼顾了搜索的准确性。
可选地,该实施例适用于LDPC码的比特翻转译码方法。
根据本申请的又一实施例,采用本申请提出的构思对GDBF算法做出改进。在不改变GDBF算法的2阶段或3阶段的译码框架的基础上,在其中的多比特的比特翻转译码阶段采用伴随式矩阵R中非零元素的数量设置阈值θ1和/或θ2(请参见图3)。例如,在GDBF算法的第一阶段,采用阈值为θ1的多比特的比特翻转译码算法,并且根据验证码字C的正确性过程中得到的伴随式矩阵R来计算阈值θ1的值(请参见步骤350)。作为举例,若码字C验证失败,则在伴随式矩阵R中非零元素的数量(记为NC)同校验矩阵H的平均列重W的比值大于50%时,设置阈值θ1为第一常数或W/2;在NC/W的比值在10%~20%时,设置阈值θ1为(W*0.9)并取整。以及根据GDBF算法,进行从多比特的比特翻转算法与单比特的比特翻转算法的切换。
可选地,在GDBF算法的第二阶段,采用单比特的比特翻转算法,仅翻转使反演函数取极值的比特,而不考虑阈值θ。
依然可选地或进一步地,在GDBF算法的第三阶段,采用阈值为θ2的多比特的比特翻转算法,并且根据验证码字C或C’的正确性过程中得到的伴随式矩阵R来计算阈值θ2的值(请参见步骤350)。
根据本申请的再一个例子,校验矩阵H的平均列重W为8,伴随式矩阵R的非零元素数量为NC,伴随式矩阵R的元素总量为N:
在伴随式矩阵R中,当伴随式矩阵中非零元素的数量同伴随式矩阵中元素的数量之间的比值(NC/N)超过50%时,设定阈值θ为4(或者W*(1-50%),或者W*(1-NC/N));
在伴随式矩阵R中,当伴随式矩阵中非零元素的数量同伴随式矩阵中元素的数量之间的比值(NC/N)在30%~50%时,设定阈值θ为5(或者W*(1-30%),或者W*(1-NC/N));
在伴随式矩阵R中,当伴随式矩阵中非零元素的数量同伴随式矩阵中元素的数量之间的比值(NC/N)在20%~30%时,设定阈值θ为6(或者W*(1-20%),或者W*(1-NC/N));
在伴随式矩阵R中,当伴随式矩阵中非零元素的数量同伴随式矩阵中元素的数量之间的比值(NC/N)在10%~20%时,设定阈值为θ为7(或者W*(1-10%),或者W*(1-NC/N));
在伴随式矩阵中,当伴随式矩阵中非零元素的数量同伴随式矩阵中元素的数量之间的比值(NC/N)小于10%时,设定阈值θ为7(或者W*(1-10%),或者W*(1-NC/N)),且此时如果被验证的码字C中没有任何位置的比特使得反演函数Δk(x)的值超过了阈值θ,则仅翻转码字C中使反演函数Δk(x)取极值的1个比特。
依据图3,在多比特的比特翻转译码阶段,迭代译码过程中,根据上述方法确定了阈值θ后,通过计算反演函数Δ_k(x)的值与阈值θ的比较结果来确定要翻转的比特(请参见步骤360)。作为一个例子,在码字中寻找所有使得反演函数Δk(x)小于阈值θ的比特的位置,确定需要翻转的一个或多个比特。翻转这些比特以得到新的码字C’(请参见步骤370),以及再次验证码字C’的正确性。若码字C’验证失败,则重复进行迭代译码。若码字C’正确,则将码字C’作为译码结果。
可选地,在一定情况下,例如使用多比特的比特翻转译码算法(例如,使用阈值θ1)识别出码字C或C’接近搜索目标点后,从多比特的比特翻转译码阶段切换至单比特的比特翻转译码阶段,以避免在搜索过程中因翻转的比特过多而错过正确的码字。进一步地,一些情况下,在单比特的比特翻转译码阶段迭代了一轮或多轮后,从单比特的比特翻转译码阶段切换至多比特的比特翻转译码阶段,并且使用阈值θ2,以避免搜索过程陷入到局部最优解。
可选地,该实施例适用于LDPC码的比特翻转译码方法。
根据本申请的再一实施例,本申请还提供了存储设备(请参见图4),存储设备400包括控制部件410与NVM芯片420(非易失性存储器芯片),控制部件410通常同时耦合多个NVM芯片420,目的是提高存储容量与数据访问的带宽。NVM芯片420通过多个通道耦合到控制部件410。通道是例如连接控制部件与NVM芯片的一组物理或逻辑的连线。控制部件能够独立访问各个通道,在一个通道上的数据传输不影响其他通道的数据传输。每个通道连接一个或多个NVM芯片。
控制部件410包括译码器(例如LDPC译码器),对从NVM芯片420读出的数据进行译码。
图5展示了译码器对来自多个通道的数据进行译码的示意图。译码器通过数据获取单元510耦合到多个通道,并接收来自各通道的待译码数据。数据获取单元510获取来自各个通道的数据,将数据提供到译码单元520进行译码。译码单元520执行上述的比特翻转译码方法来译码。作为一个例子,译码单元520接收到来自NVM芯片的读出数据,作为待译码的数据,并生成待译码的码字。在译码结束(码字验证成功)后,将译码结果作为从NVM芯片读出数据的真实值。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或步骤的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
上述的不同块、操作以及技术的至少一部分可以被执行,通过使用硬件,控制设备执行固件指令,控制设备执行软件指令,或者及其任意组合。当在硬件中执行时,硬件可以包括一个或多个离散组件,集成电路,应用的集成电路(ASIC),等等。需要理解的是,本发明可以以纯软件、纯硬件、固件以及上述的各种组合来实现。硬件例如可以是控制设备、专用集成电路、大规模集成电路等等。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种比特翻转译码方法,其特征在于,包括:
根据伴随式矩阵验证待译码的码字的正确性;
若待译码的码字不正确则进行迭代译码,包括:
根据所述伴随式矩阵中非零元素的数量设置阈值;
根据反演函数的值与阈值的比较结果确定需要翻转的一个或多个比特;
翻转所述需要翻转的比特以更新所述待译码的码字;其中,
根据校验矩阵的平均列重W与伴随式矩阵中非零元素的数量NC的比值来设置阈值。
2.根据权利要求1所述的方法,其特征在于,还包括:
验证更新后的码字的正确性;
若所述更新后的码字验证失败,则重复进行迭代译码。
3.根据权利要求1或2所述的方法,其特征在于,当伴随式矩阵中非零元素的数量NC大于第一值T1时,则将阈值设置为第一阈值;当伴随式矩阵中非零元素的数量NC介于第一值T1与第二值T2之间时,则将阈值设置为第二阈值;其中,所述第一值T1大于第二值T2。
4.一种比特翻转译码方法,其特征在于,包括至少一个多比特的比特翻转译码阶段和至少一个单比特的比特翻转译码阶段,其中,在第一多比特的比特翻转译码阶段,包括:
根据伴随式矩阵验证待译码的码字的正确性;
若待译码的码字不正确,则进行迭代译码,包括:
根据所述伴随式矩阵中非零元素的数量设置第一阈值;
根据反演函数的值与第一阈值的比较结果确定需要翻转的一个或多个比特;
翻转所述需要翻转的比特以更新所述待译码的码字;其中,
根据伴随式矩阵中非零元素的数量NC与伴随式矩阵中元素的数量N之间的比值来设置阈值。
5.根据权利要求4所述的方法,其特征在于,
在第二多比特的比特翻转译码阶段,包括:
根据伴随式矩阵验证待译码的码字的正确性;
若待译码的码字不正确,则进行迭代译码,包括:
根据所述伴随式矩阵中非零元素的数量设置第一或第二阈值;
根据反演函数的值与第一或第二阈值的比较结果确定需要翻转的一个或多个比特;
翻转所述需要翻转的比特以更新所述待译码的码字。
6.根据权利要求4或5所述的方法,其特征在于,在第一和/或第二多比特的比特翻转译码阶段,翻转码字中所有使得反演函数小于阈值的比特以更新所述待译码的码字。
7.根据权利要求4或5所述的方法,其特征在于,当伴随式矩阵中非零元素的数量NC同校验矩阵的平均列重W的比值大于第一值T1时,则将阈值设置为第三阈值;当伴随式矩阵中非零元素的数量NC同校验矩阵的平均列重W的比值介于第三值T3与第二值T2之间时,则将阈值设置为第四阈值;其中,所述T1>T2>T3。
8.一种译码器,其特征在于,包括译码单元、数据获取单元以及至少一个通道,所述数据获取单元与各个通道耦合,所述译码单元与所述数据获取单元耦合;
其中,所述译码单元用于执行根据权利要求1-7任一项所述的比特翻转译码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910253874.0A CN111769839B (zh) | 2019-03-30 | 2019-03-30 | 快速的比特翻转译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910253874.0A CN111769839B (zh) | 2019-03-30 | 2019-03-30 | 快速的比特翻转译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111769839A CN111769839A (zh) | 2020-10-13 |
CN111769839B true CN111769839B (zh) | 2024-05-10 |
Family
ID=72718678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910253874.0A Active CN111769839B (zh) | 2019-03-30 | 2019-03-30 | 快速的比特翻转译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111769839B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116505961B (zh) * | 2023-06-29 | 2023-09-29 | 深圳大普微电子科技有限公司 | 一种译码方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105680881A (zh) * | 2016-01-08 | 2016-06-15 | 广西大学 | Ldpc译码方法及译码器 |
CN106027069A (zh) * | 2016-05-13 | 2016-10-12 | 华南理工大学 | 一种循环切换的混合加权比特翻转ldpc译码方法 |
CN106160753A (zh) * | 2016-06-23 | 2016-11-23 | 湖南大学 | 一种适用于ssd的权值多比特翻转ldpc译码方法 |
-
2019
- 2019-03-30 CN CN201910253874.0A patent/CN111769839B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105680881A (zh) * | 2016-01-08 | 2016-06-15 | 广西大学 | Ldpc译码方法及译码器 |
CN106027069A (zh) * | 2016-05-13 | 2016-10-12 | 华南理工大学 | 一种循环切换的混合加权比特翻转ldpc译码方法 |
CN106160753A (zh) * | 2016-06-23 | 2016-11-23 | 湖南大学 | 一种适用于ssd的权值多比特翻转ldpc译码方法 |
Non-Patent Citations (2)
Title |
---|
LDPC码的一种高效加权比特翻转译码算法;袁建国;曾磊;孙雪敏;胡潇月;郭乔;吴英冬;;电讯技术(11);全文 * |
Noisy Gradient Descent Bit-Flipping Decoder Based on Adjustment Factor for LDPC Codes;Bin Dai 等;IEEE COMMUNICATIONS LETTERS;第22卷(第6期);1152-1155 * |
Also Published As
Publication number | Publication date |
---|---|
CN111769839A (zh) | 2020-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9170876B1 (en) | Method and system for decoding encoded data stored in a non-volatile memory | |
KR101535225B1 (ko) | 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치 | |
CN102412847B (zh) | 用联合节点处理来解码低密度奇偶校验码的方法和设备 | |
US8880987B2 (en) | Checksum using sums of permutation sub-matrices | |
US10419024B2 (en) | Early termination of low-density parity-check (LDPC) decoding | |
TWI411912B (zh) | 使用寫入驗證之代碼之錯誤底限減緩 | |
US10523245B2 (en) | Soft decoder for generalized product codes | |
WO2015139160A1 (zh) | 一种动态阈值比特翻转的ldpc码硬判决译码方法 | |
US10218388B2 (en) | Techniques for low complexity soft decoder for turbo product codes | |
US10484020B2 (en) | System and method for parallel decoding of codewords sharing common data | |
KR20110031092A (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
US10090865B2 (en) | Performance optimization in soft decoding of error correcting codes | |
US10153785B1 (en) | Generalized low-density parity-check (GLDPC) code with variable length constituents | |
US8751895B2 (en) | Semiconductor memory device and decoding method | |
US20200044668A1 (en) | Method for ldpc decoding, ldpc decoder and storage device | |
US9564931B1 (en) | Systems and methods for using decoders of different complexity in a hybrid decoder architecture | |
JP5723975B2 (ja) | Ldpcコードの復号のための方法、システム、およびプログラム | |
US11641213B2 (en) | Log-likelihood ratio mapping tables in flash storage systems | |
CN111769839B (zh) | 快速的比特翻转译码方法 | |
US10187086B2 (en) | State-based decoding of product codes | |
CN107872231B (zh) | Ldpc译码方法与装置 | |
CN112527548A (zh) | 快闪存储器控制器、储存装置及读取方法 | |
US20240061586A1 (en) | Memory controller and method for bit flipping of low-density parity-check codes | |
US20240097706A1 (en) | Decoding method and decoding device | |
US11455208B2 (en) | Soft information for punctured bit estimation in a data storage device |
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 |