一种二元BCH码伴随式矩阵的实现方法与流程

文档序号:16006566发布日期:2018-11-20 20:08阅读:1387来源:国知局

本发明涉及纠错编码技术领域,尤具体地说是一种实用性强、二元BCH码伴随式矩阵的实现方法。



背景技术:

随着电子通信技术飞速发展,大容量数据存储渐渐发挥其重要的作用。NAND 闪存作为存储介质具有非易失、容量大的优点被广泛的应用,然而,NAND闪存又有其自身的缺点:1)由于工艺原因,在生产及使用过程中会产生坏块;2) 由于存储单元问题,使用时可能有个别比特翻转,以及空间环境的辐射也可能导致存储器翻转,即单粒子翻转导致差错。因此,如何纠错编码成为NAND闪存能否可靠存储的关键问题,而解决存储系统容错性的重要手段就是在电子系统中加入ECC(Error Correcting Code)纠错码。

BCH码是由Bose、Chaudhuri、Hocquenghem码构成的一类可以纠正多个随机错的循环码,它能够获得更高的编码增益和更好的纠错性能。BCH码常用的解码器结构分为四步,如图1所示。

1)根据接收码字计算校正子,即伴随式多项式S=(S1,S2,…,S2t);

2)解关键方程得到错误位置多项式σ(x);

3)找出σ(x)的根的倒数,即错误位置

4)根据错误位置纠正接收字。

但是现有的纠错过程都是通过串行运算进行的,电路复杂度高,而且每次运算都会耗时较长,ECC运行速度较慢,占用资源的面积较大,基于此,一种二元BCH码伴随式多项式算法的并行运算的硬件实现方案及优化有限域乘法运算来减小关键路径时延的方法。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种实用性强、二元BCH码伴随式矩阵的实现方法。

一种二元BCH码伴随式矩阵的实现方法,其实现过程为,

一、首先从Flash中接收码字多项式,计算伴随多项式;

二、根据Horner准则,获取迭代伴随式多项式,该迭代伴随式为串行迭代多项式;

三、将步骤二中的伴随式多项式进行分解,然后进行并行化计算;

四、计算出所有伴随式多项式的值,再根据得到的伴随式的值是否全为0,来判断输入码字中是否有错误:如果伴随式全为0,说明输入码字无错误,可以直接输出使用;如果伴随式不全为0,说明输入码字存在错误,需要进行后续的计算得到错误位置多项式,并进行纠错处理。

所述步骤一中接收的码字多项式为r(x)=r0+r1x+r2x2+…+rn-1xn-1,伴随式多项式的计算公式为Sj=r(αj)=r0+r1αj+r2α2j+…rn-1α(n-1)j;相对应的,步骤二中根据Horner准则,获取的迭代伴随式多项式为:在伴随式多项式的串行计算公式中,每输入1bit数据计算1次,共需要n次,这里的n次是指 0~n-1,在上述公式中,j是伴随式的维度,当纠错能力为t时,该伴随式是一个j=2t维向量,且j的取值范围为0,1,2……,2t-1。

所述步骤三中对伴随式进行分解并进行并行化计算是指将伴随式分解成m 阶系数(sj0,sj1,…sj(m-1)),然后同时运算求解,且(sj0,sj1,…sj(m-1))存在寄存器里面,每过一个周期并行化计算一次,这里的周期是指码字输入1bit的频率时间。

所述步骤三中并行化计算的具体过程为:

1)首先确定T时刻和其相邻T+1时刻,伴随式计算之间的关系:

在T时刻,输入的码字比特为r(T),伴随式其中一维向量的状态为 (sj0(T),sj1(T),…sj(m-1)(T)),则在T+1时刻,输入的码字比特为r(T+1),此时更新寄存器中的内容为(sj0(T+1),sj1(T+1),…sj(m-1)(T+1)),与上一个周期的 (sj0(T),sj1(T),…sj(m-1)(T))的的计算关系为以下公式:

