CN105553485A - 基于fpga的bch编解码装置及其编解码方法 - Google Patents
基于fpga的bch编解码装置及其编解码方法 Download PDFInfo
- Publication number
- CN105553485A CN105553485A CN201510901498.3A CN201510901498A CN105553485A CN 105553485 A CN105553485 A CN 105553485A CN 201510901498 A CN201510901498 A CN 201510901498A CN 105553485 A CN105553485 A CN 105553485A
- Authority
- CN
- China
- Prior art keywords
- signal data
- polynomial
- data
- error
- represent
- 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.)
- Granted
Links
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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种基于FPGA的BCH编解码方法,思路为:通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述比特校验位分别存储到存储模块中;从存储模块中获取所述信号数据和所述校验位后进行BCH解码,得到码字多项式R(x),并据此得到码字多项式R(x)的Q个伴随式,进而得到所述信号数据在存储过程中产生错误的错误位置多项式;根据所述信号数据在存储过程中产生错误的错误位置多项式,以及钱搜索遍历算法求解所述错误位置多项式的根,并据此纠正所述信号数据在存储过程的错误数据位,得到存储在存储模块中的正确信号数据。
Description
技术领域
本发明属于存储系统数据的错误检查和纠正(ECC)校验技术领域,具体涉及一种基于FPGA的BCH编解码装置及其编解码方法,即基于一种现场可编程逻辑门阵列(FPGA)的线性循环码编解码装置及其编解码方法,适用于数据信号在存储系统中的可靠存储。
背景技术
随着NAND闪存存储器的制造工艺和存储单元架构的发展,使得NAND闪存存储器的NANDFLASH存储介质产生误码的概率大大增加,这是由于FLASH存储芯片会发生“位交换”现象,NANDFLASH存储介质发生“位交换”主要原因是漂移效应,即:NANDFLASH存储介质中的电压逐渐发生变化,导致存储在NANDFLASH存储介质中的数据发生逻辑上的交换,芯片制造工艺以及架构的发展使得一个存储单元能够存储更多的数据位,电压微小的变化都有可能引起存储数据逻辑上的改变,使得漂移效应引起的位交换就更容易发生,也就要求具有纠错能力更好的存储器。
目前纠错码的数据编码位数少,串行编码效率低,纠错位数少,而且早期的汉明码已经无法满足NANDFLASH存储介质对纠错能力的要求,其特殊的物理结构决定了NANDFLASH(闪存)存储介质容易发生随机性错误。
因此,本发明人发现,相对于其他编码,BCH码是一种可以纠正多个随机性错误的有限域中的线性分组码,能够适用于作为NANDFLASH存储介质中的纠错编码。
发明内容
针对以上存在问题,本发明的目的在于提出一种基于FPGA的BCH编解码装置及其编解码方法,该编解码装置及其编解码方法采用8位并行设计编码与解码,不仅能够提高编解码速度,而且采用并行设计能够降低计算复杂度,提高编解码效率。
为达到上述技术目的,本发明采用如下技术方案予以实现。
技术方案1:
一种基于FPGA的BCH编解码装置,搭建于FPGA芯片上,包括:接收模块、BCH编码模块、存储模块和BCH解码模块;所述接收模块的输出端连接所述BCH编码模块的输入端,所述BCH编码模块的输出端连接所述存储模块的输入端,所述存储模块的输出端连接所述BCH解码模块的输入端;
所述接收模块接收信号数据,并将信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行编码,并将编码后的信号数据发送存储模块进行存储,BCH解码模块获取存储在存储模块中的编码后的信号数据,然后对所述编码后的信号数据进行解码处理,得到解码后的编码信号数据。
技术方案2:
一种基于FPGA的BCH编解码方法,基于搭建于FPGA芯片上的接收模块、BCH编码模块、存储模块和BCH解码模块,所述基于FPGA的BCH编解码方法,包括以下步骤:
步骤1,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述r个比特校验位分别存储到存储模块中;其中,r表示自然数;
步骤2,从存储模块中获取所述信号数据和所述r个比特校验位,得到码字多项式R(x),并将所述码字多项式R(x)发送至BCH解码模块,BCH解码模块对所述码字多项式R(x)进行解码,计算得到码字多项式R(x)的Q个伴随式;其中,Q表示自然数;
步骤3,根据码字多项式R(x)的Q个伴随式,计算得到所述信号数据在存储过程中产生错误的错误位置多项式;
步骤4,根据所述信号数据在存储过程中产生错误的错误位置多项式纠正所述信号数据在存储过程的错误数据位,进而得到存储在存储模块中的正确信号数据。
本发明的有益效果为:本发明在FPGA数据校验、BCH编码、伴随式求解以及错误位置多项式求解中,分别采用了8bits并行计算,大大降低了编译码的周期,并且在求解错误位置多项式时采用无求逆的BM算法,使得无须进行矩阵运算,降低了逻辑设计的复杂度,提高了模块的可移植性。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细说明。
图1为本发明的一种基于FPGA的BCH编解码方法的实现流程框图;
图2为使用带反馈的线性移位寄存器进行BCH并行编码的过程示意图;
图3为使用无求逆BM算法求解错误多项式的系数的迭代步骤示意图;
图4为简化的无求逆算法电路图
图5为钱搜索模块原理图;
图6为使用钱搜索遍历检查出的第一个错误示意图;
图7为使用钱搜索遍历检查出的第二个错误示意图。
具体实施方式
本发明的一种基于FPGA的BCH编解码装置,搭建于FPGA芯片上,包括:接收模块、BCH编码模块、存储模块和BCH解码模块;所述接收模块的输出端连接所述BCH编码模块的输入端,所述BCH编码模块的输出端连接所述存储模块的输入端,所述存储模块的输出端连接所述BCH解码模块的输入端;
所述接收模块接收信号数据,并将信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行编码,并将编码后的信号数据发送存储模块进行存储,BCH解码模块获取存储在存储模块中的编码后的信号数据,然后对所述编码后的信号数据进行解码处理,得到解码后的编码信号数据;本实施例是在FPGA芯片上利用verilog语言分别实现BCH编码和BCH解码的,并且接收模块和存储模块分别使用的是FLASH控制模块。
参照图1,为本发明的一种基于FPGA的BCH编解码方法的实现流程框图,一种基于FPGA的BCH编解码方法,基于搭建于FPGA芯片上的接收模块、BCH编码模块、存储模块和BCH解码模块,所述基于FPGA的BCH编解码方法包括以下步骤:
步骤1,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述r个比特校验位分别存储到存储模块中;其中,r表示自然数;
具体地,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码;本实施例中是将所述信号数据中的每1KB信号分为一段进行BCH编码,所述信号数据进行分段编码后的数据位长度k=8192,所述信号数据进行分段编码后所能纠错的位数t为32,对二元域的m次扩展域GF(2m);由于213-1<8192<214-1,所以m=14。
根据BCH码的编码原理,分别设定BCH码的生成多项式g(x),待BCH编码数据为C(x),其表达式为:
C(x)=C0+C1x+...+Ck-3xk-3+Ck-2xk-2+Ck-1xk-1
其中,C0表示待BCH编码数据C(x)的第零位数据位系数,C1表示待BCH编码数据C(x)的第一位数据位系数,….,Ck-1表示待BCH编码数据C(x)的第k-1位数据位系数。
进而得到BCH编码的校验公式r(x)为:
r(x)=xrC(x)modg(x)
=((((Ck-1x+Ck-2)x+Ck-3)x+...+C1)x+C0)xrmodg(x)
=((((((Ck-1x+Ck-2)x+Ck-3)x+...+C1)x+C0)+0)x+...0)modg(x)
设k个数据位的第8i+0到8i+7的八位数据Mi的表达式为:
Mi=C8i+7x7+C8i+6x6+...+C8i+2x3+C8i+1x+C8i
其中,0≤i<k/8,k表示所述信号数据进行分段编码后的数据位长度,本实施例中k=8192;然后计算得到所述信号数据进行分段编码后的数据位长度为i的并行BCH编码校验公式ri(x),其表达式为:
ri(x)=(ri-1(x)x8+Mi)modg(x)=ri-1(x)x8modg(x)+Mi,0≤i<k/8
其中,0≤i<k/8,k表示所述信号数据进行分段编码后的数据位长度,Mi表示设定的k个数据位的第8i+0到8i+7的八位数据,ri-1(x)表示所述信号数据进行分段编码后的数据位长度为i-1的并行BCH编码校验式,g(x)表示设定的BCH码的生成多项式,mod(i)表示取模操作。
根据所述信号数据进行分段编码后的数据位长度为i的并行BCH编码校验公式ri(x),计算得到所述信号数据对应的r个比特校验位,其计算过程为:
1.1初始化:r-1(x)表示所述信号数据进行分段编码后对生成多项式求余所得到的初始值,r-1(x)=0,M0表示所述信号数据的第1组八位数据,M1表示所述信号数据的第2组八位数据,…,Mk/8表示所述信号数据的第(k/8)+1组八位数据,0≤i<k/8,k表示所述信号数据进行分段编码后的数据位长度,g(x)表示设定的BCH码的生成多项式,p表示迭代次数,且p的初始值为1;
1.2根据所要进行编码的第1组八位数据M0和接收信号数据对生成多项式求余所得到的初始值r-1(x),计算得到第1次迭代后的第2组八位数据对生成多项式求余所得到的值r0(x),r0(x)为r-1(x)x8+M0对g(x)求余所得;
1.3令p的值加1;
1.4根据所要进行编码的第p组八位数据Mp-1和第p-1次迭代后的第p-1组八位数据对生成多项式求余所得到的值rp-2(x),计算得到第p次迭代后的第p+1组八位数据对生成多项式求余所得到的值rp-1(x),rp-1(x)为rp-2(x)x8+Mp-1对g(x)求余所得;
1.5依次重复执行子步骤1.3和1.4,直到得到第k/8次迭代后的第(k/8)+1组八位数据对生成多项式求余所得到的值r(k/8)-1(x),迭代停止,此时得到所述信号数据对应的r个比特校验位;其中,p∈{1,2,…,k/8},k表示所述信号数据进行分段编码后的数据位长度。
参照图2,为使用带反馈的线性移位寄存器进行BCH并行编码的过程示意图;根据所述信号数据进行分段编码后的数据位长度为i的并行BCH编码校验公式ri(x)实现八位并行编码,并经过(k/8+r/8)个周期迭代,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述信号数据对应的r个比特校验位分别存储到存储模块中;本实施例中,r=m*t=14×32=448,经过BCH编码模块后的信号数据码长n=k+r=8192+448=8640。
步骤2,从存储模块中获取所述信号数据和所述r个比特校验位,得到码字多项式R(x),并将所述码字多项式R(x)发送至BCH解码模块,然后根据BCH编码算法,对所述码字多项式R(x)进行解码,计算得到码字多项式R(x)的Q个伴随式;其中,Q表示自然数。
具体地,从存储模块中获取所述信号数据和所述r个比特校验位,得到码字多项式R(x),并将所述码字多项式R(x)发送至BCH解码模块,然后根据BCH编码算法,对所述码字多项式R(x)进行解码,计算得到码字多项式R(x)的Q个伴随式;本实施例中所述码字多项式R(x)纠错的位数为32,所述BCH码的伴随式Q=32×2个。
计算BCH码的Q个伴随式的子步骤为:
2.1从存储模块中获取所述信号数据和所述校验位,得到码字多项式R(x),并设定第l个最小项多项式为ml(x),l∈{1,2,…,2t},然后将接收码元多项式R(x)对所述第l个最小项多项式ml(x)进行求余运算,得到第l个余式rml(x);
具体地,为了提高BCH码的编码速度,本实施例采用八位数据并行编码,从存储模块中获取所述信号数据和所述校验位,得到码字多项式R(x),其表达式为:
R(x)=r0+r1x+r2x2+r3x3+...+rn-1xn-1
其中,n表示经过BCH编码模块后的信号数据码长,r0表示接收的码字多项式码元的第零位数据,r1表示接收的码字多项式的第一位数据,...,rn-1表示接收的码字多项式的第n-1位数据,n=k+r,k表示所述信号数据进行分段编码后的数据位长度,r表示所述信号数据对应的比特校验位个数。
将从存储模块中接收的码字多项式R(x)中每八位数据,分别对第l个最小项多项式ml(x)求余,然后基于并行思想,设定从存储模块中接收的码字多项式R(x)的第8g位到第8g+7位的八位数据Eg为:
Eg=R8g+7x7+R8g+6x6+R8g+5x5+R8g+4x4+R8g+3x3+R8g+2x2+R8g+1x1+R8g
据此得到第l个余式rml(x),其表达式为:
rml(x)=R(x)modml(x)
=((R8g+7x7+R8g+6x6+R8g+5x5+...+R8g)x8+...+R1x+R0)modml(x)
其中,0≤g<n/8,n表示经过BCH编码模块后的信号数据码长,且n=k+r,k表示所述信号数据进行分段编码后的数据位长度,r表示所述信号数据对应的比特校验位个数,R1表示接收的码字多项式R(x)中第2位数据,R0表示接收的码字多项式R(x)中第1位数据。
2.2根据码字多项式R(x)设定BCH码的生成多项式g(x),求解设定的BCH码的生成多项式g(x)的根,并将其代入第l个余式rml(x)中,然后计算得到第l个伴随式Sl,进而得到Q个伴随式;其中,l∈{1,2,…,Q}。
具体地,求解设定的BCH码的生成多项式g(x)的根,获取Q个根,依次为τ1,τ2,...,τ63,τQ,并将所述Q个根代入第l个余式rml(x)中,计算得到第l个伴随式Sl,其表达式为:Sl=rml(τl)。
根据第l个伴随式Sl,进而得到Q个伴随式;其中,l∈{1,2,…,Q},r表示所述信号数据对应的比特校验位个数;本实施例中Q=64。
在得到BCH码的伴随式时,计算得到的第l个伴随式Sl属于串行编码,若计算第l个伴随式Sl,必须使得所述信号数据中的每段信号数据进行编码后的k个数据位都能够接收得到。采用本实施例方法进行设计并行求解伴随式的电路,需448个寄存器,可以节省一半寄存器。
另外,由于在求解伴随式以及余式的过程中,电路的硬件消耗较大,所以本发明在设计时采用了共享表达式方法,首先找出求解余式以伴随式的求解电路中将被共用的表达式,然后利用共享表达式的方法可以有效的减小伴随式求解时的硬件消耗。
步骤3,根据码字多项式R(x)的Q个伴随式和无求逆的BM算法,计算得到所述信号数据在存储过程中产生错误的错误位置多项式。
具体地,参照图3,为使用无求逆BM算法求解错误多项式的系数的迭代步骤示意图;求解所述码字多项式R(x)的Q个伴随式的值,并需要通过所求的Q个伴随式的值计算得到错误位置多项式,目前最优的改进算法为无求逆的BM算法(SIBM),该算法中无须对矩阵求逆,逻辑设计简单。
设定错误位置多项式为:
σ(x)=σ1x+σ2x2+....σt-1xt-1+σtxt
其中,σ1,σ2,...,σt-1,σt分别表示所述错误多项式的第1位、第2位、…、第t-1位、第t位系数。
设定错误多项式的伴随式多项式:
S(x)=S1x+S2x2+...+SQxQ
其中,S1,S2,...,SQ分别表示第1个,第2个,...,第Q个错误多项式的伴随式。
则BCH译码中的关键方程w(x)为:
w(x)=S(x)×σ(x)
其中,t表示所述信号数据中的每1KB信号数据进行编码所能纠错的位数,此处t为32;由BCH译码原理可得BCH译码中的关键方程w(x)的奇数项系数为零,比如:
Sq+Sq-1σ1+Sq-2σ2+...+S2σq-2+S1σq-1+σq=0
其中,S1表示第1个伴随式,S2表示第2个伴随式,σ1表示错误多项式的第1位系数,σq-1表示错误多项式的第q-1位系数,σq-2表示错误多项式的第q-2位系数,σq表示错误多项式的第q位系数,Sq-1表示第q-1个伴随式,Sq-2表示第q-2个伴随式,Sq表示第q个伴随式。
采用无求逆的BM算法,计算得到所述错误位置多项式系数的子步骤为:
3.1初始化:j表示迭代次数,且j=1,当j=1时,σ1=d1-S1;d1表示BCH译码中的关键方程w(x)的起始系数,设为1,σ1表示错误位置多项式计算系数时的起始值,σ1=1;
3.2计算关键方程的第1位系数d1;由于d1为1,然后根据错误多项式的第1位系数σ1的计算公式σ1=d1-S1,得到错误多项式的第1位系数σ1,令错误多项式的第2位系数σ2和错误多项式的第3位系数σ3分别等于错误多项式的第1位系数σ1,获得错误多项式的第2位系数σ2和错误多项式的第3位系数σ3,然后据此计算关键方程的第3位系数d3,且d3=S3+S2σ1+S1σ2+σ3,进而得到错误多项式的系数第1位系数σ1、错误多项式的第2位系数σ2、错误多项式的第3位系数σ3和关键方程的第3位系数d3。
3.3令j的值加2;
3.4计算关键方程的第j位系数dj,且dj=Sj+Sj-1σ1+...+S1σj-1+σj,然后判断所述关键方程的第j位系数dj是否为零,
若关键方程的第j位系数dj为零,则计算错误多项式的第j项系数σj,并且所求出的错误多项式的第j位系数σj满足dj=Sj+Sj-1σ1+...+S1σj-1+σj时,令错误多项式的第j+1位系数σj+1和错误多项式的第j+2位系数σj+2分别等于错误多项式的第j位系数σj,获得第j+1位系数σj+1和错误多项式的第j+2位系数σj+2。
若关键方程的第j位系数dj不为零,则计算错误多项式的第j项系数σj,并且所求出的错误多项式的第j项系数σj不满足dj=Sj+Sj-1σ1+...+S1σj-1+σj时,则将所求出的错误多项式的第j项系数σj改为修正公式σj=dj-(Sj+σ1Sj-1+...+σj-1S1),据此计算出错误多项式的第j项系数σj,然后令错误多项式的第j+1位系数σj+1和错误多项式的第j+2位系数σj+2分别等于错误多项式的第j位系数σj,获得错误多项式的第j+1位系数σj+1和错误多项式的第j+2位系数σj+2。
3.5依次重复执行子步骤3.3和3.4,直到错误位置多项式的系数个数j>t,重复操作停止,此时获得所述错误位置多项式的第1位-第t位系数值;其中,j∈{1,2,…,t},t表示所述信号数据进行分段编码后所能纠错的位数,Sj表示第j个错误多项式的伴随式;此处t为32。
步骤4,根据所述信号数据在存储过程中产生错误的错误位置多项式,以及钱搜索遍历算法求解所述错误位置多项式的根,并据此纠正所述信号数据在存储过程的错误数据位,进而得到存储在存储模块中的正确信号数据。
具体地,参照图5,为钱搜索模块原理图;从FLASH中接收的码字多项式是R(x)=r0+r1x+r2x2+r3x3+...+rn-1xn-1,根据图5得知,要检验第n-i位是否出错,只要判断τ-(n-i)即τi是否是错误位置多项式σ(x)的根即可。钱搜索算法是计算所述错误位置多项式σ(x)的根的经典算法之一,其采用遍历思想将τl代入所述错误位置多项式σ(x)中,从而求出错误码的位置,设定的BCH码的生成多项式g(x)的根,所述生成多项式g(x)的根有f个,依次为τ1,τ2,...,τl,…,τf,τl表示生成多项式g(x)的第l个根,n表示经过BCH编码模块后的信号数据码长,r0表示接收的码字多项式码元的第零位数据,r1表示接收的码字多项式的第一位数据,...,rn-1表示接收的码字多项式的第n-1位数据,0≤i<k/8,k表示所述信号数据进行分段编码后的数据位长度,0≤l≤f,f表示自然数;此处f=64。
由于BCH编码设计采用(16383,15935,32)的缩短码(8640,8192,32),比原码缩短7743位,因此在进行钱搜索计算时,钱搜索从τ7743开始,并需将第一寄存器1-第32寄存器分别初始化成以下值:
σ1τ7743,σ2τ7743×2,σ3τ7743×3...,σ32τ7743×t
钱搜索采用8位并行搜索方式提高搜索效率,进行第u个钱搜索周期时的8位并行搜索第i位的等式为σ(τu*8+i),其表达式为:
σ(τu*8+i)=σ0+σ1τ7743(τu*8+i)+σ2τ7743(τu*8+i)2+...+σ32τ7743(τu*8+i)32
当进行第u个钱搜索周期时的8位并行搜索第u位的等式σ(τu*8+i)的值是0时,那么τu*8+i是错误多项式σ(x)的根,即rn-(u*8+i)错误,u∈{1,2,…,k/8};由于所述信号数据进行分段编码后的数据位长度为k个,并且为八位并行,所述信号数据进行分段编码后的数据周期为k/8,使得所述信号数据中的每段信号数据经过k/8个周期后,就能够找出所述信号数据在存储过程的错误数据位,并对其错误位进行纠正;由于编码数据为二进制,即不是1就是0,如果找出所述信号数据在存储过程的错误数据位,只需改为相反的位即可;若继续从存储模块中获取所述信号数据,则转到步骤2,否则所述信号数据获取完毕,最终得到存储在存储模块中的正确信号数据;其中,0≤i<k/8,n=k+r,k表示所述信号数据进行分段编码后的数据位长度,r表示所述信号数据对应的比特校验位个数。
本发明效果可以通过以下仿真实验进一步验证说明。
(一)仿真条件
实验环境:大容量高速存储板,FPGA为主控制器,NANDFLASH作为存储板卡的存储介质。
(二)实验内容
由预处理板获取信号数据,并随机加入错误,然后通过BCH编译码模块进行数据校验,观察错误位是否被检查出来。
参照图6与图7,图6为使用钱搜索遍历检查出的第一个错误示意图;图7为使用钱搜索遍历检查出的第二个错误示意图。从图6与图7可以看出,使用BCH译码模块数据校验后检查出的错误位,分别为第262字节的第零位与第985字节的第四位,然后进行错误位的纠错,可以看出本发明能够有效的进行数据校验,并且可靠性较好。
本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种基于FPGA的BCH编解码装置,搭建于FPGA芯片上,其特征在于,包括:接收模块、BCH编码模块、存储模块和BCH解码模块;所述接收模块的输出端连接所述BCH编码模块的输入端,所述BCH编码模块的输出端连接所述存储模块的输入端,所述存储模块的输出端连接所述BCH解码模块的输入端;
所述接收模块接收信号数据,并将信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行编码,并将编码后的信号数据发送存储模块进行存储,BCH解码模块获取存储在存储模块中的编码后的信号数据,然后对所述编码后的信号数据进行解码处理,得到解码后的编码信号数据。
2.一种基于FPGA的BCH编解码方法,基于搭建于FPGA芯片上的接收模块、BCH编码模块、存储模块和BCH解码模块,其特征在于,所述基于FPGA的BCH编解码方法包括以下步骤:
步骤1,通过接收模块接收信号数据,并将所述信号数据发送至BCH编码模块,BCH编码模块对所述信号数据进行分段编码,得到所述信号数据对应的r个比特校验位,然后将所述信号数据和所述r个比特校验位分别存储到存储模块中;其中,r表示自然数;
步骤2,从存储模块中获取所述信号数据和所述r个比特校验位,得到码字多项式R(x),并将所述码字多项式R(x)发送至BCH解码模块,BCH解码模块对所述码字多项式R(x)进行解码,计算得到码字多项式R(x)的Q个伴随式;其中,Q表示自然数;
步骤3,根据码字多项式R(x)的Q个伴随式,计算得到所述信号数据在存储过程中产生错误的错误位置多项式;
步骤4,根据所述信号数据在存储过程中产生错误的错误位置多项式纠正所述信号数据在存储过程的错误数据位,进而得到存储在存储模块中的正确信号数据。
3.如权利要求2所述的一种基于FPGA的BCH编解码方法,其特征在于,在步骤1中,所述信号数据对应的r个比特校验位,是根据所述信号数据进行分段编码后的数据位长度为i的并行BCH编码校验公式ri(x)计算得到的,其计算过程为:
1.1初始化:r-1(x)表示所述信号数据进行分段编码后对生成多项式求余所得到的初始值,r-1(x)=0,M0表示所述信号数据的第1组八位数据,M1表示所述信号数据的第2组八位数据,…,Mk/8表示所述信号数据的第(k/8)+1组八位数据,0≤i<k/8,k表示所述信号数据进行分段编码后的数据位长度,g(x)表示设定的BCH码的生成多项式,p表示迭代次数,且p的初始值为1;
1.2根据所要进行编码的第1组八位数据M0和接收信号数据对生成多项式求余所得到的初始值r-1(x),计算得到第1次迭代后的第2组八位数据对生成多项式求余所得到的值r0(x),r0(x)为r-1(x)x8+M0对g(x)求余所得;
1.3令p的值加1;
1.4根据所要进行编码的第p组八位数据Mp-1和第p-1次迭代后的第p-1组八位数据对生成多项式求余所得到的值rp-2(x),计算得到第p次迭代后的第p+1组八位数据对生成多项式求余所得到的值rp-1(x),rp-1(x)为rp-2(x)x8+Mp-1对g(x)求余所得;
1.5依次重复执行子步骤1.3和1.4,直到得到第k/8次迭代后的第(k/8)+1组八位数据对生成多项式求余所得到的值r(k/8)-1(x),迭代停止,此时得到所述信号数据对应的r个比特校验位;其中,p∈{1,2,…,k/8},k表示所述信号数据进行分段编码后的数据位长度。
4.如权利要求3所述的一种基于FPGA的BCH编解码方法,其特征在于,所述信号数据进行分段编码后的数据位长度为i的并行BCH编码校验公式ri(x),其表达式为:
ri(x)=(ri-1(x)x8+Mi)modg(x)=ri-1(x)x8modg(x)+Mi
其中,0≤i<k/8,k表示所述信号数据进行分段编码后的数据位长度,Mi表示设定的k个数据位的第8i+0到8i+7的八位数据,ri-1(x)表示所述信号数据进行分段编码后的数据位长度为i-1的并行BCH编码校验式,g(x)表示设定的BCH码的生成多项式,mod(·)表示取模操作。
5.如权利要求2所述的一种基于FPGA的BCH编解码方法,其特征在于,在步骤2中,所述BCH码的Q个伴随式,其计算过程为:
2.1从存储模块中获取所述信号数据和所述r个比特校验位,得到码字多项式R(x),并设定第l个最小项多项式为ml(x),l∈{1,2,…,64},然后将接收码元多项式R(x)对所述第l个最小项多项式ml(x)进行求余运算,得到第l个余式rml(x);
2.2根据码字多项式R(x)设定BCH码的生成多项式g(x),求解设定的BCH码的生成多项式g(x)的根,并将其代入第l个余式rml(x)中,然后计算得到第l个伴随式Sl,进而得到BCH码的Q个伴随式;其中,l∈{1,2,…,Q},Q表示自然数。
6.如权利要求1或5所述的一种基于FPGA的BCH编解码方法,其特征在于,所述码字多项式R(x),其表达式为:
R(x)=r0+r1x+r2x2+r3x3+...+rn-1xn-1
其中,n表示经过BCH编码模块后的信号数据码长,r0表示接收的码字多项式码元的第零位数据,r1表示接收的码字多项式的第一位数据,...,rn-1表示接收的码字多项式的第n-1位数据,n=k+r,k表示所述信号数据进行分段编码后的数据位长度,r表示所述信号数据对应的比特校验位个数。
7.如权利要求5所述的一种基于FPGA的BCH编解码方法,其特征在于,所述第l个余式rml(x),其表达式为:
rml(x)=R(x)modml(x)
=((R8g+7x7+R8g+6x6+R8g+5x5+...+R8g)x8+...+R1x+R0)modml(x)
其中,
令Eg=R8g+7x7+R8g+6x6+R8g+5x5+R8g+4x4+R8g+3x3+R8g+2x2+R8g+1x1+R8g,且Eg表示从存储模块中接收的码字多项式R(x)的第8g位到第8g+7位的八位数据,0≤g<n/8,n表示经过BCH编码模块后的信号数据码长,n=k+r,k表示所述信号数据进行分段编码后的数据位长度,r表示所述信号数据对应的比特校验位个数,R1表示接收的码字多项式R(x)中第2位数据,R0表示接收的码字多项式R(x)中第1位数据。
8.如权利要求2所述的一种基于FPGA的BCH编解码方法,其特征在于,在步骤3中,所述得到所述信号数据在存储过程中产生错误的错误位置多项式,包括:首先设定所述错误多项式的表达式σ(x),σ(x)=σ1x+σ2x2+....σt-1xt-1+σtxt,σ1,σ2,...,σt-1,σt分别表示所述错误多项式的第1位、第2位、…、第t-1位、第t位系数,然后计算所述错误位置多项式的系数,其过程为:
3.1初始化:j表示迭代次数,且j=1,当j=1时,σ1=d1-S1;d1表示BCH译码中的关键方程w(x)的起始系数,设为1,σ1表示错误位置多项式计算系数时的起始值,σ1=1;
3.2根据错误多项式的第1位系数σ1的计算公式σ1=d1-S1,得到错误多项式的第1位系数σ1,令错误多项式的第2位系数σ2和错误多项式的第3位系数σ3分别等于错误多项式的第1位系数σ1,获得错误多项式的第2位系数σ2和错误多项式的第3位系数σ3,然后据此计算关键方程的第3位系数d3,且d3=S3+S2σ1+S1σ2+σ3,进而得到错误多项式的系数第1位系数σ1、错误多项式的第2位系数σ2、错误多项式的第3位系数σ3和关键方程的第3位系数d3;
3.3令j的值加2;
3.4计算关键方程的第j位系数dj,且dj=Sj+Sj-1σ1+...+S1σj-1+σj,然后判断所述关键方程的第j位系数dj是否为零;
若关键方程的第j位系数dj为零,则计算错误多项式的第j项系数σj,并且所求出的错误多项式的第j位系数σj满足dj=Sj+Sj-1σ1+...+S1σj-1+σj时,令错误多项式的第j+1位系数σj+1和错误多项式的第j+2位系数σj+2分别等于错误多项式的第j位系数σj,获得第j+1位系数σj+1和错误多项式的第j+2位系数σj+2;
若关键方程的第j位系数dj不为零,则计算错误多项式的第j项系数σj,并且所求出的错误多项式的第j项系数σj不满足dj=Sj+Sj-1σ1+...+S1σj-1+σj时,则将所求出的错误多项式的第j项系数σj改为修正公式σj=dj-(Sj+σ1Sj-1+...+σj-1S1),据此计算出错误多项式的第j项系数σj,然后令错误多项式的第j+1位系数σj+1和错误多项式的第j+2位系数σj+2分别等于错误多项式的第j位系数σj,获得错误多项式的第j+1位系数σj+1和错误多项式的第j+2位系数σj+2;
3.5依次重复执行子步骤3.3和3.4,直到错误位置多项式的系数个数j>t,重复操作停止,此时获得所述错误位置多项式的第1位-第t位系数;其中,Sj表示第j个错误多项式的伴随式;j∈{1,2,…,t},t表示所述信号数据进行分段编码后所能纠错的位数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510901498.3A CN105553485B (zh) | 2015-12-08 | 2015-12-08 | 基于fpga的bch编解码装置及其编解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510901498.3A CN105553485B (zh) | 2015-12-08 | 2015-12-08 | 基于fpga的bch编解码装置及其编解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105553485A true CN105553485A (zh) | 2016-05-04 |
CN105553485B CN105553485B (zh) | 2019-03-29 |
Family
ID=55832449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510901498.3A Expired - Fee Related CN105553485B (zh) | 2015-12-08 | 2015-12-08 | 基于fpga的bch编解码装置及其编解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105553485B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106067825A (zh) * | 2016-07-01 | 2016-11-02 | 建荣集成电路科技(珠海)有限公司 | Bch预搜索电路、bch解码电路、bch预搜索方法及bch纠错方法 |
CN106603085A (zh) * | 2016-11-21 | 2017-04-26 | 建荣半导体(深圳)有限公司 | 生成多项式的生成方法、其装置、编码器、控制器及电子设备 |
CN107204782A (zh) * | 2017-04-10 | 2017-09-26 | 北京大学 | 一种bch译码器及生成该译码器的编译器的实现方法 |
CN108880567A (zh) * | 2017-05-11 | 2018-11-23 | 华邦电子股份有限公司 | 错误检查和纠正解码器 |
CN110489268A (zh) * | 2019-08-05 | 2019-11-22 | 南开大学 | 一种应用于星上恶劣环境中存储系统的两级纠错编码方法与系统 |
CN111192624A (zh) * | 2019-12-30 | 2020-05-22 | 深圳市芯天下技术有限公司 | 测试bch纠错码的性能的系统及方法 |
CN112286716A (zh) * | 2020-10-21 | 2021-01-29 | 天津津航计算技术研究所 | 一种1024字节的存储系统差错控制模块 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004059851A1 (en) * | 2002-12-30 | 2004-07-15 | Optix Networks Ltd. | An encoder for high rate parallel encoding |
CN101252361A (zh) * | 2007-10-11 | 2008-08-27 | 深圳市中兴集成电路设计有限责任公司 | 一种支持预搜索的面积紧凑型bch并行译码电路 |
CN101800560A (zh) * | 2010-03-17 | 2010-08-11 | 苏州国芯科技有限公司 | Flash控制器中BCH编译码的纠错能力扩展方法 |
CN101931415A (zh) * | 2009-06-19 | 2010-12-29 | 成都市华为赛门铁克科技有限公司 | 编码装置及方法、译码装置及方法和纠错系统 |
CN201898502U (zh) * | 2010-11-10 | 2011-07-13 | 天津光电通信技术有限公司 | Bch编码解码电路 |
-
2015
- 2015-12-08 CN CN201510901498.3A patent/CN105553485B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004059851A1 (en) * | 2002-12-30 | 2004-07-15 | Optix Networks Ltd. | An encoder for high rate parallel encoding |
CN101252361A (zh) * | 2007-10-11 | 2008-08-27 | 深圳市中兴集成电路设计有限责任公司 | 一种支持预搜索的面积紧凑型bch并行译码电路 |
CN101931415A (zh) * | 2009-06-19 | 2010-12-29 | 成都市华为赛门铁克科技有限公司 | 编码装置及方法、译码装置及方法和纠错系统 |
CN101800560A (zh) * | 2010-03-17 | 2010-08-11 | 苏州国芯科技有限公司 | Flash控制器中BCH编译码的纠错能力扩展方法 |
CN201898502U (zh) * | 2010-11-10 | 2011-07-13 | 天津光电通信技术有限公司 | Bch编码解码电路 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106067825A (zh) * | 2016-07-01 | 2016-11-02 | 建荣集成电路科技(珠海)有限公司 | Bch预搜索电路、bch解码电路、bch预搜索方法及bch纠错方法 |
CN106603085A (zh) * | 2016-11-21 | 2017-04-26 | 建荣半导体(深圳)有限公司 | 生成多项式的生成方法、其装置、编码器、控制器及电子设备 |
CN106603085B (zh) * | 2016-11-21 | 2020-04-14 | 建荣半导体(深圳)有限公司 | 生成多项式的生成方法、生成装置、编码器、控制器及电子设备 |
CN107204782A (zh) * | 2017-04-10 | 2017-09-26 | 北京大学 | 一种bch译码器及生成该译码器的编译器的实现方法 |
CN108880567A (zh) * | 2017-05-11 | 2018-11-23 | 华邦电子股份有限公司 | 错误检查和纠正解码器 |
CN110489268A (zh) * | 2019-08-05 | 2019-11-22 | 南开大学 | 一种应用于星上恶劣环境中存储系统的两级纠错编码方法与系统 |
CN111192624A (zh) * | 2019-12-30 | 2020-05-22 | 深圳市芯天下技术有限公司 | 测试bch纠错码的性能的系统及方法 |
CN112286716A (zh) * | 2020-10-21 | 2021-01-29 | 天津津航计算技术研究所 | 一种1024字节的存储系统差错控制模块 |
Also Published As
Publication number | Publication date |
---|---|
CN105553485B (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105553485A (zh) | 基于fpga的bch编解码装置及其编解码方法 | |
US8510639B2 (en) | System and method for multi-dimensional encoding and decoding | |
US10866857B2 (en) | Encoding and decoding of permuted cyclic codes | |
CN101814922B (zh) | 基于bch码的多位错纠错方法和装置以及存储系统 | |
WO2010115371A1 (zh) | 一种循环冗余校验crc码的实现方法和装置 | |
CN110071727B (zh) | 编码方法、译码方法、纠错方法及装置 | |
CN101227194A (zh) | 用于并行bch编码的电路、编码器及方法 | |
JP2011514743A (ja) | 受信したシンボル列におけるフェーズドバーストエラー、消失、シンボルエラー、及び、ビットエラーを検出及び訂正するための方法及びシステム | |
CN103023518B (zh) | 一种基于并行编码译码的循环汉明码的纠错方法 | |
Kim et al. | Product Reed-Solomon codes for implementing NAND flash controller on FPGA chip | |
CN101686104B (zh) | 一种前向纠错的编解码的方法、装置和系统 | |
CN102820892B (zh) | 一种用于并行bch编码的电路、编码器及方法 | |
CN106708654A (zh) | 一种用于NANDflash的BCH纠错码的电路结构 | |
Parvathi et al. | FPGA based design and implementation of Reed-Solomon encoder & decoder for error detection and correction | |
CN101567696B (zh) | 一种参数可变的bch码编码器及译码器 | |
CN102761340A (zh) | 一种bch并行编码电路 | |
Xueqiang et al. | A high-speed two-cell BCH decoder for error correcting in MLC nor flash memories | |
CN103269255A (zh) | 一种并行crc电路的生成方法和装置 | |
Kim et al. | Hamming product code with iterative process for NAND flash memory controller | |
US9236890B1 (en) | Decoding a super-code using joint decoding of underlying component codes | |
CN103309766A (zh) | 基于并行编码译码的循环汉明码的纠错方法 | |
KR101267958B1 (ko) | 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 디코딩 방법 | |
CN101931415A (zh) | 编码装置及方法、译码装置及方法和纠错系统 | |
Nabipour et al. | Error Detection Mechanism Based on Bch Decoder and Root Finding of Polynomial Over Finite Fields | |
Prashanthi et al. | An advanced low complexity double error correction of an BCH decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190329 Termination date: 20191208 |