繁体中文
设为首页
加入收藏
当前位置:技术文章首页 >> 存储器应用 >> 一种含BCH编解码器的SLC/MLC NAND FLASH控制器的VLSI设计

一种含BCH编解码器的SLC/MLC NAND FLASH控制器的VLSI设计 (1)

2009-11-29 12:46:49  作者:  来源:互联网  浏览次数:35  文字大小:【】【】【
简介:在当今数字技术飞速发展的时代,NAND FLASH因其非易失性及可擦除性、以其具有更小的体积、更快的写入和擦除速度、更多次的可擦除次数以及更低廉的每比特价格 ...
关键字:BCH编解码器 NAND
在当今数字技术飞速发展的时代,NAND FLASH因其非易失性及可擦除性、以其具有更小的体积、更快的写入和擦除速度、更多次的可擦除次数以及更低廉的每比特价格得到了迅速发展,在数码相机、手机、移动存储卡、掌上电脑、MP3播放器等手持设备中得到广泛的使用。

为了进一步减少单位比特价格,增加存储密度,新一代Multi-Level Cell(MLC)技术以及工艺几何尺寸的进一步缩小(70 nm和55 nm)是业界的两种主流方法。相对于Single-Level Cell(SLC)每个单元只存一位数据,MLC原理是两个(或多个)位的信息存人一个浮动栅,但这使得相邻数据电压之间的空间变小,可靠性变差,所以MLC存储时要更精确地控制每个存储单元的充电电压,同时,纠错编码(ECC)技术可以利用存储器中的冗余位纠检错误。为特定用途选择合适的纠错码需要了解差错产生的原因,分步的特点,以及对码长、面积、迟滞(latency)的要求。NAND FLASH读写数据产生错误的原因主要有:program disturb,read disturb,data retention,endurance等。SLC NAND FLASH主要采用汉明码纠一位错检两位错,而对于MLC NAND FLASH,则要采用纠错能力更高的BCH码或RS码。

BCH码是纠错能力可控的纠随机差错码,是循环码的子类。RS码是BCH码的重要子类,可视为BCH码的特例。

SLC中常用的一位纠错码(如汉明码)已不适合MLC的情况,RS码作为一种基于符号的码拥有更强的纠错能力,但MLC NAND FLASH的差错类型测试显示错误是以位的形式分散在整个数据块内的,像BCH码具有的随机错误纠错能力使它特别适于对MLCNAND FLASH进行差错控制。

在现今的微处理器芯片中,集成支持SLC/MLC的NAND FLASH控制器的设计还比较少。本设计在基于ARM9的SoC处理器芯片中集成了支持SLC/MLC的NAND FLASH控制器,进一步提高处理器芯片对大规模信息存储的支持和采用不同系统方案的灵活性。针对现在主流的MLC NAND FLASH规范和前期的性能参数,确定BCH(4148,4096,9)编译码器作为MLC NAND FLASH的ECC模块,使NAND Controller对2 KB pagesize的MLC NAND FLASH具有16 b/page的纠错能力,以满足数据可靠性的要求。

1 NAND FLASH控制器架构

图1是NAND控制器和DMA模块的组成框图,ARM9内核和DMAC都是AHB总线上的master模块,都包含符合AMBA标准的总线接口模块与之交互工作,NAND控制器包含总线接口模块,控制状态机转换的状态控制模块,用以缓冲数据、收发命令和状态字的寄存器组,提供ECC校验纠错码的ECC算法编/解码器模块和直接控制NAND FLASH的接口模块。


总线接口模块负责接受CPU核发送的指令,将收发数据送至相应数据寄存器和指令寄存器,并将状态寄存器内容返回给CORE。寄存器组负责整个FLASH控制器的控制工作,包含指令、配置、状态、数据、错误地址寄存器等等,是控制器的核心,通过配置不同的参数,可以实现对多种SLC/MLC NAND FLASH的支持。ECC算法编程F解码器模块提供校验功能,提供纠错信息。状态控制模块提供包括命令字发送状态组,地址发送状态组,读状态组,写状态组共26种NANDFLASH状态的翻转,用以发出对NAND FLASH读写控制信号。与NAND FLASH直接连接的接口模块提供NAND FLASH工作电压、使能和动作时所需的相应电平状态,该模块受到状态机控制模块的控制。该控制器对电平的控制简化了软件工作,驱动软件不必再按照读写时序来配置繁琐的控制电平。本设计针对MLCNAND FLASH的特点,在控制器中增加了对Randomdata output/input命令的支持,以满足ECC纠错的要求,并使读写不再限于整页的方式,提高了数据处理的灵活性。

2 BCH编解码器

BCH编解码器是保证MLC NAND FLASH数据可靠性的关键,也是本设计的核心部分。本设计采用二进制BCH(4148,4096,9)码,是GF(213)上BCH(8191,8139)码的缩短码,通过52个校验比特可以纠4 b的差错(t=4)。生成多项式是2t个连续幂次的根α,α2,α3,…,α8对应既约多项式的最小公倍式。α是生成GF(213)的本原多项式p(x)=x13+x4+x3+x+1的根。对于2 KB/page的NAND FLASH,可保证纠16 b错误。

BCH编译码器结构图如图2所示。4 096 b数据先经过BCH编码(PARITY COMPUTATION)模块后得出4 148 b BCH码,再写入NAND FLASH,冗余位写入FLASH的spare area;读出时,将信息位和冗余位一起读出,若译码发现错误则产生中断,若错误数超过纠错能力则纠错失败,否则确定错误位,并由软件对该位取反即可纠错,若未发现错误则数据顺利读出。

2.1 BCH编码器

生成多项式G(x)得出之后,即可根据G(x)在GF(2m)上的除法电路实现编码。BCH码编码采用系统编码,这是因为系统码的前k比特的数据就是信息比特加上n-k个校验位就完成了编码,这使得编解码器的设计都非常方便,编码可以通过下式来实现:


式中:m(x)和c(x)分别表示信息多项式与码字多项式;Rem(a(x))b(x)表示a(x)除以b(x)后的余数多项式。BCH系统编码器实现的关键是通过除法电路得到上式的余数作为系统码的校验位,如图3所示。


k比特原始信息数据由线性反馈移位寄存器最右边输入,在前k个时钟周期开关a闭合,信息位直接输出,在输出的同时,信号乘以x后送入线性反馈移位寄存器。前k拍结束时,线性反馈移位寄存器的内容就是余式。因此在后n-k个时钟,开关b闭合,输入接0,余数依次移位输出,从而得到冗余位。

2.2  BCH解码器

BCH码译码分为三个步骤:

(1)由接收多项式R(x)计算伴随式S(x);
(2)由伴随式S(x)得到差错位置多项式σ(x);
(3)由σ(x)根据钱式搜索得到差错位置数。

2.2.1  伴随式生成
[1] [2]

责任编辑:cjb


 

推荐中文资料

更多

· TI芯片资料
· MAXIM芯片
· NXP资料下载
· 电源芯片资料
· CD4000中文资料
· 74xx资料
· C8051F资料下载
· MSP430资料下载
· USB资料下载
· 电力电子中文资料下载

推荐文章

更多

· 基于虚拟存储器的USB下载...
· DSP外部Flash存储器在线...
· 硬盘存储技术在视频监控...
· 基于K9K8G08UOI的高速大...
· 基于虚拟存储的嵌入式存...
· 利用USB2.0的高性能移动...
· 如何才能选择最佳的数据...
· 单片机的特殊功能寄存器
· 相变存储器:能实现全新...
· 基于FM3116的电能表存储...

热点文章

更多