NAND Flash的尋址方式和NAND Flash的memory組織方式緊密相關。NAND Flash的數據是以bit的方式保存在memory cell,一般來說,一個cell中只能存儲一個bit。這些cell以8個或者16個爲單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device的位寬。
這些Line會再組成Page,通常是528Byte/page或者264Word/page。然後,每32個page形成一個Block,Sizeof(block)=16kByte.Block是NAND Flash中最大的操作單元,擦除就是按照block爲單位完成的,而編程/讀取是按照page爲單位完成的。
所以,按照這樣的組織方式可以形成所謂的三類地址:
-Block Address
-Page Address
-Column Address
首先,必須清楚一點,對於NAND Flash來講,地址和命令只能在I/O[7:0]上傳遞,數據寬度可以是8位或者16位,但是,對於x16的NAND Device,I/O[15:8]只用於傳遞數據。
清楚了這一點,我們就可以開始分析NAND Flash的尋址方式了。
以528Byte/page 總容量512Mbit+512kbyte的NAND器件爲例:
因爲,
1 block=16kbyte,
512Mbit=64Mbyte,
Numberof(block)=1024
1block=32page,
1page=528byte=512byte(Main Area)+16byte(Spare Area)
用戶數據保存在main area中。
512byte需要9bit來表示,對於528byte系列的NAND,這512byte被分成1st half和2nd half,各自的訪問由所謂的pointer operation命令來選擇,也就是選擇了bit8的高低。因此A8就是halfpage pointer,A[7:0]就是所謂的column address。
32個page需要5bit來表示,佔用A[13:9],即該page在塊內的相對地址。Block的地址是由A14以上的bit來表示,例如512Mb 的NAND,共4096block,因此,需要12個bit來表示,即A[25:14],如果是1Gbit的528byte/page的NAND Flash,共8192個block,則block address用A[26:14]表示。而page address就是blcok address|page address in block
NAND Flash的地址表示爲:
Block Address|Page Address in block|halfpage pointer|Column Address
地址傳送順序是Column Address,Page Address,Block Address。
由於地址只能在I/O[7:0]上傳遞,因此,必須採用移位的方式進行。
例如,對於512Mbit x8的NAND flash,地址範圍是0~0x3FF_FFFF,只要是這個範圍內的數值表示的地址都是有效的。
以NAND_ADDR爲例:
第1步是傳遞column address,就是NAND_ADDR[7:0],不需移位即可傳遞到I/O[7:0]上而halfpage pointer即bit8是由操作指令決定的,即指令決定在哪個halfpage上進行讀寫,而真正的bit8的值是don't care的。
第2步就是將NAND_ADDR右移9位,將NAND_ADDR[16:9]傳到I/O[7:0]上;
第3步將NAND_ADDR[24:17]放到I/O上;
第4步需要將NAND_ADDR[25]放到I/O上;
因此,整個地址傳遞過程需要4步才能完成,即4-step addressing。
如果NAND Flash的容量是256Mbit以下,那麼,block adress最高位只到bit24,因此尋址只需要3步。
相關文章
- nand2010-08-24 10:41:20
- NandFlash驅動分析32010-07-20 22:06:56
- nand flash的基礎知識和讀寫操作(一)(轉載)2010-11-21 12:59:13
- Nand Flash結構與讀寫分析2010-07-09 15:18:20
- linux NandFlash driver 超詳細分析2010-09-03 15:44:24