Flash控制器中BCH编译码的数据长度扩展方法

文档序号:7517001阅读:202来源:国知局
专利名称:Flash控制器中BCH编译码的数据长度扩展方法
技术领域
本发明涉及Flash控制器中的编译码纠错方法,特别涉及在NandFlash型存储设备控制芯片中使用的一种BCH编译码的数据长度扩展方法。
背景技术
在NandFlash型结构大容量存储设备的控制芯片中,由于NandFlash型结构的特点以及噪声干扰等因素,传输的数据会出错是不可避免的。为了保证数据读出时能进行误码检测和校正,通常都是在数据写入存储单元时,需要写入一部分冗余数据,在数据读出时用于纠错。BCH码是由博斯_查德赫利_霍昆格姆(Bose-Chaudhuri-Hocquenghem,即 BCH)编码发生器定义的差错控制码技术,它是一种可纠正多个随机错误的编译码方法,这与NandFlash存储设备的常规出错类型相符。采用超长BCH码作为NandFlash控制器纠错码ECC单元的优点是 (1)在保护相同长度的数据时,对于给定的随机错误数,二进制BCH码需占用的冗余数据空间通常要低于里德_索罗蒙RS(Reed-Solomn)码; (2)在译码时,二进制BCH码仅需搜索错误位置,待获得错误位置后,只需将错误位取反即完成纠错,而不必再计算错误值多项式,使得计算复杂度得到了大幅度的减小。
由BCH编码原理可知,对于任意正整数m,设二进制BCH码的标准码长为N = (2m-l)比特,信息元为K比特,则该码的相关参数为校验元长为(N-K)比特;纠错能力 t彡(N-K)/m(其中m彡3);最小码距dmin彡2t+l。
BCH码是一种能纠正多个随机错误的循环码,它的生成多项式与最小码距之间有密切的关系,可以用生成多项式g(x)的根来描述。它具有严格的代数结构,纠错能力强,构造简单,人们可以根据所要求的纠错能力t很容易构造出BCH码,其编码和解码器也较其他码容易实现,是线性分组码中应用最普遍的一类码。
目前在Flash控制器中,对NandFlash存储设备的数据进行BCH编译码都是以512 字节或1024字节数据块为基本处理单元(如图1所示),其中,512字节适用于Flash扇区容量为528字节和540字节规格的NandFlash,1024字节适用于Flash扇区容量为1070字节和1080字节规格的NandFlash。因此在BCH编码时只对固定长度的512字节或1024字节数据配备用于纠错的数据冗余位,在BCH译码时,也仅仅只对固定长度的512字节或1024 字节数据进行查错和纠错。若数据的长度大于512字节或1024字节只能先处理前512字节或1024字节的数据,然后对大于512字节或1024字节的剩余数据填充至512字节或1024 字节后再处理,或者放弃处理剩余数据,这严重影响了纠错模块的应用范围。比如以1024 字节为基本处理单元的flash控制器为例,若想对1024字节的数据进行奇偶校验或者增加几个字节的控制管理位后再进行编译码,现有的技术只能对前1024字节的数据进行纠错保护,而增加的奇偶校验位或其他的控制管理位若在传输过程中有错误却无法纠正。这样可能会给用户带来不利后果。若想对增加的奇偶校验位或其他控制管理位也同时进行查错纠错保护的话,只能进行适当的填充满足另一个1024字节的处理单元再进行编译码,这严重影响处理效率和用户的体验感受。

