Nand flash基本原理

  前面了解了随机存取存储器的基本原理,其主要是通过电容的充放电来保证数据的读写,当掉电后,其数据也丢失了,这节我们主要学习下flash的基本组成和原理。现在Flash在嵌入式系统中的地位和pc上的硬盘类似,用于保存系统运行所必须的系统,数据和应用层序,与内存掉电后丢失不同,它在掉点后仍可永久保存。

  1. 闪存存储单元

  对于闪存,我们常见的有SLC和MLC两种,细分还有eSLC和eMLC等,因为闪存式一种电压元件,因此它是以不同的电压范围来代表不同的数据,现在看看两者之间的区别。
  1) SLC(single-level cell):单阶存储单元,也就是闪存的每一个存储单元存储1bit的数据,存储的数据代表0还是1是基于vth的电压阈值来判定,对于闪存写入,就是对其进行充电,使得它的电压值超过电压判定点A,存储单元就表示为0(已编程),如果没有充电或者电压阈值低于A点,就表示1(已擦除)。主要针对军工,企业级应用,有着高速写入,低出错率和耐用性。

  2)MLC(Multi-level cell)多阶存储单元,其是以每个存储单元存储2bit的数据,存储的数据是"00","01","10","11"也是基于电压的阈值的判定,其被分成4份。相对于SLC,MLC的每个单元是2bit,那么其容量也会大一些,同时其存储单元中存放更多的数据,那么其结构也相对复杂,出错的机会也比较大。主要针对的是消费级应用,有着高容量,低成本,使用于USB闪存,手机,数码相机等存储卡。

  2. 闪存内部原理

  由其存储的颗粒结构,知道闪存式一种电压元件,其靠电压来存储数据,那么来看看其结构以及工作原理。闪存的内部存储结构是金属-氧化层-半导体-场效应管(MOSFET):源极,漏极和栅极,其工作原理与场效应管类似,都是电压利用控制源极和漏极之间的通断,不同的是场效应管是单栅极结构,而闪存式双栅极结构,在栅极和硅衬底之间还有一个浮置栅极,浮置栅极是有氮化物夹在二氧化硅材料之间构成。

1) 对于闪存的写入,即控制栅极去充电,对栅极加压,使得浮置栅极存储的电荷越多,超过阈值,就表示0

2) 对于闪存的擦除,即对浮置栅极进行放电,低于阈值,就表示1

  理解了闪存保存数据的基本原理后,我们来针对K9F1G08X0C这款芯片来看看其硬件组成和工作原理。其管脚分布如下

信号名称 管脚名称 类型 描述
数据线 I/O0 ~ I/O7 INPUTS/OUTPUTS 用来传输命令/地址/数据,仅在读操作的时候用来输出数据
命令锁存使能 CLE Input CLE为高时,在WE#上升沿,命令通过I/O[7:0]锁存到命令寄存器,当不传输命令时,CLE应该为低
地址锁存使能 ALE  Input ALE为高时,在WE#下降沿,地址信息通过I/O[7:0]锁存片内的地址寄存器。如果传输的不是地址信息,ALE应该为低
片选 CE# Input 一旦器件进入PROGRAM或ERASE操作,CE#可以变无效
读使能 RE# Input  
写使能 WE# Input 在WE#上升沿命令/地址/数据锁存
写保护 WP# Input 当为低时候,所有的PROGRAM和ERASE都被禁止
准备/忙状态 R/B   集电极开路输出。外部需要接上拉电阻,这个脚表示芯片正在进行PROGRAM或ERASE操作。在读操作期间,表示数据正从阵列中传输到串行数据寄存器中,一旦这些操作完成,R/B#回到High-Z状态。
电源 VCC    
VSS    

由上面来看,nandflash的外围引脚很少,没有地址线,只有数据线,相对于由数据线和地址线的norflash,大大的减少了引脚数目,使得芯片的体积更小,硬件设计也更简单。现在的数据线是复用的,也就是说既可以传数据,也可以传地址,也可以传命令,那么是怎么做到的呢?硬件为了区分当前到底是需要传啥?设计了了CLE/ALE命令,所以你必须先发一个CLE/ALE命令,告诉控制器,我现在是命令还是地址,这样就能识别并做相应的处理。我们了解了硬件的连接,那么对于flash是怎么存储的呢?下面来看看这款芯片的的存储布局

由图可以看出一片Nand flash为一个设备(device),其数据存储分层为:

1.  1个设备(device)=1024个块(Blocks),块也是Nand flash擦除操作的最小单位。

2.  1个块(block) = 64页(Pages),页是Nand flash写入的最小单位,对于每一个页,由数据块区域和空闲区域。数据区,也容易理解,就是存储一些数据,而对于空闲区,一般也叫做OOB(out of Band),这个区域,是基于Nand flash的硬件特性设计的,Nand flash在数据读写的时候很容易错误,所以为了保证数据的正确性,必须要有对应的检测和纠错的机制,此机制就被叫做ECC,所以设计了该多余的区域,用来放置数据的校验值。

3.  1个页(page) = 数据块大小(2K)+OOB块大小(64Bytes)

那么通过上面我们就可以计算出怎么访问一个物理地址:块大小*块号+页大小*页号+页内地址。

