NAND Flash的基本操作——读、写、擦除

转载地址:http://blog.sina.com.cn/s/blog_5c401a150101d7hi.html

基本操作

这里将会简要介绍一下NAND Flash的基本操作在NAND Flash内部是如何进行的,基本操作包括:读、写和擦除。

 

读:

    当我们读取一个存储单元中的数据时(如图2.4),是使用一个门电压Vread(0V)作用于gate端,而没有被读取的存储单元的gate端则被偏置于Vpass.r(通常为4-5v),这样他们就能够不管阀值电压是多少而能够通过晶体管。事实上,一个被擦除过的Flash存储单元有一个低于0V的Vth值,而一个被写过的存储单元的Vth则一般会有一个正值,并且这个值的大小一般低于4V。实际上,使用0V来对一个所选存储单元的gate端进行偏置的时候,所有串联在一起的的存储单元都会去传导电流,而只有被寻址的存储单元会被擦除。

NAND Flash的基本操作——读、写、擦除_第1张图片
 

    串电流通常的值大概在100-200nA。读取存储单元的技术是基于充电整合、对bitline的寄生电容的利用。

这个电容是用一个固定值(通常1-1.2V)来进行预充电:只有当存储单元被擦除并且电流被释放,那么电容才

会被释放。有一些电路是专门用来检测bitline的寄生电容的状态的:图2.4展示的这个结构就是当前应用最多的

结构。bitline的寄生电容被标为Cbl,而NAND Flash串则相当于一个电流产生器。

    在对bitline的充电过程中PMOS晶体管的门Mp是被一直接地的,而NMOS晶体管的门Mn则被一直保持在一个固定值V1.V1的典型值大概在2V左右。在充电的最后bitline将会有一个电压Vbl。

                                 

                                  Vbl = V1 - Vthn                          (2.1)

 

在上面这个公式中Vthn表示的是NMOS Mn的阀值电压。

    在这个时候Mn和Mp晶体管是被关掉的,Cbl是自由放电的。在一段时间(Tval)之后,Mn的gate会被偏置在

V2 < V1, 通常在1.6-1.4V左右。

    如果一个Tval时间足够将bitline 的电压全部放电完成那么:

 

                                 Vbl = V2 - Vthn                            (2.2)

 

Mn会打开并且输出节电的电压(Vout)变成了一个bitline一样,最后模拟电压Vout会被转换成为一个数字值

使用一个简单的闩锁。关于读操作肯定不会这么简单,更详细的情况后续我们还会继续讲到。

 

写:

    NAND Flash的写操作是利用电子隧道的量子影响来进行的,电子隧道的出现是由于有一个强电场。特别是

写和擦除都是依靠电场的极性。

    在写的过程中,穿过氧化层的电子数量就是电场的一个功能:事实上,电场越大,穿过氧化层的电子数量就

越多。因此,为了提高写的能力,一个可用的高电场(对应的就是高电压)是必不可少的。这也是NAND Flash

的写的方式的主要缺点,因为氧化层是会受到这些电压的影响而在功能上有所衰退。

    而这种写方式的主要的优点则是每个存储单元的电流可以非常低,这也是之所以Fowler-Nordheim机制比较

适合多个存储单元并行写的原因,也是NAND 页大小所要求的。

    用于对NAND Flash存储单元进行写的算法是一个叫做“Program & Verify”的算法,verify是用来检查是否

存储单元是否已经达到一个分布的极限。

    为了将电子触发进入由氧化层包裹的floating gate中,我们要求有下列条件(图2.5所示):

    Vdd是作用于drain 选择门

        Vpass.p(8-10V)作用于没有被选到的门上

        Vpgm(20-25V)作用于选择的那个门上(即将被写的那个)

        GND作用于源极选择门上

        GND作用于将要写的那个bitline上

        Vdd作用于其他的bitline上

     self-boosting机制会阻止有着同一个gate的存储单元去进行一个未要求的写操作。所以关于这个过程一个

基本的想法就是在写的过程中利用存储单元的寄生电容来开发他所蕴含的潜能,这也是为了增加在氧化物隧道

之下的这块区域的潜能。(如下图所示)

NAND Flash的基本操作——读、写、擦除_第2张图片
 

    当bitline被驱动到Vdd,drain二极管是diode-connected的并且对应的bitline是floating的。当Vpass.p

被运用到没被选到的wordlines,寄生电容能够提高通道的潜能,降低通过氧化物通道的电压的下降,因此,

这种通道现象是应该被禁止的。

    由于存储单元的架构是矩阵式的,所有的对应wordline的存储单元都是被同样的电压所偏置,即使那些没有

