ONFI 协议-下载地址:http://www.onfi.org/specifications
每个版本都有,请自行下载;
本文尝试解析5.0版本;
目录:
第5章
第一章开始:
第一章内容主要是一些名词概念的定义,可以先了解再结合后文的解释学习;
第一个比较重要的概念是address:
address 包含row address 和column address;
row address 包含page/block/lun 这些重要信息;
column address 则表示一个page中需要指向的byte或者word;
column address 的最后一个bit必须为0,在NV-DDR/NV-DDR2/NV-DDR3/NV-LPDDR4中,有这个约束是因为这几个协议传递数据的最小单位都是2bit起步;
通常情况下,一般的NAND产品读写都是以page为单位,所以column address一般都是0;
block也是比较重要的概念:
block是由多个page组成的最小的erase 单位;
这个概念需要理解:读写是以page为单位;而擦除是以block为单位;这是NAND的硬件设计限制要求的;
这个限制条件会催生NAND 的系统级产品中很多相关的配套算法来优化写放大/GC等功能;
column:此处又专门出现了,就是指一个page中的偏移位置;
此处提到了page register: 因为在NAND的结构中(后文有提及),比如需要写一个page的数据;数据先通过DQ信号线写入page register;然后page register 中的数据再传入NAND中;
每个page register 表示1个bit的数据对应1个cell(SLC);
所以page register 的偏移就可以表示数据的偏移;
CTT的挺重要的概念请自行百度,电路技术信号判断相关的概念;
DBI 也挺重要的,请自行百度;提一点为什么要用DBI;DBI就是转换信号和数字的映射关系,
比如高电平表示1,低电平表示0;但是如果一直是1,就一直高电平,这对NAND不够友好,为了提高NAND寿命,可以使用DBI 转换信号关系,设置转换后,高电平表示0,低电平表示1;
defect area:表示出厂前检查的故障区域;NAND有良率,良率表示并不是所有的block都是可用的,部分block可能出现故障;出现故障的block出厂时会被标记;后文会提到怎么把这些标记的bad block 搜寻出来;
Bad block 不可用;
device 也是一个重要的标准概念;
此处device 表示一个封装好的NAND 单位;也就是一个封装后的NAND芯片;
一个device 可以包含1个或者多个NAND targets ;
device 包含target ;后面再总结说明;
差分信号:差分信号是为了提高信号的准确性的,在高速信号中是比较常用的手段;
host target 表示共用1个CE信号的NAND targets;
此处已经说明了host target 可以包含多个nand target;
device 表示一个完整的NAND 封装芯片,一个nand芯片是可以包含多个CE信号的;
host target 表示共享1个CE信号的多个nand target;
也就是说1个CE信号可以包含多个NAND target;
那host target 的意义是什么?因为主机访问NAND是要通过CE信号的;
所以1个CE信号对于host 定义为1个host target 也是合情合理的;
此处总结:Device大于或者等于host target,host target 大于等于NAND target;
边沿信号:NAND使用的协议需要使用边沿信号;这个在电路设计中很常见;
LTT和前面的CTT 都请自行百度;
LUN 是可以独立操作的最小逻辑单位;
1个NAND target 可以包含1个或者多个LUN;
NAND target : 一个nand package中的共用一个CE信号的一组lun;
所以NAND target 是包含多个lun的;
ODT也是一个重要的信号功能,请自行百度;
主要是为了减少信号的干扰;
page 的概念很重要;
page 是读和写的最小单位;这个不是人为规定,而是NAND的物理结构决定的;
通常情况下target 指NAND target;
VREFQ: 输入的参考电压信号
Vtt :电信号;
计算机通用的换算关系,在NAND层面也是一样的:
8Bit 作为1个Byte;
2Byte作为1个Word
4Byte作为1个Dword;