ONFI协议研究

本文介绍了ONFI作为NAND Flash的标准,从物理接口、内部结构、数据接口时序到CMD操作流程的深入解析。涵盖了管脚功能、LUN与Page结构,以及多平面操作和操作流程示例。适合初学者了解NAND Flash的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

ONFI是Nand Flash的一套公开标准
官网:http://www.onfi.org/

机缘巧合,就看一下
官网有提供PDF下载,最新版本5.0,383页

上来就看英文实在一头雾水,最后找到了4.0的中文版
电子发烧友网:http://www.elecfans.com/soft/68/guide/2017/20170727535427.html

后来,还是想先看些入门科普级的
于是在京东读书上找到了《固态存储:原理、架构和数据安全》

ONFI 5.0目录

  1. 总体介绍,概念缩写
  2. 对外的物理接口(管脚)
  3. 内部的物理结构
  4. 数据接口和时序
  5. 命令字
  6. 组合操作
  7. 操作流程

第一章

第二章:管脚

Bing搜了把tsop-48
https://cn.bing.com/search?q=tsop-48&qs=n&form=QBRE&sp=-1&pq=tsop-48&sc=1-7&sk=&cvid=94EEFB7B26BE45B6877E2025ACCAEE7D
很多是卖存储贴片(?成品)

有些管脚硬件和工艺人员更关注,比如电源等不可变的
有些软件和驱动人员更关注,比如查询状态、控制使能等可变的

所以重点看2.8章:信号描述
像看寄存器手册一样,尽力理解每个管脚干啥的

管脚理解
R/B_x_n。OReady/Busy。输出管脚。用于获取Ready/Busy状态
RE_x_n(RE_x_t)。IRead Enable (True)。输入管脚。用于设置读模式
RE_x_c。IRead Enable Complement。输入管脚。一定场景选用
W/R_x_n。IWrite/Read Direction。输入管脚。看名字像是可以控制读写方向(再进一步怎么玩,没有项目实践,还真就不知道)
CE_x_n。IChip Enable。输入管脚。用于多芯片场景,表示选中
(后面再慢慢看)

第三章:内部结构

能不能真正入门,就看对这一章节的理解了

一个设备有多个target(用CE_n信号选中)。一个target包含若干个LUN(逻辑单元)

LUN是能够独立执行CMD和上报状态的最小单元。特别是,各个独立的LUN,可以并行执行任意命令序列。
例如,允许在LUN 0上执行Page Program操作,同时在LUN 1上执行Read命令
到3.1.3章节看多LUN操作限制
一个LUN包括至少一个Page寄存器和一个Flash阵列
Page寄存器数量取决于LUN支持的多Plane操作数量
Flash阵列包含若干Block

Block是LUN Flash阵列中,可擦除数据的最小单元。LUN中的Block数量没有限制
Block包含若干Page

Page是读写操作寻址的最小单元。Page包含若干Byte或Word。每个Page的用户数据Byte数量,不包括额外的数据区,应该是2的N次方。每个Block中的Page数量应该是32的倍数

每个LUN应该有至少一个Page寄存器。Page寄存器用于临时存储数据,在移到Flash阵列的Page之前,或者在从Flash阵列的Page移出之后

Page寄存器中的Byte或Word位置,被称为Column

在这种结构里,有2种机制实现并行。同时会有多个CMD到不同的LUN。为了进一步在一个LUN中实现并行,多Plane操作可能用于执行额外的并行依赖操作

第四章:数据接口和时序

ONFI支持5种不同的数据接口类型:SDR、NV-DDR、...
SDR数据接口是传统的NAND接口,使用RE_n去锁定数据读取,WE_n去锁定数据写入,不包括时钟
NV-DDR数据接口双倍数据数率,包括标识锁定哪些命令字和地址的一个时钟,标识锁定哪个数据的一个数据闸门
...

第五章:CMD定义

表5-1概述ONFI的命令集

第一个CMD周期的指定值,表示将要执行的CMD。有些CMD有第二个CMD周期,表5-1有指定。通常,CMD有第二个CMD周期的,都有一个地址

第六章:多平面操作

LUN支持多平面读取、写和擦除操作。多平面操作是指向同一LUN上的不同Block发出相同类型的多个命令。有关解决多平面操作的限制,请参见第5.7.1.27节。多平面操作有两种方法:并行操作和重叠操作。
在执行多平面操作时,这些操作/功能应为相同的类型。可用于多平面操作的功能有:
- 写Page
- Copyback方式的读和写
- 块擦除
- 写

第七章:操作流程

7.1.目标操作流程
目标状态机描述了与目标一起操作时允许的序列。如果没有一个弧为真,则目标仍处于当前状态。

7.1.1.变量
本节描述了在目标状态机中使用的变量。

tbStatusOut
当数据读取周期应该返回状态值时,此变量被设置为TRUE。此变量的上电值为FALSE。

tbChgCol
允许使用“Change Read Column”更改列时,将此变量设置为TRUE。此变量的上电值为FALSE。

tbChgColEnh
当允许使用“Change Read Column Enhanced”更改列时,将此变量设置为TRUE。此变量的上电值为FALSE。

tCopyback
如果目标正在发出Copyback命令,则此变量设置为TRUE。此变量的上电值为FALSE。

tLunSelected
此变量包含主机当前选择的LUN。此变量的上电值为0。

tLastCmd
此变量包含目标所接收到的最后一个命令的第一个周期(除了70h/78h)。

tReturnState
此变量包含状态操作后要返回的状态。

tbStatus78hReq
当下一个状态操作应为78h命令(而不是70h命令)时,此变量被设置为TRUE。此变量的上电值为FALSE。

其它网文参考

  • NAND FLash基础概念介绍
    https://www.cnblogs.com/yfceshi/p/6854968.html

  • Nand Flash数据存储单元的整体架构
    https://www.cnblogs.com/yfceshi/p/6854968.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值