打印
[技术问答]

为什么flash只能写0不能写1啊?

[复制链接]
1545|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ClarkLLOTP|  楼主 | 2024-3-5 13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看手册说1是通过页擦除实现的

使用特权

评论回复
沙发
micoccd| | 2024-3-11 13:18 | 只看该作者
Flash内部电路设计影响

使用特权

评论回复
板凳
jasontu| | 2024-3-14 10:06 | 只看该作者
Flash编程原理都是只能将1(默认为1)写为0,而不能将0写成1.所以在Flash编程之前,必须将对应的块擦除,而擦除的过程就是将所有位都写为1的过程。编程是将相应位写0的过程,而擦除是将相应位写1的过程,两者的执行过程完全相反.

闪存将数据存储在由浮闸晶体管组成的**单元数组内,在单阶存储单元(Single-level cell, SLC)设备中,每个单元只存储1比特的信息。而多阶存储单元(Multi-level cell, MLC)设备则利用多种电荷值的控制让每个单元可以存储1比特以上的数据。

单层 Flash单元在默认状态代表二进制码中的“1”值。

闪存的一种限制在于即使它可以单一字节的方式读或写入,但是抹除一定是一整个区块。一般来说都是设置某一区中的所有比特为“1”,刚开始区块内的所有部分都可以写入,然而当有任何一个比特被设为“0”时,就只能借由清除整个区块来恢复“1”的状态。(即只能把1写0,不能把0写1,要把0写1只能通过檫除flash置1,然后从新写0)。

使用特权

评论回复
地板
呐咯密密| | 2024-3-15 17:04 | 只看该作者
内部结构决定的

使用特权

评论回复
5
呐咯密密| | 2024-3-22 15:49 | 只看该作者
Flash存储器之所以只能从1写成0而不能从0写成1,这是由其物理构造和工作原理决定的。Flash存储单元(也称为闪存单元或者浮栅晶体管)的基本结构中包含一个电荷阱层,这个电荷阱层可以存储电荷。当Flash单元被编程(写入数据)时,会在电荷阱层注入电荷,这会导致单元的阈值电压升高。在读取过程中,通过比较该阈值电压与参考电压,就可以识别单元的状态,高阈值电压对应逻辑0,低阈值电压对应逻辑1。

在NOR Flash和NAND Flash中,写入数据时都是通过隧道效应(Fowler-Nordheim tunneling或CHEMICAL potential-tunneling)将电子注入到电荷阱层。由于物理限制,这一过程只能增加电荷量,即只能将原先没有电荷(代表逻辑1)的单元状态转变为有电荷(代表逻辑0)。而对于已经带有电荷(逻辑0)的单元来说,无法通过常规编程操作移除电荷。

要将逻辑0变回逻辑1,必须进行擦除操作。擦除Flash是通过施加较高的电压使得电荷阱层的电荷逃逸,恢复到初始无电荷状态,这样整个扇区或块的所有单元都会被恢复成逻辑1。

总结一下,Flash的写入限制源于其物理特性和工作机制,它不支持从0写成1,若要改变已写入0的数据,需要先执行擦除操作,然后再进行整体或部分区域的编程。这样的设计虽然增加了写入数据的复杂性,但也带来了非易失性存储的特点,即使断电,数据也能保持不变。

使用特权

评论回复
6
guijial511| | 2024-3-23 10:36 | 只看该作者
FLASH的电平状态默认为1,如果写入的是1就不用写。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

310

帖子

0

粉丝