嵌入式系統(tǒng)中Nand-Flash的原理及應(yīng)用
Nand-flash存儲(chǔ)器是flash存儲(chǔ)器的-種,其內(nèi)部采用非線性宏單元模式,為固態(tài)大容量存儲(chǔ)器的實(shí)現(xiàn)提供了廉價(jià)有效的解決方案。Nand-flash存儲(chǔ)器具有容量較大,改寫速度快,適用于大量資料的存儲(chǔ),因而在業(yè)界得到了越來(lái)越廣泛的應(yīng)用,如嵌入式產(chǎn)品中包括數(shù)碼相機(jī)、MP3隨身聽(tīng)記憶卡、體積小巧的U盤等。
本文以三星公司的K9F1208UOB芯片為例,介紹Nand-flash存儲(chǔ)器芯片的讀寫流程和時(shí)序。
1 Nand-Flash存儲(chǔ)器的工作原理
1.1 Nand-Flash存儲(chǔ)器的組成結(jié)構(gòu)及指令集
K9F1208UOB的容量為64Mb,存儲(chǔ)空間按128K個(gè)頁(yè)(行)、每頁(yè)中528個(gè)字節(jié)(列)的組成方式構(gòu)成。備用的16列,位于列地址的512-527。K9F1208UOB還將存儲(chǔ)空間分為塊(block),每1塊由32個(gè)頁(yè)構(gòu)成。因此K9F1208UOB中一共有4096個(gè)塊。這種“塊-頁(yè)”結(jié)構(gòu),恰好能滿足文件系統(tǒng)中劃分簇和扇區(qū)的結(jié)構(gòu)要求。K9F1208UOB的內(nèi)部結(jié)構(gòu)如圖1所示。
圖1 K9F1208UOB的內(nèi)部結(jié)構(gòu)
K9F1208UOB的讀和寫都以頁(yè)為單位,擦除則以塊為單位進(jìn)行操作。
K9F1208UOB的地址通過(guò)8位端口傳送,有效地節(jié)省了引腳的數(shù)量,并能夠保持不同密度器件引腳的一致性,系統(tǒng)可以在電路不作改動(dòng)的情況下升級(jí)為高容量存儲(chǔ)器件。
K9F1208UOB通過(guò)CLE和ALE信號(hào)線實(shí)現(xiàn)I/O口上指令和地址的復(fù)用。指令、地址和數(shù)據(jù)都通過(guò)拉低WE和CE從I/O口寫入器件中。有一些指令只需要一個(gè)總線周期完成,例如,復(fù)位指令、讀指令和狀態(tài)讀指令等;另外一些指令,例如頁(yè)寫入和塊擦除,則需要2個(gè)周期,其中一個(gè)周期用來(lái)啟動(dòng),而另一個(gè)周期用來(lái)執(zhí)行。
1.2 Nand-Flash操作
1.2.1 頁(yè)讀操作
在初始上電時(shí),器件進(jìn)入缺省的“讀方式1模式”。在這一模式下,頁(yè)讀操作通過(guò)將00h指令寫入指令寄存器,接著寫入3個(gè)地址(1個(gè)列地址,2個(gè)行地址)來(lái)啟動(dòng)。一旦頁(yè)讀指令被器件鎖存,下面的頁(yè)讀操作就不需要再重復(fù)寫入指令了。
寫入指令和地址后,處理器可以通過(guò)對(duì)信號(hào)線R/B的分析來(lái)判斷該操作是否完成。如果信號(hào)為低電平,表示器件正“忙”;為高電平,說(shuō)明器件內(nèi)部操作完成,要讀取的數(shù)據(jù)被送入了數(shù)據(jù)寄存器。外部控制器可以在以50ns為周期的連續(xù)RE脈沖信號(hào)的控制下,從I/O口依次讀出數(shù)據(jù)。連續(xù)頁(yè)讀操作中,輸出的數(shù)據(jù)是從指定的列地址開(kāi)始,直到該頁(yè)的最后-個(gè)列地址的數(shù)據(jù)為止。
1.2.2 頁(yè)寫操作
K9F1208UOB的寫入操作也以頁(yè)為單位。寫入必須在擦除之后,否則寫入將出錯(cuò)。
頁(yè)寫入周期總共包括3個(gè)步驟:寫入串行數(shù)據(jù)輸入指令(80h),然后寫入3個(gè)字節(jié)的地址信息,最后串行寫入數(shù)據(jù)。串行寫入的數(shù)據(jù)最多為528字節(jié),它們首先被寫入器件內(nèi)的頁(yè)寄存器,接著器件進(jìn)入一個(gè)內(nèi)部寫入過(guò)程,將數(shù)據(jù)從頁(yè)寄存器寫入存儲(chǔ)宏單元。
評(píng)論