Flash读写特性:
flash的特性是,写数据只能将1写为0,0不能写为1。擦除数据是将所有数据都写为1。因此如果想在已经数据的flash上写入新的数据,则必须先擦除。
解:数据在Flash内存单元中是以电荷(electrical charge) 形式存储的。存储电荷的多少,取决于图中的外部门(external gate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示,因此,Flash的存储单元的默认值,不是0(其他常见的存储设备,比如硬盘灯,默认值为0),而是1,而如果将电荷释放掉,电压降低到一定程度,表述数字0。
一、FLASH的块/扇区/页关系
块 | 扇区 | 页 |
16个扇区 | 16个页 | 256Byte(256*8bit) |
1块表示的字节: 16*16*256=65536Byte | 1扇区表示的字节: 16*256=4096Byte |
二、常用FLASH擦写规则
最小擦除单位:扇区(4096Byte)
可选择擦除单位:扇区、块、全片
最大编程(写入)单位:页( 256 Byte),大于256 Byte则需要循环写入。
Flash 写入数据时和 EEPROM 类似,不能跨页写入,一次最多写入一页,W25Q128的一页是 256 字节。写入数据一旦跨页,必须在写满上一页的时候,等待 Flash 将数据从缓存搬移到非易失区,重新再次往里写。
最小编程(写入)单位:1 Byte,即一次可写入 1~256 Byte的任意长度字节。页是编程写入的最小单位
未写入时FLASH里面的数据为全1,即0xFF。
只能由 1 —> 0 写入,不能由 0 —> 1 写入,即如果已经写入过了,则需要先擦除(擦除后数据变为全1)再写入。
示例:0xF0(1111 0000),即高4位可写入,低4位不可写入。
三、常用FLASH封装引脚定义
如图的 8-pin 是较常用的一种封装. 各 pin 的意义:
CS: chip select, 芯片使能引脚. CS拉高时, 芯片处理省电模式, 各数据引脚(D0/D1/D2/D3)处理高 阻态;CS拉低时芯片工作, 数据引脚可以传输数据。
DO: (在CLK下降沿)输出数据或状态. 正常情况下只有DI/DO作为IO引脚, 启用 Quad 模式需要置 QE(Quad Enable)位. QE=1时, WP和HOLD分别变为IO2,IO3.
WP: 低电平有效, 保护状态寄存器不被写入。
GND:接地
DI: (在CLK上升沿)向 Flash 输入指令, 地址 或 数据.
CLK: 提供输入输出操作的同步时钟.
HOLD:当多个芯片共用 SPI 总线时非常有用. HOLD 为低电平时, DO 引脚变为高阻态, 且此时 DI/CLK 上的信号被忽略. 相当于芯片此时不工作. 假设对一个 SPI FLASH 的页写操作只进行 到一半, 此时一个中断来了, 另一个更高优先级的任务要占用 SPI 总线, 此时就可以使用 HOLD 拉低来暂停 SPI FLASH 内部的工作, 等到任务切换回来再让操作继续下去.
VCC: 2.7 ~ 3.6V
四、常用FLASH NOR Flash 操作原理及特性
NOR Flash 基本结构
NorFlash是E2PROM中的一种,利用特殊的浮栅MOS场效应晶体管进行编程。它是一个 N 沟道增强型的 MOS 管,有 Gf 和 Gc 两个栅极。 Gc 为控制栅,它有引出线。 Gf 栅极没有引出线,而是被包围在二氧化硅中,称之为浮栅,浮栅是由氮化物材料构成的,它是可以存储电荷的电荷势阱。
数据存储原理
数据在Flash内存单元中是以电荷形式存储在浮栅上的。通过在栅极加正向电压实现电荷的存储,加负向电压实现电荷的释放,电压的大小可以控制电荷存储和释放的速度。故可以通过这种方式实现数据的写入和擦除。
如果浮栅中积累了电子负电荷,由于浮栅的感应作用,在源极和漏极之间将形成带正电的空间电荷区,这时无论栅极上有没有施加偏置电压,晶体管都将处于导通状态。如果浮栅中并没有积累电子负电荷,那么只有在栅极施加适当的偏置电压,在硅基层上感应出电荷,源极 和漏极 才能导通。也就是说在没有给控制极施加偏执电压时,晶体管是截止的。故可以通过上述的方式实现数据的读取。
(1)读取数据原理
NorFlash存储单元晶体管的源极端接地,漏极端接位线时,在无偏置电压的情况下,检测晶体管的导通状态就可以获得存储单元中的数据,如果位线上的电平为低,说明晶体管处于导通状态,读取的数据为 0,如果位线上为高电平,则说明晶体管处于截止状态,读取的数据为 1.由于控制栅 Gf 在读取数据的过程中施加的电压较小或根本不施加电压,不足以改变浮栅 Gf 中原有的电荷量,所以读取操作不会改变 NorFlash 中原有的数据。
(2)写入数据原理
NorFlash 存储器编程操作是基于热电子注入效应。当在漏极和栅极上同时加高电压,沟道的电子在控制栅和漏极之间建立的横向电场加速下获得很高的能量。在电场的吸引下,一些电子被“拉入”浮动栅极,。一旦进入,这些电子就不再有逃逸所需的能量。
(3)擦除数据原理
NorFlash 存储器擦除数据是基于隧道击穿效应。p-well加正向电压吸引浮动栅内的电荷;同时一个高的负电压被施加到栅极,它排斥被捕获的负电荷。这两个电压叠加在一起,形成一个巨大的电场,使电子“隧道”穿过氧化物屏障。通过这个过程,浮栅的电子被耗尽,这个过程电流是微小的,故电场必须维持很长时间才能提取足够数量的电子,使得擦除操作相对缓慢。
注:为了使存储操作更易于管理,在衬底中注入了一系列p井。这些p井相互之间是电绝缘的,称为普通p井。
NOR Flash 特性
在成本上,NAND flash 的单元尺寸几乎是 NOR 器件的一半,由于生产过程更为简单,NAND 结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中。
NorFlash带有通用的SRAM接口,可以轻松地挂接在CPU的地址、数据总线上,对CPU的接口要求低。NorFlash的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。如uboot中的ro段可以直接在NorFlash上运行,只需要把rw和zi段拷贝到RAM中运行即可。
NAND器件中的坏块是随机分布的,以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。而坏块问题在NorFlash上是不存在的。
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。闪存的使用寿命同时和文件系统的机制也有关,要求文件系统具有损耗平衡功能。
读操作:NOR的读速度比NAND稍快一些。
写操作:任何flash器件的写入操作都只能在空或已擦除的单元内进行。NAND器件执行擦除操作是 十 分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。擦除NOR器件时是以 64~128KB的块进行的,执行一个擦除/写入操作的时间约为5s。擦除NAND器件是以8~32KB 的块进行的,执行一个擦除/写入操作最多只需要4ms。
NAND Flash一般地址线和数据线共用,对读写速度有一定影响;而NOR Flash闪存数据线和地址线分开,所以相对而言读写速度快一些。
NOR flash采用统一编址(有独立地址线),可随机读取每个“字”,但NOR flash不能像RAM以字节改写数据,只能按“页”写,故NOR flash不能代替RAM。擦除既可整页擦除,也可整块擦除。
NOR flash可直接通过程序编程,根据地址直接读取,容量一般是M级别的
NOR flash采用统一编址(有独立地址线),可随机读取每个“字”,但NOR flash不能像RAM以字节改写数据,只能按“页”写,故NOR flash不能代替RAM。擦除既可整页擦除,也可整块擦除。
五、常用FLASH Nand Flash 操作原理及特性
Nand Flash 的容量与制作成本比NOR Flash 要大,且成本更低
数据存储的原理与NOR Flash相同
Nand Flash 特性
NANDflash数据线和地址线共用I/O线,需额外联接一些控制的输入输出。
NAND flash有更快的写、擦除速度。
坏块处理:NAND器件的坏块是随机分布的,在使用过程中,难免会产生坏块。所以在使用时要进行 坏块管理以保障数据可靠。
NAND flash的IO端口采用复用的数据线和地址线,必须先通过寄存器串行地进行数据存取。各厂商对信号的定义不同,增加了应用的难度。
NAND flash共用地址线和数据线,页是读写数据的最小单元,块是擦除数据的最小单元。
NAND Flash的写入速度比NOR快很多,且NAND的4ms擦除速度远比NOR的5s块