nand flash spec

nand flash简介

nand flash是一种非易失性存储器。它具有高存储密度、低成本和高耐用性的特点。

nand flash的特性是非易失性,即在电源关闭的情况下,数据仍然保留。 nand flash的存储单元由浮动栅极晶体管组成,每个存储单元可以存储一位或多位数据。nand flash通过编程和擦除操作来写入和删除数据,这与传统的随机存取存储器 (RAM) 不同。

nand flash的基本存储类型有以下几种:

  • SLC(Single-Level Cell):每个存储单元存储 1 位数据,具有较高的速度和耐久性,但成本较高。
  • MLC(Multi-Level Cell):每个存储单元存储 2 位数据,成本较低,但速度和耐久性相对较差。
  • TLC(Triple-Level Cell):每个存储单元存储 3 位数据,进一步降低了成本,但速度和耐久性进一步下降。
  • QLC(Quad-Level Cell):每个存储单元存储 4 位数据,成本最低,但速度和耐久性最差

nand flash的架构基本如下:

块和页:NAND Flash 存储器被分成多个块,每个块又被分成多个页。数据写入以页为单位,而擦除则以块为单位。 控制器:管理 NAND Flash 的读写操作、错误纠正和磨损均衡等功能。

nand flash的主要规范如下:

  • 容量:NAND Flash 的总存储容量,通常以 GB 或 TB 为单位。

  • 页大小:NAND Flash 中最小的可写单元,通常为 2KB、4KB 或 8KB。

  • 块大小:包含的页数,每块大小通常为 64 页、128 页或 256 页。

  • 读取速度:读取数据的速度,通常以 MB/s 为单位。

  • 写入速度:写入数据的速度,通常以 MB/s 为单位。

  • 擦除时间:擦除一个块所需的时间,以毫秒(ms)为单位。

  • 耐久性:每个块可承受的编程/擦除循环次数,通常为几千到几十万次。

  • 数据保持:无电源情况下数据能够可靠保存的时间,通常为几年到十几年。

  • 接口:使用的通信接口类型,如并行接口、SPI 接口或 ONFI 标准接口。

  • 电压:核心和 I/O 操作的工作电压范围。

  • 封装:NAND Flash 的物理形态,如 TSOP、BGA 或 LGA 封装。

  • 温度范围:工作和存储温度范围。

    规范示例

    假设一个 NAND Flash 规格表如下:

    • 容量:128GB
    • 页大小:4KB
    • 块大小:256 页(1MB)
    • 读取速度:25 MB/s
    • 写入速度:10 MB/s
    • 擦除时间:2 ms
    • 耐久性:100,000 次编程/擦除循环
    • 数据保持:10 年
    • 接口:ONFI 2.2
    • 电压:1.8V 至 3.3V
    • 封装:48 针 TSOP
    • 温度范围:-40°C 至 85°C

nand 的interface 和pin脚

一个典型的 NAND Flash 存储器可以分为以下几个主要部分:

  • 存储单元阵列:由多个存储单元组成,每个存储单元可以存储 1 位或多位数据。
  • 页缓冲区:用于存储数据的临时区域,在数据写入或读取时使用。
  • 控制逻辑:负责管理数据的编程、读取和擦除操作。
  • 地址和数据寄存器:存储操作过程中用到的地址和数据。
  • 状态寄存器:存储当前操作的状态信息,如忙/闲状态、错误状态等。
  • 接口控制器:负责与外部主机进行通信

NAND Flash 存储器主要通过以下几种接口与外部设备通信:

  • 并行接口:传统的 NAND Flash 使用 8 位或 16 位并行接口进行数据传输,数据传输速率较高,适用于高速存储需求。
  • 串行接口:如 SPI (Serial Peripheral Interface) NAND,采用串行数据传输方式,接口简单,适用于较低数据传输速率的应用场景。
  • ONFI (Open NAND Flash Interface):一种标准化的 NAND Flash 接口协议,旨在提高 NAND Flash 的兼容性和互操作性。

