【FLASH存储器系列十】Nand Flash芯片使用指导之一

news/2024/5/3 2:29:12/文章来源:https://blog.csdn.net/highman110/article/details/127927288

目录

1.1 芯片简介

1.2 功能框图

1.3 存储结构

1.4 信号定义

1.5 双平面(plane)操作

1.6 Die间交错操作

1.7 错误管理


      

        今天以MT29F8G08AJADAWP芯片为例,说明nand flash的操作方法。

1.1 芯片简介

        这是一款镁光的容量8Gb,总线位宽8位的SLC NAND Flash,兼容ONFI 1.0标准。芯片内包含两个die,每个die为4Gb,每个die有两个plane,每个plane为2Gb,每个plane有2048个block,每个block为128K,每个block有64个page,每个page为2K,以上容量不包含每页用来存储坏块信息和ECC信息的spare area。

1.2 功能框图

1、I/O control:数据、命令、地址的输入输出口;

2、Status Register:片内的状态寄存器;

3、Command Register:命令锁存寄存器;

4、Address Register:地址由地址寄存器锁存并发送到行解码器以选择行地址,或发送到列解码器以选择列地址;

5、Control Logic:解码总线状态,判断当前属于地址输入、命令输入、或是数据输入输出周期;

6、存储阵列:两个plane,上图仅为芯片其中一个die;

7、Row decode:行地址解码;

8、column decode:列地址解码;

9、Data register:数据寄存器;

10、Cache register:缓存寄存器;

11、ECC:进行数据校验。

        注意:数据寄存器和缓存寄存器可以单独操作,在缓存操作命令下,如页缓存读、页缓存编程,可以提升数据吞吐量。这个和CPU的cahe原理是一样的。

1.3 存储结构

        Die、plane、Block、page前文已经说明,大家对照下图可以清晰地明白,不再赘述。这里说明一下每个plane上的数据寄存器和缓存寄存器,普通的页编程、页读取不需要经过数据寄存器,外部结构通过缓存寄存器直接和存储阵列交互。但是外部接口速率和存储阵列的读写速率相对较慢,以编程操作为例,如果要等外部数据全部输入进缓存寄存器,再由缓存寄存器往存储阵列里写,耗时较长,这时增加一个数据寄存器,在外部数据全部输入进缓存寄存器后,将数据拷贝到数据寄存器,然后在数据寄存器往存储阵列写数据期间,外部接口可以开启下一页数据往缓存寄存器里写,如此反复,则可以提升数据吞吐量。

1.4 信号定义

        信号定义如下表,其中CE#和R/B#分别有两个引脚,分别对应两个die:

1.5 双平面(plane)操作

        每个NAND闪存逻辑单元(LUN)被划分为多个物理平面。每个平面包含独立于其他平面的高速缓存寄存器和数据寄存器。这些平面通过低位的块地址位寻址。如存储结构图中的Note所示。

        双平面操作通过在多个平面上执行并发的读取、编程或擦除操作,更好地利用了这些物理平面上的NAND闪存阵列,显著提高了系统性能。两个平面之间的操作必须是相同类型的;例如,不能在一个平面上执行PROGRAM操作而在另一平面上执行ERASE操作。

        当发出双平面编程或擦除操作时,使用READ STATUS(70h)命令并检查先前的操作是否失败。如果READ STATUS(70h)命令指示发生错误(FAIL=1和/或FAILC=1),则使用READ STAUTS ENHANCED(78h)命令确定哪个平面操作失败。

1.6 Die间交错操作

        在有多个die的芯片中,可以通过die间交错操作提升性能。交错操作是在一个die繁忙(RDY=0)时向空闲die(RDY=1)发出的操作。但在RESET(FFh)、读标识(90h、ECh、EDh)和特性配置(EEh、EFh)操作之后,直到目标上所有die的ARDY=1之前,禁止多die交错操作。

        在交错操作期间,有两种方法可以确定操作是否完成。R/B#信号指示对应die何时完成其操作。当任何die忙时,R/B#保持为低。当R/B#变高时,对应die处于空闲状态,操作完成。或者,也可以通过READ STATUS ENHANCED(78h)命令单独报告每个die的状态。

        如果裸片(LUN)正在执行高速缓存操作,如页高速缓存编程(80h-15h),则当状态寄存器位6为1时(RDY=1),裸片(LUN)能够接受另一高速缓存操作的数据。所有操作(包括高速缓存操作)在状态寄存器位5为1时(ARDY=1)在裸片上完成。

