此文章僅介於中文教學資源之缺乏,
在此提供Flash Specification 導讀以供參考。
以下討論為SLC,MLC等較早期的flash,適合剛入門的讀者。
對於初入NandFlash領域的新手來說,
是否對於spec上滿滿的英文感到無所適從?
首先,先來認識幾個名詞解釋:
1.page - flash 讀寫的最小單位。
2.block - 由數百至數千個page堆疊而成,也是刪除資料的最小單位。
3.plane - 由數百個block堆疊而成,muti-plane可增加效能。
4.Lun -也稱作die,可單獨執行指令的最小單位。
以上為flash記憶體架構基本組成成員,
而欲精準指定資料儲存位置就得依靠5-cycle的幫忙。
因為硬體關係,每一個cycle為8個bit.
CA7 | CA6 | CA5 | CA4 | CA3 | CA2 | CA1 | CA0 |
LOW | CA14 | CA13 | CA12 | CA11 | CA10 | CA9 | CA8 |
PA7 | PA6 | PA5 | PA4 | PA3 | PA2 | PA1 | PA0 |
BA15 | BA14 | BA13 | BA12 | BA11 | BA10 | BA9 | PA8 |
LOW | LOW | LOW | BA20 | BA19 | BA18 | BA17 | BA16 |
CA - column address, 可精準指定page的某一片段寫入資料。
PA - page address, 代表page0~pageX.
BA - block address, 代表block0~ blockX.
(而通常first bit of block為plane bit)
現在已經知道5-cycle的使用方式,
而又是什麼使得flash得以接收到5-cycle資料的呢?
以下為幾個常用pin腳的基本介紹:
1. CE# - 獨立控制該顆memory的開啟或是關閉。
2. ALE - 當host欲傳送address information時,此pin會設為High.
3. CLE - 當host欲傳送command information時,此pin會設為High.
4. WE - write enalbe, 控制寫入的pin腳。
5. RE - read enable, 控制讀取的pin腳。
6. DQX - 為雙向I/0 pin, 頻寬多為8bit.
7. WP - write protect,防止不可預期的寫入刪除行為。
8. R/B - ready/busy,用來確認該memory當下的狀態。
Spec後半段為command介紹,
相信有了以上基礎概念後可輕鬆應付,故在此就不繼續贅述了,
希望此篇粗淺的導讀能幫助對NandFlash有興趣的人。