从入门到放弃——NandFlash

从入门到放弃——NandFlash ONFI接口

  • 正经地比较Nand flash和Nor flash
  • 不用看这些缩写,后面绝对用不到
  • 令人窒息的ONFI 2.2协议
    • ONFI 2.2的两种友好模式

前言:这是一篇正经的劝人放弃的文章,太难了,nandflash

正经地比较Nand flash和Nor flash

这有什么好区别的?一个是nand一个是nor咯,啥,Nand和Nor是什么,不就是数字电路学的与非和或非,如下表格

1 0
1 nand=0 nor=0 nand=1 nor=0
0 nand=1 nor=0 nand=0 nor=1

简而言之言而总之,flash控制器就是对存储空间进行管理,一个是nand的方式,一个是nor的方式。注意啦,下面我要抛概念啦,还不懂就放弃吧。

对于Norflash,如果任意一个存储单元被相应的字线选中打开,那么对应的位线将变为 0(是不是和nor很像)。
对于Nandflash,需要使一个位线上的所有存储单元都为 1,才能使得位线为 0(是不是和nand很像)。

不用看这些缩写,后面绝对用不到

SLC:Single-Level Cell,就是说,一个存储单元只存1 bit数据。速度快,一个人住一间房,一间房住一个人,没有分配问题;寿命长,约10万次擦写寿命;价格贵,一个人住一间房,当然贵啦
MLC:Multi-Level Cell,一个存储单元可以存2 bit或2 bit以上的数据。速度一般,一间房不止住一个人了,叫人出去不能再直接只说那谁了。寿命一般,只有5000-10000次擦写寿命;价格一般,一间房毕竟不止住一个人了
chip:芯片层,最外层结构;每个nandflash芯片都拥有一套完整的外围电路,独立的 IO信号引脚,比如片选信号、工作状态信号(Ready/Busy)等。一个芯片内部是由多个晶圆 die 组成,这样提高芯片的利用率。
die:第二层结构,在同一芯片的多个晶圆是共用一套外围电路和 IO信号线。每一个晶圆由两个分组 plane 组成
plane:分组(plane)层是闪存中重要的层次,为了提高闪存的读写速度,在每个分组中设有两个寄存器,数据寄存器(data register)和缓存寄存器(cache register)。读页与写
页的数据暂存在 data register 中,通过 I/O 引脚输入与输出。cache register 用于cache方式的读写。每个分组有 2048 个存储块(block)
block:存储块,每一个存储块分成 128 个存储页(page)。
page:存储页,每个页的大小与分组中数据寄存器大小是相同,这是为了读写操作时进行数据缓存,分组寄存器的大小应该设置成与闪存的读写单元一样大小。在每页中前 8KB是用于存储数据,称为主数据区(Main Area),而后 448bytes 是用于存放 ECC 数据校验码和坏块标志等信息,称为备份数据区(Spare Area)

存储总容量为:(8K+448)byte×128 page×2048block×2plane =34.56Gb

令人窒息的ONFI 2.2协议

前言:为什么只说ONFI 2.2呢,因为我只做过2.2。ONFI2.2已经很让人窒息了,支持的模式有两种,异步SDR和同步NV-DDR,拥有ECC自纠错功能,已经很让人头疼

ONFI 2.2的两种友好模式

ONFI 2.2有两种模式,一种是异步SDR,一种是NV-DDR,他们的接口信息如下表

SDR NV-DDR type description
ALE ALE Input 地址锁存有效
CE_n CE_n Input 片选信号
CLE CLE Input 命令锁存有效
I/Q[7:0] DQ[7:0] I/O 数据输入/输出
DQS I/O 数据选通信号
RE_n W/R_n Input 读有效/(读写方向)
WE_n CLK Input 写有效/时钟信号
WP_n WP_n Input 写保护
R/B_n R/B_n Output ready/Busy_n

你可能感兴趣的:(笔记)