发明内容
本发明要解决的技术问题在于克服了目前flash控制器中纠错模块只能对固定长度处理单元进行查错纠错保护的不足,通过在原有处理单元长度的基础上增加一个长度可配置的附加数据长度,从而使得原有处理单元的数据长度和附加数据长度同时获得BCH 编译码模块的查错和纠错保护。从而极大的方便用户对flash中处理单元的数据进行各种操作和应用。
为达到上述目的,本发明采用的技术方案是一种Flash控制器中BCH编译码的数据长度扩展方法,将Flash控制器对数据进行BCH编译码的基本处理单元设计成由一个 128、256、512或1024字节的固定数据长度和一个可配置的附加数据长度组成的模式,在 Flash控制器对数据进行BCH编译码时,利用一个控制寄存器来配置附加数据长度的字节数,控制寄存器的值与所配置附加数据长度的字节数之间存在一一对应关系,配置控制寄存器的值可配置附加数据长度所对应的具体字节数,所述固定数据长度、附加数据长度以及数据冗余位的字节之和小于或等于Flash扇区的容量,从而使Flash控制器进行BCH编译码的数据长度得以扩展。
上述技术方案的有关内容解释如下 1、上述方案中,所述“数据冗余位”是指对固定数据长度和附加数据长度一起进行 BCH编码时产生的用于纠错的数据冗余位。该数据冗余位的字节数与纠错能力t (最大纠错个数)的选择有关,本发明数据冗余位的字节数计算公式如下 数据冗余位的字节数=(14Xt)/8 (1) 式中t为纠错能力值,t的取值范围为8 32比特中的一个整数,当公式(1)的计算结果为整数时取该整数作为数据冗余位的长度,当公式(1)的结果有小数时取整数后加1作为数据冗余位的长度。
2、上述方案中,所述“Flash扇区的容量”目前有528字节、540字节、1070字节、 1080字节等规格,其中,Flash扇区容量为528字节和540字节规格的NandFlash适用于固定数据长度为512字节的数据块,而Flash扇区容量为1070字节和1080字节规格的 NandFlash适用于固定固定数据长度为1024字节的数据块。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果 1、纠错数据长度扩大。在Flash控制器对数据进行BCH编译码时,通过固定数据长度选择信号接收固定长度的数据,同时通过一个控制寄存器的值来配置附加数据长度, 并将固定数据长度和附加数据长度的数据一起进行BCH编译码,从而使得纠错数据长度从原来的一个固定数据长度增加了一个可配置的附加数据长度,扩展了 Flash控制器对数据进行BCH编译码的长度。
2、配置灵活而且使用方便。附加数据长度不仅可以配置灵活,而且可以利用该附加数据长度来对固定数据长度的数据进行各种操作和应用,例如,对固定数据长度的数据进行奇偶校验,对固定数据长度的数据进行软件计算、对固定数据长度的数据进行标识以及对固定数据长度的数据进行保密处理等。附加数据长度的信息可以和固定数据长度的数据一起送入BCH编译码模块,同时受到BCH编译码模块的查错和纠错保护。从而能方便用户对flash固定数据长度中的数据进行各种功能补充,极大的扩展了 BCH编译码模块的受用范围。
3、使用范围更广。通过增加一个可配置的附加数据长度,从而可对flash固定数据长度中的数据进行各种功能补充,而增加的附加数据长度信息也受到BCH编译码模块的查错和纠错保护,从而大大的增强了 BCH编译码模块的使用范围,能适应不同的应用环境。


