在线问答
直播中

mrbushy

9年用户 77经验值
擅长:可编程逻辑 嵌入式技术 处理器/DSP 光电显示 控制/MCU EDA/IC设计
私信 关注

【OK210试用体验】+ 《NANDFLASH原理分析》

` 本帖最后由 mrbushy 于 2015-9-12 20:09 编辑

1.芯片型号






核心板下方那块就是nandflash我的型号是MT29F8G08ABABAWP


1.png





查看芯片手册MT29F8G08ABABAWP所代表的具体参数如下:


Open NAND Flash Interface (ONFI) 2.1-compliant 1

• Single-level cell (SLC) technology

• Organization

– Page size x8: 4320 bytes (4096 + 224 bytes)

– Block size: 128 pages (512K +28 K bytes)

– Plane size: 2 planes x 1024 blocks per plane

– Device size: 8Gb: 2048 blocks

• Synchronous I/O performance

– Up to synchronous timing mode 4

– Clock rate: 12ns (DDR)

– Read/write throughput per pin: 166 MT/s

• Asynchronous I/O performance

– Up to asynchronous timing mode 4

t RC/ t WC: 25ns (MIN)

• Array performance

– Read page: 25µs (MAX)

– Program page: 230µs (TYP)

– Erase block: 700µs (TYP)

• Operating Voltage Range

– V

CC : 2.7–3.6V

– V

CCQ : 1.7–1.95V, 2.7–3.6V

• Command set: ONFI NAND Flash Protocol

• Advanced Command Set

– Program cache

– Read cache sequential

– Read cache random

– One-time programmable (OTP) mode

– Multi-plane commands

– Multi-LUN operations

– Read unique ID

– Copyback

• First block (block address 00h) is valid when ship-

ped from factory. For minimum required ECC, see

Error Management (page 93).

• RESET (FFh) required as first command after power-

on

• Operation status byte provides software method for

detecting

– Operation completion

– Pass/fail condition

– Write-protect status

• Data strobe (DQS) signals provide a hardware meth-

od for synchronizing data DQ in the synchronous

interface

• Copyback operations supported within the plane

from which data is read

• Quality and reliability

– Data retention: 10 years

– Endurance: 100,000 PROGRAM/ERASE cycles

• Operating temperature:

– Commercial: 0°C to +70°C

– Industrial (IT): –40ºC to +85ºC

• Package

– 48-pin TSOP

– 100-ball BGA

整理一下信息:Nand Flash , 容1GByte(8G/8bit) , 是用SLC存储(Single Level Cell单层存储) , 总线为8bit , 工作电压为2.7V~3.6V , 第2版本。

2.存储原理

打开MT29F8G08ABABAWP芯片手册的P1页


3.png

由芯片手册上可知,这款NAND FLASH,页大4K,块大小512K,意思就是读写操作,每次最小为4K,擦除操作每次最小为512K。什么原理呢,继续向下看。


4.png









由上图可知:1page = 4K, 1 block = 512K, 1Block=128Page, 芯片有128K

现在开始计算:

1 Block = 128*4 = 512K

那么我们FLASH的容量就2K * 512K = 1G(图中每个页还有Page都有保留区,所以实际上我们用不到1G),这里就有一个问题,为啥要设计成这样?

因为Nand Flash是用于设计成嵌入式系统的内存,程序进行内存的寻址时,为了提搞速度,所以,将线性的内存在逻辑上进行分块,分页,形成逻辑上的立体结构,这样,寻址就会方便,先找到是哪一块,再找到是哪一页,最后找到是这一页的哪个位置,这要比起从头到尾遍历,就要快很多了。

到这里,存储原理基本弄清楚了,Nand Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将一个block全部擦除为1,也就是里面的内容全部都是0xFF了.。

3.原理图和引脚分析





5.png


I/O0 ~ I/O7: I/O pin用于输入command,addresss和data,以及在读操作时输出数据。当芯片没有被选中或无法正常输出数据时,处于高阻态(high-z即高阻态,相当于隔断状态,当处于高阻抗状时,其输出相当于断开状态,没有任何逻辑控制功能)







CLE(COMMAND LATCH ENABLE): 命令寄存器使能指示当前数据为控制命令,CLE输入控制路径发送到命令寄存器。

ALE(ADDRESS LATCH ENABLE): 地址寄存器使能指示当前数据为地址

CE#(CHIP ENABLE):芯片使能,俗称片选信号,表示flash chip是否被系统选中为当前操作芯片,低电平表示选中

RE#(READ ENABLE): 读使能,RE是串行数据输入,低电平时读取data到I/O总线,RE下降沿时读取数据有效

WP#(WRITE PROTECT): 写保护,在电源置换过程中处于有效的低电平状态,保护flash里面的数据不受改写。

The write protect# (WP#) signal enables or disables PROGRAM and ERASE operations
to a target. When WP# is LOW, PROGRAM and ERASE operations are disabled. When
WP# is HIGH, PROGRAM and ERASE operations are enabled.
It is recommended that the host drive WP# LOW during power-on until Vcc and Vccq
are stable to prevent inadvertent PROGRAM and ERASE operations (see Device Initiali-
zation (page 35) for additional details).
WP# must be transitioned only when the target is not busy and prior to beginning a
command sequence. After a command sequence is complete and the target is ready,
WP# can be transitioned. After WP# is transitioned, the host must wait  t WW before issu-
ing a new command.
The WP# signal is always an active input, even when CE# is HIGH. This signal should
not be multiplexed with other signals.)
Vcc/Vss/N.C(POWER/GROUND/NO CONNECTION):Vcc是供电电压,Vss接地,N.C没定义

为什么要有CLE和ALE?
比如命令锁存使能(Command Latch Enable,CLE)和地址锁存使能(Address Latch Enable,ALE),那是因为,Nand Flash就8个I/O,而且是复用的,也就是,可以传数据,也可以传地址,也可以传命令,为了区分你当前传入的到底是啥,所以,先要用发一个CLE(或ALE)命令,告诉nand Flash的控制器一声,我下面要传的是命令(或地址),这样,里面才能根据传入的内容,进行对应的动作。否则,nand flash内部,怎么知道你传入的是数据,还是地址,还是命令啊,也就无法实现正确的操作了。
Nand Flash为什么只设计8个I/O引脚,有什么好外?
1) 减少外围引脚:相对于并口(Parellel)的Nor Flash的48或52个引脚来说,的确是大大减小了引脚数目,这样封装后的芯片体积,就小很多。现在芯片在向体积更小,功能更强,功耗更低发展,减小芯片体积,就是很大的优势。同时,减少芯片接口,也意味着使用此芯片的相关的外围电路会更简化,避免了繁琐的硬件连线。
2) 提高系统的可扩展性,因为没有像其他设备一样用物理大小对应的完全数目的addr引脚,在芯片内部换了芯片的大小等的改动,对于用全部的地址addr的引脚,那么就会引起这些引脚数目的增加,比如容量扩大一倍,地址空间/寻址空间扩大一倍,所以,地址线数目/addr引脚数目,就要多加一个,而对于统一用8个I/O的引脚的Nand Flash,由于对外提供的都是统一的8个引脚,内部的芯片大小的变化或者其他的变化,对于外部使用者(比如编写nand flash驱动的人)来说,不需要关心,只是保证新的芯片,还是遵循同样的接口,同样的时序,同样的命令,就可以了。这样就提高了系统的扩展性。

4.Nand原理分析
1)Nand Flash原理图上只有8根线Data0-Data7,是典型的串口通信,因为只有8根线,所以地址线、数据线肯定是复用的。
2)Nand Flash K9F2G08UOB容量1G * 8bit,它的地址应该有30位,原理图上只有Data0-Data7,所以需要发出多次地址信号,下面是地址时序图一共要发送五次,每次发8bit。
11.jpg

3)Nand Flash不能像内存一样直接读写,要先发命令,再发地址,再读写数据
10.png

11.png

很容易看出,我们要读取数据,要用到Read命令,该命令需要2个周期,第一个周期发0x00,第二个周期发0x30。在这个过程,你发了一个命令,对方能否立刻变接收到,并做出反应呢,肯定不行,所以,这得需要一个维持时间,这样才能保证你的数据的有效性。

13.png



Read Operations

(
The READ PAGE (00h-30h) command, when issued by itself, reads one page from the
NAND Flash array to its cache register and enables data output for that cache register.
During data output the following commands can be used to read and modify the data
in the cache registers: CHANGE READ COLUMN (05h-E0h) and CHANGE ROW AD-
DRESS (85h).
)


15.png

16.png
控制引脚状态表27.png



4)CLE为高电平时,Data0-Data7发的是命令;
   ALE为高电平时,Data0-Data7发的是地址;
   CLE/ALE都为低电平时,Data0-Data7发的是数据,nWE,表示写,nRE,表示读。

  


下篇预告《NANDFLAH时序》












` 2.png

回帖(2)

mrbushy

2015-9-13 10:32:33
引用: xianyoudian 发表于 2015-9-11 23:16
谢谢分享学习一下

不客气,也是看别人帖子的总结
举报

栾新科

2015-10-26 12:01:05
学软件的也要了解一下硬件,会更好的提高水平
举报

更多回帖

发帖
×
20
完善资料,
赚取积分