Nand flash工作原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nand flash芯片工作原理
------------------------------------
Nand flash芯片型号为Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理。8个I/O
引脚充当数据、地址、命令的复用端口。
芯片内部存储布局及存储操作特点:
一片Nand flash为一个设备(device), 其数据存储分层为:
1 (Device) = 4096 (Blocks)
1 (Block) -= 3
2 (Pages/Rows) 页与行是相同的意思,叫法不一样
1 (Page) = 528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)
在每一页中,最后16个字节(又称OOB)用于Nand Flash命令执行完后设置状态用,剩余512个字节又
分为前半部分和后半部分。可以通过Nand Flash命令00h/01h/50h分别对前半部、后半部、OOB进行定位通过
Nand Flash内置的指针指向各自的首地址。
存储操作特点:
1. 擦除操作的最小单位是块。
2. Nand Flash芯片每一位(bit)只能从1变为0,而不能从0变为1,所以在对其进行写入操作之前要一定将相应块擦除(擦除即是将相应块得位全部变为1).
3. OOB部分的第六字节(即517字节)标志是否是坏块,如果不是坏块该值为FF,否则为坏块。(转载注:应该是每块的第一页的第六个字节。)
4. 除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码
NAND FLASH的工作原理- to beginner
2007-04-23 23:43
NAND FLASH 是一种大容量、高速的存储技术。
其接口较为简单,如果没有专门的nand flash控制器,甚至可以用io口与之对接。
其编程也相对简单,只要了解如下关键概念就可以:
1.nand flash内部有管理单元,管理单元负责对nand flash的实际单元的操作。
2.我们使用nand flash其实只需要和管理单元通信即可,主要是发送相关的命令给管理单元。
3.类似磁盘的管理制度,nand flash也是由若干bit构成一个page,若干page 构成一个block,
若干block构成一个plane,我们在操作的时候往往以page为基本的操作对象。
4.nand flash的page单元有可能是有错误的,因此需要对存入的数据加上错误识别,以辨别
某个page单元是坏的。请注意,一个page单元往往最多仅有两个bit错误,所以对于错误识别
算法要求不是很高,只要能识别1,2个bit的算法即可。使用阵列奇偶校验很容易实现此算法。
nand flash控制器其实只是集成了相关的控制时序,在使用时通过操作nand flash控制器
的相关寄存器就可以实现相应的时序,但很多芯片本身不带nand flash控制器,此时可以
用io口与之对接,用软件来模拟硬件时序也可以操作nand flash。此处的关键是从
nand flash的数据手册上得到时序图。进而确定软件的设计。
在此,以Samsung公司的K9F1208 为例来探讨。
K9F1208 是以page(页)为基本的操作单位的,
一个page包含512 byte. 加16byte的校验码。
32个page构成一个block。
1k个block构成一个plane.
整个K9F1208 包含4个plane,每个plane可以支持1个读写操作,因此最多可以有4个并发的读写操作.
K9F1208是64M byte的,64M = 4 plane * 1k block * 32 page * 512 byte
K9F1208 的编程流程如下:
基于ARM9内核Processor 外部NAND FLASH 的控制实现
1 NAND FLASH NAND 写回速度快、芯片
面积小,特别是大容量使其优势明显。页是NAND 中的基本存贮单元,一页一般为512 B(也有2 kB 每页的large page NAND FLASH),多个页面组成块。不同存储器内的块内页面数不尽相同,通常以16页或32页比较常见。块容量计算公式比较简单,就是页面容量与块内页面数的乘积。根据FLASH Mem ory 容量大小,不同存储器中的块、页大小可能不同,块内页面数也不同。例如:8 MB 存储器,页大小常为512 B 、块大小为8 kB ,块内页面数为16。而2 MB 的存储器的页大小为256 B 、块大小为4 kB ,块内页面数也是16。N AND 存储器由多个块串行排列组成。实际上,NAND 型的FLASHMemory 可认为是顺序读取的设备,他仅用8 b 的I/O 端口就可以存取按页为单位的数据。NAND 在读和擦写文件、特别是连续的大文件时,速度相当快。
2 NAND FLASH 与NOR FLASH 比较
NOR 的特点是可在芯片内执行,这样程序应该可以直接在FLASH 内存内运行,不必再把代码读到系统RAM 中。NOR 的传输效率很高,但 写入和读出速度较低。而NAND 结构能提供极高的单元密度,并且写入和擦除的速度也很快,是高数据存储密度的最佳选择。
这两种结构性能上的异同主要为:NOR 的读速度比NAND 快;NAND 的写入速度比NOR 快很多;NAND 的擦除速度远比NOR
快;NAND 的擦除单元
更小,相应的擦除电路也更加简单;NAND的实际应用方式要比NOR复杂得多;NOR可以直接使用,并在上面直接运行代码,而NAND需要I/O接口,因此使用时需要驱动程序。
3 NAND FLASH在系统中的控制
在没有NAND FLASH硬件接口的环境中,通过软体控制CPU时序和硬件特殊接线方式实现仿真NANDFLASH接口,进而实现在嵌入式系统中脱离NANDFLASH专用硬件接口进行对NAND FLASH读、写、擦除等操作的实现方法。
本方法主要工作在以下两个方面:
软件方面:针对特殊硬件线路的软体设计和严格的CPU时序控制;
硬件方面:硬件的线路设计,利用NOR FLASH专用硬件接口控制N AND FLASH。
首先建立的开发平台如图1所示。
本平台使用Intel的PXA270 Processor,无内建NAND FLASH Cont roller,使用NOR FLASH Controller控制NAND FLASH,具体的线路连接方式如图2所示。
NAND FLASH的I/O0~I/07引脚用于对FLASH发送操作命令和收发数据,ALE用于指示FLASH当前数据为地址信息,CLE用于指示当前数据为操作命令信息,当两者都无效时,为数据信息。CE引脚用于FLASH片选。R E和WE分别为FLASH读、写控制,R/B指示FLASH命令是否已经完成。逭里选用的是CE don't care的NAND FLASH。
NAND FLASH的读写操作以page方式进行,一次读写均为一个page,erase方式以block方式进行。这种方式,使其读写速度大大提高。
在时序方面,以读操作为例,其时序如图3所示。
操作过程主要分为以下几个步骤:
(1)发送读操作命令
CE有效,CLE有效,WE有效,I/O0~I/O8上面数据为command代码数据。
(2)发送地址数据(需要读取的FLASH地址)
CE有效,ALE有效,WE有效,I/O0~I/O8上面为所需地址数据。由于地址数据较多,所以需要分几次依次发送。每次发送都需要产生WE信号以将其写入NANDFLASH芯片。