文献标识码:A
文章编号: 0258-7998(2012)06-0015-03
随着科技进步和信息化的快速发展,如何在海量数据存储中确保数据不出错成为众人关心的问题。作为广泛应用于U盘、固态硬盘等电子产品的一种非易失性存储介,NAND Flash 由于其结构的特殊性,在进行擦写操作时易产生错误,故需要引入错误校验机制。早期使用SLC工艺的NAND Flash通常采用汉明码(ECC)校验,但是无法纠正1 bit以上的错误。现今的MLC工艺多采用BCH纠错,但每页产生的错误往往超过2 bit,甚至达到4 bit。国内外对BCH纠错的研究已展开,参考文献[1-2]采用串行结构完成译码器设计,实现简单,但最大时钟频率小、速度慢,无法满足高速的需要。参考文献[3-4]中提出并行化结构,提高了设计速度和数据吞吐量,但电路实现讨论不充分。参考文献[5]中通过ASIC制备芯片并进行测试验证,但此方法周期长、费用高。
针对以上问题,本文基于Altera公司的CycloneII EP2C35系列FPGA完成了并行化BCH(8184,7976,16)码编译器设计,并利用SoPCBuilder搭建了验证平台,在Nios II处理器的控制下能高效地完成BCH编译码算法的验证,具有测试环境可配置、测试向量覆盖率高、测试流程智能化的特点。
1 BCH编译码FPGA设计
结合实际使用NAND Flash的情况, 16 bit纠错是NAND Flash使用的趋势。本设计采用并行化结构实现16 bit BCH码算法。
1.1 并行BCH编码器的设计
BCH编码器通过除法电路得到余数作为系统码的校验位,实现公式为:
2 基于SoPC技术的验证系统
搭建了基于SoPC技术的嵌入式验证平台, NiosⅡProcessor通过AVALON总线以AVALON—SLERVER协议与RAM_CONTROLLER以及BCH_IP外设进行通信,控制编译码模块工作,如图4所示。其中data_cnt为传输码元数,eob信号为传输码元结束信号,sob为开始传输原码信号,data信号为传输原码数据。
在此基础上,利用NIOS向RAM中写入多种类别错误进行纠错。大量数据的测试证明了BCH编译码设计的正确性。部分测试结果如表1所示。
使用硬件描述语言,基于Altera公司的Quartus8.0开发工具完成了应用于NAND Flash的并行化BCH编译码器的设计。采用并行结构缩短了编解码周期,最大时钟频率可达101.84 MHz。搭建了基于SoPC技术的嵌入式验证平台,在Nios II处理器的控制下高效地完成了BCH编译码算法的验证。验证结果表明该算法具有测试环境可配置、测试向量覆盖率高及测试流程智能化的特点。
参考文献
[1] 孙怡,田上力,林建英.BCH码译码器的FPGA实现[J].电路与系统学报,2000(12):98-100.
[2] 江建国.BCH编译码器的设计及验证[D].上海:上海交通大学.2010.
[3] 张彦,李署坚,崔金.一种BCH码编译码器的设计与实现[J].通信技术,2010,43(12):24-26.
[4] 刘冀,孙玲.可变码率BCH码编译码的FPGA实现[J].信号与信息处理,2010,40(7):11-13.
[5] 许锦.NAND Flash快速BCH编解码算法及硬件实现[D].上海:上海复旦大学,2008.
[6] 赵景琰,金鹰翰,赵培,等.并行化的BCH编解码器设计[J].微处理机,2010(4):42-45.