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