NAND FLASH 内存详解与读写寻址方式
- 格式:doc
- 大小:46.00 KB
- 文档页数:6
关于nandflash的地址A8,寻址关于nand flash的地址 A8,寻址在NAND Flash中有8个I/O引脚(IO0—IO7)、5个全能信号(nWE ALE CLE nCE nRE)、一个引脚,1个写保护引脚。
操作NAND Flash时,先传输命令,然后传输地址,最后读写数据。
对于64MB的NAND Flash,需要一个26位的地址。
只能8个I/O引脚充当地址、数据、命令的复用端口,所以每次传地址只能传8位。
这样就需要4个地址序列。
因此读写一次nand flash需要传送4次(A[7:0] A[16:9] A[24:17] A[25])。
64M的NAND Flash的地址范围为0x00000000—0x03FFFFFF。
128M的NAND Flash的地址范围为0x00000000---0x07FFFFFF。
1KB = 0x000-0x3FF.128字节=0x00H--7FH。
一页有528个字节,而在前512B中存放着用户的数据。
在后面的16字节中(OOB)中存放着执行命令后的状态信息。
主要是ECC 校验的标识。
列地址A0-A7可以寻址的范围是256个字节,要寻址528字节的话,将一页分为了A.(1half array)B(2 half array) C(spare array)。
A区0—255字节,B区256-511 字节C区512—527字节。
访问某页时必须选定特定的区。
这可以使地址指针指向特定的区实现。
在NAND Flash 中存在三类地址,分别为Block Address 、Column Address Page Address.。
(实际就是块地址和页地址)Column Address 用来选择是在上半页寻址还是在下半页寻址A[0]—A[7].也就相当于页内的偏移地址。
在进行擦除时不需要列地址,因为擦除是以块为单位擦除。
32个Page需要5bit来表示。
也就是A[13:9];也就是页在块内的相对地址。
NandFlash的读写操作正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,一块nand flash也分为若干block,每个block分为如干page。
一般而言,block、page之间的关系随着芯片的不同而不同,典型的分配是这样的:1block = 32page1 page = 512bytes(datafield) + 16bytes(oob)需要注意的是,对于flash的读写都是以一个page开始的,但是在读写之前必须进行flash 的擦写,而擦写则是以一个block为单位的。
同时必须提醒的是,512bytes理论上被分为1st half 和2sd half,每个half各占256个字节。
我们讨论的K9F1208U0B总共有4096 个Blocks,故我们可以知道这块flash的容量为4096 *(32 *528)= 69206016 Bytes = 66 MB但事实上每个Page上的最后16Bytes是用于存贮检验码和其他信息用的,并不能存放实际的数据,所以实际上我们可以操作的芯片容量为4096 *(32 *512) = 67108864 Bytes = 64 MB 由上图所示,1个Page总共由528 Bytes组成,这528个字节按顺序由上而下以列为单位进行排列(1列代表一个Byte。
第0行为第0 Byte ,第1行为第1 Byte,以此类推,每个行又由8个位组成,每个位表示1个Byte里面的1bit)。
这528Bytes按功能分为两大部分,分别是Data Field和Spare Field,其中Spare Field占528Bytes里的16Bytes,这16Bytes是用于在读写操作的时候存放校验码用的,一般不用做普通数据的存储区,除去这16Bytes,剩下的512Bytes便是我们用于存放数据用的Data Field,所以一个Page上虽然有528个Bytes,但我们只按512Bytes进行容量的计算。
NAND Flash硬件读写原理导读:Nand Flash 控制器通过将Nand Flash 芯片的内设命令写到其特殊功能寄存器中,从而实现对Nand flash 芯片读、检验和编程控制的。
特殊功能寄存器有:NFCONF 、NFCMD 、NFADDR 、NFDATA 、NFSTAT 、NFECC 。
1.nand接口s3c2440板的Nand Flash模块由两部分组成:Nand Flash控制器(集成在s3c2440)和Nand Flash存储芯片(K9F1208U0B)两大部分组成。
当要访问Nand Flash中的数据时,必须通过Nand Flash控制器发送命令序列才能完成。
所以, Nand Flash相当于s3c2440的一个外设,而不位于它的内存地址区.。
Samsung的K9F1208U0B,数据存储容量为64MB ,采用块页式存储管理。
8 个I/O引脚充当数据、地址、命令的复用端口。
2. 重要芯片引脚功能I/O0-7:复用引脚。
可以通过它向nand flash 芯片输入数据、地址、nand flash 命令以及输出数据和操作状态信息。
CLE(Command Latch Enable): 命令锁存允许ALE(Address Lactch Enable): 地址锁存允许-CE: 芯片选择-RE: 读允许-WE: 写允许-WP: 在写或擦除期间,提供写保护R/-B: 读/忙输出3.芯片内部存储布局一片Nand flash 为一个设备(device), 其数据存储分层为:1设备(Device) = 4096 块(Blocks)1块(Block) = 32 页/ (Pages/rows) ;页与行是相同的意思,叫法不一样1页(Page) = 528 字节(Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes)在每一页中,最后16 个字节(又称OOB)用于Nand Flash 命令执行完后设置状态用,剩余512 个字节又分为前半部分和后半部分。
Nand flash的数据存取Nand flash 以页为单位读写数据,而以块为单位擦除数据。
Nand Flash芯片每页一般有528Byte,并且每32 个page 形成一个Block,这样就形成所谓的三类地址:Block Address ,Page Address 和Column Address 。
读命令有Read1(Data Field),Read2(Spare Field) 两个。
给定读取的起始位置,读操作将从该位置连续读取到本Page的最后一个Byte(可以包括Spare Field)。
Nand Flash的地址寄存器把一个完整的Nand Flash地址分解成Column Address与Page Address两部分进行寻址,即如下所示,1.Column Address: 列地址。
指定Page上的某个Byte,指定此页的读写起始地址。
2.Paage Address:页地址。
低9位总是0。
确定读写操作是在Flash上的页。
从一个Nand Flash地址nd_addr分解出Column Address和Page Address,并且A0~A7位是它的column_addr,A9~A25位是它的Page Address,获取方式如下:column_addr=nd_addr%512; // column addresspage_address=(nd_addr>>9); // page addressRead1 命令的操作分为4个周期,发送完读命令00h或01h之后将分4个阶段发送参数,1 stage(发送Column Address)。
2 stage ,3 stage和4 stage(Page Address)(每次向地址寄存器发送的数据只能是8位,所以17位的Page Address分3步发送。
00h是用于从0至255个字节中某个位置开始读写每个page 的命令,而01h是用于从后256至512个字节中某个位置开始读写每个page 的命令。
[Flash]NAND Flash的寻址方式(转)feiser 发表于 2006-10-31 23:27:00NAND Flash的寻址方式和NAND Flash的memory组织方式紧密相关。
NAND Flash的数据是以bit的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。
这些cell以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。
这些Line会再组成Page,通常是528Byte/page或者264Word/page。
然后,每32个page形成一个Block,Sizeof(block)=16kByte Block是NAND Flash中最大的操作单元,擦除就是按照block为单位完成的,而编程/读取是按照page为单位完成的。
所以,按照这样的组织方式可以形成所谓的三类地址:-Block Address-Page Address-Column Address首先,必须清楚一点,对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度可以是8位或者16位,但是,对于x16的NAND Device,I/O[15:8]只用于传递数据。
清楚了这一点,我们就可以开始分析NAND Flash 的寻址方式了。
以528Byte/page 总容量512Mbit+512kbyte的NAND器件为例:因为1 block="16kbyte",512Mbit="64Mbyte",Numberof(block)=10241block="32page", 1page="528byte"=512byte(Main Area)+16byte(Spare Area)用户数据保存在main area中。
512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half, 各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。
NAND FLASH 内存详解与读写寻址方式一、内存详解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 flash读写工作原理概述说明1. 引言1.1 概述NAND Flash是一种非常常见和重要的存储设备,被广泛应用于各种电子产品中。
它的独特设计使得它成为一种高性能、低功耗、擦写可靠且具有较大容量的存储器解决方案。
由于其许多优点,NAND Flash在移动设备、个人电脑、服务器以及其他许多领域都有着广泛的应用。
1.2 文章结构本文将详细介绍NAND Flash的读写工作原理,并探讨其在存储领域中的优势与应用场景。
首先,我们将简要介绍NAND Flash的基本概念和特点,包括其结构和组成部分。
然后,我们将重点讲解NAND Flash进行读操作和写操作时所涉及的工作原理和步骤。
通过对这些原理的详细阐述,读者将能够全面了解NAND Flash如何实现数据的读取和写入。
除此之外,我们还将探讨NAND Flash相对于其他存储设备的优势,并介绍几个典型应用场景。
这些优势包括快速读写速度、低功耗、体积小且轻便、强大的耐久性以及较大的存储容量。
在应用场景方面,我们将重点介绍NAND Flash 在移动设备领域、物联网和服务器等各个行业中的广泛应用。
最后,我们将进行本文的小结,并对NAND Flash未来的发展进行展望。
通过全面了解NAND Flash的工作原理和优势,读者将能够更好地理解其在现代科技领域中的重要性,并对其未来发展趋势有一个清晰的认识。
1.3 目的本文的目的是通过对NAND Flash读写工作原理进行详细说明,使读者能够全面了解NAND Flash是如何实现数据读写操作的。
此外,我们还旨在向读者展示NAND Flash在存储领域中所具有的优势和广泛应用场景,使其意识到这一存储设备在现代科技产业中所扮演的重要角色。
希望通过本文,读者能够加深对NAND Flash技术的理解,并为相关领域或产品的研发与设计提供参考依据。
2. NAND Flash读写工作原理:2.1 NAND Flash简介:NAND Flash是一种非易失性存储器,采用了电子闪存技术。
Nand-Flash存储器1概述NOR和NAND是目前市场上两种主要的非易失闪存技术。
Nor-flash存储器的容量较小、写入速度较慢,但因其随机读取速度快,因此在嵌入式系统中,常应用在程序代码的存储中。
Nor-flash存储器的内部结构决定它不适合朝大容量发展;而NAND-flash存储器结构则能提供极高的单元密度,可以达到很大的存储容量,并且写入和擦除的速度也很快。
但NAND-flash存储器需要特殊的接口来操作,因此它的随机读取速度不及Nor-flash存储器。
二者以其各自的特点,在不同场合发挥着各自的作用。
NAND-flash存储器是flash存储器的一种技术规格,其内部采用非线性宏单元模式,为固态大容量存储器的实现提供了廉价有效的解决方案,因而现在得到了越来越广泛的应用。
例如体积小巧的U盘就是采用NAND-flash存储器的嵌入式产品。
由于NAND-flash(非线性flash)存储器内部结构不同于Nor-flash(线性flash)存储器,因此对它的读写操作也有较大的区别。
BF533中没有像支持SDRAM一样提供直接与NAND-flash存储器的接口,读写的过程要靠软件编程来完成。
本实验将以东芝公司的TC58DVM82A1FT芯片为例,介绍NAND-flash存储器芯片的读写流程和时序。
2 实验内容和目标包括以下几点。
2编写程序,读出器件的识别码(ID)。
3对NAND-flash的一个或若干个块进行擦除操作。
4在被擦除的一个或若干个块写入数据。
5将写入的数据读出并进行验证。
6查找坏块。
3NAND-flash介绍及编程指导NAND-flash存储器中的宏单元彼此相连,仅第一个和最后一个Cell分别与Work Line和BIT Line相连,因此NAND-flash架构的存储容量较Nor-flash架构的高。
NAND-flash存储器的容量较大,改写速度快,主要应用在大量资料的存储,如嵌入式产品中,包括数码相机、MP3随身听记忆卡等。
NandFlash结构与读写分析及NandFlash寻址方式NAND Flash是一种常用的非易失性存储器,用于存储大量的数据。
它具有高密度、快速读写、低功耗和可擦写的特点,因此被广泛应用于手机、相机、电脑和其他电子设备中。
本文将介绍NAND Flash的结构与读写分析,并详细讨论NAND Flash的寻址方式。
首先,我们来看一下NAND Flash的结构。
NAND Flash由一系列的存储单元组成,每个存储单元被称为“页”。
每个页都包含了一定数量的数据位,通常为2KB到16KB。
NAND Flash通常以块的形式进行读写操作,一个块包含了一定数量的页,通常为32页到128页。
每个块都有一个唯一的地址,用于寻址和访问。
所有的块集合起来构成了一个NAND Flash 芯片。
接下来,我们将分析NAND Flash的读写过程。
首先是写操作。
当要向NAND Flash写入数据时,控制器将数据分成适当的大小并进行编码,然后将其发送到NAND Flash芯片。
芯片会将数据写入到一个可用的空闲块中的空闲页中,并更新一些关于数据的元数据信息,比如页状态和块状态。
为了提高写入速度,NAND Flash通常使用了一种称为“写入放大”的技术,即将多个写入操作合并在一起,一次性写入多个页。
然后是读操作。
当要从NAND Flash中读取数据时,控制器将发送读命令和所需的地址给芯片。
芯片会根据地址找到对应的页,并将数据读取出来发送给控制器。
为了提高读取速度,NAND Flash通常使用了一种称为“读取放大”的技术,即一次读取多个页的数据,然后通过多路复用器将这些数据发送给控制器。
最后,我们讨论NAND Flash的寻址方式。
NAND Flash的寻址方式可以分为两种:页级寻址和块级寻址。
在页级寻址中,每个页都有一个唯一的地址,通过页地址可以直接访问到特定的页。
这种方式简单直接,但会带来额外的寻址开销。
在块级寻址中,每个块有一个唯一的地址,通过块地址可以访问到整个块的所有页。
nandflash read reclaim机制摘要:1.NAND Flash概述2.NAND Flash读取过程3.NAND Flash回收机制原理4.读取与回收过程中的关键技术5.应用场景及优势6.未来发展趋势正文:近年来,随着电子产品日益普及,NAND Flash存储器在全球市场上需求量持续增长。
NAND Flash存储器是一种非易失性存储器,广泛应用于各类电子设备中。
本文将介绍NAND Flash的读取回收机制,分析其工作原理及优势,并探讨未来发展趋势。
一、NAND Flash概述AND Flash是一种基于浮动栅极技术的非易失性存储器,具有较高的读写速度和较低的成本。
NAND Flash存储器单元由浮动栅极、选择栅极和源漏极组成。
数据存储在浮动栅极上,通过控制源漏极的电流来读取和写入数据。
二、NAND Flash读取过程AND Flash的读取过程主要包括以下几个步骤:1.预充电:在读取之前,对相关单元进行预充电,确保栅极电压达到足够高的水平。
2.读取:通过控制源漏极的电压,测量浮动栅极的电压,从而读取数据。
3.纠错:NAND Flash具有错误纠正码(ECC)功能,可在读取过程中检测并纠正数据错误。
三、NAND Flash回收机制原理AND Flash回收机制主要目的是清除已损坏或不再需要的数据,为新的数据腾出空间。
回收过程主要包括以下几个步骤:1.擦除:通过对指定区域进行擦除操作,清除浮动栅极上的数据。
2.编程:在擦除完成后,对新数据进行编程,将其存储在浮动栅极上。
3.验证:编程完成后,对数据进行验证,确保已正确写入。
四、读取与回收过程中的关键技术1.页读取技术:提高NAND Flash的读取速度,降低功耗。
2.快速擦除技术:缩短擦除操作的时间,提高回收效率。
3.低功耗技术:降低NAND Flash在工作过程中的功耗,提高电池续航能力。
4.3D NAND Flash技术:增加存储密度,提高容量。
前几天大致分析了u-boot针对smdk2410的源码,了解了启动的流程,但是对板上许多硬件的驱动过程还不太清楚。
smdk2410源码中有针对Nor Flash的初始化和读取,但源码中没有对Nand Flash的操作,虽然针对其他型号的板子应该有Nand的源码,但方便起见,我查阅了vivi的源码,它支持从Nand Flash启动,自然有我需要的东西。
下面我就自己的分析和总结列出来,中间当然也从google上得到不少前人留下的宝贵资料:)。
我先摘录一段对Nor和Nand flash区别的几条总结:NOR flash采用位读写,因为它具有sram的接口,有足够的引脚来寻址,可以很容易的存取其内部的每一个字节。
NAND flash使用复杂的I/O口来串行地存取数据。
8个引脚用来传送控制、地址和数据信息(复用)。
NAND的读和写单位为512Byte的页,擦写单位为32页的块。
●NOR的读速度比NAND稍快一些。
●NAND的写入速度比NOR快很多。
●NAND的4ms擦除速度远比NOR的5s快。
●大多数写入操作需要先进行擦除操作。
●NAND的擦除单元更小,相应的擦除电路更少。
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。
再来看看Nand flash自身的特点(部分摘自August0703的文章):Nand Flash的数据是以bit的方式保存在memory cell中,一般来说,一个cell 中只能存储一个bit。
这些cell 以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。
多个line(多个位宽大小的数据)会再组成Page。
我使用的Nand flash是三星的K9F1208U0M,从datesheet上得知,此flash每页528Bytes(512byte的Main Area + 16byte的Spare Area),每32个page形成一个Block(32*528B)。
NandFlash详述1. 硬件特性:【Flash的硬件实现机制】Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。
这类设备,除了Flash,还有其他比较常见的如硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
Flash的内部存储是MOSFET,里面有个悬浮门(Floating Gate),是真正存储数据的单元。
-------------------------------------------------------------------------------------------------------------------------金属-氧化层-半导体-场效晶体管,简称金氧半场效晶体管(Metal-Oxide-SemiconductorField-Effect Transistor, MOSFET)是一种可以广泛使用在模拟电路与数字电路的场效晶体管(field-effect transistor)。
MOSFET依照其“通道”的极性不同,可分为n-type与p-type的MOSFET,通常又称为NMOSFET与PMOSFET,其他简称尚包括NMOS FET、PMOS FET、nMOSFET、pMOSFET等。
-------------------------------------------------------------------------------------------------------------------------在Flash之前,紫外线可擦除(uv-erasable)的EPROM,就已经采用用Floating Gate存储数据这一技术了。
谈到Nand Flash的数据存储方式,关于NAND Flash的数据读写方法方面的文章不多,这篇文章详细讲述了Nand Flash数据存储方式和数据读写方法,并用具体的芯片为例作了详细的解释。
NAND Flash 的数据是以bit 的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。
这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device 的位宽。
这些Line 会再组成Page,(Nand Flash 有多种结构,我使用的Nand Flash 是K9F1208,下面内容针对三星的K9F1208U0M),每页528Byte,每32 个page 形成一个Block,Sizeof(block)=16kByte 。
1 block=16kbyte,512Mbit=64Mbyte,Numberof(block)=4096 1block=32page, 1page=528byte=512byte(Main Area)+16byte(Spare Area)Nand flash 以页为单位读写数据,而以块为单位擦除数据。
按照这样的组织方式可以形成所谓的三类地址:--Block Address -- Page Address --Column Address 。
对于NAND Flash 来讲,地址和命令只能在I/O[7:0]上传递,数据宽度是8 位。
512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由地址指针命令来选择,A[7:0]就是所谓的column address。
32 个page 需要5bit 来表示,占用A[13:9],即该page 在块内的相对地址。
Block的地址是由A14 以上的bit 来表示,例如512Mb 的NAND,共4096block,因此,需要12 个bit 来表示,即A[25:14],如果是1Gbit 的528byte/page的NAND Flash,则block address用A[26:24]表示。
nandflash寻址原理-回复NAND Flash是一种非易失性存储器,被广泛应用于手机、智能设备、存储卡等场景中。
它的寻址原理是指系统如何通过地址来访问和控制NAND Flash存储器中的数据。
本文将从NAND Flash的基本结构开始,逐步详细介绍NAND Flash的寻址原理。
一、NAND Flash的基本结构NAND Flash是由一系列称为“块”的存储单元组成的。
每个块包含多个页面,每个页面可以存储一定数量的数据。
每个页面又可以进一步划分为逻辑页和物理页。
逻辑页是系统看到的页地址,而物理页是实际存储数据的页地址。
通常,逻辑页由控制器转换为物理页。
二、逻辑地址到物理地址的映射在NAND Flash中,数据的读写都是以逻辑地址的方式进行的。
逻辑地址是系统中应用程序使用的地址,也是数据在逻辑页中的地址。
然而,由于NAND Flash的特性,为了能够找到实际存储数据的物理页地址,需要进行逻辑地址到物理地址的映射。
1.页映射表页映射表是一种数据结构,用于保存逻辑地址和物理地址之间的映射关系。
它将逻辑页和物理页一一对应起来,以便系统可以通过逻辑地址查找到实际存储数据的物理页地址。
页映射表通常存储在控制器的内部,由控制器来管理和维护。
2.坏块管理NAND Flash中存在一种叫做坏块的情况。
坏块是指因为某些原因不可用的块。
在使用NAND Flash之前,需要进行坏块检测和坏块管理。
坏块通常会被标记,并从可用块列表中去除,以避免对坏块进行读写操作。
坏块的存在也会影响到逻辑地址到物理地址的映射关系,因此在进行映射时需要考虑坏块的情况。
三、逻辑地址到物理地址的转换过程逻辑地址到物理地址的转换过程可以分为以下几个步骤:1.逻辑地址计算首先,系统会根据逻辑地址的格式和相应的算法计算出逻辑地址。
逻辑地址通常由块号和页号组成。
2.页映射表查询系统会根据逻辑地址在页映射表中查询对应的物理地址。
如果逻辑地址在页映射表中不存在,可能是因为数据尚未写入NAND Flash,或者是数据已经被擦除。
nor_flash_读写过程一、结构分析S3C2410处理器集成了8位NandFlash控制器。
目前市场上常见的8位NandFlash有三星公司的k9f1208、k9f1g08、k9f2g08等。
k9f1208、k9f1g08、k9f2g08的数据页大小分别为512Byte、2kByte、2kByte。
它们在寻址方式上有一定差异,所以程序代码并不通用。
本文以S3C2410处理器和k9f1208系统为例,讲述Nan dFlash的读写方法。
NandFlash的数据是以bit 的方式保存在memory cell里的,一般来说,一个cell 中只能存储一个bit,这些cell 以8 个或者16 个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。
这些Line 组成Page,page 再组织形成一个Block。
k9f1208的相关数据如下:1block=32page;1page=528byte=512byte(Main Area)+16byte(Spare Area)。
总容量为=4096(block数量)*32(page/block)*512(byte/page)=64MbyteNandFlash以页为单位读写数据,而以块为单位擦除数据。
按照k9f1208的组织方式可以分四类地址:Col umn Address、halfpage pointer、Page Address 、Block Address。
A[0:25]表示数据在64M 空间中的地址。
Column Address表示数据在半页中的地址,大小范围0~255,用A[0:7]表示;halfpage pointer表示半页在整页中的位置,即在0~255空间还是在256~511空间,用A[8]表示;Page Address表示页在块中的地址,大小范围0~31,用A[13:9]表示;Block Address表示块在flash中的位置,大小范围0~4095,A[25:14] 表示;二、读操作过程K9f1208的寻址分为4个cycle。
关于nand flash的地址A8,寻址关于nand flash的地址A8,寻址在NAND Flash中有8个I/O引脚(IO0—IO7)、5个全能信号(nWE ALE CLE nCE nRE)、一个引脚,1个写保护引脚。
操作NAND Flash时,先传输命令,然后传输地址,最后读写数据。
对于64MB的NAND Flash,需要一个26位的地址。
只能8个I/O引脚充当地址、数据、命令的复用端口,所以每次传地址只能传8位。
这样就需要4个地址序列。
因此读写一次nand flash需要传送4次(A[7:0] A[16:9] A[24:17] A[25])。
64M的NAND Flash的地址范围为0x00000000—0x03FFFFFF。
128M的NAND Flash的地址范围为0x00000000---0x07FFFFFF。
1KB =0x000-0x3FF.128字节=0x00H--7FH。
一页有528个字节,而在前512B中存放着用户的数据。
在后面的16字节中(OOB)中存放着执行命令后的状态信息。
主要是ECC校验的标识。
列地址A0-A7可以寻址的范围是256个字节,要寻址528字节的话,将一页分为了A.(1half array)B(2 half array) C(spare array)。
A区0—255字节,B区256-511 字节C区512—527字节。
访问某页时必须选定特定的区。
这可以使地址指针指向特定的区实现。
在NAND Flash 中存在三类地址,分别为Block Address 、Column Address Page Address.。
(实际就是块地址和页地址)Column Address 用来选择是在上半页寻址还是在下半页寻址A[0]—A[7].也就相当于页内的偏移地址。
在进行擦除时不需要列地址,因为擦除是以块为单位擦除。
32个Page 需要5bit来表示。
也就是A[13:9];也就是页在块内的相对地址。
NANDFlash的底层结构和解析NAND Flash(Negative-AND Flash)是一种非易失性存储器,常用于各种电子设备,如USB闪存驱动器,固态硬盘(SSD)和智能手机中。
它的底层结构以及工作原理,均与传统的 NOR Flash 存储器相比有所不同。
本文将详细解析 NAND Flash 的底层结构和工作原理。
首先,让我们了解下 NAND Flash 存储器的基本构造。
NAND Flash存储器由许多相互连接的存储单元组成,每个存储单元可以存储一个或多个位信息,并且每个存储单元都有一个地址。
与 NOR Flash 存储器不同的是,NAND Flash 存储器以页面为单位进行读写操作,其中一个页面通常包含数百个字节的数据。
NAND Flash 存储器的底层结构由若干个存储单元组成,每个存储单元都由一对非常接近的、临时连接的源/漏(Source/Drain)形成。
这种结构允许在非常小的面积内存储大量存储单元,从而实现高密度的存储。
每个存储单元内通常包含一个浮动栅(Floating Gate),以及一个控制栅(Control Gate)。
当浮动栅中没有电子时,存储单元被认为是处于“擦除”状态。
当我们给浮动栅充电时(向存储单元中注入电子),则会将存储单元的状态切换为“写入”状态。
要读取存储单元中的数据,我们需要在控制栅上加上一定的电压,并通过源/漏区域中的电流测量来检测存储单元中的电子是否存在。
在 NAND Flash 存储器中,数据的读取和写入操作是通过以下步骤进行的:1. 擦除(Erasure)操作:擦除操作是将存储单元的状态从“写入”状态切换为“擦除”状态的过程。
这通常是通过向特定的存储块施加高电压来实现的,该存储块通常包含数百个页面。
擦除操作是不可逆的,即一旦执行擦除操作,就无法恢复存储单元中的数据。
2. 写入操作:写入操作是将数据从外部设备写入 NAND Flash 存储器的过程。
nand flash架构读取操作原理
NAND Flash是一种非易失性存储器,其读取操作原理如下:
1. 数据存储:NAND Flash将数据存储在一组互相连接的存储单元(或称为“存储块”),每个存储单元存储一个或多个数据位。
2. 读取操作:当进行读取操作时,控制器发送一个读取命令给NAND Flash芯片。
读取命令包括存储单元的地址,用于指示需要读取的数据位在哪个存储单元中。
3. 地址解码:NAND Flash芯片通过解码器将接收到的地址信号解码为特定的存储单元。
4. 数据传输:一旦解码,NAND Flash芯片会将请求的数据位传输给控制器。
数据传输是通过读取线路进行的,其中包括数据线和引脚,以便将数据传输到控制器。
5. 数据返回:NAND Flash芯片将请求的数据位返回给控制器后,控制器可以根据需要将数据传输到主机系统的内存中。
需要注意的是,NAND Flash芯片的读取操作是以块为单位进行的,而不是以字节或位为单位。
这是因为每个存储单元中的数据位是同时读取的。
因此,如果需要读取少于一个存储块的数据,控制器仍会读取整个存储块,并从中提取所需数据,这会导致一定的浪费。
NAND FLASH 内存详解与读写寻址方式收藏一、内存详解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的器件。
这就使得一种封装和接口能够在将来支持较高的密度。
图2 NOR闪存的随机存取时间为0.12ms,而NAND闪存的第一字节随机存取速度要慢得多NOR闪存的随机存取时间为0.12ms,而NAND闪存的第一字节随机存取速度要慢得多NAND基本操作以2Gb NAND器件为例,它由2048个区块组成,每个区块有64个页(见下图):每一个页均包含一个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 输入寄存器接收到页编程(80h)指令时,内部就会全部重置为1s,使得用户可以只输入他想以0位编程的数据字节图5 带有随机数据输入的编程指令。
图中加亮的扇区显示,该指令只需要后面跟随着数据的2个字节的地址所有NAND操作开始时,都提供一个指令周期(表1)。
当输出一串WE#时钟时,通过在I/O位7:0上设置指令、驱动CE#变低且CLE变高,就可以实现一个指令周期。
注意:在WE#信号的上升沿上,指令、地址或数据被锁存到NAND 器件之中。
如表1所示,大多数指令在第二个指令周期之后要占用若干地址周期。
注意:复位或读状态指令例外,如果器件忙,就不应该发送新的指令。
以2Gb NAND器件的寻址方案为例,第一和第二地址周期指定列地址,该列地址指定页内的起始字节表:注意:因为最后一列的位置是2112,该最后位置的地址就是08h(在第二字节中)和3Fh(在第一字节中)。
PA5:0指定区块内的页地址,BA16:6指定区块的地址。
虽然大多编程和读操作需要完整的5字节地址,在页内随机存取数据的操作仅仅用到第一和第二字节。
块擦除操作仅仅需要三个最高字节(第三、第四和第五字节)来选择区块。
总体而言,NAND的基本操作包括:复位(Reset, FFh)操作、读ID(Read ID, 00h)操作、读状态(Read Status, 70h)操作、编程(Program)操作、随机数据输入(Random data input, 85h)操作和读(Read)操作等。
选择内置NAND接口的处理器或控制器的好处很多。
如果没有这个选择,有可能在NAND 和几乎任何处理器之间设计一个"无粘接逻辑(glueless)" 接口。
NAND和NOR闪存的主要区别是复用地址和数据总线。
该总线被用于指定指令、地址或数据。
CLE信号指定指令周期,而ALE信号指定地址周期。
利用这两个控制信号,有可能选择指令、地址或数据周期。
把ALE连接到处理器的第五地址位,而把CLE连接到处理器的第四地址位,就能简单地通过改变处理器输出的地址,任意选择指令、地址或数据。
这容许CLE和ALE在合适的时间自动设置为低。
为了提供指令,处理器在数据总线上输出想要的指令,并输出地址0010h;为了输出任意数量的地址周期,处理器仅仅要依次在处理器地址0020h之后输出想要的NAND地址。
注意,许多处理器能在处理器的写信号周围指定若干时序参数,这对于建立合适的时序是至关重要的。
利用该技术,你不必采用任何粘接逻辑,就可以直接从处理器存取指令、地址和数据。
多级单元多级单元(MLC)的每一个单元存储两位,而传统的SLC仅仅能存储一位。
MLC技术有显著的密度优越性,然而,与SLC相比(下表),其速度或可靠性稍逊。
因此,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",那么,该块要标记为坏,并映射出系统。