基于NandFlash的LDPC获取软信息译码方法及编译码器与流程

文档序号:11929201阅读:935来源:国知局
基于Nand Flash的LDPC获取软信息译码方法及编译码器与流程

本发明涉及Nand Flash为存储介质的数据存储技术领域,尤其是指一种基于Nand Flash的LDPC获取软信息译码方法及编译码器。



背景技术:

目前,Nand Flash已经成为数据存储系统中最常用的存储设备。但是,随着存储密度的增大和多位存储技术的出现,Nand Flash数据存储的误码率越来越严重。ECC技术一直是确保Nand Flash数据存储可靠性的关键技术。近几年来,性能优越的LDPC码被提出应用于Nand Flash上。软信息译码的LDPC码才能充分展示其接近香农限的优越性能。然而,目前要从Nand Flash中获取软信息并且传输仍然存在较大的困难而且实现的代价昂贵[1,2]。从Nand Flash中生成软信息需要对Nand Flash进行多次的读取数据。该方案需要Nand Flash实现更加细粒度的软判决存储电平采样,通过大量的读取次数来实现,这将导致严重的线上采样延迟和传输延迟。同时,细粒度采样数据的暂时存储,需要更大的芯片缓存区,增大芯片的面积。另外,准确的计算似然概率,要求得到一个准确有效的存储单元阈值电压分布模型[3],近几年来有学者在构造该电压分布模型[4,5],但结果仍然不够准确。

也有学者提出通过Nand Flash的硬判决信息从辅助码获取软信息的方案。文献【6】提出通过CC码给LDPC提供粗糙的软信息;也有人搭建BCH+LDPC纠错架构,通过BCH辅助给LDPC提供软信息。这两种方案的辅助码(CC、BCH)都采用检错纠错方法给LDPC提供软信息。然而,纠错将需要实现辅助码的译码电路,在硬件上实现势必耗费很多资源,增大芯片面积。

参考文献:

[1]Guiqiang Dong,Ningde Xie,Tong Zhang.On the use of soft‐decision error correction codes in NAND flash memory[J].IEEE Transactions on Circuits and Systems,2011,58(2):429–439

[2]E.Yeo.An LDPC‐Enabled flash controller in 40nm CMOS[A].2012 Flash Memory Summit[C].Santa Clara,Calif:IEEE Press,2012.335‐360

[3]J.Wang,T.Courtade,H.Shankar,and R.Wesel.Soft information for LDPC decoding in flash:Mutual‐information optimized quantization[A].Global Telecommunications Conference(GLOBECOM 2011)[C].Hoston,USA:IEEE Press,2011:1–6

[4]Cai Y,Haratsch E F,Mutlu O,et al.Error patterns in MLC NAND flash memory:Measurement,characterization,and analysis[A].Design,Automation&Test in Europe Conference&Exhibition(DATE)[C].Dresden:IEEE Press,2012:521‐526

[5]Shi L,Qiu K,Zhao M,et al.Error model guided joint performance and endurance optimization for flash memory[J].IEEE Transactions on Computer‐Aided Design of Integrated Circuits and Systems,2014,33(3):343‐355

[6]M.N.Kaynak,P.R.Khayat and S.Parthasarathy,"Classification Codes for Soft Information Generation from Hard Flash Reads,"in IEEE Journal on Selected Areas in Communications,vol.32,no.5,pp.892‐899,May 2014.



技术实现要素:

本发明的目的在于克服现有技术的缺点和不足,提供了一种基于Nand Flash的LDPC获取软信息译码方法及编译码器,该方法以牺牲一定的冗余位保存检错码信息来获取粗糙的软信息,提高Nand Flash数据存储的纠错性能。

为实现上述目的,本发明所提供的技术方案,如下:

一种基于Nand Flash的LDPC获取软信息译码方法,包括以下步骤:

1)获取K个信息比特cm,m=1,2,...,K,K为信息比特长度,K位信息比特cm经LDPC编码得到N位编码后的码字xi

xi=cm×G

其中,G为K×N的LDPC生成矩阵,i=1,2,...,N;

2)确定检错码的维度w、检错码的类型,对N位的码字xi进行分行列分块生成相应的检错码p1,p2,...,pw

3)将N位的LDPC编码后的码字xi和检错码pt,t=1,2,...,w整个比特序列{xi|p1|p2|...|pw}写入Nand Flash;

4)从Nand Flash获取经过硬判决的N位码字Yi={0,1},i=1,2,...,N和检错码pt,按照检错码的维度w、检错码的类型对Yi进行分行列分块检错,得到各维度的检错信息Q1,Q2,...,Qw

5)通过对各维度的检错信息Q1,Q2,...,Qw进行分析,对N位码字Yi={0,1}的每一位比特按可靠程度Dj,j=1,2,3...,2w进行划分,给予相应的软信息yi,i=1,2,...,N;不同可靠程度Dj都有一个相对应的基准值Drefj,j=1,2,...,2w;在基准值基础上再加上一个随机偏移量Ri,i=1,2,...,N,模拟实际的软信息输入;其中,软信息yi计算如下:

6)对N位的软信息yi进行软判决迭代译码,每次迭代译码得到N位的译码结果zi,i=1,2,...,N,译码正确或者达到最大的迭代次数则跳到下面步骤7);若译码迭代次数达到预先设置的阈值f,则将N位zi替换Yi,回到上面步骤4),更新生成检错信息Q1,Q2,...,Qw,进而更新软信息yi,重新迭代译码;

7)输出译码结果zi,结束译码。

一种基于Nand Flash的编译码器,包括编码部分和译码部分:

所述编码部分包括:

LDPC编码单元,将输入的K位信息进行编码,得到包含检验信息的N位码字;

检错码生成单元,将N位的码字按照选择的维度w进行分块并生成相应的检错码,然后将N位的码字和检错码传输给Nand Flash;

所述译码部分包括:

检错单元,将从Nand Flash得到的N位码字和检错码按照选择的维度w进行相应的检错,得到每个维度的检错信息;

软信息单元,通过多维检错信息自适应地对码字的每一位产生相应的软信息以更新软信息;

LDPC译码单元,接收软信息单元的软信息进行软判决迭代译码,并进行校验判决输出或者返回给检错单元。

本发明与现有技术相比,具有如下优点与有益效果:

本发明基于Nand Flash获取软信息困难,代价昂贵情况,提供一种通过检错码(CRC、奇偶校验等)获取软信息的方法及编译码器,本发明以牺牲一定的冗余位保存检错码信息来获取粗糙的软信息,提高Nand Flash数据存储的纠错性能。粗糙的软信息译码相对LDPC无量化译码在性能方面有一定退化。本发明的编译码器主要从三个方面来减少性能退化:一是通过检错单元维度、检错码类型有效合理选择,使得到的软信息更接近原始软信息。二是通过软信息单元对检错信息可靠性程度的不同进行相应随机产生软信息,模拟原始软信息的输入。三是采用软信息更新策略,通过自适应地更新软信息,重新迭代,使译码的误码率降低,提高译码性能。

附图说明

图1是本发明编译码器的架构图。

图2是本发明的检错码生成单元示意图。

图3是本发明的检错单元示意图。

具体实施方式

下面结合具体实施例对本发明做进一步的说明。

本实施例以(8608,8192)LDPC码为例对本发明所提供的基于Nand Flash的LDPC获取软信息译码方法及编译码器进行详细的说明。

如图1所示,所述编译码器由编码部分和译码部分组成,编码部分包括LDPC编码单元、检错码生成单元,译码部分包括检错单元、软信息单元、LDPC译码单元。LDPC编码单元主要将输入的K位信息进行编码,得到包含检验信息的N位码字;检错码生成单元主要将N位的码字按照选择的维度(w)进行分块并生成相应的检错码,然后将N位的码字和检错码传输给Nand Flash;检错单元将从Nand Flash得到的N位码字和检错码按照选择的维度(w)进行相应的检错,得到每个维度的检错信息;软信息单元主要通过多维检错信息自适应地对码字的每一位产生相应的软信息以更新软信息;LDPC译码单元主要接收软信息单元的软信息进行软判决迭代译码,并进行校验判决输出或者返回给检错单元。

所述基于Nand Flash的LDPC获取软信息译码方法,包含以下步骤:

步骤1:获取8192个信息比特cm(m=1,2,...,8192)。8192位信息比特cm经LDPC编码单元得到8608位编码后的码字xi(i=1,2,...,8608)。

xi=cm×G(G为8192×8608的LDPC生成矩阵)

步骤2:确定检错码的维度w=3,记为X、Y和Z维,如图2所示。X维采用CRC4检错码,Y、Z维采用奇偶校验码。对xi补全96个0构成8704=68×128位比特,然后划分为68行128列,同时将每4行16列划分为一块,共136块。X维的校验码生成为pXr(r=1,2,...,68),pXr生成过程如下:X维总共68行,每行128bits。对于第r行(r=1,2,...,68);CRC4的生成多项式取g(x)=x4+x+1;pXr=Remainder(Mr×x4/g(x))

(Mr表示第r行的信息,Remainder表示余式)。同理,Y维的校验码生成为pYc(c=1,2,...,128);Z维的校验码生成为pZs(s=1,2,...,136)。则有:

pX={pX1|pX2|···|pX68}

pY={pY1|pY2|···|pY128}

pZ={pZ1|pZ2|···|pZ136}

步骤3:将8608位的LDPC编码后的码字xi和检错码pt(t=X,Y,Z)整个比特序列{xi|pX|pY|pZ}写入Nand Flash。

步骤4:从Nand Flash获取经过硬判决的8608位码字Yi={0,1}(i=1,2,...,8608)和检错码pX,pY,pZ。按照检错码的维度w=3、检错码的类型(X维为CRC4、Y、Z维为奇偶校验)对Yi补全96个0构成8704=68×128位比特,然后划分为68行128列,同时将每4行16列划分为一块,共136块,如图3所示。X、Y和Z维的检错信息为:

QXr={true,false}(r=1,2,...,68)

QYc={true,false}(c=1,2,...,128)

