一种基于里德所罗门码的加强型编码方法、解码方法及解码器转让专利

申请号 : CN201410162127.3

文献号 : CN103916139B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏海涛王汉戴军

申请人 : 淮安固泰存储科技有限公司

摘要 :

本发明公开了一种基于里德所罗门码的加强型编码方法,生成了一个里德所罗门码,也同时是几个 BCH 码的组合,编码复杂度不高,并让编码后的数据具有高度的纠错编码能力。本发明还提供了多层次的解码方式:如果传输过程中数据并未失真,则可通过 BCH 码的解码方式去分立解码,充分利用了BCH解码简单快速的特性,低耗能,平均解码时间短;如果传输过程中数据混入了大量噪声,还可以将编码作为里德所罗门码去纠正大量错码。本发明还可通过软判决数据对数据可靠性进行预判,从而能够灵活性地选择最优的解码方法,既可以简单快速解码,又能够在大量错码发生的情况下准确的恢复原始数据,在保证高效率解码的同时降低系统能耗和解码时延。

权利要求 :

1.一种基于里德所罗门码的加强型编码方法、解码方法,其特征在于,所述编码方法包括如下步骤:步骤一,确定码字总长,再决定里德所罗门码基于的伽罗华域大小;

步骤二,决定 BCH 码的类型, BCH码的类型为二进制;

步骤三,决定BCH码纠错能力 ,和里德所罗门码的纠错能力 ,且 ,通过下述公式生成加强码:

用 生成的 有 且 ;如果 ,且

 , 这里  是基于伽罗华域 上  模  的割园陪集的共集,缺省;

所述加强码根据BCH 码组合,每个BCH 码分别存储在固态硬盘中不同的闪存芯片里;

解译经过强型编码方法编码生成的数据,解码方法包括如下步骤:步骤1,接收或读取数据,这些数据可能混有信道或闪存芯片中的噪声;

步骤2,通过检测器产生硬判决数据和软判决数据;

步骤3,根据硬判决数据对每组BCH码进行解码,如果每组解码都成功,输出结果,数据恢复成功;

步骤4,如果有任意一组或多组 BCH 解码不成功,则把 M 组 BCH 重新组合成一个里德所罗门码,使用里德所罗门解码算法解码;

步骤5,如果成功解码,输出结果,数据恢复,如果不能成功,解码器告诉外设解码失败。

2.根据权利要求1所述的一种基于里德所罗门码的加强型编码方法、解码方法,其特征在于,在步骤3前还包括如下步骤:步骤A,根据检测器的软判决数据,预估读取数据的错误率并进行判断,当错误率较高,直接组合 M 组 BCH码成为一个里德所罗门码,启动里德所罗门解码器,当错误率较低时,则启动 BCH 码解码器。

3.根据权利要求2所述的一种基于里德所罗门码的加强型编码方法、解码方法,其特征在于,在步骤A中,首先进行如下判断:步骤a,当错误率过高时,进入重试模式读取多次码字,进行码字噪声平均,并将读取的码字进行平均计算或加权平均计算,然后重新估读数据错误率。

4.根据权利要求1~2中任意一项所述的一种基于里德所罗门码的加强型编码方法、解码方法,其特征在于:所述步骤3对BCH码解码时采用并行方式。

5.一种加强型解码器,能够实现权利要求1~4中任意一项所述的加强型解码算法,其特征在于:包括比较器,计数器和解码器,其中比较器与检测器相连,计数器与比较器相连,解码器与比较器相连;所述比较器用于将软判决数据与第三阈值A相比较;计数器用于累计软判决数据大于第三阈值的次数;解码器中包括BCH解码算法和里德所罗门解码算法,当计数器计得的次数大于第四阈值时,则启用里德所罗门码算法进行解码;当计数器计得的次数小于第四阈值时,则启用难度较低的BCH解码器;当有任意一组或多组 BCH 解码不成功时,启用里德所罗门解码器解码。

6.根据权利要求5所述的加强型解码器,其特征在于:还包括与计数器相连的重读数据模块,当计数器计得的次数大于第二阈值时,所述重读数据模块发出重读指令给检测器令其重新读取数据,并对读取的码字进行加权平均或简单平均。

说明书 :

一种基于里德所罗门码的加强型编码方法、解码方法及解

码器

技术领域

[0001] 本发明属于编码译码技术领域,尤其是涉及一种里德所罗门码的编码方法以及基于该编码方法的多种解码方法。

背景技术

