CN101931415A - 编码装置及方法、译码装置及方法和纠错系统 - Google Patents

编码装置及方法、译码装置及方法和纠错系统 Download PDF

Info

Publication number
CN101931415A
CN101931415A CN2009100873967A CN200910087396A CN101931415A CN 101931415 A CN101931415 A CN 101931415A CN 2009100873967 A CN2009100873967 A CN 2009100873967A CN 200910087396 A CN200910087396 A CN 200910087396A CN 101931415 A CN101931415 A CN 101931415A
Authority
CN
China
Prior art keywords
place
polynomial
code
code word
module
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
Application number
CN2009100873967A
Other languages
English (en)
Other versions
CN101931415B (zh
Inventor
邢继元
梁剑
Original Assignee
Huawei Symantec Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Symantec Technologies Co Ltd filed Critical Huawei Symantec Technologies Co Ltd
Priority to CN200910087396.7A priority Critical patent/CN101931415B/zh
Publication of CN101931415A publication Critical patent/CN101931415A/zh
Application granted granted Critical
Publication of CN101931415B publication Critical patent/CN101931415B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明实施例涉及一种编码装置及方法、译码装置及方法和纠错系统,其中该编码装置包括博斯-查德胡里-霍昆格BCH编码模块和与所述BCH编码模块连接的控制模块,所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码。本发明实施例可以根据需求灵活设置编码前输入编码装置的信息多项式的位数和编码后的码字多项式的位数对输入的信息多项式进行BCH编码运算,适用范围广。

Description

编码装置及方法、译码装置及方法和纠错系统
技术领域
本发明实施例涉及通信技术领域,特别涉及一种编码装置及方法、译码装置及方法和纠错系统。
背景技术
NAND闪存是一种可擦除的存储卡,具有功耗低、速度快、数据可靠性高、重量小以及静音等优点。基于NAND闪存的固态存储盘(Solid State Disk;以下简称:SSD)已开始轻薄型笔记本电脑等领域应用。NAND闪存可分为两大架构:单层单元(Single Level Cell;以下简称:SLC)和多层单元(Multi Level Cell;以下简称:MLC)。采用MLC架构的NAND闪存成本低、容量大,自问世以来得到了多家闪存大厂的垂青。但据统计,采用MLC架构的NAND闪存在存取数据时的误码率约为10-5,与采用SLC架构的NAND闪存相比,采用MLC架构的NAND闪存的工作性能不稳定。为保证采用MLC架构的NAND闪存读写数据的准确性和稳定性,一般采用纠错码(Error Correction Code;以下简称:ECC)技术纠正读写过程中出现的多位(bit)随机错误。
博斯-查德胡里-霍昆格(Bose-Chaudhuri-Hocquenghem;以下简称:BCH)码是一种纠正多位随机错误的循环码。具有严格的代数结构的线性分组码,具有纠错能力强、构造简单、编码译码容易等特点,在数据传输过程中有十分重要的应用。
发明人在实现本发明的过程中发现现有技术中采用BCH码实现ECC技术时,BCH码电路的结构固定后,编码前输入的信息位数k、编码后的码字多项式的位数n、以及可以纠正的错误的位数t等参数也是固定的,由于k、n、t的位数固定,造成可纠错位数也不能根据需求进行更改或者设置,适应性较差。
发明内容
本发明实施例提供一种编码装置及方法、译码装置及方法和纠错系统,用以解决现有编码装置参数设置固定、适应性差的确定,可以灵活配置编译码参数、适应性强。
本发明实施例提供一种编码装置,包括:博斯-查德胡里-霍昆格BCH编码模块和与所述BCH编码模块连接的控制模块;
所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;
所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码。
本发明实施例又提供一种编码方法,包括:
设置输入编码装置的信息多项式的位数以及所述编码装置输出的码字多项式的位数;
根据所述设置的信息多项式的位数以及码字多项式的位数对输入的信息多项式进行BCH编码,获取码字多项式。
本发明实施例再提供一种译码装置,包括:使能模块和BCH译码模块;
所述使能模块,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行BCH译码;
所述BCH译码模块,用于根据所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
本发明实施例还提供一种译码方法,包括:
设置编码后的码字多项式的位数和可纠错位数;
根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,获取正确的码字多项式。
本发明实施例还提供一种纠错系统,包括:
编码装置,包括BCH编码模块和控制模块,所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码;
译码装置,包括使能模块和BCH译码模块,所述使能模块,用于根据设置所述码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行译码;所述BCH译码模块,用于通过所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
根据本发明实施例提供的编码装置及方法、译码装置及方法和纠错系统的技术方案可以看出,本发明实施例所述的编码装置可以根据设置的编码前输入BCH编码模块的信息多项式的位数和编码后的码字多项式的位数控制编码模块对输入的信息多项式进行BCH编码,由于编码前输入的信息多项式的位数和编码后的码字多项式的位数可以根据需求灵活设置,因此本发明实施例提供的编码装置的应用更加灵活、适用范围广。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为BCH码的编码电路;
图2为本发明实施例一提供的编码装置的结构示意图;
图3为本发明实施例二提供的编码装置的结构示意图;
图4为本发明实施例二提供的编码装置的应用结构示意图;
图5为本发明实施例三提供的编码方法的流程示意图;
图6为本发明实施例四提供的译码装置的结构示意图;
图7为本发明实施例五提供的译码装置的结构示意图;
图8为本发明实施例五提供的译码装置中伴随式子模块的结构示意图;
图9为本发明实施例五提供的译码装置中采用钱搜索的电路结构示意图;
图10为本发明实施例六提供的译码方法的流程示意图;
图11为本发明实施例七提供的纠错系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更清楚的阐述本发明实施例,首先介绍采用BCH码进行的编码和译码的原理:图1为BCH码的编码电路,如图1所示,采用BCH码的编码的方法具体为:
首先乘法器12对根据输入的消息多项式、编码前可以输入的信息位数和编码后的码字多项式的位数可以对消息多项式进行乘法运算得到乘法结果,具体的是将xn-k与寄存器11输出的消息多项式m(x)=m0+m1x+…mk-1xk-1进行乘法运算,可以得到以下公式:xn-km(x)=m0xn-k+m1xn-k+1+…mk-1xn-1,其中x为消息多项式系数,k为编码前可以输入的信息位数,n为编码后的码字多项式的位数。
接着,通过n-k级的寄存器11根据生成多项式和上面运算得到的乘法结果可以得到校验位多项式,具体地是对生成多项式g(x)=g0+g1x+…gn-k-1xn-k-1和xn-km(x)进行除法运算,得到的余式b(x)为校验位多项式。
最后,加法器13根据校验位多项式和上面的乘法结果可以获得码字多项式,具体的是将b(x)与xn-km(x)进行加法运算,得到生成的码字多项式c(x)=xn-km(x)+b(x)。码字多项式c(x)为经过BCH编码后生成的待发送信息。
BCH码的译码过程是实现ECC的关键,主要包括以下步骤:
步骤1、接收BCH码的编码电路发送的数据,接收到的码字多项式可以用公式R(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0表示,其中rn-1为R(x)的最高位的系数,根据接收的码字多项式R(x)求出伴随式S,其中伴随式S共有2t项,t为该纠错电路可以纠正的错误的个数,也叫做纠错能力或可纠错位数。
步骤2、根据伯利坎姆-梅西(Berlekamp-Massey;以下简称:BM)迭代算法,由伴随式S得到错误位置多项式,如下公式(1)所示。
V(x)=σ01x+σ2x2+…+σtxt                 (1)
公式(1)中V(x)是错误位置多项式,σ为错误多项式的系数,t为纠错能力也叫做可纠错位数。
步骤3、对错误位置多项式V(x)进行钱(CHIEN)搜索,求解V(x)的根,然后可以得到错误位置判别项E(x)。
例如,判断接收的码字多项式R(x)的最高位rn-1是否有错时,将αn-1的倒数α-(n-1)=α-nα1代入式:V(x)=σ01x+σ2x2+…+σtxt,如果V(α)=1+σ1α+σ2α2+…+σtαt=0,说明αn-1是σ(x)的根,最高位rn-1有错,否则,说明αn-1不是σ(x)的根,rn-1正确。错误位置判别项E(x)则包括V(x)中所有错误的位置的项。
步骤4、最后对R(x)和E(x)进行异或运算,可以将R(x)中出现错误的位置的值取反,得出正确的码字,截取正确的码字中的信息位就可以成功解码。
图2为本发明实施例一提供的编码装置的结构示意图,如图2所示,该编码装置采用博斯-查德胡里-霍昆格BCH编码模块21和与BCH编码模块21连接的控制模块22构成,其中:
BCH编码模块21,用于在控制模块22的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;
控制模块22,用于根据设置的输入BCH编码模块21的信息多项式的位数和BCH编码模块21输出的码字多项式的位数控制BCH编码模块21对输入的信息多项式进行BCH编码。
具体地,由于编码过程与生成多项式的系数和可纠错位数有关,其中可纠错位数T可以根据编码前输入信息位长度K以及编码后的码字长度N来获得,因此在具体实施过程中,可以采用硬件描述语言来设定BCH编译码参数N、K、T(其中N、K、T为自然数)使编码装置的硬件规模控制在可接受的范围内。其中,K为编码装置可以支持的最大的编码前输入的信息多项式的位数,N为编码装置可以支持的最大的编码后的码字多项式的位数,T为编码装置可以支持的最大的可纠错位数。
在编码装置的硬件规模一定的情况下,在具体的编码过程中,可以根据编码需要设置具体需要的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n,进行BCH编码,其中k、n也为自然数,且k小于或等于K、n小于或等于N。控制模块22根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n向BCH编码模块21发送控制信号ctri,控制BCH编码模块中的与信息多项式第i位对应的寄存器是否参与BCH编码的运算。具体的,可以为当ctri为“0”时,BCH编码模块的与信息多项式第i位对应的寄存器不参与BCH编码的运算,当ctri为“1”时,BCH编码模块中与信息多项式第i位对应的寄存器参与BCH编码的运算。通过上述控制方式,使BCH编码模块根据设置的编码前输入的信息多项式的位数和编码后的码字多项式的位数,对输入的信息多项式进行BCH编码,生成码字多项式。
可以理解的是,在不超过该编码装置的硬件规模的情况下,上述设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n在具体的编码过程中是可变的,只要k小于或等于K、n小于或等于N即可。
从上述实施例可以看出,在本发明实施例中可以根据具体应用的需要设置编码前输入的信息多项式的位数和编码后的码字多项式的位数,并采用控制模块控制BCH编码模块对输入的信息多项式进行BCH编码运算,不需要每进行一次编码就需要根据具体要求重新设计电路,应用更加灵活,适用范围更加广泛。
图3为本发明实施例二提供的编码装置的结构示意图,如图3所示,该编码装置包括BCH编码模块21、控制模块22以及预设模块23,其中:
预设模块23,用于预先设置输入BCH编码模块21的信息多项式的位数以及BCH编码模块21编码后输出的码字多项式的位数。
具体地,假设编码装置可以支持的最大的编码前输入的信息多项式的位数为K,最大的编码后的码字多项式的位数为N。根据具体的需求,预设模块23可以根据具体的需求设置编码前输入的信息多项式的位数k和编码后的码字多项式的位数n。具体地,可以采用硬件描述语言(Hardware Description Language;以下简称:HDL)来设定BCH编译码参数N、K、T(其中N、K、T为自然数)使编码装置的硬件规模控制在可接受的范围内。其中K为编码装置可以支持的最大的编码前输入的信息多项式的位数,N为编码装置可以支持的最大的编码后的码字多项式的位数,T为编码装置可以支持的最大的可纠错位数。设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n的设置范围需要满足k小于或等于K、n小于或等于N,且k,n也为自然数。
控制模块22,根据预设模块23预设的输入BCH编码模块21的信息多项式的位数以及BCH编码模块21编码后输出的码字多项式的位数控制BCH编码模块21对输入的信息多项式进行编码。
具体的,控制模块22根据k、n的值控制BCH编码模块中参与输入信息进行BCH编码的寄存器的个数。具体的,控制模块22根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n向BCH编码模块21发送控制信号ctri,控制BCH编码模块中的与信息多项式第i位对应的寄存器是否参与BCH编码的运算。具体的,可以为当ctri为“0”时,BCH编码模块的与信息多项式第i位对应的寄存器不参与BCH编码的运算,当ctri为“1”时,BCH编码模块中与信息多项式第i位对应的寄存器参与BCH编码的运算。
BCH编码模块21,用于在控制模块22的控制下,对输入的信息多项式进行BCH编码,生成码字多项式。
具体的,BCH编码模块21包括:校验子模块211和码字子模块212。其中:
校验子模块211,用于根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式以及生成多项式,获取校验位多项式。
具体的,校验子模块211可以根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n对输入的信息多项式m(x)进行乘法运算,获取的乘法结果xn-km(x);之后再对生成多项式g(x)与乘法结果xn-km(x)进行除法运算
Figure B2009100873967D0000081
获取校验位多项式b(x),其中校验位多项式b(x)为的余式。
码字子模块212,用于根据信息多项式的位数、所述码字多项式的位数、所述信息多项式以及所述校验位多项式,生成码字多项式。
具体的,码字子模块212根据校验子模块211获取的校验位多项式b(x)与乘法结果xn-km(x)进行加法运算,获取码字多项式c(x)=xn-km(x)+b(x)。该码字多项式为BCH编码后得到的码字多项式。
为了更清楚的阐述本发明实施例,图4为本发明实施例二提供的编码装置的应用结构示意图。如图4所示,该编码装置在寄存器42之前,设置有用于控制寄存器是否有输入输出信号的与门41,与门41的另一端可以连接前一个运算单元的加法器43。当该编码装置可以支持的最大的编码前输入的信息多项式的位数为K,最大的编码后的码字多项式的位数为N,最大的可纠错位数为T,并且根据具体的需求设置的编码前输入的信息多项式的位数为k、编码后的码字多项式的位数为n、可纠错位数为t时,其中K、N、T、k、n、t均为自然数,控制模块通过与门41输入的控制信号,可以控制BCH编码模块中与与门41连接的寄存器42的输出结果,即控制相应的寄存器42是否参与编码。如图4所示,当控制信号ctrN-(n-k)-1到ctrN-2为“1”时,控制输入的信息多项式对应的寄存器参与BCH编码运算。而当控制信号ctr0到ctrN-(n-k)-2为“0”时,则对应的寄存器不参与BCH编码运算。可以理解的是,与门41可以有多个,所有的与门41可以均归属于1个控制模块,BCH编码所需要的加法器43、寄存器42以及乘法器44也可以有多个,且可以一起构成BCH编码模块的一个计算单元,与门41作为控制模块控制与该与门41连接的BCH编码模块的计算单元是否参予BCH编码。
本实施例采用控制模块可以通过预设模块在编码装置的硬件规模的范围内,根据具体需求灵活设置编码前输入的信息多项式的位数和编码后的码字多项式的位数,控制模块根据预设模块的设置控制BCH编码模块对输入的信息多项式进行BCH编码运算,使该编码装置的应用更加灵活,适用范围更加广泛。
图5为本发明实施例三提供的编码方法的流程示意图,如图5所示,该编码方法包括以下步骤:
步骤501、设置输入编码装置的信息多项式的位数以及所述编码装置输出的码字多项式的位数;
假设编码装置中可以支持的最大的编码前输入的信息多项式的位数为K,最大的编码后的码字多项式的位数为N,根据具体的需求,设置的编码前输入的信息多项式的位数为k、编码后的码字多项式的位数为n。其中通过现场可编程门阵列(Field-Programmable Gate Array;简称:FPGA)等实现BCH码进行纠错时,可以通过外部端口预先设置输入纠错过程中编译码参数例如:设置所需的n值,从而确定的整个电路的开销和可纠错位数t的范围;然后设定k值以确定可纠错位数t的值,可以满足不同规格的闪存的可纠错位数的需求。
步骤502、根据所述设置的信息多项式的位数以及码字多项式的位数对输入的信息多项式进行BCH编码,获取码字多项式。
编码装置可以根据设置的编码前输入的信息多项式的位数k、编码后的码字多项式的位数n、输入的信息多项式m(x)和生成多项式g(x),获取校验位多项式,具体包括:编码装置对输入的信息多项式m(x)与xn-k进行乘法运算,获取乘法结果xn-km(x);对生成多项式g(x)与乘法结果xn-km(x)进行除法运算
Figure B2009100873967D0000101
获取的
Figure B2009100873967D0000102
的余数多项式b(x)为校验位多项式。
编码装置可以根据信息多项式的位数k、所述码字多项式的位数n、信息多项式m(x)和校验位多项式b(x),可以获取码字多项式,具体包括:编码装置对校验位多项式b(x)与乘法结果xn-km(x)进行加法运算,获取码字多项式c(x)=xn-km(x)+b(x)。
可以理解的是,编码装置可以将编码后的码字多项式c(x)通过信道发送给译码装置可以进行译码、纠错等处理。
本实施例可以根据设置的编码前输入的信息多项式的位数和编码后的码字多项式的位数,对输入的信息多项式进行BCH编码运算,从而实现利用BCH码纠错,由于在具体的编码过程中,可以在该编码装置硬件规模一定的范围内,根据具体的编码需求灵活设置编码前输入的信息的位数和编码后的码字多项式的位数进行编码,不再需要常常更改编码电路,因此适用范围广,应用灵活。
图6为本发明实施例四提供的译码装置的结构示意图,如图6所示,该译码装置包括:BCH译码模块61和使能模块63。其中:
使能模块63,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行BCH译码;
BCH译码模块61,用于根据所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
具体地,如前所述可以采用硬件描述语言设定BCH编译码参数N、K、T,其中N、K、T为自然数,使译码装置的硬件规模控制在可接受的范围内。实现利用BCH码进行纠错时,可以预先设置所需的编码后的码字多项式的位数n值,从而确定整个译码电路的开销和译码装置的可纠错位数t的范围;还可以预先设定编码前输入的信息多项式的位数k的值以确定可纠错位数t的值。如前所述,编码装置根据设定的k、n值对输入的信息多项式进行编码,得到码字多项式后发送给译码装置,译码装置接收编码装置经信道发送的码字多项式的数据后进行BCH译码。
使能模块63,用于控制BCH译码模块61按照设定的k、n、t的值进行BCH译码。
具体的,BCH译码模块61可以根据所需的t的值求解接收的码字多项式的伴随式,根据伴随式获取错误位置多项式,再采用搜索算法(例如:钱搜索)求解错误位置多项式,获取错误位置和错误位数。若错误位数小于或等于t的值,BCH译码模块61可以根据错误位数、错误位置等信息,对接收的码字多项式中相应的错误位置进行取反运算,以获取正确的码字多项式,最后截取码字多项式中的信息位,完成译码。
本实施例在使能模块的控制下BCH译码模块可以根据编码后的码字多项式的位数和可纠错位数求解伴随式,获取错误位置多项式、错误位置和错误位数,根据错误位数和接收的码字多项式获取正确的码字多项式,从而可以保证闪存中数据的正确读写,由于编码后的码字多项式的位数和可纠错位数可以根据需求设置,不需要每进行一次译码就需要根据具体要求重新设计电路,因此应用灵活且适用广泛。
图7为本发明实施例五提供的译码装置的结构示意图,如图7所示,在本发明译码装置第一实施例的基础上,该BCH译码模块61包括至少一个伴随式子模块611、错误处理子模块612和纠错子模块613。其中:
伴随式子模块611,用于根据所述码字多项式的位数和可纠错位数获取所述接收的码字多项式的伴随式;
具体地,BCH译码模块61根据预先设置的编码前输入的信息多项式的位数k、编码后的码字多项式的位数n可以获取可纠错位数t。如果译码装置最大的可纠错位数为T,则需要根据接收的码字多项式计算出2T个伴随式,相当于译码装置最大需要2T个伴随式子模块611。如果根据编码前输入的信息多项式的位数k和编码后的码字多项式的位数n确定的可纠错位数为t(其中,t小于等于T),则仅需使2t个伴随式子模块611工作。2t个伴随式子模块611求解所述接收的码字多项式的伴随式后。
下面介绍一种伴随式子模块的示例:图8为本发明实施例五提供的译码装置中伴随式子模块的结构示意图,如图8所示,当使能子模块向伴随式子模块发送有效的使能信号“EN=1”时,伴随式子模块按照公式(2)计算接收的码字多项式的伴随式:
Si=r0+r1α+…+rn-1(ai)n-1+…+rN-1(ai)N-1             (2)
其中0≤i≤2×T-1,ri表示接收的码字多项式R(x)的第i个系数,α为0或1,n为设置的编码后的码字位数,N为最大的编码后的码字位数。假设T为译码装置最大的可纠错位数,则该译码装置最多可以有2T个伴随式子模块。而若设置的可纠错位数为t(t≤T)时,只需计算出伴随式S0~S2t-1,不需要计算伴随式St~S2T-1。因此使能子模块可以向与S0~S2t-1对应的2t个伴随式子模块中的寄存器81发送EN=1的使能信号,向St~S2T-1对应的伴随式子模块中的寄存器81发送EN=0的使能信号。其中EN=1指示该伴随式子模块中的寄存器输出信息、进行伴随式运算,EN=0指示该伴随式子模块中的寄存器不输出信息或输出“0”、不进行伴随式运算。当编码后的码字位数n确定之后,并且可以采用计数器83控制每个的伴随式子模块计算的次数,例如:使伴随式子模块只计算n次,计算出Si=r0+r1α+…+rn-1(ai)n-1的部分,而不再计算rn(ai)n+…+rN-1(ai)N-1的部分。
错误处理子模块612用于根据所述可纠错位数和所述伴随式子模块获取的伴随式,获取错误位置和错误位数;
具体地,t个错误处理子模块612采用迭代算法,根据伴随式子模块计算出的伴随式获取错误位置多项式,然后采用搜索算法(例如:钱搜索算法)求解错误位置多项式,获取错误位置和错误位数。错误处理子模块按照下面的公式(3)对伴随式进行BM迭代运算,获取错误位置多项式。
V(x)=σ01x+σ2x2+…+σTxT                (3)
公式(3)中,由于T为译码装置最大可处理的可纠错位数,则最多需要T个迭代单元,每个迭代单元进行一次迭代运算。根据需要可以选择与设置的可纠错位数为t对应的t个迭代单元进行t次迭代运算,此时将公式(3)中的T替换为t。使能模块向每一个迭代单元发送使能信号,使对V(x)进行t次迭代运算对应的t个迭代单元运行,使第t+1到T个迭代单元不工作,并且从第t个迭代单元输出错误位置多项式V(x)。
获取错误位置多项式V(x)之后,错误处理模块可以采用搜索算法(例如:钱搜索算法)获取错误位置和错误位数,为了更清楚的阐述本发明实施例的技术方案,下面介绍一种采用钱搜索算法的电路示例。
图9为本发明实施例五提供的译码装置中采用钱搜索的电路结构示意图,如图9所示,当使能模块向错误位置多项式的第i位对应的伴随式子模块发送有效的使能信号“EN=1”时,钱搜索电路按照下面的公式(4)对错误位置多项式的第i位进行钱搜索。
Σ j = 1 T σ j α j × i = σ 1 α 1 + σ 2 α 2 + . . . σ T α T × i - - - ( 4 )
其中,σj表示错误位置多项式的系数,i为接收的码字多项式的位数,T为译码装置最大的可纠错位数,N为最大的编码后的码字位数,i的最大取值范围为1~N。若t为设置的可纠错位数,n为设置的编码后的码字位数,i的取值范围为1~n。此时使能模块向钱搜索电路发送使能信号,使σt+1α(t+1)×i~σTαT×i对应的寄存器没有输出,即将公式(4)中的T替换为t。若
Figure B2009100873967D0000141
的计算结果为“1”,说明第i位有错;
Figure B2009100873967D0000142
的计算结果为“0”,说明第i位没错。将接收的码字多项式所有的位置“1~n”进行钱搜索后,将统计的错误位置和错误位数存入纠错子模块中。
纠错子模块613,用于根据所述错误位置、错误位数以及所述接收的码字多项式获取正确的码字多项式。
具体地,当错误位数小于或等于可纠错位数t时,纠错子模块613可以根据错误位置和错误位数接收的码字多项式获取正确的码字多项式。例如:若错误位数小于或等于可纠错位数t,纠错子模块613可以根据错误位置对接收的码字多项式相应的位置进行取反运算,可以得到正确的码字多项式。从正确的码字多项式中取出信息位后,完成译码。此外,使能模块63根据可纠错位数t,向伴随式子模块611、错误处理子模块612和纠错子模块613发送使能信号,控制进行BCH译码运算的伴随式子模块611、错误处理子模块612和纠错子模块613的个数。
本实施例采用伴随式子模块可以根据编码后的码字多项式的位数和可纠错位数求解伴随式,错误处理子模块根据伴随式获取错误位置多项式后,求解错误位置多项式获取错误位置和错误位数,采用纠错子模块可以根据错误位数和接收的码字多项式获取正确的码字多项式,从而保证闪存中数据的正确读写,由于编码后的码字多项式的位数和可纠错位数可以根据需求方便设置,因此应用灵活、适用广泛且成本低。
图10为本发明实施例六提供的译码方法的流程示意图,如图10所示,该译码方法包括以下步骤:
步骤1001、设置编码后的码字多项式的位数和可纠错位数;
具体的,译码装置接收到编码装置经信道发送的码字多项式。其中由于编码前输入的信息多项式的位数k和编码后的码字多项式的位数n可以预先设置,根据n和k的值可以获取译码所需的可纠错位数t的值。
步骤1002、根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,获取正确的码字多项式。
译码装置根据设置的编码后的码字多项式的位数n和可纠错位数t,采用上述实施例中的公式(2)可以求解接收的码字多项式的伴随式。再根据可纠错位数t对求解出的伴随式进行t次迭代运算,获取错误位置多项式,如上述公式(3)。然后根据公式(4)对错误位置多项式的第i位进行钱搜索,获取错误位置并统计错误位数。其中求解伴随式、错误位置多项式和钱搜索的具体方法可以参照本发明译码装置第二实施例中的相关描述。
当由接收的码字多项式计算出来的总的错误位数小于或者等于该译码装置设置的可处理的可纠错位数时,该译码装置可以根据错误位置对接收的码字多项式的相应位置进行取反运算,可以得到正确的码字多项式。最后截取码字多项式中的信息位,完成译码。
本实施例根据设置的编码后的码字多项式的位数和可纠错位数,对接收的码字多项式进行BCH译码运算,获取错误位置和错误位数,在错误位数小于或等于可纠错位数时,根据所述错误位置和接收的码字多项式可以获取正确的码字多项式,从而保证闪存中数据正确读写,不需要每进行一次译码就需要根据具体要求重新设计电路,应用灵活、适用范围广且成本低。
图11为本发明实施例七提供的纠错系统的结构示意图,如图11所示,该纠错系统包括:编码装置191和译码装置193。其中:
编码装置191,包括BCH编码模块和控制模块,所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码;
译码装置193,包括使能模块和BCH译码模块,所述使能模块,用于根据设置所述码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行译码;所述BCH译码模块,用于通过所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
具体地,BCH码纠错系统通过FPGA等实现BCH码纠错时,可以根据需求由外部端口输入信号预先设置编码前输入的信息多项式的位数k、编码后的码字多项式的位数n和可纠错位数t。其中k、n、t的值分别小于BCH纠错系统的可以支持的最大的编码前输入的信息多项式的位数K,最大的编码后的码字多项式的位数N,最大的可纠错位数T。然后编码装置191根据设置的编码前输入的信息多项式的位数k和编码后的码字多项式的位数n,对输入的信息多项式m(x)进行BCH编码运算,获取码字多项式c(x),具体地可以参见本发明编码装置第一实施例中的相关描述,然后将码字多项式c(x)通过信道向译码装置193发送。译码装置193接收的码字多项式为R(x)。译码装置193根据设置的编码后的码字多项式的位数n和可纠错位数t,对接收的码字多项式R(x)进行BCH译码,可以得到错误位置和错误位数,具体地可以参见本发明译码装置第一、第二实施例中的相关描述。若所述错误位数小于或等于可纠错位数,译码装置193根据错误位置和接收的码字多项式获取正确的码字多项式,例如:对接收的码字多项式的错误位置的数据进行取反操作。得到正确的码字多项式后,截取正确的码字多项式中的信息位,可以完成译码。本实施例中的编码装置、译码装置可以采用上述实施例中任意一种的编码装置、译码装置。
在实际应用中,采用不同多层单元(MLC)的NAND闪存读取数据的误码率有差异,采用同一MLC的NAND闪存读取数据的误码率和速率要求也不同。由于BCH码的纠错能力与硬件所占的资源存在矛盾,纠错能力越强(即可纠错位数越多),所占的检验位越多,运算电路越复杂,运算速率越慢。本发明实施例预先设置编码前输入的信息多项式的位数、编码后的码字多项式的位数和可纠错位数等参数后,编码装置可以根据设置的编码前输入的信息多项式的位数、编码后的码字多项式的位数获取码字多项式;译码装置可以根据设置的编码后的码字多项式的位数和可纠错位数得到错误位置和错误位数,获取正确的码字多项式,从而保证了对闪存的正确读写,该纠错系统,仅需修改参数,无需常常改动编译码电路,使用方便、应用灵活且成本低;适用范围广,不仅适用于采用不同MLC的NAND闪存,而且适用于采用同一MLC的NAND闪存。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种编码装置,其特征在于,包括:博斯-查德胡里-霍昆格BCH编码模块和与所述BCH编码模块连接的控制模块;
所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;
所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码。
2.根据权利要求1所述的编码装置,其特征在于,所述BCH编码模块包括:
校验子模块,用于根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式以及生成多项式,获取校验位多项式;
码字子模块,用于根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式以及所述校验位多项式,生成码字多项式。
3.根据权利要求1或2所述的编码装置,其特征在于,还包括:
预设模块,用于预先设置所述信息多项式的位数和所述码字多项式的位数。
4.一种编码方法,其特征在于,包括:
设置输入编码装置的信息多项式的位数以及所述编码装置输出的码字多项式的位数;
根据设置的所述信息多项式的位数以及码字多项式的位数对输入的信息多项式进行BCH编码,获取码字多项式。
5.根据权利要求4所述的编码方法,其特征在于,所述根据设置的所述信息多项式的位数以及码字多项式的位数对输入的信息多项式进行BCH编码,包括:
根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式和生成多项式,获取校验位多项式;
根据所述信息多项式的位数、所述码字多项式的位数、所述信息多项式和所述校验位多项式,获取所述码字多项式。
6.一种译码装置,其特征在于,包括:使能模块和BCH译码模块;
所述使能模块,用于根据设置的编码后的码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行BCH译码;
所述BCH译码模块,用于根据所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
7.根据权利要求6所述的译码装置,其特征在于,所述BCH译码模块包括至少一个伴随式子模块、错误处理子模块和纠错子模块,其中:
所述伴随式子模块,用于根据所述码字多项式的位数和可纠错位数获取所述接收的码字多项式的伴随式;
所述错误处理子模块,用于根据所述可纠错位数和所述伴随式子模块获取的伴随式,获取错误位置和错误位数;
所述纠错子模块,用于根据所述错误位置、错误位数以及所述接收的码字多项式获取正确的码字多项式。
8.一种译码方法,其特征在于,包括:
设置编码后的码字多项式的位数和可纠错位数;
根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,获取正确的码字多项式。
9.根据权利要求8所述的译码方法,其特征在于,所述根据所述码字多项式的位数和可纠错位数对接收的码字多项式进行BCH译码,包括:
根据所述码字多项式的位数和可纠错位数获取所述接收的码字多项式的伴随式;
根据所述可纠错位数和所述接收的码字多项式的伴随式,获取错误位置和错误位数;
根据所述错误位置、错误位数以及所述接收的码字多项式获取正确的码字多项式。
10.一种纠错系统,其特征在于,包括:
编码装置,包括BCH编码模块和控制模块,所述BCH编码模块用于在所述控制模块的控制下,对输入的信息多项式进行BCH编码,生成码字多项式;所述控制模块用于根据设置的输入所述BCH编码模块的信息多项式的位数和所述BCH编码模块输出的码字多项式的位数控制所述BCH编码模块对输入的信息多项式进行BCH编码;
译码装置,包括使能模块和BCH译码模块,所述使能模块,用于根据设置所述码字多项式的位数和可纠错位数,控制所述BCH译码模块对接收的码字多项式进行译码;所述BCH译码模块,用于通过所述码字多项式的位数和所述可纠错位数对所述接收的码字多项式进行BCH译码,获取正确的码字多项式。
CN200910087396.7A 2009-06-19 2009-06-19 编码装置及方法、译码装置及方法和纠错系统 Expired - Fee Related CN101931415B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910087396.7A CN101931415B (zh) 2009-06-19 2009-06-19 编码装置及方法、译码装置及方法和纠错系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910087396.7A CN101931415B (zh) 2009-06-19 2009-06-19 编码装置及方法、译码装置及方法和纠错系统

Publications (2)

Publication Number Publication Date
CN101931415A true CN101931415A (zh) 2010-12-29
CN101931415B CN101931415B (zh) 2014-04-30

Family

ID=43370375

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910087396.7A Expired - Fee Related CN101931415B (zh) 2009-06-19 2009-06-19 编码装置及方法、译码装置及方法和纠错系统

Country Status (1)

Country Link
CN (1) CN101931415B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103401566A (zh) * 2013-08-06 2013-11-20 河海大学 参数化的bch纠错码的并行编码方法及装置
CN105553485A (zh) * 2015-12-08 2016-05-04 西安电子科技大学 基于fpga的bch编解码装置及其编解码方法
CN112286716A (zh) * 2020-10-21 2021-01-29 天津津航计算技术研究所 一种1024字节的存储系统差错控制模块

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3248098B2 (ja) * 1997-05-26 2002-01-21 日本プレシジョン・サーキッツ株式会社 シンドローム計算装置
CN101197195B (zh) * 2006-12-07 2010-09-01 安凯(广州)微电子技术有限公司 一种与非型闪存存储器中的数据编解码方法及装置
CN101252361B (zh) * 2007-10-11 2011-12-21 国民技术股份有限公司 一种支持预搜索的面积紧凑型bch并行译码电路

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103401566A (zh) * 2013-08-06 2013-11-20 河海大学 参数化的bch纠错码的并行编码方法及装置
CN105553485A (zh) * 2015-12-08 2016-05-04 西安电子科技大学 基于fpga的bch编解码装置及其编解码方法
CN105553485B (zh) * 2015-12-08 2019-03-29 西安电子科技大学 基于fpga的bch编解码装置及其编解码方法
CN112286716A (zh) * 2020-10-21 2021-01-29 天津津航计算技术研究所 一种1024字节的存储系统差错控制模块

Also Published As

Publication number Publication date
CN101931415B (zh) 2014-04-30

Similar Documents

Publication Publication Date Title
US8458574B2 (en) Compact chien-search based decoding apparatus and method
US20230231579A1 (en) Data storage device
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US9075739B2 (en) Storage device
CN104115126A (zh) 使用代数码的多阶段ecc编码
US20090006899A1 (en) Error correcting code with chip kill capability and power saving enhancement
US8806295B2 (en) Mis-correction and no-correction rates for error control
CN102017425A (zh) 用于执行级联纠错的方法和系统
CN103325425B (zh) 存储器控制器
US11632135B2 (en) Apparatuses and methods for interleaved BCH codes
CN101488369B (zh) Bch码控制器接口电路
US9680509B2 (en) Errors and erasures decoding from multiple memory devices
CN102045073B (zh) 一种bch码译码方法和装置
CN101931415B (zh) 编码装置及方法、译码装置及方法和纠错系统
US20170192858A1 (en) Computing system with data protection mechanism with soft information and method of operation thereof
CN101848001B (zh) Flash控制器中BCH编译码的数据长度扩展方法
US10133628B2 (en) Apparatuses and methods for encoding using error protection codes
CN112286716A (zh) 一种1024字节的存储系统差错控制模块
CN110113058A (zh) 编译码方法、装置、设备及计算机可读存储介质
CN107688506B (zh) 一种流水结构的bch译码系统
US20050188293A1 (en) Error correction decoder using cells with partial syndrome generation
Lee et al. Implementation of parallel BCH encoder employing tree-type systolic array architecture
US11115055B2 (en) Method and apparatus for encoding and decoding data in memory system
US11689216B1 (en) Low gate-count generalized concatenated code (GCC) by online calculation of syndromes instead of buffer
US11528037B1 (en) Hardware architecture for local erasure correction in SSD/UFS via maximally recoverable codes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: HUAWEI DIGITAL TECHNOLOGY (CHENGDU) CO., LTD.

Free format text: FORMER NAME: CHENGDU HUAWEI SYMANTEC TECHNOLOGIES CO., LTD.

CP03 Change of name, title or address

Address after: 611731 Chengdu high tech Zone, Sichuan, West Park, Qingshui River

Patentee after: Huawei Symantec Technologies Co., Ltd.

Address before: High tech Park No. 88 University of Electronic Science and technology of Sichuan province 611731 Chengdu Tianchen Road

Patentee before: Chengdu Huawei Symantec Technologies Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140430

Termination date: 20200619

CF01 Termination of patent right due to non-payment of annual fee