Nand Flash數據存儲規則與數據讀寫方法(一)

NAND Flash 的數據是以bit 的方式保存在memory cell,一般來說,一個cell 中只能存儲一個bit。這些cell 以8 個或者16 個爲單位,連成bit line,形成所謂的byte(x8)/word(x16),這就是NAND Device 的位寬。這些Line 會再組成Page,(Nand Flash 有多種結構,我使用的Nand Flash 是K9F1208,下面內容針對三星的K9F1208U0M),每頁528Byte,每32 個page 形成一個Block,

Sizeof(block)=16kByte 。

block=16kbyte,

512Mbit=64Mbyte,

Numberof(block)=4096 1block=32page,

 1page=528byte=512byte(Main Area)+16byte(Spare Area)


Nand flash 以頁爲單位讀寫數據,而以塊爲單位擦除數據。按照這樣的組織方式可以形成所謂的三類地址: --Block Address -- Page Address --Column Address 。

對於NAND Flash 來講,地址和命令只能在I/O[7:0]上傳遞,數據寬度是8 位。

512byte需要9bit來表示,對於528byte系列的NAND,這512byte被分成1st half和2nd half,各自的訪問由地址指針命令來選擇,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,則block address用A[26:24]表示。

而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 步。

下面,就x16 的NAND flash 器件稍微進行一下說明。 由於一個page 的main area 的容量爲256word,仍相當於512byte。但是,這個時候沒有所謂 的1st halfpage 和2nd halfpage 之分了,所以,bit8就變得沒有意義了,也就是這個時候 bit8 完全不用管,地址傳遞仍然和x8 器件相同。除了,這一點之外,x16 的NAND使用方法和 x8 的使用方法完全相同。

正如硬盤的盤片被分爲磁道,每個磁道又分爲若干扇區,一塊nand flash也分爲若干block,每個block分爲如干page。一般而言,block、page之間的關係隨着芯片的不同而不同,典型的分配是這樣的:

 

發佈了6 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章