微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > Nand-flash存储器工作原理及其操作实例(以K9F1208UOB为例)

Nand-flash存储器工作原理及其操作实例(以K9F1208UOB为例)

时间:09-11 来源: 点击:

   NAND Flash不能片内执行,但它具有容量大,改写速度快的优点。且NAND Flash比较廉价,适合用于存放大量数据。但是NAND Flash比较容易出现位反转问题,在使用中一般需要进行ECC数据校验。 

flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0.由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms.
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NORflash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NANDflash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。NOR的特点是芯片内执行(XIP,eXecuteInPlace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

  flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0.由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms.

  本文以三星公司的K9F1208UOB芯片为例,介绍Nand-flash存储器芯片的读写流程和时序。

  1 Nand-Flash存储器的工作原理

  1.1 Nand-Flash存储器的组成结构及指令集

  K9F1208UOB的容量为64Mb,存储空间按128K个页(行)、每页中528个字节(列)的组成方式构成。备用的16列,位于列地址的512-527.K9F1208UOB还将存储空间分为块(block),每1块由32个页构成。因此K9F1208UOB中一共有4096个块。这种"块-页"结构,恰好能满足文件系统中划分簇和扇区的结构要求。K9F1208UOB的内部结构如图1所示。

  

  图1 K9F1208UOB的内部结构

  K9F1208UOB的读和写都以页为单位,擦除则以块为单位进行操作。

  NANDFlash的数据是以bit的方式保存在memorycell,一般来说,一个cell中只能存储一个bit.这些cell以8个或者16个为单位,连成bitline,形成所谓的byte(x8)/word(x16),这就是NANDDevice的位宽。这些Line会再组成Page,(NANDFlash有多种结构,我使用的NANDFlash是K9F1208,下面内容针对三星的K9F1208U0M),每页528Bytes(512byte(MainArea)+16byte(SpareArea)),每32个page形成一个Block(32*528B)。具体一片flash上有多少个Block视需要所定。我所使用的三星k9f1208U0M具有4096个block,故总容量为4096*(32*528B)=66MB,但是其中的2MB是用来保存ECC校验码等额外数据的,故实际中可使用的为64MB.

  1.2 Nand-Flash操作

  1.2.1 页读操作

  在初始上电时,器件进入缺省的"读方式1模式"。在这一模式下,页读操作通过将00h指令写入指令寄存器,接着写入3个地址(1个列地址,2个行地址)来启动。一旦页读指令被器件锁存,下面的页读操作就不需要再重复写入指令了。

  写入指令和地址后,处理器可以通过对信号线R/B的分析来判断该操作是否完成。如果信号为低电平,表示器件正"忙";为高电平,说明器件内部操作完成,要读取的数据被送入了数据寄存器。外部控制器可以在以50ns为周期的连续RE脉冲信号的控制下,从I/O口依次读出数据。连续页读操作中,输出的数据是从指定的列地址开始,直到该页的最后-个列地址的数据为止。

  1.2.2 页写操作

  K9F1208UOB的写入操作也以页为单位。写入必须在擦除之后,否则写入将出错。

  页写入周期总共包括3个步骤:写入串行数据输入指令(80h),然后写入3个字节的地址信息,最后串行写入数据。串行写入的数据最多为528字节,它们首先被写入器件内的页寄存器,接着器件进入一个内部写入过程,将数据从页寄存器写入存储宏单元。

串行数据写入完成后,需要写入"页写入确认"指令10h,这条指

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top