[0002] 在通信系统中特别是数据存储系统,原始数据都要经过纠错编码器加入纠错编码冗余校验信息,然后才由发送信道发送到空中(比如无线传输设备),或者是通过光缆/有线传输(比如光纤通信设备,有线电视设备),或者是存储在存储介质里面(如数据存储设备:传统机械硬盘,固态存储硬盘)。在接受方,为了正确有效的恢复原始数据,接受装置会将空中信息(无线通信)/存储介质信息(存储应用)还原为数字信息,然后通过解码器解出原始数据。
[0003] 在传统的编解码中,里德所罗门码(Reed-Solomon Code)和低密度码(low density parity check code)等纠错编码(Error correction codes: ECC) 广泛的应用于传统的硬盘存储,而 BCH 码广泛的应用于固态硬盘中作为纠错编码。BCH码是信道纠错码中应用比较普遍的一类线性分组码,可纠正多个随机错误的循环码,纠错能力较强且代数结构严格。现代信息存储系统中,特别是固态硬盘存储系统,BCH 编解码技术被广泛应用。需要存储的原数据经过 BCH 编码以后,产生有纠错能力的带信息冗余的数据,然后存储在固态硬盘系统中的闪存芯片中。当需要读取存储的数据时,系统从闪存芯片里读出编码后的数据。由于信道(闪存芯片)有噪声,读出来的数据会有错误。这个时候系统就必须启动 BCH 码解码算法去恢复原始数据。如果解码失败,数据就丢失了。BCH 解码比较简单,解码延时短,但是它的纠错功能并不是很强大。当今的数据存储中,特别是固态硬盘的存储中,对大量错码的纠错能力要求很高,同时还要注重解码器的复杂度。里德所罗门码解码相对复杂,但纠错功能较 BCH 码强大。如果能既利用 BCH 码简单快速的性能,又保证高概率的解码则会大大提升数据传输和存储过程中的编译码性能和效率。

发明内容

[0004] 为解决上述问题,本发明公开了一种基于里德所罗门码的加强型编码方法,在编码复杂度不高的基础上,让编码后的数据具有高度的纠错编码能力;同时还提供了简单有效地编码方式,降低了系统功耗和数据恢复的时延。
[0005] 为了达到上述目的,本发明提供如下技术方案:
[0006] 一种基于里德所罗门码的加强型编码方法,包括如下步骤:
[0007] 步骤一,确定码字总长,再决定里德所罗门码基于的伽罗华域大小;
[0008] 步骤二,决定 BCH 码的类型;
[0009] 步骤三,决定 BCH码纠错能力 ,和里德所罗门码的纠错能力 ,且 ,[0010] 通过下述公式生成加强码:
[0011]
[0012] 用 生成的 有 且 。
[0013] 作为优选,所述加强码根据BCH 码组合,每个BCH 码分别存储在固态硬盘中不同的闪存芯片里。
[0014] 作为优选,所述步骤二中BCH码的类型为二进制。
[0015] 本发明还提供了加强型解码算法,包括如下步骤:
[0016] 步骤一,接收或读取数据,这些数据可能混有信道或闪存芯片中的噪声;
[0017] 步骤二,通过检测器产生硬判决数据(即写到硬盘上编码数据对应比特为 0 或者 1)和软判决数据(每个比特为 0 或者 1 的可靠性估计值);
[0018] 步骤三,根据硬判决数据对每组BCH码进行解码,如果每组解码都成功,输出结果,数据恢复成功;
[0019] 步骤四,如果有任意一组或多组 BCH 解码不成功,则把 M 组 BCH 重新组合成一个里德所罗门码,使用里德所罗门解码器解码;
[0020] 步骤五,如果成功解码,输出结果,数据恢复,如果不能成功,解码器告诉外设解码失败。
[0021] 作为一种改进,在加强型解码算法的步骤三前还包括如下步骤:
[0022] 步骤A,根据检测器的软判决数据,预估读取数据的错误率并进行判断,当错误率较高,直接组合 M 组 BCH码成为一个里德所罗门码,启动里德所罗门解码器,当错误率较低时,则开启 BCH 码解码器。
[0023] 作为一种改进,在步骤A中,首先进行如下判断:
[0024] 步骤a,当错误率过高时,进入重试模式读取多次码字,进行码字噪声平均,并将读取的码字进行平均计算或加权平均计算,然后重新估读数据错误率。
[0025] 作为一种优选,所述步骤三对BCH码解码时采用并行方式。
[0026] 相应的,本发明还提供了一种能够实现上述加强型解码算法的加强型编码器,包括比较器,计数器和解码器,其中比较器与检测器相连,计数器与比较器相连,解码器与比较器相连;所述比较器用于将软判决数据与第三阈值相比较;计数器用于累计软判决数据大于第三阈值的次数;解码器中包括BCH解码器和里德所罗门解码器,当计数器计得的次数大于第四阈值时,则启用里德所罗门码解码器进行解码;当计数器计得的次数小于第一阈值时,则启用难度较低的BCH解码器;当有任意一组或多组 BCH 解码不成功时,启用里德所罗门解码器解码。
[0027] 作为改进,还包括与计数器相连的重读数据模块,当计数器计得的次数大于第二阈值时,所述重读数据模块发出重读指令给检测器令其重新读取数据,并对读取的码字进行加权平均或简单平均。
[0028] 通过上述方法,本发明提供的加强型编码方法生成了一个里德所罗门码,也同时是几个 BCH 码的组合,编码复杂度不高,并提供了多种解码方式。如果传输过程中数据并未失真,则可通过 BCH 码的解码方式去分立解码,充分利用了BCH解码方法简单快速的特性,低耗能,平均解码时间短;如果传输过程中数据混入了大量噪声,还可以将编码作为里德所罗门码去纠正大量错码,大幅提升了本方法的纠错能力。本发明还通过软判决数据对数据可靠性进行预判,从而能够灵活性地选择最优的解码方法,既可以简单快速解码,又能够在大量错码发生的情况下准确的恢复原始数据,在保证高效率解码的同时尽量降低系统能耗和解码时延。