附图1为以往Flash控制器对数据进行BCH编译码的模式原理图; 附图2为本发明Flash控制器对数据进行BCH编译码的模式原理图; 附图3为本发明的BCH译码电路整体结构框架图。
具体实施例方式下面结合附图及实施例对本发明作进一步描述 实施例1 一种Flash控制器中BCH编译码的数据长度扩展方法 如图2所示,将Flash控制器对数据进行BCH编译码的基本处理单元设计成由一个512或1024字节的固定数据长度和一个0 7字节可配置的附加数据长度组成的模式, 在Flash控制器对数据进行BCH编译码时,利用一个位宽为3比特的控制寄存器来配置附加数据长度的字节数,控制寄存器的值与所配置附加数据长度的0 7字节数之间一一对应关系如下 控制寄存器的值附加数据长度的字节数 0000 字节; 0011 字节; 0102 字节; 0113 字节; 1004 字节; 1015 字节; 1106 字节; 1117 字节; 通过配置控制寄存器的值可配置附加数据长度在0 7字节范围中的任意一个字节数,当附加数据长度为0字节时表示没有增加数据长度(与背景技术中的现有技术效果相同),当附加数据长度为1 7字节时表示在固定数据长度基础上增加了数据长度,从而使Flash控制器进行BCH编译码的数据长度得以扩展。
上述512字节的固定数据长度适用于Flash扇区容量为528字节和540字节规格的NandFlash。上述1024字节的固定数据长度适用于Flash扇区容量为1070字节和1080 字节规格的NandFlash。但不论使用何种规格的NandFlash,都要注意满足以下条件 固定数据长度、附加数据长度以及数据冗余位的字节之和小于或等于Flash扇区的容量 其中数据冗余位是指对固定数据长度和附加数据长度一起进行BCH编码时产生的用于纠错的数据冗余位。该数据冗余位的字节数与纠错能力t (最大纠错个数)的选择有关,本发明数据冗余位的字节数计算公式如下 数据冗余位的字节数=(14Xt)/8 (1) 式中t为纠错能力值,t的取值范围为8 32比特中的一个整数,当公式(1)的计算结果为整数时取该整数作为数据冗余位的长度,当公式(1)的结果有小数时取整数后加1作为数据冗余位的长度。
比如,以Flash扇区容量为1070字节规格的NandFlash为例,其固定数据长度为1024字节,选择纠错能力t的值为8,根据公式(1)计算得数据冗余位为14字节。若附加数据长度为7字节,可以计算出 固定数据长度、附加数据长度以及数据冗余位的字节之和=1024字节+7字节+14字节=1045字节< Flash扇区容量1070字节,因此是允许的。
如果将纠错能力t的值改为30,则数据冗余位为53字节,可以计算出固定数据长度、附加数据长度以及数据冗余位的字节之和=1024字节+7字节+53字节=1084字节 > Flash扇区容量1070字节,因此是不允许的。
再比如,以Flash扇区容量为528字节规格的NandFlash为例,其固定数据长度为 512字节,选择纠错能力t的值为8,根据公式(1)计算得数据冗余位为14字节。若附加数据长度为7字节,可以计算出 固定数据长度、附加数据长度以及数据冗余位的字节之和=512字节+7字节+14 字节=533字节> Flash扇区容量528字节,因此是不允许的。
下面结构附图3对本发明作进一步说明 图3为本发明的BCH译码电路整体结构框架图。从图中可以看出BCH译码电路有三个子电路,分别是伴随式校正子运算电路、错误位置多项式迭代电路和错误地址搜索电路。其中,伴随式校正子运算电路是通过信息元的输入完成伴随式校正子的计算电路;错误位置多项式迭代电路是通过伴随式校正子计算出错误位置多项式的电路;错误地址搜索电路是Chien搜索电路,错误地址搜索电路通过伴随式校正子运算电路所接收的固定数据长度选择信号和附加数据长度选择信号来更新Chien搜索电路的搜索地址的起始位置和长度,从而完成错误地址的搜索。
图3中的各信号的功能描述如下 1、输入信号 elk:系统时钟输入。
rst_ 复位信号,低电平有效。
Dinvalid 有效数据输入指示信号,高电平有效。
encoding 编译码模式(1为编码,0为译码)。
selcapacity[l:0]纠错能力类型选择信号。该值为3表示纠错能力是30比特, 为2是24比特,为1是14比特,为0是8比特。
sellength[l:0]数据保护长度选择信号,该值为3表示输入的数据长度为128字节,为2表示256字节,为1表示512字节,为0表示1024字节。
selcntrlen[2:0]附加数据长度选择信号,即控制寄存器的值。
din [7:0]数据输入端口,共8位。
searchlnit 错误位置多项式迭代电路初始化信号。
Cerror_num[5:0]纠错能力。
2、输出信号 Error_num[5:0]实际出现的错误个数。
Codedone 伴随式计算结束指示信号,高电平有效。
BMdone 错误位置多项式迭代电路结束指示信号,高电平有效。
CSdone =Chien搜索结束指示信号,高电平有效。
CSdout [7:0]错误图样输出,与输入值din异或完成纠错。
CSadrs [10:0]错误位置。
CSwe 纠错指示信号,高电平有效。
SearchF 超出纠错能力指示信号,高电平有效。
Correct data [7:0]正确的输出码字。
3、内部信号 BM_start 错误位置多项式迭代电路运算开始信号,高电平有效。
Chien_start =Chien搜索开始信号,高电平有效。
S1, S2, ... , S2t 伴随式校正子,位宽都为14位。
Loc1, Loc2, ... , Loct 错误位置多项式各系数,位宽都为14位。
为了提高译码速度,图3中的三个子电路可采用并行或者流水线的方式可同时对数据块进行译码,大大的提高了译码速度,因此在不增加面积的同时并不会因为分段后影响原数据块的译码速度。
若Flash的固定数据长度为1024字节,而用户又无需对该固定数据长度的数据进行功能补充的话,直接把selCntrlen[2:0]配置成0,直接将该固定数据长度的数据送入 BCH编译码模块进行操作即可。若用户需要对固定数据长度的数据进行功能补充,如奇偶校验或者其他用户需要的相关操作,假如附加数据长度为1,2,3,...,或7字节时,直接将 selcntrlen [2 0]配置成1,2,3,...,或7,再把固定数据长度1024字节的数据和附加数据长度的数据一起送入BCH编译码模块,此时固定数据长度中的数据和附加数据长度的数据若在传输过程中有错误,而且错误的数量在纠错能力范围之内都能被发现并被纠正。
若Flash的固定数据长度为512字节,而用户又无需对该固定数据长度的数据进行功能补充的话,直接把selcntrlen[2:0]配置成0,直接将该固定数据长度的数据送入 BCH编译码模块进行操作即可。若用户需要对固定数据长度的数据进行功能补充,如奇偶校验或者其他用户需要的相关操作,假如附加数据长度为1,2,3,...,或7字节时,直接将 selcntrlen[2:0]配置成1,2,3,...,或7,再把固定数据长度512字节的数据和附加数据长度的数据一起送入BCH编译码模块,此时固定数据长度中的数据和附加数据长度的数据若在传输过程中有错误,而且错误的数量在纠错能力范围之内都能被发现并被纠正。
若Flash数据块的数据被分段成128、256、512或1024字节后仍可适应上述情况。
实施例2 —种Flash控制器中BCH编译码的数据长度扩展方法 本实施例与实施例1不同之处在于控制寄存器的位宽为4比特,控制寄存器的值与所配置附加数据长度的字节数之间的对应关系如下 控制寄存器的值附加数据长度的字节数 00000 字节; 00011 字节; 00102 字节; 00113 字节; 01004 字节; 01015 字节; 01106 字节; 01117 字节; 10008 字节; 10019 字节; 101010 字节; 101111 字节; 110012 字节; 110113 字节; 111014 字节; 111115 字节; 通过配置控制寄存器的值可配置附加数据长度在0 15字节范围中的任意一个字节数。
其他内容与实施例1相同,这里不再重复描述。
依据实施例1和实施例2原理,本领域技术人员可以知道控制寄存器的位宽除了3比特和4比特而外,还可以是2比特或5比特等不同宽度,只要能够满足固定数据长度、 附加数据长度以及数据冗余位的字节之和小于或等于Flash扇区的容量这一条件,本发明均可实施。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
权利要求
1.一种Flash控制器中BCH编译码的数据长度扩展方法,其特征在于将Flash控制 器对数据进行BCH编译码的基本处理单元设计成由一个128、256、512或1024字节的固定 数据长度和一个可配置的附加数据长度组成的模式,在Flash控制器对数据进行BCH编译 码时,利用一个控制寄存器来配置附加数据长度的字节数,控制寄存器的值与所配置附加 数据长度的字节数之间存在一一对应关系,配置控制寄存器的值可配置附加数据长度所对 应的具体字节数,所述固定数据长度、附加数据长度以及数据冗余位的字节之和小于或等 于Flash扇区的容量,从而使Flash控制器进行BCH编译码的数据长度得以扩展。
2.根据权利要求1所述的数据长度扩展方法,其特征在于所述控制寄存器的位宽为3 比特,控制寄存器的值与所配置附加数据长度的字节数之间的对应关系如下控制寄存器的值附加数据长度的字节数0000字节;0011字节;0102字节;0113字节;1004字节;1015字节;1106字节;1117字节;通过配置控制寄存器的值可配置附加数据长度在0 7字节范围中的任意一个字节数。
3.根据权利要求1所述的数据长度扩展方法,其特征在于所述控制寄存器的位宽为4 比特,控制寄存器的值与所配置附加数据长度的字节数之间的对应关系如下控制寄存器的值附加数据长度的字节数00000字节;00011字节;00102字节;00113字节;01004字节;01015字节;01106字节;01117字节;10008字节;10019字节;101010 字节;101111 字节;110012 字节;110113 字节;111014 字节;111115 字节;通过配置控制寄存器的值可配置附加数据长度在O 15字节范围中的任意一个字节数。
全文摘要
一种Flash控制器中BCH编译码的数据长度扩展方法,其特征在于将Flash控制器对数据进行BCH编译码的基本处理单元设计成由一个128、256、512或1024字节的固定数据长度和一个可配置的附加数据长度组成的模式,在Flash控制器对数据进行BCH编译码时,利用一个控制寄存器来配置附加数据长度的字节数,控制寄存器的值与所配置附加数据长度的字节数之间存在一一对应关系,配置控制寄存器的值可配置附加数据长度所对应的具体字节数,所述固定数据长度、附加数据长度以及数据冗余位的字节之和小于或等于Flash扇区的容量,从而使Flash控制器进行BCH编译码的数据长度得以扩展。
文档编号H03M13/15GK101848001SQ20101013778
公开日2010年9月29日 申请日期2010年3月22日 优先权日2010年3月22日
发明者钟名富, 林雄鑫, 王廷平, 肖佐楠, 郑茳 申请人:苏州国芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1