Nand Flash 地址数据的确定

时间:2022-01-10 17:32:18

NAND Flash使用8位数据线,同时作为地址线,命令线,数据线复用。类似于平时使用的点阵液晶显示器的操作方式。这里作为学习的记录,说一下nand flash 的地址的确定方式。nand flash 的内部分为 Block(块)、Page(页). 其中 一块nand flash 包含若干 Block,每个Block里包含若干Page.页是nand 的最小操作单元。

一下图片显示的是三星16Gbit的Nand Flash  K9GAG08U0E 的结构图:

Nand Flash 地址数据的确定

如图中所示,这款flash 共有2076个block(块),每个block有128个Page(页),每个页包含(8k+436)Bytes的数据,其中8k是数据区,436B是用作保存效验等一些特定用途的数据。由图中表格可以看出定位nand中的一个位置的时候需要知道是在哪个block,哪个page中的哪个字节就可以了。

首先我们把图中的数据列一下:

 1 Page  = (8K +436) Bytes = 8628 Byte = 0x21B4 Bytes =  PS  // 这个用PS代指页的字节大小

1 Block  = 128 Pages = (1M + 54.5K) Bytes = 128 PS


假如我们需要访问第 5 Block ,第2页的第1077个字节。      (这里的block 、page 和页内地址均为从0开始计数)

当前如果我们知道具体的Block、Page 和页内位置,

 我们可以直接将 block page 和页中的位置 三个参数组织后,分别传递给页地址 A14-A20,A21-A32,A0-A13.

同时我们也可以根据给出的地址的绝对值计算出相应的block page 和页内的位置。

上述的绝对位置用如果公式计算:

      绝对地址 SUM =  块大小 * 块 + 页大小 * 页 + 页中的位置

                                 = 128PS*5 + PS *2 + 1077

                                 = (128*5 + 2)PS + 1077  =  5540253 = 0x

所以绝对地址必定为页大小的整数倍 + 在页内的位置大小。

确定 Column Address :页大小为0x21B4 (14位),即绝对地址 低14位为Column Address  A0-A13。

A0-A13 = SUM%PS =  1077 = 0x435    A0-A7 = 0x35  , A8-A13 = 0x4 & (0x3f) = 0x4

低8位为第一个发送周期发送,剩余6位作为第二周期的高六位发送,另外高两位为低电平0。

确定Page Address: 每个Block 有128(0x80)个页。即值为 0-0x7F,占7个bit位。即 A14 - A20.

A14-A20 = (SUM / PS )%128 = 2

即SUm 的除去 上面的0x21B3所占用的bit位,接着的7个bit位应该表示的就是 Page Address 。

A21 - A32 = (SUM /PS ) /128 = 5.

所以第三周期发送的值为  (2 &0x7F)| ((5&0x1)<<7)

第四周期发送( 5>>1) & 0xFF

第五周期发送   (5 >>8) &0x7    |  ( A33<<3)



Nand Flash 地址数据的确定