从硬件的图来看,对于K9F1G08X0C这款芯片,其容量为132MB,那么就应该需要28条地址先,而现在只有8条地址线,对于Nand flash就导入了地址周期的概念,对于该款flash,所以需要4个周期:2个列地址(Column)周期和2个行地址(ROW)周期。从下面的功能框图来看,对于列地址A0--A11,就是页内地址,地址范围就是0--4094,与页内地址(2K+64)吻合,其实对于页内地址,其实只需要A0-A10,而对于多出来的A11,是用来表示页内的oob区域。那么对于A12-A27就是用来表示属于哪一个块和块里面的哪一个页号。

通过前面对于nand flash的基本原理的讲解,下面来看看怎么操作nand flash,下面是K9F1G08X0C支持的命令格式。

下图是发送一个命令/地址/数据的完整过程

通过时序图看出,上面有很多时间参数,在设置Nand flash控制器的时候,需要确认这些时间参数是否在合适的范围内,对于控制命令都是通过上面的几个基础命令组合而来,此时对于nand flash的基本控制方式和原理已经介绍完。

时间: 2024-08-08 02:30:25

Nand flash基本原理的相关文章

NOR FLASH和NAND FLASH基本结构和特点

非易失性存储元件有很多种,如EPROM.EEPROM.NOR FLASH和NAND FLASH,前两者已经基本被淘汰了,因此我仅关注后两者,本文对FLASH的基本存储单元结构.写操作.擦除操作和读操作的技术进行了简单介绍,对了NOR和NAND由存储结构决定的特性和应用场合的差异,对后续的硬件设计和驱动编程起到铺垫作用. 1 FLASH基本存储单元---浮栅场效应管 NOR FLASH和NAND FLASH都是使用浮栅场效应管(Floating Gate FET)作为基本存储单元来存储数据的,浮栅

NOR flash和NAND flash区别,RAM 和ROM区别d

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写.ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存. RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲.另一种称为动态RAM(Dynamic RAM/D

ECC校验原理以及在Nand Flash中的应用

     本篇文章主要介绍ECC基本原理以及在Nand Flash中的应用,本文记录自己对ECC校验原理的理解和学习. ECC介绍      ECC,全称为Error Correcting Code,错误纠正码,这是一种编码方式,用于在于可以在一定程度上自行发现和纠正传输过程中发生的错误.      香农在1948年发表的<通信的数学理论>中的信道编码定理指出:主要采取适当的纠错码,就可以在多类信道上传输消息,其误码率可以任意小.经过历代人们的持续努力,找出了许多好的信道编码方法,满足许多实用

在 U-BOOT 对 Nand Flash 的支持

1.1    U-BOOT 对从 Nand Flash 启动的支持 1.1.1   从 Nand Flash 启动 U-BOOT 的基本原理 1. 前 4K 的问题 如果 S3C2410 被配置成从 Nand Flash 启动(配置由硬件工程师在电路板设置), S3C2410 的 Nand Flash 控制器 有一个特殊的功能, 在 S3C2410 上电后, Nand Flash 控制器会自动的把 Nand Flash 上的前 4K 数据搬移到 4K 内部 RAM 中, 并把 0x0000000

NAND flash学习所获----(Zac)

Nand Falsh外围电路:peripheral circuit 1.Nand flash里至少有2个state Machine(controller),即2个主控. 一个主控:负责处理前端事情. 一个主控:负责后端任务处理. 2.DDC:Dynamic Data cache(包括SDC,PDC,TDC,DDC1,DDC2),有的解析为Page buffer,或者sense Amps. 镁光的NAND flash:L94C:单die 8G,L95B:单die 16G 大致的物理结构图: 所以体

u-boot分析(九)----nand flash初始化|nand flash读写分析

u-boot分析(九) 上篇博文我们按照210的启动流程,分析到了初始化串口,由于接下来的取消存储保护不是很重要,所以我们今天按照u-boot的启动流程对nand flash初始化进行分析. 今天我们会用到的文档: 1.        2440芯片手册:http://download.csdn.net/detail/wrjvszq/8358949 2.        6410芯片手册:http://download.csdn.net/detail/wrjvszq/8358965 3.      

Nand Flash原理(二)

K9F2G08U0B的存储阵列 图 2-1 K9F2G08U0B的存储阵列 由图2-1,我们可以知道:K9F2G08U0B的一页为(2K+64)字节(2K 表示的是 main 区容量,64表示的是 spare 区容量),它的一块为 64 页,而整个设备包括了2048个块.这样算下来一共有 2112M 位容量,如果只算 main 区容量则有256M 字节(即 256M×8 位). 要实现用 8 个 IO 口来要访问这么大的容量,如图 2-1 所示:K9F2G08U0A 规定了用 5 个周期来实现.

NAND Flash操作技术详解

NAND Flash是构成固态存储的基本存储单元其采用IO的接口方式与控制器相连.控制器对NAND Flash进行操作时需要通过命令交互的方式对NAND Flash进行操作.下面对NAND Flash的操作进行解析可以发现在研发FTL的时候可以充分发掘NAND Flash提供的操作命令来优化读写性能.分析介绍的NAND Flash以Micron提供的MT29F16G08AA为蓝本.该芯片能够提供16Gb 的存储容量具体性能指标如下所示 Organization –     Page size:

uboot 从sd卡加载文件并烧写到nand flash

uboot下可以从用tftp和nfs加载文件. 但是现在有个开发板配套uboot网络功能出现异常,执行ping命令就会导致开发板重启,只能选择先从sd卡加载文件 启动开发板,任意键进入uboot,然后执行下面的命令扫描sd卡设备: mmc rescan 然后获取sd卡信息: hwgw # fatinfo mmc Interface: MMC Device 0: Vendor: Man 035344 Snr 20d2c703 Rev: 8.0 Prod: SD01G Type: Removable