【FLASH存储器系列十】Nand Flash芯片使用指导之一
创始人
2024-04-09 17:56:29

目录

1.1 芯片简介

1.2 功能框图

1.3 存储结构

1.4 信号定义

1.5 双平面(plane)操作

1.6 Die间交错操作

1.7 错误管理


      

        今天以MT29F8G08AJADAWP芯片为例,说明nand flash的操作方法。

1.1 芯片简介

        这是一款镁光的容量8Gb,总线位宽8位的SLC NAND Flash,兼容ONFI 1.0标准。芯片内包含两个die,每个die为4Gb,每个die有两个plane,每个plane为2Gb,每个plane有2048个block,每个block为128K,每个block有64个page,每个page为2K,以上容量不包含每页用来存储坏块信息和ECC信息的spare area。

1.2 功能框图

1、I/O control:数据、命令、地址的输入输出口;

2、Status Register:片内的状态寄存器;

3、Command Register:命令锁存寄存器;

4、Address Register:地址由地址寄存器锁存并发送到行解码器以选择行地址,或发送到列解码器以选择列地址;

5、Control Logic:解码总线状态,判断当前属于地址输入、命令输入、或是数据输入输出周期;

6、存储阵列:两个plane,上图仅为芯片其中一个die;

7、Row decode:行地址解码;

8、column decode:列地址解码;

9、Data register:数据寄存器;

10、Cache register:缓存寄存器;

11、ECC:进行数据校验。

        注意:数据寄存器和缓存寄存器可以单独操作,在缓存操作命令下,如页缓存读、页缓存编程,可以提升数据吞吐量。这个和CPU的cahe原理是一样的。

1.3 存储结构

        Die、plane、Block、page前文已经说明,大家对照下图可以清晰地明白,不再赘述。这里说明一下每个plane上的数据寄存器和缓存寄存器,普通的页编程、页读取不需要经过数据寄存器,外部结构通过缓存寄存器直接和存储阵列交互。但是外部接口速率和存储阵列的读写速率相对较慢,以编程操作为例,如果要等外部数据全部输入进缓存寄存器,再由缓存寄存器往存储阵列里写,耗时较长,这时增加一个数据寄存器,在外部数据全部输入进缓存寄存器后,将数据拷贝到数据寄存器,然后在数据寄存器往存储阵列写数据期间,外部接口可以开启下一页数据往缓存寄存器里写,如此反复,则可以提升数据吞吐量。

1.4 信号定义

        信号定义如下表,其中CE#和R/B#分别有两个引脚,分别对应两个die:

1.5 双平面(plane)操作

        每个NAND闪存逻辑单元(LUN)被划分为多个物理平面。每个平面包含独立于其他平面的高速缓存寄存器和数据寄存器。这些平面通过低位的块地址位寻址。如存储结构图中的Note所示。

        双平面操作通过在多个平面上执行并发的读取、编程或擦除操作,更好地利用了这些物理平面上的NAND闪存阵列,显著提高了系统性能。两个平面之间的操作必须是相同类型的;例如,不能在一个平面上执行PROGRAM操作而在另一平面上执行ERASE操作。

        当发出双平面编程或擦除操作时,使用READ STATUS(70h)命令并检查先前的操作是否失败。如果READ STATUS(70h)命令指示发生错误(FAIL=1和/或FAILC=1),则使用READ STAUTS ENHANCED(78h)命令确定哪个平面操作失败。

1.6 Die间交错操作

        在有多个die的芯片中,可以通过die间交错操作提升性能。交错操作是在一个die繁忙(RDY=0)时向空闲die(RDY=1)发出的操作。但在RESET(FFh)、读标识(90h、ECh、EDh)和特性配置(EEh、EFh)操作之后,直到目标上所有die的ARDY=1之前,禁止多die交错操作。

        在交错操作期间,有两种方法可以确定操作是否完成。R/B#信号指示对应die何时完成其操作。当任何die忙时,R/B#保持为低。当R/B#变高时,对应die处于空闲状态,操作完成。或者,也可以通过READ STATUS ENHANCED(78h)命令单独报告每个die的状态。

        如果裸片(LUN)正在执行高速缓存操作,如页高速缓存编程(80h-15h),则当状态寄存器位6为1时(RDY=1),裸片(LUN)能够接受另一高速缓存操作的数据。所有操作(包括高速缓存操作)在状态寄存器位5为1时(ARDY=1)在裸片上完成。

1.7 错误管理

        通常Nand Flash出厂时就有可能存在缺陷,同时这种缺陷会影响块擦除,这样的缺陷被称为坏块。所以这时就需要坏块管理和纠错算法来保证数据的完整性。

        每个block的第一个(规范规定可以是第一个也可以是最后一个)page中有64字节的spare area,可用来标记坏块。如果一个块是有缺陷的,并且使用 8-bit 数据访问方式,则制造商应该通过设置有缺陷的块的第一个(或者最后一个)page 中,缺陷区域(这个缺陷区域规范中没有明确是什么地址)的第一个Byte 为00h,来标记有缺陷的块。如果一个块是有缺陷的并且使用16-bit数据访问方式,则通过设置缺陷块的第一个(或最后一个)page 中,缺陷区域的第一个word 为 0000h,来标记有缺陷的块。

        主机软件在对nand flash进行编程或擦除前,应先到每个block的第一个page First spare area location进行检查,判断哪些block是坏块,然后生成一张坏块表。

        为了保证数据的完整性,建议做如下操作:

        1、在编程和擦除操作后检查状态;

        2、在典型场景下,使用最小ECC要求;

        3、使用坏块管理机制和磨损均衡算法;

Description

Requirement

Minimum number of valid blocks (NVB) per LUN

4016(出厂时好块不能低于4016)

Total available blocks per LUN

4096

First spare area location

x8: byte 2048
x16: word 1024

Bad-block mark

x8: 00h
x16: 0000h

Minimum required ECC

4-bit ECC per 528 bytes

Minimum ECC with internal ECC enabled

4-bit ECC per 516 bytes (user data) + 8 bytes (parity data)

Minimum required ECC for block 0 if PROGRAM/ERASE cycles are less than 1000

1-bit ECC per 528 bytes

        芯片的大致功能介绍到这里,下一讲分享部分重要的操作指令,敬请期待!

相关内容

热门资讯

亚太市场集体反攻,A股“V型”... 四川在线记者 李菲菲2月3日,A股在昨日大跌后强势反弹,三大指数集体收涨。截至收盘,沪指涨1.29%...
黄金白银大涨!交易所密集出手 经过前两个交易日的大跌之后,2月3日,黄金、白银大幅反弹。截至北京时间20:02,伦敦金现涨5.77...
一图读懂丨今年,北京这些重要民... 来源:北京日报客户端
乌多地能源设施遭大规模空袭,泽... 北京青年报2026-02-03 19:58:05乌克兰总统泽连斯基3日上午在社交媒体发文称,2日夜间...
新疆维吾尔自治区人力资源和社会... 本文转自【新疆维吾尔自治区人力资源和社会保障厅网站】;