资源预览内容
第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
第9页 / 共9页
亲,该文档总共9页全部预览完了,如果喜欢就下载吧!
资源描述
对于许多消费类音视频产品而言,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 的器件。这就使得一种封装和接口能够在将来支持较高的密度。 图 1 不同闪存单元的对比 图 2 NOR 闪存的随机存取时间为 0.12ms,而 NAND 闪存的第一字节随机存取速度要慢得多 NAND 基本操作 以 2Gb NAND 器件为例,它由 2048 个区块组成,每个区块有 64 个页(见图 3)。 图 3 2GB NAND 闪存包含 2,048 个区块 每一个页均包含一个 2048 字节的数据区和 64 字节的空闲区,总共包含 2,112 字节。空闲区通常被用于 ECC、耗损均衡(wear leveling)和其它软件开销功能,尽管它在物理上与其它页并没有区别。NAND 器件具有 8 或 16 位接口。通过 8 或 16 位宽的双向数据总线,主数据被连接到 NAND 存储器。在 16 位模式,指令和地址仅仅利用低 8 位,而高 8 位仅仅在数据传输周期使用。 擦除区块所需时间约为 2ms。一旦数据被载入寄存器,对一个页的编程大约要 300s。读一个页面需要大约 25s,其中涉及到存储阵列访问页,并将页载入 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 dont care)”。这种方案的初衷是适应较老的 NAND 器件,它们要求CE#在整个周期为低( 译注:根据上下文改写)。 图 4 输入寄存器接收到页编程 (80h)指令时,内部就会全部重置为 1s,使得用户可以只输入他想以 0 位编程的数据字节 图 5 带有随机数据输入的编程指令。图中加亮的扇区显示,该指令只需要后面跟随着数据的 2 个字节的地址 所有 NAND 操作开始时,都提供一个指令周期(表 1)。 当输出一串 WE#时钟时,通过在 I/O 位 7:0 上设置指令、驱动 CE#变低且 CLE 变高,就可以实现一个指令周期。注意:在 WE#信号的上升沿上,指令、地址或数据被锁存到NAND 器件之中。如表 1 所示,大多数指令在第二个指令周期之后要占用若干地址周期。注意:复位或读状态指令例外,如果器件忙,就不应该发送新的指令。 以 2Gb NAND 器件的寻址方案为例,第一和第二地址周期指定列地址,该列地址指定页内的起始字节(表 2)。 注意:因为最后一列的位置是 2112,该最后位置的地址就是 08h(在第二字节中)和 3Fh(在第一字节中)。PA5:0 指定区块内的页地址,BA16:6 指定区块的地址。虽然大多编程和读操作需要完整的 5 字节地址,在页内随机存取数据的操作仅仅用到第一和第二字节。块擦除操作仅仅需要三个最高字节(第三、第四和第五字节) 来选择区块。 图 6 典型的存储方法 图 7 页读缓存模式 总体而言,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 器件通常被用于消费电子和其它低成本产品。 如上所述,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;一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作,但是,将来可能会失效。如果坏块信息被擦除,就无法再恢复。 作者: Jim Cooke
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号