nand flash 寻址


以 samsung的nand flash  型号是K9K8G08U0A,大小是1G的,8bit的 来说明 :
具体参数 

1 Block = 64 Pages 
(128K + 4k) Byte 

1 Page = (2K + 64)Bytes 
1 Block = (2K + 64)B x 64 Pages 
= (128K + 4K) Bytes 
1 Device = (2K+64)B x 64Pages x 8,192 Blocks 
= 8,448 Mbits 

一个chip共512K Pages 
(=8,192 Blocks) 

我们要访问其中的第 7000个块中的第 64 页中的1208 字节处的地址,此时,我们就要先把具体的地址算出来:
 
 物理地址 = 块大小×块号+页大小×页号+页内地址
 
=7000×128K+64×2K+1208
=0x36B204B8

下图为是5个周期的地址:

 
结合图,我们可以看出,此 Nand Flash 地址周期共有 5 个,2 个列(Column),3个行(Row)周期,而对于对应地,我们可以看出,实际上,列地址 A0~A10,就是页内地址,地址范围是从0 到2047,而对出的 A11,理论上可以表示 2048~4095,但是实际上,我们最多也只用到了2048~2011, 用于表示页内的oob区域,其大小是 64 字节。对应地,A12~A30称作页号,页的号码,可以定位到具体是哪一个页。而其中,A18~A30,表示对应的块号,即属于哪个块

简单解释完了地址组成,那么就很容易分析上面例子中的地址了:

0x36B204B8 = 0011 0110 1011 0010 0000 0100 1011 1000,分别分配到5个地址周期就是:
1st周期,A7~A0:     1011 1000 = 0xB8
2nd周期,A11~A8:    0000 0100 = 0x04
3rd周期,A19~A12:    0010 0000 = 0x20
4th 周期,A27~A20:    0110 1011 = 0x6B
5th 周期,A30~A28:     0000 0011 = 0x03
注意,与图中对应的*L,意思是地电平,由于未用到那些位,datasheet中强制要求设为0,所以,才有上面的2nd周期中的高4位是0000.其他的A30之后的位也是类似原理,都是0
因此,接下来要介绍的,我们要访问第 7000 个块中的第 64 页中的 1208 字节处的话,所要传入的地址就是分 5 个周期,分别传入两个列地址:0xB8,0x04,然后再传3个行地址:0x20,0x6B,0x03,这样硬件才能识别。

相关内容