QZs={true,false}(s=1,2,...,136)。

假设数据经过闪存后出现两个错误(图3所示的五角星处),假设错误1在第2行(QX2)第63列(QY63)第4块(QZ4),即检错模块会检错到QX2==false,QY63==false,QZ4==false。错误2在第5行(QX5)第23列(QY23)第10块(QZ10),即检错模块会检错到QX5==false,QY23==false,QZ10==false。其余的检错信息为true。

步骤5:通过对各维度的检错信息QX,QY,QZ进行分析,对8608位码字Yi={0,1}(i=1,2,...,8608)的每一位比特的可靠程度Dj(j=1,2,...,8)进行划分,给予相应的软信息yi(i=1,2,...,8608)。不同可靠程度Dj(j=1,2,...,8)都有一个相对应的基准值Drefj(j=1,2,...,8)。在基准值基础上加上一个随机偏移量Ri(i=1,2,...,8608),模拟实际的软信息输入。软信息yi计算如下:

步骤6:对8608位的软信息yi(i=1,2,...,8608)进行软判决迭代译码,每次迭代译码得到8608位的译码结果zi(i=1,2,...,8608),译码正确或者达到最大的迭代次数则跳到步骤7)。否则译码迭代次数达到预先设置的阈值f,将8608位zi替换Yi,回到步骤4),更新生成检错信息QX,QY,QZ,进而更新软信息QX,QY,QZ,重新迭代译码,使译码的误码率降低,提高译码性能。

步骤7:输出译码结果zi,结束译码。

在上述步骤过程中,LDPC编码单元完成步骤1,完成对信息的编码操作;检错码生成单元主要完成步骤2和步骤3,产生相应的检错码,把检错码和码字一起写入Nand Flash;检错单元完成步骤4,产生相应的检错信息;软信息单元完成步骤5,主要负责将检错信息自适应地生成相应的软信息以更新软信息;LDPC译码单元主要完成步骤6和步骤7,基于软信息进行迭代译码,结合软信息更新策略,使译码的误码率降低,提高译码性能。

本发明通过检错码方法给LDPC生成粗糙软信息。然而,粗糙软信息译码相对LDPC原始软信息译码在性能方面有一定退化。本发明编译码器主要从以下三个方面来减少性能退化。

(1)检错码维度、类型的合理选择

本发明通过检错码来生成粗糙软信息,用来模拟原始软信息的输入。为了减少译码性能的退化,就尽可能地使生成的粗糙软信息更接近原始软信息。本发明是通过不同维度的检错码的检错信息来生成软信息,通过合理选择检错码的维度以及检错码的类型,使之尽可能接近原始软信息。

如果选择的维度较少(例如2维),检错码检错能力差(例如奇偶检验(偶数个错误无法检错))的方案,则码率较高,但译码性能较差;如果选择的维度较高(例如5维),检错码检错能力强(例如CRC16)的方案,则译码性能较好,但码率降低。可见,可以通过检错码的维度和类型的合理选择,在这两种方案中折中,使得到的软信息更接近原始软信息的较高码率的译码方案。

(2)自适应生成软信息

尽可能模拟原始软信息的输入,是减少性能退化的方法。本发明通过对各维度的检错信息QX,QY,QZ进行综合分析,对于码字的每一位比特,在各个维度上都对应一个检错信息值{true,false}两种情况。则对于w=3维检错信息,就会有8种可靠性Dj(j=1,2,...,8)。码字Yi={0,1}(i=1,2,...,8608)对应每个维度的检错信息为:QX,QY,QZ。获取可靠程度Dj(j=1,2,...,8)方法如下:

以AWGN信道模拟Nand Flash信道,给每个可靠性Dj(j=1,2,...,8)确定一个相对应的基准值Drefj(j=1,2,...,8)。编码后的比特经过BPSK调整后,0、1映射为1、-1。Drefj(j=1,2,...,8)取值如下:

在基准值基础上加上一个随机偏移量Ri(i=1,2,...,8608),给予码字每个信息比特相应的软信息yi(i=1,2,...,8608),模拟实际的软信息输入。软信息yi计算如下:

随机偏移量Ri的选择,应尽可能保持yi在相应可靠性基准值Dref附近,此处选择Ri<0.2的随机正数。本发明通过在基准值基础上,加入随机偏移量,更好的模拟原始的软信息,在一定程度上有效地减少性能退化。

(3)软信息更新策略

通过检错码生成的软信息是粗糙的,本发明采用软信息更新策略,通过自适应地更新软信息,重新迭代,使译码的误码率降低,提高译码性能。LDPC译码单元设置一个迭代次数的阈值f,当译码单元迭代到阈值还没校验成功输出码字,将8608位译码结果zi替换Yi,传回检错单元,更新生成检错信息QX,QY,QZ,进而更新软信息yi(i=1,2,...,8608),重新迭代译码。通过软信息更新策略,在一定程度上有效地减少性能退化。

以上所述实施例只为本发明之较佳实施例,并非以此限制本发明的实施范围,故凡依本发明之形状、原理所作的变化,均应涵盖在本发明的保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1