固件吧

 找回密码
 加入论坛

QQ登录

只需一步,快速开始

怎样赚取F币附件需要购买看这里新手论坛固件上传教程附件解压不了的解决方法
查看: 2051|回复: 6

[已解决] NAND闪存芯片的深入解析

[复制链接]
发表于 2015-12-9 16:36:58 | 显示全部楼层 |阅读模式
本帖最后由 Two_Stars 于 2015-12-9 16:45 编辑

                                                          NAND闪存芯片的深入解析
                                                                                   2006年09月18日


  对于许多消费类音视频产品而言,NAND闪存是一种比硬盘驱动器更好的存储方案,这在不超过4GB的低容量应用中表现得犹为明显。随着人们持续追求功耗更低、重量更轻和性能更佳的产品,NAND正被证明极具吸引力。
  NAND闪存阵列分为一系列128kB的区块(block),这些区块是NAND器件中最小的可擦除实体。擦除一个区块就是把所有的位(bit)设置为“1”(而所有字节(byte)设置为FFh)。有必要通过编程,将已擦除的位从“1”变为“0”。最小的编程实体是字节(byte)。一些NOR闪存能同时执行读写操作(见下图1)。虽然NAND不能同时执行读写操作,它可以采用称为“映射(shadowing)”的方法,在系统级实现这一点。这种方法在个人电脑上已经沿用多年,即将BIOS从速率较低的ROM加载到速率较高的RAM上。
  NAND的效率较高,是因为NAND串中没有金属触点。NAND闪存单元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一个单元都需要独立的金属触点。NAND与硬盘驱动器类似,基于扇区(页),适合于存储连续的数据,如图片、音频或个人电脑数据。虽然通过把数据映射到RAM上,能在系统级实现随机存取,但是,这样做需要额外的RAM存储空间。此外,跟硬盘一样,NAND器件存在坏的扇区,需要纠错码(ECC)来维持数据的完整性。
  存储单元面积越小,裸片的面积也就越小。在这种情况下,NAND就能够为当今的低成本消费市场提供存储容量更大的闪存产品。NAND闪存用于几乎所有可擦除的存储卡。NAND的复用接口为所有最新的器件和密度都提供了一种相似的引脚输出。这种引脚输出使得设计工程师无须改变电路板的硬件设计,就能从更小的密度移植到更大密度的设计上。 NAND与NOR闪存比较
  NAND闪存的优点在于写(编程)和擦除操作的速率快,而NOR的优点是具有随机存取和对字节执行写(编程)操作的能力(见下图图2)。NOR的随机存取能力支持直接代码执行(XiP),而这是嵌入式应用经常需要的一个功能。NAND的缺点是随机存取的速率慢,NOR的缺点是受到读和擦除速度慢的性能制约。NAND较适合于存储文件。如今,越来越多的处理器具备直接NAND接口,并能直接从NAND(没有NOR)导入数据。
  NAND的真正好处是编程速度快、擦除时间短。NAND支持速率超过5Mbps的持续写操作,其区块擦除时间短至2ms,而NOR是750ms。显然,NAND在某些方面具有绝对优势。然而,它不太适合于直接随机存取。
  对于16位的器件,NOR闪存大约需要41个I/O引脚;相对而言,NAND器件仅需24个引脚。NAND器件能够复用指令、地址和数据总线,从而节省了引脚数量。复用接口的一项好处,就在于能够利用同样的硬件设计和电路板,支持较大的NAND器件。由于普通的TSOP-1封装已经沿用多年,该功能让客户能够把较高密度的NAND器件移植到相同的电路板上。NAND器件的另外一个好处显然是其封装选项:NAND提供一种厚膜的2Gb裸片或能够支持最多四颗堆叠裸片,容许在相同的TSOP-1封装中堆叠一个8Gb的器件。这就使得一种封装和接口能够在将来支持较高的密度。
捕获.PNG

捕获1.PNG

