基于fpga的bch编解码装置及其编解码方法

文档序号:9790580阅读:612来源:国知局
基于fpga的bch编解码装置及其编解码方法
【技术领域】
[0001]本发明属于存储系统数据的错误检查和纠正(ECC)校验技术领域,具体涉及一种基于FPGA的BCH编解码装置及其编解码方法,即基于一种现场可编程逻辑门阵列(FPGA)的线性循环码编解码装置及其编解码方法,适用于数据信号在存储系统中的可靠存储。
【背景技术】
[0002 ] 随着NAND闪存存储器的制造工艺和存储单元架构的发展,使得NAND闪存存储器的NAND FLASH存储介质产生误码的概率大大增加,这是由于FLASH存储芯片会发生“位交换”现象,NAND FLASH存储介质发生“位交换”主要原因是漂移效应,S卩:NAND FLASH存储介质中的电压逐渐发生变化,导致存储在NAND FLASH存储介质中的数据发生逻辑上的交换,芯片制造工艺以及架构的发展使得一个存储单元能够存储更多的数据位,电压微小的变化都有可能引起存储数据逻辑上的改变,使得漂移效应引起的位交换就更容易发生,也就要求具有纠错能力更好的存储器。
[0003]目前纠错码的数据编码位数少,串行编码效率低,纠错位数少,而且早期的汉明码已经无法满足N A N D F L A S H存储介质对纠错能力的要求,其特殊的物理结构决定了 N A N DFLASH(闪存)存储介质容易发生随机性错误。
[0004]因此,本发明人发现,相对于其他编码,BCH码是一种可以纠正多个随机性错误的有限域中的线性分组码,能够适用于作为NAND FLASH存储介质中的纠错编码。

【发明内容】

