BCH编译码器的FPGA设计及SoPC验证*
2012-03-21蔡恒崔雪楠孟虹兆黄启俊常胜
蔡恒,崔雪楠,孟虹兆,黄启俊,常胜
(武汉大学物理科学与技术学院微电子学与固体电子学,湖北武汉430072)
随着科技进步和信息化的快速发展,如何在海量数据存储中确保数据不出错成为众人关心的问题。作为广泛应用于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)码编译器设计,并利用SoPC Builder搭建了验证平台,在Nios II处理器的控制下能高效地完成BCH编译码算法的验证,具有测试环境可配置、测试向量覆盖率高、测试流程智能化的特点。
1 BCH编译码FPGA设计
结合实际使用NAND Flash的情况,16 bit纠错是NAND Flash使用的趋势。本设计采用并行化结构实现16 bit BCH码算法。
1.1 并行BCH编码器的设计
BCH 编码器通过除法电路得到余数作为系统码的校验位,实现公式为:


其中,m(x)为原码,C(x)为编码得到的系统码,g(x)为生成多项式。
对于BCH(8184,7976,16)码,有:

由式(4)可知编码的核……
