一种长BCH码的译码系统及方法与流程

文档序号:12039617阅读:330来源:国知局
一种长BCH码的译码系统及方法与流程
本发明涉及纠正多位错误的纠错码译码领域,尤其涉及长BCH码的快速译码领域。

背景技术:
BCH码作为一种可以纠正随机多位错误的纠错码正被广泛应用于通信、信息存储等领域。随着技术的发展,芯片的存储密度不断增加,存储容量增大,数据在存储过程中出现位翻转的概率正在不断增大,需要通过增加冗余校验位等措施保障数据的可靠存取。为了保证数据的可靠性,传统的信息存储过程主要采用Hamming等纠1检2的纠错码。其优点是编译码原理简单,软硬件实现的效率很高,但是其纠错能力有限,只能纠正1位错误,检测2位错误,对错误率较高的场合并不适用。例如:针对NandFlash芯片,随着技术的进步,NandFlash芯片正从SLC型向MLC型转变(本领域内的人员可以理解SLC、MLC为NandFlash的芯片类型),存储密度的增加的代价是可靠性的降低,出现多位错误的可能性增大,传统的纠1检2码已经不能满足需求,具有更大纠错能力的纠错码必须被采用。BCH码正是这样一种能够提供多位纠错能力的纠错码,其使用方法为:在写数据的过程中编码获得校验位,在读数据的过程中通过校验位检验数据是否存在错误,纠正错误。目前对BCH码译码的研究主要集中于硬件领域,通过求伴随式,BM算法求错误位置多项式,钱搜索验根的硬件电路实现BCH码的译码过程,其优点是时间冗余度小。但是并不是所有的设备都支持硬件译码结构,针对不具备硬件译码结构的存储设备,如何通过软件实现BCH纠错过程就变得非常必要了。目前BCH码译码的软件实现多针对码长非常短的BCH码,针对长BCH码的研究非常少见。而针对大容量的存储器件,则需要长BCH 码才能满足可靠性需求。如果长BCH码的译码过程依然采用传统的流程,则势必导致算法复杂度非常大,造成的时间冗余很大,严重影响BCH码的使用效率。故迫切需要一种能够快速实现的长BCH码的译码系统及方法。