[0005]针对以上存在问题,本发明的目的在于提出一种基于FPGA的BCH编解码装置及其编解码方法,该编解码装置及其编解码方法采用8位并行设计编码与解码,不仅能够提高编解码速度,而且采用并行设计能够降低计算复杂度,提高编解码效率。
[0006]为达到上述技术目的,本发明采用如下技术方案予以实现。
[0007]技术方案1:
[0008]一种基于FPGA的BCH编解码装置,搭建于FPGA芯片上,包括:接收模块、BCH编码模块、存储模块和BCH解码模块;所述接收模块的输出端连接所述BCH编码模块的输入端,所述BCH编码模块的输出端连接所述存储模块的输入端,所述存储模块的输出端连接所述BCH解码模块的输入端;
[0009]所述接收模块接收信号数据,并将信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行编码,并将编码后的信号数据发送存储模块进行存储,BCH解码模块获取存储在存储模块中的编码后的信号数据,然后对所述编码后的信号数据进行解码处理,得到解码后的编码信号数据。
[0010]技术方案2:
[0011]一种基于FPGA的BCH编解码方法,基于搭建于FPGA芯片上的接收模块、BCH编码模块、存储模块和BCH解码模块,所述基于FPGA的BCH编解码方法,包括以下步骤:
[0012]步骤I,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述r个比特校验位分别存储到存储模块中;其中,r表示自然数;
[0013]步骤2,从存储模块中获取所述信号数据和所述r个比特校验位,得到码字多项式R(X),并将所述码字多项式RU)发送至BCH解码模块,BCH解码模块对所述码字多项式RU)进行解码,计算得到码字多项式RU)的Q个伴随式;其中,Q表示自然数;
[0014]步骤3,根据码字多项式RU)的Q个伴随式,计算得到所述信号数据在存储过程中产生错误的错误位置多项式;
[0015]步骤4,根据所述信号数据在存储过程中产生错误的错误位置多项式纠正所述信号数据在存储过程的错误数据位,进而得到存储在存储模块中的正确信号数据。
[0016]本发明的有益效果为:本发明在FPGA数据校验、BCH编码、伴随式求解以及错误位置多项式求解中,分别采用了Sbits并行计算,大大降低了编译码的周期,并且在求解错误位置多项式时采用无求逆的BM算法,使得无须进行矩阵运算,降低了逻辑设计的复杂度,提高了模块的可移植性。
【附图说明】
[0017]下面结合附图和【具体实施方式】对本发明作进一步详细说明。
[0018]图1为本发明的一种基于FPGA的BCH编解码方法的实现流程框图;
[0019]图2为使用带反馈的线性移位寄存器进行BCH并行编码的过程示意图;
[0020]图3为使用无求逆BM算法求解错误多项式的系数的迭代步骤示意图;
[0021 ]图4为简化的无求逆算法电路图
[0022]图5为钱搜索模块原理图;
[0023]图6为使用钱搜索遍历检查出的第一个错误示意图;
[0024]图7为使用钱搜索遍历检查出的第二个错误示意图。
【具体实施方式】
[0025]本发明的一种基于FPGA的BCH编解码装置,搭建于FPGA芯片上,包括:接收模块、BCH编码模块、存储模块和BCH解码模块;所述接收模块的输出端连接所述BCH编码模块的输入端,所述BCH编码模块的输出端连接所述存储模块的输入端,所述存储模块的输出端连接所述BCH解码模块的输入端;
[0026]所述接收模块接收信号数据,并将信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行编码,并将编码后的信号数据发送存储模块进行存储,BCH解码模块获取存储在存储模块中的编码后的信号数据,然后对所述编码后的信号数据进行解码处理,得到解码后的编码信号数据;本实施例是在FPGA芯片上利用verilog语言分别实现BCH编码和BCH解码的,并且接收模块和存储模块分别使用的是FLASH控制模块。
[0027]参照图1,为本发明的一种基于FPGA的BCH编解码方法的实现流程框图,一种基于FPGA的BCH编解码方法,基于搭建于FPGA芯片上的接收模块、BCH编码模块、存储模块和BCH解码模块,所述基于FPGA的BCH编解码方法包括以下步骤:
[0028]步骤I,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述r个比特校验位分别存储到存储模块中;其中,r表示自然数;
[0029]具体地,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码;本实施例中是将所述信号数据中的每IKB信号分为一段进行BCH编码,所述信号数据进行分段编码后的数据位长度k = 8192,所述信号数据进行分段编码后所能纠错的位数t为32,对二元域的m次扩展域GF(2m);由于213-1〈8192〈214-1,所以 m=14。
[0030]根据BCH码的编码原理,分别设定BCH码的生成多项式g(x),待BCH编码数据为C(X),其表达式为:
[0031 ] C(x) =Co+Cix+...+Ck—3Xk—3+Ck—2Xk—2+Ck—ixk—1
[0032]其中,Co表示待BCH编码数据C(x)的第零位数据位系数,C1表示待BCH编码数据C(x)的第一位数据位系数,....,Ch表示待BCH编码数据CU)的第k-Ι位数据位系数。
[0033]进而得到BCH编码的校验公式r(x)为:
[0034]r(x) =xrC(x)modg(x)
[0035]=((((Ck-1x+Ck-2)x+Ck-3)X+...+Ci)x+Co)xr modg(x)
[0036]=((((((Ck-1x+Ck-2)x+Ck-3)X+...+Ci)x+Co)+0)x+...0)modg(x)
[0037]设k个数据位的第8i+0到8i+7的八位数据Mi的表达式为:
[0038]Mi = C8i+7X7+C8i+6X6+...+C8i+2X3+C8i+lX+C8i
[0039]其中,OSi〈k/8,k表示所述信号数据进行分段编码后的数据位长度,本实施例中k= 8192;然后计算得到所述信号数据进行分段编码后的数据位长度为i的并行BCH编码校验公式ri(x),其表达式为:
[0040]ri(x) = (Γ?-ι(X)x8+Mi)modg(x) =r1-1(
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1