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

    串电流通常的值大概在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的存储单元去进行一个未要求的写操作。所以关于这个过程一个
基本的想法就是在写的过程中利用存储单元的寄生电容来开发他所蕴含的潜能,这也是为了增加在氧化物隧道
之下的这块区域的潜能。(如下图所示)

    当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存储器是一种特有的方式进行存储数据的,从图2.7我们可以看到,一个NAND是被分为多个block和page
的。一个block是最小的擦除单元,任何一个block都含有多个page,一个block所含page的数目一般是16的倍数
(比如64或者是128)。一个page是读写的最小寻址单元,每一个page又是有主区域和空闲区域组成(见图2.8)
主区域的大小可以从4KB到8KB到16KB。而空闲区域则是被用来做ECC、系统指针;每一个4KB的主区域大概有几百
bytes的空闲区域。

    每一次我们想要对一块NAND执行什么操作的时候,我们就必须首先触发我们想要操作的区域的地址。这个
地址分为行地址和列地址。行地址表示寻址的页,列地址表示寻址的页里面具体的byte。当行地址和列地址都
被要求了,这个时候列地址会首先给出。每一个地址周期是8bits。第一个周期内包含了LSB。行列地址寻址不
能够在同一时间进行。
    行地址识别操作需要的block和page,而page地址则占用了LSB.

 
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的基本操作——读、写、擦除的更多相关文章

  1. u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)

    S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A) 转载自:http://www.cnblogs.com/idle_man/archive/2010/12/23/19153 ...

  2. nand flash详解及驱动编写

    https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_ ...

  3. 硬件初始化,nand flash固化操作,系统启动简单流程

    2015.3.27星期五 晴 链接脚本定义代码的排放顺序 硬件系统初始化:一:arm核初始化:(里面有指令)初始化ARM核的时候需要看arm核的手册指令:1.异常向量(最起码有个复位异常,初始化模式- ...

  4. JZ2440 裸机驱动 第8章 NAND Flash控制器

    本章目标  了解NAND Flash 芯片的接口 掌握通过NAND Flash控制器访问NAND Flash的方法 8.1 NAND Flash介绍和NAND Flash控制器使用     NAND ...

  5. NAND FLASH 物理结构分析

    转自:http://blog.51cto.com/hardywang/2053915 NAND Flash是一种非易失性随机访问存储介质,基于浮栅(Floating Gate)晶体管设计,通过浮栅来锁 ...

  6. 如何编写linux下nand flash驱动-2

    [Nand Flash引脚(Pin)的说明] 图3.Nand Flash引脚功能说明 上图是常见的Nand Flash所拥有的引脚(Pin)所对应的功能,简单翻译如下: 1.       I/O0 ~ ...

  7. 如何编写linux下nand flash驱动-4

    2.       软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架.弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做 ...

  8. 存储Flash--NOR flash和 Nand flash

    flash是存储芯片的一种,通过特定的程序可以修改里面的数据.FLASH在电子以及半导体领域内往往表示Flash Memory的意思,即平时所说的“闪存”,全名叫Flash EEPROM Memory ...

  9. 常用的 Nand Flash 指令如下:

    指令 功能 nand info 显示可使用的 Nand Flash nand device [dev] 显示或设定当前使用的 Nand Flash nand read  addr off  size ...

随机推荐

  1. C# Callback 回调实用讲解 [原创]

    这个是2011年写的一个技术贴,现在看可能有点过时了,有兴趣的朋友也可以看一下. 一. 描述 在开发winform程序时不会考虑页面刷新问题,只要控制好线程别导致假死就ok了,但是在开发web页面程序 ...

  2. Entity Framework 使用sql语句分页(查询视图)

    1.查询视图 //3.查询视图 var sql = @" SELECT D.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY TestView.B_M ...

  3. C++ Dialog Box Command IDs

    #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDY ...

  4. java- 枚举的常见用法

    用法一:常量 public enum MyColor{Red,Black,Blue} public enum Color { RED, GREEN, BLANK, YELLOW } enum为枚举类的 ...

  5. iOS iTunes文件共享

    众所周知苹果不允许用户查看文件,不同的应用之间文件也没有联系.从电脑上往手机传文件,也只能通过开放沙盒目录,传到对应的应用下. 有时候我们需要导入文件到应用沙盒下,或者从沙盒中导出文件.这就需要应用的 ...

  6. js自执行函数表达式

    // 下面2个括弧()都会立即执行 (function () { /* code */ } ()); // 推荐使用这个(function () { /* code */ })(); // 但是这个也 ...

  7. UVA 11078 Open Credit System(扫描 维护最大值)

    Open Credit System In an open credit system, the students can choose any course they like, but there ...

  8. (hdu)5391 Zball in Tina Town

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5391 Problem Description Tina Town is a friendl ...

  9. 【原创】Linux opensource-src-4.3.2.tar.gz的安装。

    下载好opensource-src-4.3.2.tar.gz 安装G++等必备库: sudo apt-get install make gcc g++ sudo apt-get install bui ...

  10. android程序的安装与卸载

    Android android在安装应用程序与卸载应用程序时都会发送广播,安装应用程序成功时会发送android.intent.action.PACKAGE_ADDED广播,可以通过intent.ge ...