1.7 错误管理

        通常Nand Flash出厂时就有可能存在缺陷,同时这种缺陷会影响块擦除,这样的缺陷被称为坏块。所以这时就需要坏块管理和纠错算法来保证数据的完整性。

        每个block的第一个(规范规定可以是第一个也可以是最后一个)page中有64字节的spare area,可用来标记坏块。如果一个块是有缺陷的,并且使用 8-bit 数据访问方式,则制造商应该通过设置有缺陷的块的第一个(或者最后一个)page 中,缺陷区域(这个缺陷区域规范中没有明确是什么地址)的第一个Byte 为00h,来标记有缺陷的块。如果一个块是有缺陷的并且使用16-bit数据访问方式,则通过设置缺陷块的第一个(或最后一个)page 中,缺陷区域的第一个word 为 0000h,来标记有缺陷的块。

        主机软件在对nand flash进行编程或擦除前,应先到每个block的第一个page First spare area location进行检查,判断哪些block是坏块,然后生成一张坏块表。

        为了保证数据的完整性,建议做如下操作:

        1、在编程和擦除操作后检查状态;

        2、在典型场景下,使用最小ECC要求;

        3、使用坏块管理机制和磨损均衡算法;

Description

Requirement

Minimum number of valid blocks (NVB) per LUN

4016(出厂时好块不能低于4016)

Total available blocks per LUN

4096

First spare area location

x8: byte 2048
x16: word 1024

Bad-block mark

x8: 00h
x16: 0000h

Minimum required ECC

4-bit ECC per 528 bytes

Minimum ECC with internal ECC enabled

4-bit ECC per 516 bytes (user data) + 8 bytes (parity data)

Minimum required ECC for block 0 if PROGRAM/ERASE cycles are less than 1000

1-bit ECC per 528 bytes

        芯片的大致功能介绍到这里,下一讲分享部分重要的操作指令,敬请期待!

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

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

相关文章

liunx集成jmeter进行压测实践

首先liunx环境需要部署jdk 1,获取jmeter免安装包:点击我获取免安装包 2,获取jmeter-manger工具,用于生成报告,日志等 点击我获取工具 3,在服务器上新建一个文件夹存放jmeter,推荐在/usr/local/下面,我这里由于权限问…

E 排队(排列组合)[牛客小*白月赛61]

题面如下: 思路 or 题解: 对于一个长度为 nnn 的 排列组合 如果存在一对 逆序对 (x,y)(x, y)(x,y) xxx 在 yyy 的前面有 n∗(n−1)2\frac{n * (n - 1)}{2}2n∗(n−1)​ 种情况 剩下 n−2n - 2n−2 个位置可以随意填数进去,不会影响到逆序对 …

狗屎一样的面试官,你遇到过几个?

做了几年软件开发,我们都或多或少面试过别人,或者被别人面试过。大家最常吐槽的就是面试造火箭,进厂拧螺丝。今天就来吐槽一下那些奇葩(gou)一样的面试官 A 那是在我刚工作1年的时候,出去面试前端开发。 那…

Python编程 元组的创建

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.元组知识点 二.元组(tuple) 1.元组介绍(掌握) 2.元组创建(掌握) 3.…

鉴源论坛 · 观模丨浅谈随机测试

