基于基于FPGA的的NAND FLASH控制器控制器
1 引言 在便携式电子产品如U盘、MP3播放器、数码相机中,常常需要大容量、高密度的存储器,而在各种
存储器中,NAND FLASH以价格低、密度高、效率高等优势成为理想的器件。但NAND FLASH的控制逻辑比较
复杂,对时序要求也十分严格,而且重要的是NAND FLASH中允许存在一定的坏块(坏块在使用过程中还可能增
加),这就给判断坏块、给坏块做标记和擦除等操作带来很大的难度,于是就要求有一个控制器,使系统用户能
够方便地使用NAND FLASH,为此提出了一种基于FPGA的NAND FLASH控制器的设计方法,并用VHDL给予实
现,Modelsim得出仿真结果,并在ALTERA公司的EP2C
1 引言引言
在便携式电子产品如U盘、MP3播放器、数码相机中,常常需要大容量、高密度的存储器,而在各种存储器中,NAND
FLASH以价格低、密度高、效率高等优势成为理想的器件。但NAND FLASH的控制逻辑比较复杂,对时序要求也十分严格,
而且重要的是NAND FLASH中允许存在一定的坏块(坏块在使用过程中还可能增加),这就给判断坏块、给坏块做标记和擦除等
操作带来很大的难度,于是就要求有一个控制器,使系统用户能够方便地使用NAND FLASH,为此提出了一种基于FPGA的
NAND FLASH控制器的设计方法,并用VHDL给予实现,Modelsim得出仿真结果,并在ALTERA公司的EP2C35F672器件中
得到验证。FPGA与NAND FLASH接口图如图1所示。
2 NAND FLASH操作操作
NAND FLASH器件的管脚分为控制信号、I/O二类,地址和数据是复用I/O管脚。通常NAND FLASH器件包括一定数目
BLOCK,每个BLOCK包括一定数目的PAGE,每个NAND FLASH器件把BLOCK,PAGE按照行列地址进行寻址,基于这种特
殊的结构。
2..1 READ ID
NAND FLASH器件ID包括:Manufacture ID,device ID以及容量大小,这些重要的信息是判断NAND FLASH的重要凭
证,因此将这些信息读出来加以判断就显得特别重要。在CLE为高,WE#上升沿,在I/O输入90H命令让NAND FLASH进入读
ID状态,接着在ALE为高,WE#上升沿,在I/O输入00H地址,在等待tWHR将RE#置为读,在RE#连续4个上升沿将ID读出。
仿真图如图2所示。
2..2 判断坏块判断坏块
AND FLASH作为一种特殊的储存器件,内部集成电路使得BLOCK与BLOCK是相互独立的,因此一定数目坏块的存在不
会影响其他BLOCK。但坏块总数是有一定的限制的,超过一定的数目后器件将认为不能再使用。在出厂前厂家会在器件的每
个BLOCK的页和第二页的列地址为2048标注上坏的信息,FFh代表此BLOCK是好,非FFh代表此BLOCK是坏。但是这些重要
信息在执行Erase和Programming命令的时候会被擦除掉,因此,我们在做这些操作之前应该将坏块识别出来如图3所示,并
加以标注或者用好的块来代替,以方便以后的访问。随着使用时间的推移,坏块的数目还会增加,因此我们必须随时更新坏块
链表。坏块识别时序仿真图如图4所示。