技术实现要素:
本发明的目的是提供一种快速实现的长BCH译码系统及方法,适用于不具备硬件ECC纠错结构的存储设备的可靠性增强。在保证纠错能力的同时,尽可能提升BCH码的使用效率。为达到所述目的,本发明提供的一种长BCH码的译码系统,所述系统具有伴随式求取模块、错误位置多项式产生模块、求根模块、错误位置修正模块,其中:伴随式求取模块接收输入的待译码数据信息,通过余式比较获得并输出伴随式;错误位置多项式产生模块获得伴随式求取模块输出的伴随式后,根据错误位数判决条件判断错误位置多项式的次数,调用相应次数的1次多项式生成子模块、2次多项式生成子模块、3次多项式生成子模块或4次多项式生成子模块,生成相应的1次错误位置多项式、2次错误位置多项式、3次错误位置多项式或4次错误位置多项式;求根模块包括1次多项式求根子模块,2次多项式求根子模块,3次多项式求根子模块和4次多项式求根子模块,以错误位置多项式产生模块传递来的错误位置多项式的次数为触发信号,调用相应的所述多项式求根子模块,用于求得错误位置多项式的根,进而找到错误位置所在,并将错误位置输出到错误位置修正模块;错误位置修正模块,用于将错误位置处的数据取反,输出取反数据,并纠正错误。本发明还提供一种使用长BCH码的译码系统的长BCH码的译码方法,包括如下步骤:步骤S1:对待译码的数据的信息位进行再次编码运算,获得新的校验位;步骤S2:调用伴随式求取模块,利用余式比较的方法获得并输出伴随式的值;步骤S3:错误位置多项式产生模块利用伴随式的值,并根据错误位数判决条件判断错误位置多项式的次数,调用相应次数多项式生成子模块,输出错误位置多项式的次数及各项系数;步骤S4:纠错模块根据错误位置多项式的次数调用相应次数多项式求根子模块,采用有限域扩域多项式求根方法(Zinoviev)法求得错误位置多项式的根,进而求得错误位置所在;步骤S5:将错误位置处的数据取反并输出,完成纠错过程。本发明采取以上技术方案后相对于现有技术具有以下优点:1)本发明提供针对长BCH码的译码系统,能够不依靠硬件结构快速实现长BCH码的译码过程,很好的降低了目前纠错码通过硬件实现带来的高成本。2)本发明提供的长BCH码的译码系统在实现译码过程中,依靠错误位数判决条件求解错误位置多项式,取代传统的SiBM算法,只包含少量的数学运算,减少了循环和分支判断,更适合软件架构;以针对不同次数有限域扩域多项式求根方法(Zinoviev)法求根模块取代传统的钱搜索算法,免去了按位验根的过程;在执行以上操作后,使译码过程复杂度大大降低,有效提升了BCH码的使用效率,使译码过程的时间冗余降至可接受的范围,能够满足一般应用场合和一些实时性要求较高的场合,具有很高的应用价值。3)本发明提供的长BCH码的译码系统不局限于系统运行的平台,可以是DSP芯片、FPGA芯片、ARM芯片、PC机等多种平台,具有很高的通用性和可移植性。附图说明图1为本发明提供的长BCH码的译码系统的组成框图。图2为本发明提供的长BCH码的译码方法的流程图。图3为本发明提供的错误位数判决条件实现流程图。图4为本发明提供的求错误位置多项式的根的实现流程图。图5为本发明提供的2次多项式求根子模块的实现流程图。图6为本发明提供的3次多项式求根子模块的实现流程图。图7为本发明提供的4次多项式求根子模块的实现流程图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。在本发明的一个具体实施案例中,实现针对NandFlash芯片(本领域的人员都知道NandFlash是一种芯片名称)的BCH纠错码BCH(4148,4096,9)译码系统,码长4148位,信息位4096位,具有最大纠错能力为4位。译码过程中的所有运算都是基于2阶有限域GF(2)的扩域GF(2m),其中m为限制有限域扩域GF(2m)大小的正整数,由BCH码的码长决定,在所述具体实施案例中m=13。随机生成4096位0,1组合的数据,在写入NandFlash芯片中的过程中对随机生成的数据进行编码,将编码生成校验位存储于NandFlash芯片中的空闲区,然后向生成的数据中随机注入不超过4位错误,构成读到的待译码数据,应用本发明提供的译码系统对待译码的数据进行译码过程。如图1所示为本发明提供的长BCH码的译码系统的组成框图,图中具体标示了每一部分的连接关系。所述系统具有伴随式求取模块11、错误位置多项式产生模块12、求根模块13、错误位置修正模块14,其中:伴随式求取模块11接收输入的待译码数据信息,通过余式比较获得并输出伴随式;错误位置多项式产生模块12连接伴随式求取模块11,用于根据伴随式生成并输出错误位置多项式及各项系数;求根模块13连接错误位置多项式产生模块12,用于根据错误位置多项式及各项系数生成并输出错误位置多项式的根,找出错误位置所在;错误位置修正模块14,用于将错误位置处的数据取反,输出取反数据,并纠正错误。其中,所述伴随式求取模块11采用余式比较求伴随式,首先对待译码数据的信息位进行再次编码,将编码生成的新的校验位与存储的原校验位进行按位异或运算,如果运算结果的每一位都为0,则接收码字没有错误,跳出译码过程;如果运算结果中有任何一位不为0,则需要对码字进行纠错,计算伴随式的值。其中,所述错误位置多项式产生模块12根据错误位数判决条件判 断错误位置多项式的次数,调用相应次数的1次多项式生成子模块121、2次多项式生成子模块122、3次多项式生成子模块123或4次多项式生成子模块124,生成相应的1次错误位置多项式、2次错误位置多项式、3次错误位置多项式或4次错误位置多项式。其中,所述求根模块13包括1次多项式求根子模块131,2次多项式求根子模块132,3次多项式求根子模块133和4次多项式求根子模块134,以错误位置多项式产生模块12传递来的错误位置多项式的次数为触发信号,调用相应的所述多项式求根子模块,用于求得错误位置多项式的根,进而找到错误位置所在。如图2所示为本发明提供的长BCH码的译码方法的流程图,使用本实施案例中长BCH码的译码系统的译码方法包括如下步骤:步骤S1:对待译码的数据的信息位进行再次编码运算,获得新的校验位;步骤S2:调用伴随式求取模块,利用余式比较的方法获得并输出伴随式的值;步骤S3:错误位置多项式产生模块利用伴随式的值,并根据错误位数判决条件判断错误位置多项式的次数,调用相应次数多项式生成子模块,输出错误位置多项式的次数及各项系数;步骤S4:纠错模块根据错误位置多项式的次数调用相应次数多项式求根子模块,采用有限域扩域多项式求根方法(Zinoviev)法求得错误位置多项式的根,进而求得错误位置所在;步骤S5:将错误位置处的数据取反并输出,完成纠错过程。如步骤S2所述的利用余式比较的方法获得并输出伴随式的值,包含如下步骤:将生成的校验位与读取到的校验位按位异或运算,得到运算结果为y(x),y(x)表示为y(x)=ymt-1xmt-1+…+y1x+y0,其中ymt-1,…,y1,y0分别为按位异或运算结果y(x)的第mt-1,…,1,0位的值,变量x为有限域扩域上的元素,t为BCH码能够纠正的最大错误位数,m为限制有限域扩域GF(2m)大小的正整数;在得到运算结果y(x)后,判断运算结果y(x)的每一位是否等于0,若运算结果y(x)的每一位都为0,则读到的数据没有错误,译码结束,直接输出数据;如果运算结果y(x)中有任 何一位不为0,则令有限域扩域上的元素x=αi(本领域内的人员可以知晓αi为有限域扩域GF(2m)上的第i个元素),根据Si=y(αi)求伴随式S(x),其中所述伴随式S(x)={S1,S3…S2t-1},伴随式S(x)为一个一维数组,S1,S3…S2t-1为伴随式S(x)中的元素用Si表示,下标i=1,3…2t-1为伴随式S(x)的索引。如图3所示步骤3所述的根据错误位数判决第一条件、第二条件和第三条件判断错误位置多项式的次数的步骤包括:步骤31:对伴随式S(x)中的元素Si进行判断,当元素Si满足第一条件时,则调用1次多项式生成子模块121,求得次数为1的错误位置多项式σ(x),得到1次错误位置多项式σ(x)的系数为:σ0=1,σ1=S1,得到1次错误位置多项式为:σ(x)=σ1x+σ0,进入步骤S4;当元素Si不满足第一条件时,则执行步骤32;步骤32:当元素Si满足第二条件时,则调用2次多项式生成子模块122,求得次数为2的错误位置多项式σ(x),得到2次错误位置多项式σ(x)的系数为:σ0=1,σ1=S1,得到2次错误位置多项式为:σ(x)=σ2x2+σ1x+σ0,进入步骤S4;当元素Si不满足第二条件时,则执行步骤33;步骤33:当元素Si满足第三条件:时,则调用3次多项式生成子模块123,求得次数为3的错误位置多项式σ(x)系数为:σ0=1,σ1=S1,得到3次错误位置多项式为:σ(x)=σ3x3+σ2x2+σ1x+σ0,进入步骤S4;当元素Si不满足第三条件时,则调用4次多项式生成子模块124,求得次数为4的错误位置多项式σ(x)系数为:σ0=1,σ1=S1,得到4次错误位置多项式为:σ(x)=σ4x4+σ3x3+σ2x2+σ1x+σ0,进入步骤 S4;所述σ0,σ1,σ2,σ3,σ4为错误位置多项式σ(x)的系数。步骤S4所述的采用有限域扩域多项式求根方法(Zinoviev)法求得错误位置多项式的根,如图4所示,包括如下步骤:步骤S41:将有限域扩域上的错误位置多项式转化成仿射多项式σ(z)=L(z)+c的形式,其中z为有限域扩域GF(2m)上的变量,c为有限域扩域GF(2m)上的常量,σ(z)为有限域扩域GF(2m)上的仿射多项式,为有限域扩域GF(2m)上的线性多项式,其中GF(2m)为2阶有限域GF(2)的扩域,m为限制有限域扩域GF(2m)大小的正整数,n为控制有限域扩域GF(2m)上的线性多项式的次数的任意正整数,Lj为有限域扩域GF(2m)上的元素,j为线性多项式的系数索引,j从0,1…n变化;步骤S42:采用有限域扩域多项式求根方法(Zinoviev)法求有限域扩域下1次仿射多项式、2次仿射多项式、3次仿射多项式或4次仿射多项式的根;步骤S43:根据仿射多项式的根通过反变换运算求得错误位置多项式的根;步骤S44:对错误位置多项式的根求逆运算得到错误位置。在本实施案例中,如步骤S4所述的根据错误位置多项式的次数调用相应次数多项式求根子模块,在1次多项式求根子模块、2次错多项式求根子模块、3次多项式求根子模块、4次多项式求根子模块中分别进行所述步骤S41、步骤S42、步骤S43、步骤S44的操作。1次多项式求根模块执行的操作为:获得1次多项式生成子模块传递来的1次错误位置多项式σ(x)=σ1x+σ0,1次错误位置多项式已经是仿射多项式的形式,求得1次仿射多项式的根即为错误位置多项式的根:σ0/σ1,求逆运算得到错误位置处在第σ1/σ0位。2次多项式求根子模块的实现流程图如图5所示,2次多项式求根过程包括如下步骤:步骤51:获得2次多项式生成子模块传递来的2次错误位置多项式σ(x)=σ2x2+σ1x+σ0;步骤52:将2次错误位置多项式转化为2次仿射多项式σ(z)=L(z)+c的形式,其中有限域扩域GF(2m)上的变量z=σ1x/σ2,L(z)为有限域扩域GF(2m)上的线性多项式,c为有限域扩域GF(2m)上的常量;步骤53:采用有限域扩域多项式求根方法(Zinoviev)法,找到2次仿射多项式σ(z)的两个根:z1,z2,其中z2=z1+1;步骤54:根据2次仿射多项式的两个根z1,z2反变换求出2次错误位置多项式σ(x)的两个根:x1,x2,其中步骤55:对2次错误位置多项式σ(x)的2个根求逆运算,求出错误位置。3次多项式求根子模块的实现流程图如图6所示,3次多项式求根过程包括如下步骤:步骤61:获得3次多项式生成子模块传递来的3次错误位置多项式σ(x)=σ3x3+σ2x2+σ1x+σ0;步骤62:将3次错误位置多项式σ(x)的3次项系数化为1;步骤63:为3次错误位置多项式σ(x)增加一个额外的根:σ2/σ3,将3次错误位置多项式转化为4次仿射多项式的形式;步骤64:转到4次多项式求根子模块,应用4次仿射多项式求根方法,求解出4次多项式的4个根。步骤65:得到4次多项式的4根后,将步骤63中增加的额外的根(σ2/σ3)去除,剩余的3个根为3次错误位置多项式σ(x)的根;步骤66:对3次错误位置多项式σ(x)的3个根求逆运算,求出错误位置。4次多项式求根子模块的实现流程图如图7所示,4次多项式求根过程包括如下步骤:步骤71:获得:4次多项式生成子模块传递来的4次错误位置多项式σ(x)=σ4x4+σ3x3+σ2x2+σ1x+σ0;步骤72:将4次错误位置多项式σ(x)的4次项系数化为1;步骤73:判断4次错误位置多项式σ(x)的3次项系数是否为0,若3次项系数为0,则进入步骤75,若3次项系数不等于0,则进入步骤 74;步骤74:消除4次错误位置多项式的3次项系数,令有限域扩域上的变量z=1/(x-h),将4次错误位置多项式转化为4次仿射多项式σ(z)=L(z)+c的形式,所述h为有限域扩域GF(2m)上的常量,且h满足σ3h2+σ1=0,用来消除3次项系数,L(z)为有限域扩域GF(2m)上的线性多项式,c为有限域扩域GF(2m)上的常量;步骤75:采用有限域扩域多项式求根方法(Zinoviev)法,求得4次仿射多项式的4个根:z3,z4,z5,z6;步骤76:根据4次仿射多项式的4个根z3,z4,z5,z6反变换得到对应的4次错误位置多项式σ(x)的4个根:x3,x4,x5,x6,其中,h为步骤74中所述的有限域扩域GF(2m)上的常量;步骤77:对4次错误位置多项式σ(x)的4个根求逆运算,找到错误位置。本发明所述系统流程采用软件实现,不局限于系统运行平台的选择,具备非常强的可移植性。在本案例中选择主频2.0GHzPC机,ADI公司出产的主频300MHz的ADITS101以及ADI公司出产的主频600MHz的ADITS201分别针对BCH(4148,4096,9)执行控制和计算过程,得到最大错误位数的情况下的结果如下表1:表1:BCH(4148,4096,9)不同实现效果对比设备运行机器周期数运行时间(μs)PC7521TS1011327744.2TS2011529325.4本发明描述的GF(2)、GF(2m)、伴随式S(x)及其表示方法、错误位置多项式σ(x)及其表示方法,α表示有限域扩域的本原元,αi表示有限域扩域GF(2m)上的元素,是纠错码领域的常用符号,没有其他解释方法,该领域的人员可以读懂。上面描述是用于实现本发明及其实施例,本发明的范围不应由该描 述来限定,本领域的技术人员应该理解,在不脱离本发明的范围的任何修改或局部替换,均属于本发明权利要求来限定的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1