作者 | 黄杉 华东师范大学软件工程学院博士 苏亭 华东师范大学软件工程学院教授 首发 | 鉴源论坛 观模 01 什么是随机测试 (Random Testing) 随机测试是一种使用随机、相互独立的程序输入来对计算机程序进行测试的黑盒软件测试(在完全忽…

Springboot常用参数注解

访问路径为http://localhost:8080/ PathVariable GetMapping("/get/{id}/blank/{name}")public Map getValue(PathVariable("id") Integer id,PathVariable("name") String name,PathVariable Map<String,String> kv){Map map new Hash…

大一新生HTML期末作业 学生个人网页设计作业 HTML5响应式个人简历网站模板 web前端网页制作课作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

CNN (吴恩达 2021

week1-2 02_边缘检测例子_哔哩哔哩_bilibili ​ ​ 我们之前在说面部识别介绍过&#xff0c;要识别面部&#xff0c;都是从细微的边缘入手&#xff0c;一层一层聚类&#xff0c;最终实现人脸的识别。神经网络由浅层到深层&#xff0c;分别可以检测出图片的边缘特征 、局部特…

web前端大一实训 HTML+CSS+JavaScript王者荣耀(60页) web课程设计网页规划与设计 HTML期末大作业 HTML网页设计结课作业

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【MySQL进阶】深入理解B+树索引底层原理

【MySQL进阶】深入理解B树索引底层原理 文章目录【MySQL进阶】深入理解B树索引底层原理一、前言——没有索引的查找1、在一个页中的查找2、在很多页中查找3、总结二、索引1、一个简单的索引方案2、InnoDB中的索引方案3、B 树4、聚簇索引5、二级索引6、回表7、联合索引三、InnoD…

【MySQL数据库笔记 - 进阶篇】(二)索引

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;暂定 &#x1f4dd;视频地址&#xff1a;黑马程序员 MySQL数据库入门到精通 &#x1f4e3;专栏定位&#xff1a;这个专栏我将会整理 B 站黑马程序员的 MySQL…

linux备份mysql8.0数据库脚本

文章目录环境要求步骤1、创建一个.sh文件编写shell脚本2、添加定时任务环境要求 linux系统&#xff0c;安装了mysql8.0 步骤 1、创建一个.sh文件编写shell脚本 创建文件的命令&#xff1a; vim ***.shshell文件文件参考自文章 链接 export LANGen_US.UTF-8 #注意&#xf…

Python如何爬取免费爬虫ip

做过大数据抓取的程序员应该都知道&#xff0c;正常市面上的爬虫ip只分为两种&#xff0c;一种是API提取式的&#xff0c;还有一种是账密形式隧道模式的。往往因为高昂费用而止步。对于初学者觉得没有必要&#xff0c;我们知道每个卖爬虫ip的网站有的提供了免费IP&#xff0c;可…

webpack5 Preload / Prefetch解决按需求加载速度

代码分离 | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换&#xff08;transform&#xff09;、打包&#xff08;bundle&#xff09;或包裹&#xff08;pa…

PDPS软件:机器人控制输送带运行虚拟仿真操作方法

目录 概述 旋转台设备运动机构介绍 旋转台设备模型导入与安装 旋转台设备操作创建 机器人控制旋转台设备离线程序命令添加 仿真运行 概述 旋转台也是工业机器人生产线中常用的外围设备&#xff0c;工件安装在旋转台的夹紧机构上&#xff0c;旋转台通过旋转实现工作位置的…

最新最全面的Spring详解(二)——classpath扫描和组件管理

前言 本文为 【Spring】classpath扫描和组件管理 相关知识&#xff0c;下边将对Component 和及其派生出的其他注解&#xff0c;自动检测类和注册beanDifination&#xff0c;组件命名&#xff0c;为自动检测组件提供scope&#xff0c;使用过滤器自定义扫描&#xff0c;在组件中定…

我说MySQL里每张表不要超过100w数据,面试官让我回去等通知?

V-xin&#xff1a;ruyuanhadeng获得600页原创精品文章汇总PDF 目录 1、面试题2、面试官心理分析3、面试题剖析 1、面试题 事务的几个特点是什么&#xff1f;数据库事务有哪些隔离级别&#xff1f;MySQL的默认隔离级别&#xff1f; 2、面试官心里分析 用mysql开发的三个基本…

深度学习项目:男女性别识别【附完整源码】

性别分类对于人机交互应用和计算机辅助生理或心理分析等商业领域的许多应用至关重要&#xff0c;因为它包含有关男女特征差异的广泛信息。 本次案例收集了接近二十万的男女数据集图片。 文章目录性别分类简介使用 Python 进行性别分类的机器学习项目导入相关库和数据模型搭建…

<SQL编程工具MySQL、SQLyog安装及环境配置教程>——《SQL》

目录 1.MySQL安装&#xff1a; 1.1 MySQL下载安装&#xff1a; 1.2 MySQL环境变量配置&#xff1a; 2.SQLyog安装&#xff1a; 2.1 SQLyog下载安装&#xff1a; 3.写在最后的话&#xff1a; 后记&#xff1a;●由于作者水平有限&#xff0c;文章难免存在谬误之处&…

winform语言切换C#设计笔记(八)

一、修改当前区域性 string languageName“zh-CN”; Thread.CurrentThread.CurrentUICulture new CultureInfo(languageName); 二、定义语言切换类Mullanguage或方法如下&#xff1a; private static Dictionary<string, ResourceManager> ResManagerDic new Dictionar…