准备被写的存储单元也是一样,他们被称为“disturbed”。disturbs的两个重要的象征都是和写相关的:如图

2.5所示Pass disturb和Program disturb会影响到存储单元的稳定性。

 

擦除:

    如图2.6a所示NAND 存储器是被定义为一个triple-well结构,通常每一个plane都有他自己的triple-well。

而source端则被所有的block所共用:用这种方法的话矩阵就会更紧凑并且结构也可以更多样性,对iP-well的

偏置也会大大地降低。

    这种电子擦除时通过使用一个高电压和让wordline保持接地来对iP-well进行偏置,以此来进行擦除的(如

图2.6c)。因此,NAND 技术不需要负电压。另外,这个物理机制是Fowler-Nordheim 通道。由于iP-well对所

有的block来说都是正常的,所以就不能在不管wordline floating的情况下对未选择的blocks进行擦除。这种

方法当iP-well被改变了,由于在控制gate和iP-well之间电容性的加倍,floating wordline的潜能相应也提高

了(Fowler-Nordheim 通道机制被禁止)。

    图2.6b大概地画出了擦写算法的各个阶段。NAND的规格对擦除时间要求是非常严格的。因此,NAND的供应

商试图就尽量少的步骤去完成擦除(最好只需要一个步骤即可)。结果,在擦除过程中就会有一个很高的电场

作用到存储矩阵上。而事实上被擦除的区域是会朝着负的Vth值进行偏移。为了让floating gate coupling最

小化,一般会推荐在擦除之后进行写(PAE),这样的目的是为了能够将擦除区域可以向0V这个极限值靠近。

(当然,同时还要保证不会超过读操作的极限值)。

    一个SLC的block的擦除时间大概是1-1.5ms,而电子擦除脉冲大概持续700-800us。

    制程技术上的提升和尺寸的减小对更算法的复杂和精密程度有了更高的要求,特别是对每个存储单元3/4bit

的这种技术。事实上可靠性的极限随着技术的提升而在减少:更精密当然还有因此而带来的更多功耗等问题;

为了能够包含被擦除区域的带宽,现在一般会推荐PAE技术。总而言之,擦除时间在新的NAND制程技术上将会

增加4-5ms。

    关于擦除算法后面会尽量用一章来专门解释。

NAND Flash的基本操作——读、写、擦除_第3张图片
 

 

逻辑组织架构:

    NAND存储器是一种特有的方式进行存储数据的,从图2.7我们可以看到,一个NAND是被分为多个block和page

的。一个block是最小的擦除单元,任何一个block都含有多个page,一个block所含page的数目一般是16的倍数

(比如64或者是128)。一个page是读写的最小寻址单元,每一个page又是有主区域和空闲区域组成(见图2.8)

主区域的大小可以从4KB到8KB到16KB。而空闲区域则是被用来做ECC、系统指针;每一个4KB的主区域大概有几百

bytes的空闲区域。

NAND Flash的基本操作——读、写、擦除_第4张图片
 

    每一次我们想要对一块NAND执行什么操作的时候,我们就必须首先触发我们想要操作的区域的地址。这个

地址分为行地址和列地址。行地址表示寻址的页,列地址表示寻址的页里面具体的byte。当行地址和列地址都

被要求了,这个时候列地址会首先给出。每一个地址周期是8bits。第一个周期内包含了LSB。行列地址寻址不

能够在同一时间进行。

    行地址识别操作需要的block和page,而page地址则占用了LSB.

NAND Flash的基本操作——读、写、擦除_第5张图片
 

 

Pinout:

    NAND存储器和外部通信是靠引脚(见图2.10),这些引脚是由Command Interface来进行测定记录的。

Command Interface的作用就是用来解释在某一时刻对NAND的操作。

 

    CE#: 芯片使能信号,输入“1”芯片进入stand-by态,否则是“0”。

    R/B#: Ready/Busy信号,输出信号用于指示目标态,当是低的时候表示NAND有操作正在进行。

    RE#: 读使能信号,输入信号用来使能数据串的输出。

    CLE: 命令锁闭使能,输入信号被host端用来表示 总线周期现在正用来输入命令的。

    ALE: 地址锁闭使能,输入信号被host端用来表示 总线周期现在正用来输入地址的。

    WE#: 写使能,输入信号控制对输入数据的锁/开。数据、命令和地址会在WE#的上升沿被锁住。

    WP#: 写保护,输入信号被用于停止对NAND的写和擦除操作。

    DQ<7:0>: 用于输入/输出数据。

NAND Flash的基本操作——读、写、擦除_第6张图片

你可能感兴趣的:(uboot-nand)