转换为矩阵形式为:

上述矩阵形式简化为S(T+1)=Ψ×[S(T)+R(T+1)];

其中,Ψ是由αj的最小多项式系数组成的矩阵,且:

则,S(T+1)=(s(T+1) sj(m-2)(T+1) … sj1(T+1) sj0(T+1))T

S(T)=(sj(m-1)(T) sj(m-2)(T) … sj1(T) sj0(T))T

R(T+1)=(0 0 … r(T+1))T

2)然后通过上述公式,获取T时刻与T+p时刻之间的关系为:

3)根据步骤2)的公式,获取并行化计算的迭代公式为:

S(T+p)=Φ×(S(T)+Rp);

其中:

Φ=(Ψp Ψp-1 … Ψ),Rp=[0 … 0 r(T+1) r(T+2) … r(T+p)]T,p 为并行解码的比特数。

所述步骤三是指GF(2m)伽罗华域下BCH(8528,8192,24)的情况下进行并行运算的,即每次从Flash中取出8258bit的码字计算其伴随式多项式矩阵, n=8258,其中前8192bit是需要纠错的原码,后336bit是校验码,m=14,t=24。

本发明的一种二元BCH码伴随式矩阵的实现方法,具有以下优点:

本发明的一种二元BCH码伴随式矩阵的实现方法,NAND闪存芯片的计算时间大大缩短,如现有NAND闪存芯片有8跟数据线时,其运算时间为原来的1/8,提高的算法的计算效率,有效降低了电路的复杂度,提高了ECC的运行速度,减小了占用资源的面积,能够准确的解决单粒子翻转导致的存储错误问题,实用性强,适用范围广泛,易于推广。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

附图1为BCH码解码器结构图。

附图2为计算伴随式框图。

附图3为串行迭代计算伴随式的电路图。

附图4为并行计算伴随式框图。

附图5为Ψ1p的Matlab实现示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明的方案,下面结合具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如附图1-图4所示,一种二元BCH码伴随式矩阵的实现方法,BCH时,第一步就是判断读出的数据中是否发生错误。如果数据正确无误,后续的纠错过程也就可以省略,如果数据发生错误,才会进一步去查找错误的位置并纠正错误。伴随式多项式就是用来判断数据是否正确的。只需要根据接收到的码字多项式除以极小多项式就可以求得伴随式,如果接收到的码元中存在错误,伴随式的计算结果一定不为0。

基于上述内容,本发明的实现过程为,

一、首先从Flash中接收码字多项式,计算伴随多项式;

二、根据Horner准则,获取迭代伴随式多项式,该迭代伴随式为串行迭代多项式;

三、将步骤二中的伴随式多项式进行分解,然后进行并行化计算;

四、计算出所有伴随式多项式的值,再根据得到的伴随式的值是否全为0,来判断输入码字中是否有错误:如果伴随式全为0,说明输入码字无错误,可以直接输出使用;如果伴随式不全为0,说明输入码字存在错误,需要进行后续的计算得到错误位置多项式,并进行纠错处理。

进一步的,假设从Flash中接收到的n(n=8528)位码字多项式为r(x)=r0+r1x+r2x2+…+rn-1xn-1,伴随式多项式的计算公式为 Sj=r(αj)=r0+r1αj+r2α2j+…rn-1α(n-1)j。本设计是以纠错能力t=24bits为例,伴随式是一个2t维向量,所以最多需要48个伴随式多项式,即j的范围是(0, 1,2,3,……,47)。

根据Horner准则,伴随式多项式的迭代过程如下,由此可得到伴随式框图如图2所示。

其中,上述公式是伴随式多项式的串行计算公式每输入1bit数据计算1次,共需要n次,就可以计算出伴随式Sj,也就是8528个时钟周期。

如图2所示,只需要一个有限域加法器、一个寄存器和一个有限域乘法器,所以计算一个Sj,则需要n次加法和n次有限域乘法。

