当前位置: 首页 > 工业电子产品 > 半导体产品 > 微控制器MCU

类型分类:
科普知识
数据分类:
微控制器MCU

基于FPGA的NAND FLASH控制器

发布日期:2022-04-22 点击率:60

    1引言

    在便携式电子产品如U盘、MP3播放器、数码相机中,常常需要大容量、高密度的存储器,而在各种存储器中,NANDFLASH以价格低、密度高、效率高等优势成为最理想的器件。但NANDFLASH的控制逻辑比较复杂,对时序要求也十分严格,而且最重要的是NANDFLASH中允许存在一定的坏块(坏块在使用过程中还可能增加),这就给判断坏块、给坏块做标记和擦除等操作带来很大的难度,于是就要求有一个控制器,使系统用户能够方便地使用NANDFLASH,为此提出了一种基于FPGA的NANDFLASH控制器的设计方法,并用VHDL给予实现,Modelsim得出仿真结果,并在ALTERA公司的EP2C35F672器件中得到验证。FPGA与NANDFLASH接口图如图1所示。

    FPGA和NAND接口

    2NANDFLASH操作

    NANDFLASH器件的管脚分为控制信号、I/O二类,地址和数据是复用I/O管脚。通常NANDFLASH器件包括一定数目BLOCK,每个BLOCK包括一定数目的PAGE,每个NANDFLASH器件把BLOCK,PAGE按照行列地址进行寻址,基于这种特殊的结构。

    2.1READID

    NANDFLASH器件ID包括:ManufactureID,deviceID以及容量大小,这些重要的信息是判断NANDFLASH的重要凭证,因此将这些信息读出来加以判断就显得特别重要。在CLE为高,WE#上升沿,在I/O输入90H命令让NANDFLASH进入读ID状态,接着在ALE为高,WE#上升沿,在I/O输入00H地址,在等待tWHR将RE#置为读,在RE#连续4个上升沿将ID读出。仿真图如图2所示。

    仿真图

    2.2判断坏块

    NANDFLASH作为一种特殊的储存器件,内部集成电路使得BLOCK与BLOCK是相互独立的,因此一定数目坏块的存在不会影响其他BLOCK。但坏块总数是有一定的限制的,超过一定的数目后器件将认为不能再使用。在出厂前厂家会在器件的每个BLOCK的第一页和第二页的列地址为2048标注上坏的信息,FFh代表此BLOCK是好,非FFh代表此BLOCK是坏。但是这些重要信息在执行Erase和Programming命令的时候会被擦除掉,因此,我们在做这些操作之前应该将坏块识别出来如图3所示,并加以标注或者用好的块来代替,以方便以后的访问。随着使用时间的推移,坏块的数目还会增加,因此我们必须随时更新坏块链表。坏块识别时序仿真图如图4所示。

    环绕识别系统

    环块识别时序防真图

    3擦除操作

    一般芯片进行PROGRAM/ERASE的次数是100000cycles,第一个BLOCK次数更多,一般可用于存放bootcode或者重要的信息。由于擦除操作是以BLOCK为基准,也就是每执行一次擦除操作将会擦除指定的BLOCK,所以在执行擦除时必须注意共享区域里的重要信息如坏块标识、ECC校验等。以免被擦除掉,擦除掉了及时恢复,擦除操作仿真如图5所示。

    擦除操作仿真

    4编程操作及其他操作

    编程操作和擦除操作相似,只不过编程操作是以页为单位,在执行编程操作时同样也要注意共享区域里的重要信息以免被覆盖掉,重要信息被覆盖后要及时恢复。其他操作如复位还有有些芯片厂家各自新的操作等,但总体来说主流芯片都支持以上几种操作。

    5结语

    在实际应用中,使用ALTERA公司的Cyclone2FP-GA器件进行设计,设计输入采用VHDL来完成,实现了上述的NANDFLASH控制器接口电路。此外,由于采用了通用性设计思想,可以对不同厂家不同的芯片进行控制和操作,具有一定的通用性

下一篇: PLC、DCS、FCS三大控

上一篇: 索尔维全系列Solef?PV

推荐产品

更多