BCH编译码器的FPGA设计及SoPC验证
扫描二维码
随时随地手机看文章
摘 要: 针对NAND Flash应用,完成了并行化BCH编译码器硬件设计。采用寄存器传输级硬件描述语言,利用LFSR电路、计算伴随式、求解关键方程、Chien搜索算法等技术方法完成了BCH编译码算法在FPGA上的硬件实现。相比于传统串行实现方案,采用并行化实现提高了编译码器的速度。搭建了基于SoPC技术的嵌入式验证平台,在Nios处理器的控制下能快速高效地完成对BCH编译码算法的验证,具有测试环境可配置、测试向量覆盖率高、测试流程智能化的特点。
关键词: 并行化;BCH;FPGA;优化;SoPC
随着科技进步和信息化的快速发展,如何在海量数据存储中确保数据不出错成为众人关心的问题。作为广泛应用于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编码器通过除法电路得到余数作为系统码的校验位,实现公式为:
2 基于SoPC技术的验证系统
搭建了基于SoPC技术的嵌入式验证平台, NiosⅡProcessor通过AVALON总线以AVALON—SLERVER协议与RAM_CONTROLLER以及BCH_IP外设进行通信,控制编译码模块工作,如图4所示。其中data_cnt为传输码元数,eob信号为传输码元结束信号,sob为开始传输原码信号,data信号为传输原码数据。