本专利提出一种并行化计算的方法,可以降低计算次数,提高整体算法的计算效率。具体推到如下。

按照上述传统串行迭代的算法,在硬件实现时分别进行分解,图2的框图可以分解成图3的框图形式,得到Sj中每一个系数的求解过程,如图3所示,其中(sj0,sj1,…sj(m-1))是Sj的m阶系数,为αj的最小多项式。

假设码字是按照每个周期输入1bit的频率进行输入,则需要8528个周期才能输入完毕,(sj0,sj1,…sj(m-1))存在寄存器里面,每过一个周期更新一次。

根据图3的框图,假设在T时刻,输入的码字比特为r(T),伴随式其中一维向量的状态为(sj0(T),sj1(T),…sj(m-1)(T)),则在T+1时刻,输入的码字比特为 r(T+1),此时根据反馈移位电路更新寄存器中的内容为 (sj0(T+1),sj1(T+1),…sj(m-1)(T+1)),与上一个周期的(sj0(T),sj1(T),…sj(m-1)(T))的计算关系如下式所示。

转换为矩阵形式为:

上式可以简化为S(T+1)=Ψ×[S(T)+R(T+1)]。

其中,Ψ是由αj的最小多项式系数组成的矩阵,且:

则:S(T+1)=(s(T+1) sj(m-2)(T+1) … sj1(T+1) sj0(T+1))T

S(T)=(sj(m-1)(T) sj(m-2)(T) … sj1(T) sj0(T))T

R(T+1)=(0 0 … r(T+1))T

由(S(T+1)=Ψ×[S(T)+R(T+1)]可以知道S(T+1)和S(T)之间的关系,由此可以推导出T时刻与T+p时刻之间的关系式,即

进一步推导出一个迭代公式:

S(T+p)=Φ×(S(T)+Rp)。

其中:

Φ=(Ψp Ψp-1 … Ψ),Rp=[0 … 0 r(T+1) r(T+2) … r(T+p)]T,p 为并行解码的比特数。

迭代公式是最终推导出的并行计算的公式,从硬件来看,NAND闪存芯片大多有8根数据线,通常情况下一次读取8bit的数据,所以工程应用中选择p=8 最为便利。之前每个周期输入1bit,根据该公式,可以每个周期输入8bit,如图4所示的框图。计算时间缩短为原来的1/8,提高的算法的计算效率。

为使本专利中伴随式的推导过程在应用时更加清晰,下面将详细描述其在 FPGA芯片中的硬件实现过程。每次从Flash中取出8258bit的码字计算其伴随式多项式矩阵,即n=8258,其中前8192bit是需要纠错的原码,后336bit是校验码,m=14,t=24,并行计算能力p=8。

计算伴随式,最主要的是计算Ψp。从硬件实现角度,有关矩阵的计算是复杂和庞大的过程。在伽罗华域中,矩阵Ψ在给定j的情况下是一个定值,所以Ψp在p确定后也是一个确定的矩阵,此处借助Matlab的数学计算优势,事先计算出Ψp的值,在硬件中只需要完成乘加运算,大大减小资源消耗。

通过观察最小多项式Ψ的特点发现,在计算Ψp的过程中遵循以下规律,

根据上面的公式,可利用Matlab实现Ψp矩阵的运算过程,在GF(2m)伽罗华域下(m=14),Ψ1p的计算结果是一个矩阵常数,如图5所示。

根据图5和迭代公式,可以推导出伴随式S1

根据最后一个公式所得结果,可以计算出最终时刻所有48个伴随式的值。再根据得到的伴随式的值是否全为0,来判断输入码字中是否有错误。

如果伴随式全为0,说明输入码字无错误,可以直接输出使用,如果伴随式不全为0,说明输入码字存在错误,需要进行后续的计算得到错误位置多项式,并进行纠错处理。

上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种二元BCH码伴随式矩阵的实现方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

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