附图说明

[0029] 图1为BCH编码和解码原理图;
[0030] 图2为BCH编码的原始数据和编码后数据结构图;
[0031] 图3为本发明提供的加强型编码和解码原理图;
[0032] 图4为加强型编码的原始数据和编码后数据结构图;
[0033] 图5为加强型解码算法步骤流程图;
[0034] 图6为加入软判决数据预估步骤的加强型解码算法步骤流程图;
[0035] 图7为加入重试步骤的加强型解码算法步骤流程图;
[0036] 图8为加强型解码器结构示意图;
[0037] 图9为改进的加强型解码器结构示意图。

具体实施方式

[0038] 以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
[0039] 图1为典型的BCH码编码和解码过程,编码前数据为K比特(如图2所示),经过BCH编码后形成N比特数据(如图2所示)后发送或存储,本例中编码后数据存入固态硬盘。解码时将固态硬盘上的数据读出后,由对应的解码器对数据进行解码。这种编码方式虽然简单,但纠错功能有所欠缺,因此本发明提供一种基于里德所罗门码的加强型编码方法,通过如图3所示的加强型编码器完成,具体包括如下步骤:
[0040] 步骤一,确定码字总长,再决定里德所罗门码基于的伽罗华域大小;本领域内技术人员可根据编码环境和实际需要选取合适的码子总长,并根据码字总长来挑选合适的伽罗华域(例如2的8次方、 10次方、12次方等等,具体由用户系统架构决定),这属于现有技术,在本发明中不再赘述。
[0041] 步骤二,决定 BCH 码的类型可以是二进制或者多进制,本领域内技术人员可根据实际硬件需要和信道噪声特点决定BCH 码的类型,例如是随机白噪声无记忆通道时,采用二进制BCH码, 如果是下一代更高记录密度的介质,可选择四进制BCH。 缺省是二进制。
[0042] 步骤三,决定 BCH 码纠错能力 ,和里德所罗门码的纠错能力 ,且 。 和的具体值由信道BER决定,只需满足 即可。
[0043] 给定基于伽罗华域  上狭义里德所罗门父码 的生成多项式是:
[0044]
[0045] 如果 ,且  , 这里  是基于伽罗华域 上  模 的割园陪集的共集,缺省 。
[0046] 定义加强码的生成多项式为
[0047]
[0048] 用 生成的 有 且 ,其中n 为码字字符总长;k 为信息字符总长;D 为字符汉明距离,缺省为字符纠错能力的两倍加一; d 为比特位汉明距离,缺省为比特位纠错能力的两倍加一; 为里德所罗门码的纠错能力, 为BCH码的纠错能力。v: BCH码基于大小为2的v次方的伽罗华域。
[0049] 如图4所示,编码前的原始数据为M*K比特,我们对每组K比特数据利用本发明提供的加强型编码方法进行编码后,得到一个里德所罗门码,其码长是N Symbol,每个字符(symbol)在伽罗华域里面由若干比特组成,本例中,每个字符由M个比特(bit)组成,实际的里德所罗门码长是N*m比特。由于特殊的编码方式,这种里德所罗门码还可以看作是m个N比特的BCH码,而如果把每组 BCH 编码的每比特组合起来,就成为一个 N 字符的里德所罗门码。生成的编码可以根据它的BCH 码组合,每个 BCH 码最好分别存储在固态硬盘中不同的闪存芯片里(固态硬盘有很多个闪存芯片,固态硬盘可以同时读取很多个芯片里的存储信息)。所以我们可以对每个BCH码进行单独解码,还原存储的信息,可以降低解码复杂度,解码延时短,功耗低。如果任何一组BCH码单独解码失败,则可以每M比特可以合成一个里德所罗门码的字符,进行里德所罗门解码,解码延时会加长,功耗增加,但是纠错能力上升。采用本发明提供的编码方法,保留了BCH码的优点和特性,同时又可以利用里德所罗门码的解码能力,纠正更多的错误。
[0050] 由于里德所罗门解码复杂度高,消耗更多的电能,解码延时加长,所以为了保持解码速度和提高纠错能力,我们提出多层次的解码算法。
[0051] 加强型解码算法,如图5所示,包括如下步骤:
[0052] 步骤一,接收或读取数据,这些数据可能混有信道或闪存芯片中的噪声;
[0053] 步骤二,通过检测器产生硬判决数据(即写到硬盘上编码数据对应比特为 0 或者 1)和软判决数据(每个比特为 0 或者 1 的可靠性估计值);检测器也可以为其他接收设备。
[0054] 步骤三,根据硬判决数据对每组BCH码进行解码(使用通用的BCH解码器进行解码),如果每组解码都成功,输出结果,数据恢复成功。实际上,该步骤接收到的是通过本发明提供的加强型编码方法产生的加强码,即如图4所示的里德所罗门码,由于这种里德所罗门码还可以看作是多个BCH码组成,因此本步骤可直接将加强码分解成简单的BCH码进行解码,如果是二进制BCH,只需直接利用里德所罗门码的bit码字即可。
[0055] 作为改进,在该步骤中,多个 BCH 码可以并行解码,提高解码速度,减少解码延时。
[0056] 步骤四,如果有任意一组或多组 BCH 解码不成功(由于信道噪声的影响),则把 M 组 BCH 重新组合成一个里德所罗门码,使用里德所罗门解码器解码,能够有效提高正确恢复存储信息的概率。
[0057] 步骤五,如果成功解码,输出结果,数据恢复,如果不能成功,解码器告诉外设解码失败。
[0058] 通过上述方法,必须先经过BCH解码过程,那么当数据错误数或错误率较高时,就可能需要先通过BCH解码再通过里德所罗门解码,耗时较长,性能不佳,因此作为改善,我们考虑先利用软判决数据对数据的可靠性进行预判,即在步骤三前首先进行如下判断:
[0059] 步骤A,根据检测器的软判决数据,预估读取数据的错误数或错误率并进行判断,当错误数或错误率较高(即大于预先设定的第一阈值并包含该值),直接组合 M 组 BCH码成为一个里德所罗门码,启动里德所罗门解码器,当错误数或错误率较低时(即小于预先设定的第一阈值),则开启 BCH 码解码器。包括步骤A的流程图如图6所示。
[0060] 错误数即代表出现错误的数据量,错误率则需通过将错误数除以整个码长来获得,当选取错误数来判断软判决数据时,第一阈值为第一错误数判断阈值,当选取错误率来进行判断时,第一阈值为第一错误率判断阈值。
[0061] 更进一步地,在步骤A中,首先进行如下判断:
[0062] 步骤a,当错误数或错误率过高(即错误率大于预先设定的第二阈值,且第二阈值>第一阈值)时,则判断信道噪声较大,可以发送命令让检测器重读,进入重试模式读取多次码字,并将读取的码字进行加权平均或简单平均,然后重新估读数据错误数或错误率。如果错误率变低,低于第二阈值时则继续步骤三的其余流程。包括步骤a的流程图如图7所示。同样的,当选取错误数来进行判断时,第二阈值为第二错误数判断阈值,当选取错误率来进行判断时,第二阈值为第二错误率判断阈值。
[0063] 当错误率过高的时间过长,则可以反置软判决信息,进行解码(可采用常规的软判决迭代算法。)。如果解码正确,但平均次数较高,将解码码字所在页面拷贝至新页面, 同时通知固件标识该页面不可再用。如果一直失败,通知固件标识该页面不可再用。
[0064] 相应的,本发明提供了可以实现上述加强型解码方法的加强型解码器,如图8所示,包括比较器,计数器和解码器,其中比较器与检测器相连,计数器与比较器相连,解码器与比较器相连;所述比较器用于将软判决数据与第三阈值——即可编程阈值A相比较,计数器用于累计软判决数据大于(或等于)第三阈值A的次数(即错误数),解码器中包括BCH解码器和里德所罗门解码器,当计数器计得的次数大于(或等于)第一阈值X(比特)时,则表示可能有大量错码,此时启用里德所罗门码器进行解码;当计数器计得的次数小于第一阈值X时,则表示无大量错码,此时启用难度较低的BCH解码器;当有任意一组或多组 BCH 解码不成功时,使用里德所罗门解码器解码。本解码器中第一阈值为第一错误数判断阈值。
[0065] 相应的,作为改进,如图9所示,该解码器还包括与计数器相连的重读数据模块,当计数器计得的次数大于第二阈值时,重读数据模块发出重读指令给检测器令其重新读取数据,并对读取的码字进行加权平均或简单平均。这里的第二阈值为第二错误数判断阈值。
[0066] 本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。