基于 FPGA 的 NAND Flash 控制接口电路设
计
1 引言
随着存储技术的不断进步,Flash Memory 的存储容量越来越大,读写数度越来越快。性
能价格比越来越高。但是,NAND Flash 本身存在缺点,归纳起来有两点:读写控制时序
复杂和位交换(o、1 反转)问题。NAND Flash 器件能够复用指令、地址和数据总线,从而
节省了引脚数量,但引脚不仅承担着数据总线的功能,还承担着地址及指令总线的功能,
所以造成接口控制时序复杂。位反转的问题更多见于 NAND Flash,NAND Flash 的供应
商建议使用 NAND Flash 的同时使用 EDC/ECC 校验算法。
本文实现的 NAND Flash 控制器放置在 CPU 和 NANF Flash 器件之间,实现了 NAND
Flash 的无粘接接口,可以大大简化 CPU 对 NAND Flash 的操作时序,提高 CPU 的使用
效率。ECC 功能可以保证存储数据的准确性,ECC 模块和主控模块相对独立,在不需要
ECC 功能的时候,只需不使能 ECC 模块,方便灵活。
2 控制接口电路的功能特性
整个控制接 121 电路分为两大功能模块:第一个功能模块为主控制器模块,该模块简化
NAND Flash 的接口时序,可以为 NAND Flash 设计一个无粘接接口(Glueless Inter 一
face),从而使得对 NAND Flash 操作的时序复杂程度大大降低,使得 NAND Flash 接口
映射为一个类似于 SRAM 的无粘结接口。第二个功能模块是 ECC 模块,该模块对 512 个
字节能纠正单比特错误和检测双比特错误,但对单比特以上的错误无法纠正。对两比特以
E 的错误不保证能检测。
两个功能模块相对独立,ECC 功能模块位于主控制器模块与 NAND Flash 芯片之间,可以
选择工作与不工作,主控制器模块的所有命令都会通过 ECC 模块传给 NANDFlash 芯片。
当令 ECC 模块不工作时。ECC 模块就相当于连接主控制器模块与 NAND Flash 芯片的导
线;当 ECC 模块工作时。只会在丰控制器模块的操作中加入一些步骤,并不会打乱主控制
器模块的操作时序。
3 主控制器
3.1 寄存器和缓存配置
主控制器的外部接口类似于 SRAM 的,然而 SRAM 只有读和写两种主要操作。而 NAND
Flash 除 r 页编程与读操作之外还有 ID 读取、重置、块擦除和状态读取等操作,在不改变
接口的情况下只能采用与 NAND Flash 类似的写控制字的方式。主控制器有 16 字节寄存
器组,可以从 I/O 总线上读取指令和地址。指令寄存器采用存储器映射(Memory
Mapped Register)的编址方式,也就是说,寄存器的地址统一编入内存空间,从 0xFF0
到 OxFFA。
3.2 主控制器的实现
主控制器的结构框图见图 1。下面分别讨论时钟控制模块和状态控制模块的设计实现。