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