NAND基本操作
以2Gb NAND器件为例,它由2048个区块组成,每个区块有64个页(见图3)。
捕获3.PNG
  每一个页均包含一个2048字节的数据区和64字节的空闲区,总共包含2,112字节。空闲区通常被用于ECC、耗损均衡(wear leveling)和其它软件开销功能,尽管它在物理上与其它页并没有区别。NAND器件具有8或16位接口。通过8或16位宽的双向数据总线,主数据被连接到NAND存储器。在16位模式,指令和地址仅仅利用低8位,而高8位仅仅在数据传输周期使用。   擦除区块所需时间约为2ms。一旦数据被载入寄存器,对一个页的编程大约要300μs。读一个页面需要大约25μs,其中涉及到存储阵列访问页,并将页载入16,896位寄存器中。 除了I/O总线,NAND接口由6个主要控制信号构成:
  1.芯片启动(Chip Enable, CE#):如果没有检测到CE信号,那么,NAND器件就保持待机模式,不对任何控制信号作出响应。
  2.写使能(Write Enable, WE#): WE#负责将数据、地址或指令写入NAND之中。   3.读使能(Read Enable, RE#): RE#允许输出数据缓冲器。
  4.指令锁存使能(Command Latch Enable, CLE): 当CLE为高时,在WE#信号的上升沿,指令被锁存到NAND指令寄存器中。
  5.地址锁存使能(Address Latch Enable, ALE):当ALE为高时,在WE#信号的上升沿,地址被锁存到NAND地址寄存器中。   6.就绪/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信号将变低。该信号是漏极开路,需要采用上拉电阻。
  数据每次进/出NAND寄存器都是通过16位或8位接口。当进行编程操作的时候,待编程的数据进入数据寄存器,处于在WE#信号的上升沿。在寄存器内随机存取或移动数据,要采用专用指令以便于随机存取。
  数据寄存器输出数据的方式与利用RE#信号的方式类似,负责输出现有的数据,并增加到下一个地址。WE#和RE#时钟运行速度极快,达到30ns的水准。当RE#或CE#不为低的时候,输出缓冲器将为三态。这种CE#和RE#的组合使能输出缓冲器,容许NAND闪存与NOR、SRAM或DRAM等其它类型存储器共享数据总线。该功能有时被称为“无需介意芯片启动(chip enable don't care)”。这种方案的初衷是适应较老的NAND器件,它们要求CE#在整个周期为低(译注:根据上下文改写)。
捕获4.PNG
捕获5.PNG
捕获6.PNG
当输出一串WE#时钟时,通过在I/O位7:0上设置指令、驱动CE#变低且CLE变高,就可以实现一个指令周期。注意:在WE#信号的上升沿上,指令、地址或数据被锁存到NAND器件之中。如表1所示,大多数指令在第二个指令周期之后要占用若干地址周期。注意:复位或读状态指令例外,如果器件忙,就不应该发送新的指令。
捕获7.PNG
以2Gb NAND器件的寻址方案为例,第一和第二地址周期指定列地址,该列地址指定页内的起始字节(表2)。  注意:因为最后一列的位置是2112,该最后位置的地址就是08h(在第二字节中)和3Fh(在第一字节中)。PA5:0指定区块内的页地址,BA16:6指定区块的地址。虽然大多编程和读操作需要完整的5字节地址,在页内随机存取数据的操作仅仅用到第一和第二字节。块擦除操作仅仅需要三个最高字节(第三、第四和第五字节)来选择区块。
捕获8.PNG
捕获9.PNG
  总体而言,NAND的基本操作包括:复位(Reset, FFh)操作、读ID(Read ID, 00h)操作、读状态(Read Status, 70h)操作、编程(Program)操作、随机数据输入(Random data input, 85h)操作和读(Read)操作等。 将NAND连接到处理器  选择内置NAND接口的处理器或控制器的好处很多。如果没有这个选择,有可能在NAND和几乎任何处理器之间设计一个“无粘接逻辑(glueless)”接口。NAND和NOR闪存的主要区别是复用地址和数据总线。该总线被用于指定指令、地址或数据。CLE信号指定指令周期,而ALE信号指定地址周期。利用这两个控制信号,有可能选择指令、地址或数据周期。把ALE连接到处理器的第五地址位,而把CLE连接到处理器的第四地址位,就能简单地通过改变处理器输出的地址,任意选择指令、地址或数据。这容许CLE和ALE在合适的时间自动设置为低。
  为了提供指令,处理器在数据总线上输出想要的指令,并输出地址0010h;为了输出任意数量的地址周期,处理器仅仅要依次在处理器地址0020h之后输出想要的NAND地址。注意,许多处理器能在处理器的写信号周围指定若干时序参数,这对于建立合适的时序是至关重要的。利用该技术,你不必采用任何粘接逻辑,就可以直接从处理器存取指令、地址和数据。 多层单元    多层单元(MLC)的每一个单元存储两位,而传统的SLC仅仅能存储一位。MLC技术有显著的密度优越性,然而,与SLC相比(表3),其速度或可靠性稍逊。因此,SLC被用于大多数媒体卡和无线应用,而MLC器件通常被用于消费电子和其它低成本产品。
捕获10.PNG
  如上所述,NAND需要ECC以确保数据完整性。NAND闪存的每一个页面上都包括额外的存储空间,它就是64个字节的空闲区(每512字节的扇区有16字节)。该区能存储ECC代码及其它像磨损评级或逻辑到物理块映射之类的信息。ECC能在硬件或软件中执行,但是,硬件执行有明显的性能优势。在编程操作期间,ECC单元根据扇区中存储的数据来计算误码校正代码。数据区的ECC代码然后被分别写入到各自的空闲区。当数据被读出时,ECC代码也被读出;运用反操作可以核查读出的数据是否正确。   有可能采用ECC算法来校正数据错误。能校正的错误的数量取决于所用算法的校正强度。在硬件或软件中包含ECC,就提供了强大的系统级解决方案。最简单的硬件实现方案是采用简单的汉明(Simple Hamming)码,但是,只能校正单一位错误。瑞德索罗门(Reed-Solomon)码提供更为强大的纠错,并被目前的控制器广为采用。此外,BCH码由于比瑞德索罗门方法的效率高,应用也日益普及。
  要用软件执行NAND闪存的区块管理。该软件负责磨损评级或逻辑到物理映射。该软件还提供ECC码,如果处理器不包含ECC硬件的话。
  编程或擦除操作之后,重要的是读状态寄存器,因为它确认是否成功地完成了编程或擦除操作。如果操作失败,要把该区块标记为损坏且不能再使用。以前已编写进去的数据要从损坏的区块中搬出,转移到新的(好的)存储块之中。2Gb NAND的规范规定,它可以最多有40个坏的区块,这个数字在器件的生命周期(额定寿命为10万次编程/擦除周期)内都适用。一些有坏块的NAND器件能够出厂,主要就归根于其裸片面积大。管理器件的软件负责映射坏块并由好的存储块取而代之。
  利用工厂对这些区块的标记,软件通过扫描块可以确定区块的好坏。坏块标记被固定在空闲区的第一个位置(列地址2048)。如果在0或1页的列地址2048上的数据是“non-FF”,那么,该块要标记为坏,并映射出系统。初始化软件仅仅需要扫描所有区块确定以确定哪个为坏,然后建一个坏块表供将来参考。
  小心不要擦除坏块标记,这一点很重要。工厂在宽温和宽电压范围内测试了NAND;一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作,但是,将来可能会失效。如果坏块信息被擦除,就无法再恢复。


评分

参与人数 1F币 +5 收起 理由
前程 + 5 楼主辛苦加分,虽然看不懂

查看全部评分

回复

使用道具 举报

发表于 2015-12-9 17:29:25 | 显示全部楼层
这些内容很有用,值得赞!
回复 支持 反对

使用道具 举报

发表于 2015-12-9 17:54:05 | 显示全部楼层
看不懂,能简单说下是什么东西怎么用的额,如何修复就可以了,理论这东西,就是把一个简单的事说的让人云里来雾里去的,哎!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-9 18:19:14 | 显示全部楼层
本帖最后由 Two_Stars 于 2015-12-9 18:45 编辑
纯净水521 发表于 2015-12-9 17:54 [url=forum.php?mod=redirect&goto=findpost&pid=509138&ptid=87555][/url]
看不懂,能简单说下是什么东西怎么用的额,如何修复就可以了,理论这东西,就是把一个简单的事说的让人云里 ...
这确实是一篇理论,开始因为想了解闪存芯片功能引脚的作用,后看到这个文章有较为详细的介绍,转发此文意在给想了解闪存的坛友提供一个渠道,只是作为参考性的文章~
回复 支持 反对

使用道具 举报

发表于 2015-12-9 19:23:43 | 显示全部楼层
水平太高,反正我是晕了,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-9 21:05:35 | 显示全部楼层
本帖最后由 Two_Stars 于 2015-12-11 11:35 编辑

闪存引脚功能说明
-wk-561a21abd30cfcc7548dff486aaee719-0.png
I/O0~I/O7(D0~D7):8 位数据输入/ 输出口。 I/O口常用于指令和地址的输入以及数据的输入/输出,其中数据在
读的过程中输入。当芯片没有被选中或不能输出时, I/O口处于高阻态。
CLE:指令锁存端,用于激活指令到指令寄存器的路径, 并在WE上升沿且CLE 为高电平时将指令锁存。
ALE: 地址锁存端, 用于激活地址到内部地址寄存器的路径,并在WE上升沿且ALE为高电平时,地址锁存。
CE: 片选端, 用于控制设备的选择。当设备忙时, CE 为高电平而被忽略, 此时设备不能回到备用状态。
RE: 读使能端,用于控制数据的连续输出,并将数据送到I/ O 总线。只有在RE的下降沿时,输出数据才有效, 同时, 它还可以对内部数据地址进行累加。
WE: 写使能控制端, 用于控制I/O口的指令写入,同时,通过该端口可以在WE脉冲的上升沿将指令、地址和数据进行锁存。
WP: 写保护端, 通过WP 端可在电源变换中进行写保护。当WP为低电平时,其内部高电平发生器将复位。
R/ B : 就绪/ 忙输出, R/ B 的输出能够显示设备的操作状态。R/ B 处于低电平时,表示有编程、擦除或随机读操作正在进行。操作完成后, R/B会自动返回高电平。由于该端是漏极开路输出, 所以即使当芯片没有被选中或输出被禁止时, 它也不会处于高阻态。
PRE:通电读操作,用于控制通电时的自动读操作,PRE 端接到VCC可实现通电自动读操作。
VCC :芯片电源端。
VSS :芯片接地端。

回复 支持 反对

使用道具 举报

发表于 2019-4-8 10:36:17 | 显示全部楼层
沙发???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入论坛

本版积分规则

QQ|小黑屋|固件吧移动版|固件吧论坛 ( 浙ICP备11055615号-1 )

鲁公网安备 37172502371702号

GMT+8, 2025-5-20 12:26 , Processed in 0.107585 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表