以下是常见的 NAND Flash 存储器引脚及其功能描述:

  • CE# (Chip Enable):芯片使能引脚,低电平有效。当 CE# 低电平时,芯片被选中,可以进行数据传输操作。
  • CLE (Command Latch Enable):命令锁存使能引脚,高电平有效。当 CLE 高电平时,写入的数据被解释为命令
  • ALE (Address Latch Enable):地址锁存使能引脚,高电平有效。当 ALE 高电平时,写入的数据被解释为地址。
  • WE# (Write Enable):写使能引脚,低电平有效。当 WE# 低电平时,数据被写入 NAND Flash。
  • RE# (Read Enable):读使能引脚,低电平有效。当 RE# 低电平时,数据从 NAND Flash 读取。
  • WP# (Write Protect):写保护引脚,低电平有效。当 WP# 低电平时,禁止写入和擦除操作,保护存储器数据。
  • R/B# (Ready/Busy):就绪/忙引脚,低电平表示存储器忙,高电平表示存储器就绪。
  • IO0-IO7 (或 IO0-IO15):数据输入/输出引脚,用于传输数据、命令和地址。
  • VCC:电源引脚,为 NAND Flash 提供工作电压。
  • VSS (GND):地引脚,提供电路参考地。

nand flash的组成和寻址方式

NAND Flash 的组成如下:

1.存储单元队列

  • 页 (Page):最小的可编程和可读取单元。典型的页大小是 2KB、4KB 或 8KB。
  • 块 (Block):由多个页组成,通常是 64、128 或 256 页。擦除操作以块为单位进行。
  • 平面 (Plane):由多个块组成,通常一个 NAND Flash 芯片有一个或多个平面。
  • 晶圆 (Die):由一个或多个平面组成。一个 NAND Flash 芯片可以包含一个或多个晶圆。

2.页缓冲区:用于临时存储数据的缓冲区,在数据写入和读取过程中使用。

3.控制逻辑:包括命令解码、地址生成、数据传输控制和错误校正码 (ECC) 等。

4.地址和数据寄存器:用于存储地址和数据,在传输过程中使用。

5.状态寄存器:用于存储当前操作的状态信息,如忙/闲状态、错误状态等。

6.接口控制器:负责与外部主机进行通信。

NAND Flash 的寻址方式

NAND Flash 的寻址方式包括逻辑地址和物理地址。逻辑地址是主机系统看到的地址,而物理地址是实际存储单元的地址。以下是 NAND Flash 的寻址机制:

逻辑到物理地址转换

由于 NAND Flash 存储器的磨损均衡 (Wear-Leveling) 和坏块管理 (Bad Block Management) 机制,逻辑地址与物理地址之间通常存在映射关系。这种映射关系由 NAND Flash 控制器管理。

物理地址结构

页地址:

​ 页地址用于选择具体的页。页地址包括平面地址、块地址和页内偏移。

​ 页地址的高位用于选择平面,中间位用于选择块,低位用于选择页。

块地址:

​ 块地址用于选择具体的块。块地址的高位用于选择平面,中间位用于选择块。

​ 一个块内包含多个页。

平面地址:

​ 平面地址用于选择具体的平面。平面地址的高位用于选择平面。

地址格式示例

假设一个 NAND Flash 存储器具有以下参数:

每页大小:4KB

每块包含页数:128 页

每平面包含块数:1024 块

每芯片包含平面数:2 个

一个具体地址可以表示为:

  • 页地址 (低 12 位):用于选择页内偏移
  • 块地址 (中间 10 位):用于选择块
  • 平面地址 (高 1 位):用于选择平面
  • 完整地址格式:平面地址 (1 位) + 块地址 (10 位) + 页地址 (12 位)

nand flash的各个cmd的功能以及作用场景

读取命令

读页命令 (Read Page):

  • 功能:从指定的页读取数据。
  • 使用场景:需要从 NAND Flash 中读取数据时使用。
  • 典型命令序列:发送读命令,指定页地址,然后读取数据。

写入命令

页编程命令 (Page Program):

  • 功能:将数据写入指定的页。
  • 使用场景:需要将数据存储到 NAND Flash 时使用。
  • 典型命令序列:发送写命令,指定页地址,传输数据,然后发送确认命令以开始编程。

擦除命令

块擦除命令 (Block Erase):

  • 功能:擦除指定块的所有数据。
  • 使用场景:需要清空一个块的数据,以便写入新数据时使用。
  • 典型命令序列:发送擦除命令,指定块地址,然后发送确认命令以开始擦除。

状态命令

读状态命令 (Read Status):

  • 功能:读取 NAND Flash 当前的状态。
  • 使用场景:需要检查 NAND Flash 是否忙碌,或者是否有错误发生时使用。
  • 典型命令序列:发送读状态命令,然后读取状态寄存器。

初始化和复位命令

复位命令 (Reset):

  • 功能:复位 NAND Flash,使其进入初始状态。
  • 使用场景:在进行大规模操作前,需要确保 NAND Flash 处于已知状态时使用。
  • 典型命令序列:发送复位命令,然后等待复位完成。

隐藏命令

缓存读取命令 (Cache Read):

  • 功能:从缓存中读取数据,提高读取速度。
  • 使用场景:需要快速连续读取多个页的数据时使用。
  • 典型命令序列:发送缓存读命令,然后读取数据。

随机数据读取命令 (Random Data Read):

  • 功能:从页内的任意位置读取数据。
  • 使用场景:需要从特定位置读取数据时使用。
  • 典型命令序列:发送随机读命令,指定地址,然后读取数据。 命令执行的流程示例 写入操作 发送页编程命令:将命令发送到 CLE。 指定地址:将要写入的页地址发送到 ALE。 传输数据:将数据发送到数据寄存器。 开始编程:发送确认命令,启动编程过程。 读取操作 发送读页命令:将命令发送到 CLE。 指定地址:将要读取的页地址发送到 ALE。 读取数据:从数据寄存器中读取数据。

reset 在各个sequence下的复位时序

理解 NAND Flash 存储器中的复位命令(Reset)的时序对确保设备正确初始化和恢复正常工作至关重要。复位命令会将 NAND Flash 重置到初始状态,清除所有进行中的命令并返回到空闲状态。以下是不同操作序列中的复位时序解释:

复位时序

复位命令通常包括以下步骤:

  1. 发送复位命令:在命令锁存使能(CLE)高电平时,将复位命令(通常为 0xFF)发送到 NAND Flash。
  2. 等待复位完成:复位操作需要一些时间来完成,这段时间称为复位时间(tRST)。 可以通过查询就绪/忙(R/B#)引脚或读取状态寄存器来确认复位是否完成。
  3. 检查状态寄存器:复位完成后,可以读取状态寄存器以确保 NAND Flash 处于正常状态。

复位命令在不同操作中的使用

  1. 在初始化过程中 在系统启动时,为了确保 NAND Flash 处于已知状态,发送复位命令。 确保所有寄存器和内部状态清除,准备接收新的命令。
  2. 在错误恢复过程中 当发生错误或意外情况时,复位命令用于恢复 NAND Flash 的正常工作状态。 例如,在编程或擦除操作失败后,可以发送复位命令进行恢复。

复位时序示例

在这个时序图中:

       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 0xFF       |____________________________
R/B# |____________________________|
  • CE#:芯片使能引脚
  • CLE:命令锁存使能引脚
  • WE#:写使能引脚
  • IOx:数据引脚
  • R/B#:就绪/忙引脚
  1. CE# 低电平:选中芯片。
  2. CLE 高电平:命令锁存使能。
  3. WE# 低电平:写使能。
  4. 发送复位命令(0xFF):通过数据引脚传输命令。
  5. 等待 R/B# 高电平:表示复位完成。

不同操作序列中的复位命令

  • 在写操作中的复位 如果写操作过程中发生错误,可以发送复位命令清除错误状态,恢复 NAND Flash 的正常工作。
  • 在读操作中的复位 在读操作过程中,如果 NAND Flash 进入不可预期的状态,可以通过复位命令恢复正常状态。

通过理解复位命令的时序,可以确保 NAND Flash 在各种操作场景中正确恢复并准备接收新的操作命令。

read id的应用场景以及解析方法

应用场景

  1. 设备识别:在系统启动时,使用 Read ID 命令识别连接的 NAND Flash 芯片型号和制造商,以便选择正确的驱动程序和配置。
  2. 兼容性检查:确保主控芯片(如微控制器或 FPGA)能够识别和正确配置不同型号的 NAND Flash 存储器。
  3. 诊断和调试:在开发和调试过程中,通过读取 ID 来确认 NAND Flash 芯片型号和版本,帮助定位和解决问题。

解析方法

  1. 发送 Read ID 命令:向 NAND Flash 发送 Read ID 命令(通常为 0x90)。

  2. 读取 ID 数据:按顺序读取一系列字节,这些字节包含制造商 ID、设备 ID、第三、第四和第五字节等信息。

读取 ID 数据的结构示例

假设 NAND Flash 返回如下 ID 数据:

  • 第1字节:制造商 ID(如 0x2C)
  • 第2字节:设备 ID(如 0xA1)
  • 第3字节:扩展信息
  • 第4字节:保留
  • 第5字节:保留

解析步骤:

  • 制造商 ID:识别 NAND Flash 的制造商,例如 0x2C 对应 Micron。
  • 设备 ID:识别具体的 NAND Flash 型号,例如 0xA1 对应某型号。
  • 扩展信息:包含页大小、块大小、平面数等具体参数。

示例解析

假设读取到以下数据:0x2C(制造商 ID) 0xA1(设备 ID) 0x90(扩展信息) 0x15(保留) 0x00(保留)

解析:

  • 0x2C:Micron 制造商 ID。
  • 0xA1:设备 ID,对应特定型号。
  • 0x90:扩展信息,可能表示页大小为 4KB,块大小为 128 页。
  • 其余字节保留或未使用。

通过读取和解析这些 ID 数据,系统能够正确识别和配置 NAND Flash 存储器,确保兼容性和正常运行。

interface change 和driver strength setting

Interface Change 主要指在 NAND Flash 和主控芯片之间改变通信接口的模式或速率

应用场景

  • 不同模式切换: 切换 NAND Flash 通信模式,如从传统的并行接口切换到 ONFI(开放 NAND 闪存接口)标准。
  • 速率调整: 根据系统需求调整数据传输速率,提高数据传输效率。

Driver Strength Setting 指调整 NAND Flash 芯片驱动信号的强度,以适应不同的负载条件和信号完整性要求。

应用场景

  • 信号完整性: 在长电缆或高速传输情况下,增强驱动强度以减少信号衰减和噪声干扰。

  • 功耗优化: 在短距离或低速传输情况下,降低驱动强度以减少功耗。

Interface Change 示例

假设从传统的并行接口切换到 ONFI 3.0 标准:

  • 发送切换命令:主控芯片发送接口切换命令。
  • 配置寄存器:设置相关寄存器以启用新的接口模式。
  • 确认切换:通过读取状态寄存器确认切换成功。

Driver Strength Setting 示例

假设在高速数据传输情况下需要增强驱动强度:

  • 发送设置命令:主控芯片发送驱动强度设置命令。
  • 配置寄存器:调整驱动强度寄存器以设置新的强度值。
  • 确认设置:通过读取状态寄存器确认设置成功。 通过合理的 Interface Change 和 Driver Strength Setting,能够优化 NAND Flash 的性能和可靠性。

各个sequence的基本时序

读操作时序

步骤:

  • 发送读命令:在 CLE 高电平时,发送读命令。
  • 发送地址:在 ALE 高电平时,发送页地址和列地址。
  • 读取数据:等待数据准备好,通过数据引脚读取数据。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 命令        | 地址         | 数据____________________________
R/B# |____________________________|

写操作时序

步骤:

  • 发送写命令:在 CLE 高电平时,发送写命令。
  • 发送地址:在 ALE 高电平时,发送页地址和列地址。
  • 传输数据:在 WE# 低电平时,通过数据引脚传输数据。
  • 发送编程确认命令:在 CLE 高电平时,发送编程确认命令。
  • 等待编程完成:通过 R/B# 引脚检测编程完成状态。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 命令        | 地址         | 数据____________________________
R/B# |____________________________|

擦除操作时序

步骤:

  • 发送擦除命令:在 CLE 高电平时,发送擦除命令。
  • 发送块地址:在 ALE 高电平时,发送块地址。
  • 发送擦除确认命令:在 CLE 高电平时,发送擦除确认命令。
  • 等待擦除完成:通过 R/B# 引脚检测擦除完成状态。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 命令        | 地址         | 确认____________________________
R/B# |____________________________|

复位操作时序

步骤:

  • 发送复位命令:在 CLE 高电平时,发送复位命令(0xFF)。
  • 等待复位完成:通过 R/B# 引脚检测复位完成状态。
       ____________________________
CE#  __|                            |_____________                 _______
CLE  __|           |_______________|___________                 _______
WE#  __|           |_______________|_______________________
IOx  | 0xFF       |____________________________
R/B# |____________________________|

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/365868.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的时间数据格式化详解与应用示例

文章目录 1、基本概念基本格式化方法 2、实用的时间格式化方法格式化日期格式化时间格式化时间戳解析日期时间字符串 3、实际应用4、应用示例结论 在软件开发中,时间数据是无处不在的。无论是用户登录时间、数据备份时间,还是日志记录,都需要…

复制完若依后,idea没有maven窗口

右击项目 添加框架 添加maven框架就可以了

高斯过程的数学理解

目录 一、说明 二、初步:多元高斯分布 三、 线性回归模型与维度的诅咒 四、高斯过程的数学背景 五、高斯过程的应用:高斯过程回归 5.1 如何拟合和推理高斯过程模型 5.2 示例:一维数据的高斯过程模型 5.3 示例:多维数据的高斯过程模…

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…

Mustango——音乐领域知识生成模型探索

Mustango:利用领域知识的音乐生成模型 论文地址:https://arxiv.org/pdf/2311.08355.pdf 源码地址:https://github.com/amaai-lab/mustango 论文题为**“**利用音乐领域知识开发文本到音乐模型’Mustango’”。它利用音乐领域的知识从文本指…

明日周刊-第14期

不好意思又拖更了哈哈哈。不过赶在7月的第一天,打算更新一下。建党节,值得纪念的一天。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 国内科技新闻 深中通道建成通车 时间:2024年6月30日 内容:深圳至中山跨江通道正式建成开…

【Spring Boot】spring boot环境搭建

1、环境准备 JDK安装:确保安装了Java Development Kit (JDK) 1.8或更高版本。JDK是Java编程的基础,Spring Boot项目需要它来编译和运行。Maven或Gradle安装:选择并安装Maven或Gradle作为项目构建工具。Maven通过pom.xml文件来管理项目的依赖…

PCL 基于点云RGB颜色的区域生长算法

RGB颜色的区域生长算法 一、概述1.1 算法定义1.2 算法特点1.3 算法实现二、代码示例三、运行结果🙋 结果预览 一、概述 1.1 算法定义 点云RGB区域生长算法: 是一个基于RGB颜色信息的区域生长算法,用于点云分割。该算法利用了点云中相邻点之间的颜色相似性来将点云分割成…

nodejs--【Express基本使用】

10 【Express基本使用】 https://www.expressjs.com.cn/ 基于 Node.js 平台,快速、开放、极简的 web 开发框架。 1.Express的安装方式 Express的安装可直接使用npm包管理器上的项目,在安装npm之前可先安装淘宝镜像: npm install -g cnpm -…

【从零开始学架构 架构基础】五 架构设计的复杂度来源:低成本、安全、规模

架构设计的复杂度来源其实就是架构设计要解决的问题,主要有如下几个:高性能、高可用、可扩展、低成本、安全、规模。复杂度的关键,就是新旧技术之间不是完全的替代关系,有交叉,有各自的特点,所以才需要具体…

vue中路由来回切换页面直接卡死

今天发现一个很严重的问题,项目好不容易做好了,结果页面多了,切换之后卡死。页面所有的交互效果都失效了。 排查了许久的错误原因最后发现原来是路由名称重复了。 如上图当页面跳转到riskdetails详细页面之后,框架则被这个详情页…

rga_mm: RGA_MMU unsupported Memory larger than 4G!解决

目录 报错完整log如下:解决方案:报错完整log如下: [ 3668.824164] rga_mm: RGA_MMU unsupported Memory larger than 4G! [ 3668.824305] rga_mm: scheduler core[4] unsupported mm_flag[0x0]! [ 3668.824320] rga_mm: rga_mm_map_buffer map dma_buf err

(七)glDrawArry绘制

几何数据&#xff1a;vao和vbo 材质程序&#xff1a;vs和fs(顶点着色器和片元着色器) 接下来只需要告诉GPU&#xff0c;使用几何数据和材质程序来进行绘制。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostrea…

六西格玛绿带培训的证书有什么用处?

近年来&#xff0c;六西格玛作为一套严谨而系统的质量管理方法&#xff0c;被广泛运用于各行各业。而六西格玛绿带培训证书&#xff0c;作为这一方法论中基础且重要的认证&#xff0c;对于个人和企业而言&#xff0c;都具有不可忽视的价值。本文将从多个角度深入探讨六西格玛绿…

每日Attention学习7——Frequency-Perception Module

模块出处 [link] [code] [ACM MM 23] Frequency Perception Network for Camouflaged Object Detection 模块名称 Frequency-Perception Module (FPM) 模块作用 获取频域信息&#xff0c;更好识别伪装对象 模块结构 模块代码 import torch import torch.nn as nn import to…

汽车内饰塑料件光照老化实验箱

塑料件光照老化实验箱概述 塑料件光照老化实验箱&#xff0c;又称为氙灯老化试验箱&#xff0c;是一种模拟自然光照条件下塑料材料老化情况的实验设备。它通过内置的氙灯或其他光源&#xff0c;产生接近自然光的紫外线辐射&#xff0c;以此来加速塑料及其他材料的光老化过程。…

《重构》读书笔记【第1章 重构,第一个示例,第2章 重构原则】

文章目录 第1章 重构&#xff0c;第一个示例1.1 重构前1.2 重构后 第2章 重构原则2.1 何谓重构2.2 两顶帽子2.3 为何重构2.4 何时重构2.5 重构和开发过程 第1章 重构&#xff0c;第一个示例 我这里使用的IDE是IntelliJ IDEA 1.1 重构前 plays.js export const plays {&quo…

MySQL的简介和安装目录

今日总结到此结束&#xff0c;拜拜&#xff01;

Lua: 轻量级多用途脚本语言

Lua 是一种高效而轻量级的脚本语言&#xff0c;具备强大的扩展性和灵活性&#xff0c;广泛应用于游戏开发、嵌入式系统、Web 应用等多个领域。本文将深入探讨 Lua 的特性、应用场景以及如何使用 Lua 进行开发。 1. Lua 的起源与发展 Lua 的发展始于上世纪90年代初&#xff0c;…

0-30 VDC 稳压电源,电流控制 0.002-3 A

怎么运行的 首先&#xff0c;有一个次级绕组额定值为 24 V/3 A 的降压电源变压器&#xff0c;连接在电路输入点的引脚 1 和 2 上。&#xff08;电源输出的质量将直接影响与变压器的质量成正比&#xff09;。变压器次级绕组的交流电压经四个二极管D1-D4组成的电桥整流。桥输出端…