国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
NOR & NAND

NAND與NOR FLASH的原理與異同

2 04月 2008

一、存儲(chǔ)數(shù)據(jù)的原理
兩種閃存都是用三端器件作為存儲(chǔ)單元,分別為源極、漏極和柵極,與場效應(yīng)管的工作原理相同,主要是利用電場的效應(yīng)來控制源極與漏極之間的通斷,柵極的 電流消耗極小,不同的是場效應(yīng)管為單柵極結(jié)構(gòu),而FLASH為雙柵極結(jié)構(gòu),在柵極與硅襯底之間增加了一個(gè)浮置柵極。

11.jpg
浮置柵極是由氮化物夾在兩層二氧化硅材料之間構(gòu)成的,中間的氮化物就是可以存儲(chǔ)電荷的電荷勢阱。上下兩層氧化物的厚度大于50埃,以避免發(fā)生擊穿。
二、浮柵的重放電
向數(shù)據(jù)單元內(nèi)寫入數(shù)據(jù)的過程就是向電荷勢阱注入電荷的過程,寫入數(shù)據(jù)有兩種技術(shù),熱電子注入(hot electron injection)和F-N隧道效應(yīng)(Fowler Nordheim tunneling),前一種是通過源極給浮柵充電,后一種是通過硅基層給浮柵充電。NOR型FLASH通過熱電子注入方式給浮柵充電,而NAND則通過 F-N隧道效應(yīng)給浮柵充電。
在寫入新數(shù)據(jù)之前,必須先將原來的數(shù)據(jù)擦除,這點(diǎn)跟硬盤不同,也就是將浮柵的電荷放掉,兩種FLASH都是通過F-N隧道效應(yīng)放電。

21.jpg

3.jpg
三、0和1
這方面兩種FLASH一樣,向浮柵中注入電荷表示寫入了‘0‘,沒有注入電荷表示‘1‘,所以對(duì)FLASH清除數(shù)據(jù)是寫1的,這與硬盤正好相反;
對(duì)于浮柵中有電荷的單元來說,由于浮柵的感應(yīng)作用,在源極和漏極之間將形成帶正電的空間電荷區(qū),這時(shí)無論控制極上有沒有施加偏置電壓,晶體管都將處于 導(dǎo)通狀態(tài)。而對(duì)于浮柵中沒有電荷的晶體管來說只有當(dāng)控制極上施加有適當(dāng)?shù)钠秒妷?,在硅基層上感?yīng)出電荷,源極和漏極才能導(dǎo)通,也就是說在沒有給控制極施 加偏置電壓時(shí),晶體管是截止的。
如果晶體管的源極接地而漏極接位線,在無偏置電壓的情況下,檢測晶體管的導(dǎo)通狀態(tài)就可以獲得存儲(chǔ)單元中的數(shù)據(jù),如果位線上的電平為低,說明晶體管處于 導(dǎo)通狀態(tài),讀取的數(shù)據(jù)為0,如果位線上為高電平,則說明晶體管處于截止?fàn)顟B(tài),讀取的數(shù)據(jù)為1。由于控制柵極在讀取數(shù)據(jù)的過程中施加的電壓較小或根本不施加 電壓,不足以改變浮置柵極中原有的電荷量,所以讀取操作不會(huì)改變FLASH中原有的數(shù)據(jù)。
四、連接和編址方式
兩種FLASH具有相同的存儲(chǔ)單元,工作原理也一樣,為了縮短存取時(shí)間并不是對(duì)每個(gè)單元進(jìn)行單獨(dú)的存取操作,而是對(duì)一定數(shù)量的存取單元進(jìn)行集體操作, NAND型FLASH各存儲(chǔ)單元之間是串聯(lián)的,而NOR型FLASH各單元之間是并聯(lián)的;為了對(duì)全部的存儲(chǔ)單元有效管理,必須對(duì)存儲(chǔ)單元進(jìn)行統(tǒng)一編址。
NAND的全部存儲(chǔ)單元分為若干個(gè)塊,每個(gè)塊又分為若干個(gè)頁,每個(gè)頁是512byte,就是512個(gè)8位數(shù),就是說每個(gè)頁有512條位線,每條位線下 有8個(gè)存儲(chǔ)單元;那么每頁存儲(chǔ)的數(shù)據(jù)正好跟硬盤的一個(gè)扇區(qū)存儲(chǔ)的數(shù)據(jù)相同,這是設(shè)計(jì)時(shí)為了方便與磁盤進(jìn)行數(shù)據(jù)交換而特意安排的,那么塊就類似硬盤的簇;容 量不同,塊的數(shù)量不同,組成塊的頁的數(shù)量也不同。在讀取數(shù)據(jù)時(shí),當(dāng)字線和位線鎖定某個(gè)晶體管時(shí),該晶體管的控制極不加偏置電壓,其它的7個(gè)都加上偏置電壓 而導(dǎo)通,如果這個(gè)晶體管的浮柵中有電荷就會(huì)導(dǎo)通使位線為低電平,讀出的數(shù)就是0,反之就是1。
NOR的每個(gè)存儲(chǔ)單元以并聯(lián)的方式連接到位線,方便對(duì)每一位進(jìn)行隨機(jī)存?。痪哂袑S玫牡刂肪€,可以實(shí)現(xiàn)一次性的直接尋址;縮短了FLASH對(duì)處理器指令的執(zhí)行時(shí)間。

4.gif
五、性能
1、速度

在寫數(shù)據(jù)和擦除數(shù)據(jù)時(shí),NAND由于支持整塊擦寫操作,所以速度比NOR要快得多,兩者相差近千倍;讀取時(shí),由于NAND要先向芯片發(fā)送地址信息進(jìn)行 尋址才能開始讀寫數(shù)據(jù),而它的地址信息包括塊號(hào)、塊內(nèi)頁號(hào)和頁內(nèi)字節(jié)號(hào)等部分,要順序選擇才能定位到要操作的字節(jié);這樣每進(jìn)行一次數(shù)據(jù)訪問需要經(jīng)過三次尋 址,至少要三個(gè)時(shí)鐘周期;而NOR型FLASH的操作則是以字或字節(jié)為單位進(jìn)行的,直接讀取,所以讀取數(shù)據(jù)時(shí),NOR有明顯優(yōu)勢。
2、容量和成本
NOR型FLASH的每個(gè)存儲(chǔ)單元與位線相連,增加了芯片內(nèi)位線的數(shù)量,不利于存儲(chǔ)密度的提高。所以在面積和工藝相同的情況下,NAND型FLASH的容量比NOR要大得多,生產(chǎn)成本更低,也更容易生產(chǎn)大容量的芯片。
3、易用性
NAND FLASH的I/O端口采用復(fù)用的數(shù)據(jù)線和地址線,必須先通過寄存器串行地進(jìn)行數(shù)據(jù)存取,各個(gè)產(chǎn)品或廠商對(duì)信號(hào)的定義不同,增加了應(yīng)用的難 度;NOR FLASH有專用的地址引腳來尋址,較容易與其它芯片進(jìn)行連接,另外還支持本地執(zhí)行,應(yīng)用程序可以直接在FLASH內(nèi)部運(yùn)行,可以簡化產(chǎn)品設(shè)計(jì)。
4、可靠性
NAND FLASH相鄰單元之間較易發(fā)生位翻轉(zhuǎn)而導(dǎo)致壞塊出現(xiàn),而且是隨機(jī)分布的,如果想在生產(chǎn)過程中消除壞塊會(huì)導(dǎo)致成品率太低、性價(jià)比很差,所以在出廠前要在高 溫、高壓條件下檢測生產(chǎn)過程中產(chǎn)生的壞塊,寫入壞塊標(biāo)記,防止使用時(shí)向壞塊寫入數(shù)據(jù);但在使用過程中還難免產(chǎn)生新的壞塊,所以在使用的時(shí)候要配合 EDC/ECC(錯(cuò)誤探測/錯(cuò)誤更正)和BBM(壞塊管理)等軟件措施來保障數(shù)據(jù)的可靠性。壞塊管理軟件能夠發(fā)現(xiàn)并更換一個(gè)讀寫失敗的區(qū)塊,將數(shù)據(jù)復(fù)制到 一個(gè)有效的區(qū)塊。
5、耐久性
FLASH由于寫入和擦除數(shù)據(jù)時(shí)會(huì)導(dǎo)致介質(zhì)的氧化降解,導(dǎo)致芯片老化,在這個(gè)方面NOR尤甚,所以并不適合頻繁地擦寫,NAND的擦寫次數(shù)是100萬次,而NOR只有10萬次。
 
 
 

關(guān)于Nand Flash和Nor Flash的XIP

2 04月 2008

XIP - eXecute In Place,中文常譯為,就地執(zhí)行。指代碼可以在當(dāng)前(存儲(chǔ)器中)執(zhí)行
關(guān)于Nor Flash的XIP :
NAND and NOR and XIP
"NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在flash閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
NAND結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于flash的管理和需要特殊的系統(tǒng)接口。 "
關(guān)于Nand Flash的XIP:
NAND FLASH 是不是無法做XIP?
問:NAND FLASH 是不是無法做XIP,只有 NOR FLASH才能?
答:所謂XIP,就是CODE是在FLASH上直接運(yùn)行. NANDFLASH只是不適合做XIP,但并不是不能做XIP。
要一段CODE能夠正確的運(yùn)行,要保證它的CODE是連續(xù)的,正確的.
由于一些電氣特性的原因,NOR FLASH能夠做到這一點(diǎn),不存在壞道或壞塊,所以能夠做XIP。
而對(duì)于NAND FLASH, 它只保證它的BLOCK 0是好的,其他的塊并不保證,雖然出錯(cuò)的幾率比較低,但還是有出錯(cuò)的可能,所以CODE可能無法連續(xù)正確地執(zhí)行。
但只要你有額外的保障措施,比如說在執(zhí)行CODE之前去做一次ECC校驗(yàn),來確保CODE是連續(xù)正確的.那你也可以做XIP.事實(shí)上我就正在這么做,而且也證明是成功的
XiP定義(eXecute In Place)立即執(zhí)行
XIP定義:
XIP即就地執(zhí)行的意思,操作系統(tǒng)內(nèi)核直接在Flash中運(yùn)行,不需要拷貝到RAM。但是,F(xiàn)lash的存儲(chǔ)器訪問周期要比RAM大得多,在使用XIP技術(shù)后可能會(huì)降低程序的運(yùn)行速度,不過由于CPU的指令預(yù)取機(jī)制以及Cache機(jī)制,實(shí)際使用起來并不會(huì)明顯降低應(yīng)用程序的運(yùn)行速度。XIP的原理很簡單,即指操作系統(tǒng)或應(yīng)用程序直接從非易失性存儲(chǔ)器中執(zhí)行。就當(dāng)前的技術(shù)來說,這里的非易失性存儲(chǔ)器特指NOR型Flash,因?yàn)橹挥蠳0R型的Flash才可以隨機(jī)存取。文獻(xiàn)[4]中提供了一種通過增加Cache使NAND Flash也可以進(jìn)行XIP的方案,但需要增加硬件電路,不是一個(gè)通用的解決方案。
除了硬件提供支持以外,XIP還需要軟件的支持。操作系統(tǒng)內(nèi)核和應(yīng)用程序在運(yùn)行時(shí),它在內(nèi)存中的映像可以分為三個(gè)部分:代碼段、數(shù)據(jù)段和堆棧段。代碼段對(duì)應(yīng)于執(zhí)行程序中的Text Section,其中包括運(yùn)行代碼和只讀數(shù)據(jù),這個(gè)段在內(nèi)存中一般被標(biāo)記為只讀。數(shù)據(jù)段對(duì)應(yīng)于運(yùn)行文件中的Data Section和BSS Section(???),其中存放的是各種數(shù)據(jù)(經(jīng)過初始化的和未經(jīng)初始化的)和靜態(tài)變量,而堆棧段存放的則用于保存函數(shù)調(diào)用和局部變量。從以上分析可知,程序運(yùn)行時(shí)在內(nèi)存的映像分為兩類:一類是只讀的,如代碼段;另一類是可寫的,如數(shù)據(jù)段。而Flash雖然是可寫的,但并不能像寫普通RAM一樣進(jìn)行。因此,當(dāng)程序在Flash中運(yùn)行時(shí),我們?nèi)匀恍枰巡糠挚蓪懙臄?shù)據(jù)段放在RAM 中。XIP是一種能夠直接在閃速存儲(chǔ)器中執(zhí)行代碼而無須裝載到RAM中執(zhí)行的機(jī)制。這樣減少了內(nèi)核從閃速存儲(chǔ)器拷貝到RAM的時(shí)間,并采用非壓縮映像減少了內(nèi)核自解壓的時(shí)間。由于閃速存儲(chǔ)器訪問速度低于RAM,采用XIP技術(shù)的同時(shí),根據(jù)硬件環(huán)境對(duì)閃速存儲(chǔ)器和RAM使用量進(jìn)行平衡。
eXecute In Place - XIP
XIP (eXecute In Place ) is a useful option available with uClinux systems. Its main value lies in [...]
 
 
 
Nand-Flash/Nor-Flash存儲(chǔ)模塊設(shè)計(jì)
     隨著嵌入式系統(tǒng)越來越廣泛的應(yīng)用,嵌入式系統(tǒng)中的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理已經(jīng)成為一個(gè)重要的研究課題。Flash存儲(chǔ)器具有速度快、成本低等很多優(yōu)點(diǎn),因此在嵌入式系統(tǒng)中的應(yīng)用也越來越多。為了合理地管理存儲(chǔ)數(shù)據(jù),進(jìn)行數(shù)據(jù)共享,F(xiàn)lash的設(shè)計(jì)在ARM嵌入式系統(tǒng)中對(duì)數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理尤為重要。
1實(shí)例說明
在嵌入式設(shè)備中,有兩種程序運(yùn)行方式:一種是將程序加載到SDRAM中運(yùn)行,另一種是程序直接在其所在的ROM/Flash存儲(chǔ)器中運(yùn)行。一種比較常用的運(yùn)行程序的方法是將該Flash存儲(chǔ)器作為一個(gè)硬盤使用,當(dāng)程序需要運(yùn)行時(shí),首先將其加載到SDRAM存儲(chǔ)器中,在SDRAM中運(yùn)行。通常相對(duì)于:ROM而言,SDRAM訪問速度較快,數(shù)據(jù)總線較寬,程序存SDRAM中的運(yùn)行速度比在Flash中的運(yùn)行速度要快。

 
ARM 中的存儲(chǔ)模塊示意圖如圖7-1所示。
其中,各功能模塊的含義如下。
(1)系統(tǒng)初始化——進(jìn)行系統(tǒng)的最小初始化,包括初始化系統(tǒng)時(shí)鐘、系統(tǒng)的中斷向量表、SDRAM及一些其他的重要I/O端口。
(2)映像文件下載——通過一定的方式,得到新的目標(biāo)程序的映像文件,將該文件保存到系統(tǒng)的SDRAM中。要完成這部分工作,ARM嵌入式設(shè)備需要與外部的主機(jī)建立某種通道,大部分系統(tǒng)都是使用串行口,也可以使用以太網(wǎng)口或者并行口進(jìn)行通信。
 (2)Flash寫入——根據(jù)不同的Flash存儲(chǔ)器,選擇合適的操作命令,將新的目標(biāo)程序的映像文件寫入到目標(biāo)系統(tǒng)的Flash存儲(chǔ)器中,實(shí)現(xiàn)Flash存儲(chǔ)器操作的功能模塊。
在本實(shí)例里,F(xiàn)lash用于存放程序代碼、常量表和一些存系統(tǒng)掉電后需要保存的用戶數(shù)據(jù)等。
2 Flash原理
2.1 Nand-Flash與Nor-Flash區(qū)別
Flash主要分為Nor-Flash和Nand-Flash兩類,下面對(duì)二者進(jìn)行較為詳細(xì)的比較。
1. 性能比較
Flash閃存是非易失存儲(chǔ)器,可以對(duì)存儲(chǔ)器單元塊進(jìn)行擦寫和再編程。任何Flash器件進(jìn)行寫入操作前都必須先執(zhí)行擦除操作。Nand-Flash器件執(zhí)行擦除操作十分簡單;而Nor-Flash則要求在進(jìn)行擦除前,先將目標(biāo)塊內(nèi)所有的位都寫為0。擦除:Nor-Flash器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為1~5s;擦除Nand-Flash器件是以8~32KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。
執(zhí)行擦除操作時(shí),塊尺寸的不同進(jìn)一步拉大了Nor-Flash和Nand-Flash之間的性能差距。統(tǒng)計(jì)表明,對(duì)于給定的一套寫入操作(尤其是更新小文件時(shí)),更多的擦除操作必須在基于Nor-Flash的單元中進(jìn)行。因此,當(dāng)選擇存儲(chǔ)解決方案時(shí),必須權(quán)衡以下的各項(xiàng)因素。
Nor-Flash的讀取速度比Nand-Flash稍快一些。
Nand-Flash的寫入速度比Nor-Flash快很多。
Nand-Flash的擦除速度遠(yuǎn)比Nor-Flash快。
大多數(shù)寫入操作需要先進(jìn)行擦除操作。
Nand-Flash的擦除單元更小,相應(yīng)的擦除電路更少。
2. 接口差別
Not-Flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)容的每一字節(jié)。
Nand-Flash器件使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),各個(gè)產(chǎn)品或廠商的方法可能各不相同。8個(gè)引腳用來傳送控制、地址和數(shù)據(jù)信息。Nand-Flash的讀和寫操作采用512字節(jié)的塊,這一點(diǎn)有點(diǎn)像硬盤管理此類操作。很自然地,基于Nand-Flash的存儲(chǔ)器就可以取代硬盤或其他塊設(shè)備。
3. 容量和成本
Nand-Flash的單元尺寸幾乎是Nor-Flash器件的一半。由于生產(chǎn)過程更為簡單,NaIld-Flash結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,也就相應(yīng)地降低了價(jià)格。
Nor-Flash占據(jù)了大部分容量為1~16MB的內(nèi)存市場,而Nand-Flash只是用在8~128MB的產(chǎn)品當(dāng)中。
4. 可靠性和耐用性
采用Flash介質(zhì)時(shí),一個(gè)需要重點(diǎn)考慮的問題是可靠性。對(duì)于需要擴(kuò)展MTBF(平均無故障時(shí)間)的系統(tǒng)來說,F(xiàn)lash是非常合適的存儲(chǔ)方案??梢詮膲勖?耐用性)、位交換和壞塊處理三個(gè)方面來比較Nor-Flash和Nand-Flash的可靠性。
(1) 壽命(耐用性)
在Nand-Flash閃存中,每個(gè)塊的最大擦寫次數(shù)是100萬次,而Nor-Flash的擦寫次數(shù)是10萬次。Nand-Flash存儲(chǔ)器除了具有10:1的塊擦除周期優(yōu)勢外,典型的Nand-Flash塊尺寸要比Nor-Flash器件小8位,每個(gè)Nand-Flash存儲(chǔ)器塊在給定時(shí)間內(nèi)的刪除次數(shù)要少一些。
(2) 位交換
  
所有的Flash器件都受位交換現(xiàn)象的困擾。在某些情況下(Nand-Flash發(fā)生的次數(shù)要比Nor-Flash多),一個(gè)比特位會(huì)發(fā)生反轉(zhuǎn)或被報(bào)告反轉(zhuǎn)了。一位的變化可能不很明顯,但是如果發(fā)生在一個(gè)關(guān)鍵文件上,這個(gè)小小的故障就可能導(dǎo)致系統(tǒng)停機(jī)。如果只是報(bào)告有問題,則多讀幾次就可能解決。
位反轉(zhuǎn)的問題更多見于Nand-Flash閃存,Nand-Flash的供應(yīng)商建議使用Nand-Flash閃存時(shí),同時(shí)使用EDC/ECC算法。當(dāng)然,如果用本地存儲(chǔ)設(shè)備來存儲(chǔ)操作系統(tǒng)、配置文件或其他敏感信息時(shí),則必須使用EDC/ECC(糾錯(cuò)碼)系統(tǒng)以確??煽啃?。
(3) 壞塊處理
Nand-Flash器件中的壞塊是隨機(jī)分布的。以前做過消除壞塊的努力,但發(fā)現(xiàn)成品率太低,代價(jià)太高,根本不劃算。Nand-Flash器件需要對(duì)介質(zhì)進(jìn)行初始化掃描以發(fā)現(xiàn)壞塊,并將壞塊標(biāo)記為不可用。在已制成的器件中,如果通過可靠的方法不能進(jìn)行這項(xiàng)處理,則將導(dǎo)致高故障率。
5. 易用性
可以非常直接地使用基于Nor-Flash的閃存,像其他存儲(chǔ)器那樣連接,并可以在上面直接運(yùn)行代碼。由于需要I/O接口,Nand-Flash要復(fù)雜得多,各種Nand-Flash器件的存取方法因廠家而異。在使用Nand-Flash器件時(shí),必須先寫入驅(qū)動(dòng)程序,才能繼續(xù)執(zhí)行其他操作。向Nand-Flash器件寫入信息需要相當(dāng)?shù)募记桑驗(yàn)樵O(shè)計(jì)人員絕不能向壞塊寫入,這就意味著在Nand-Flash器件上自始至終都必須進(jìn)行虛擬映射。
6. 軟件支持
在Nor-Flash器件上運(yùn)行代碼不需要任何的軟件支持。在Nand-Flash器件上進(jìn)行同樣操作時(shí),通常需要驅(qū)動(dòng)程序,也就是閃存技術(shù)驅(qū)動(dòng)程序(Memory Technology Devices,MTD)。Nand-Flash和Nor-Flash器件在進(jìn)行寫入和擦除操作時(shí)都需要MTD,但使用Nor-Flash器件時(shí),所需要的MTD要相對(duì)少一些。許多廠商都提供用于Nor-Flash器件的更高級(jí)的軟件,在Linux系統(tǒng)中采用JFFS驅(qū)動(dòng),這在后文中將具體講述。
2.2 Flash驅(qū)動(dòng)
對(duì)于Flash芯片的驅(qū)動(dòng),Linux提供了完善的驅(qū)動(dòng)程序,只需要在內(nèi)核配置里面選擇好相應(yīng)的類型即可。
在Linux中通過MTD子系統(tǒng)提供的抽象設(shè)備機(jī)制,來實(shí)現(xiàn)對(duì)Flash設(shè)備的管理控制和數(shù)據(jù)讀寫。MTD設(shè)備是一類特殊的存儲(chǔ)設(shè)備,如常用的Flash芯片、CFI卡等。MTD同時(shí)提供通過字符設(shè)備方式和塊設(shè)備方式來管理控制MTD設(shè)備的機(jī)制。
MTD核心層分為:用戶模塊接口層、MTD抽象層和MTD設(shè)備驅(qū)動(dòng)模塊層。MTD核心層通過設(shè)備驅(qū)動(dòng)模塊實(shí)現(xiàn)對(duì)存儲(chǔ)設(shè)備的物理訪問功能,通過用戶模塊提供用戶空間直接訪問的接口。
MTD的設(shè)備驅(qū)動(dòng)模塊層負(fù)責(zé)驅(qū)動(dòng)Flash硬件,只需實(shí)現(xiàn)實(shí)際設(shè)備上的訪問控制,與內(nèi)核交互的復(fù)雜工作則由MTD抽象層完成。其中也對(duì)Nand-Flash的驅(qū)動(dòng)進(jìn)行了抽象,還實(shí)現(xiàn)了錯(cuò)誤檢測與糾錯(cuò)(ECC)和壞塊處理等用戶模塊層提供從用戶空間直接訪問的接口,上層應(yīng)用只需通過MTD抽象層提供的字符設(shè)備方式或塊設(shè)備方式來訪問MTD抽象設(shè)備,然后通過MTD的內(nèi)部機(jī)制把這些請求交給實(shí)際的驅(qū)動(dòng)模塊去執(zhí)行。MTD抽象層定義了抽象的MTD設(shè)備結(jié)構(gòu),對(duì)于具體設(shè)備的驅(qū)動(dòng)模塊,需要設(shè)計(jì)好公共函數(shù)的實(shí)際內(nèi)容,并在檢測到實(shí)際設(shè)備后注冊一個(gè)MTD設(shè)備,然后就可通過MTD提供的字符設(shè)備訪問方式或塊設(shè)備訪問方式直接使用具體的硬件設(shè)備。
MTD程序編寫在以后的章節(jié)里會(huì)詳細(xì)介紹。
3硬件電路設(shè)計(jì)
在系統(tǒng)中使用了兩種Flash芯片,其中Nor-Flash主要用于存放系統(tǒng)代碼,而Nand-Flash主要用于存放用戶信息。
3.1 Nor-FIash的設(shè)計(jì)
系統(tǒng)所用的Nor-Flash芯片是Intel公司的E28F128J3 Flash,如圖7-2所示。128Mbit的存儲(chǔ)空間由128個(gè)128KB(131072字節(jié))的擦除塊組成。擦除塊是相互獨(dú)立的,每一塊的擦除操作都可以在1s內(nèi)完成。每一塊可以獨(dú)立地被擦除100000次。這些塊可以分別設(shè)定為是可鎖的或是非可鎖的,由一個(gè)鎖定位來控制。還有一個(gè)128bit的保護(hù)寄存器可以復(fù)用。


該Flash采用25根地址線和16位數(shù)據(jù)線,可以通過nBYTE這個(gè)信號(hào)來選擇是8位還是16位方式訪問。該系統(tǒng)是采用16位方式訪問的,因此該信號(hào)線接高電平,同時(shí)A0地址線不起作用,一同接高。nOE/nWE是讀寫信號(hào),由EP7312的讀寫控制線直接控制。Flash的片選信號(hào)有3個(gè),它們組合后的結(jié)果如表7-1所示。

 

系統(tǒng)中將CEl、CE2信號(hào)接高,CE0由ARM的CS0片選線來控制。
3.2 Nand-Flash的設(shè)計(jì)
     系統(tǒng)中所采用的Nand-Flash芯片是Samsung公司的K9F2808U。該器件存儲(chǔ)容量為16M×8位,除此之外還有512KX 8位的空閑存儲(chǔ)區(qū)。該器件采用TSSOP48封裝,工作電壓為2.7~3.6V。8位I/O端口采用地址、數(shù)據(jù)和命令復(fù)用的方法,這樣既可減少引腳數(shù),又可使接口電路簡捷。
由于ARM系統(tǒng)沒有Nand-Flash控制所需要的CLE、ALE信號(hào),因此需要利用ARM的通用GPIO口。具體的連接電路如圖7-3所示。

命令鎖存使能(CLE),使輸入的命令發(fā)送到命令寄存器。當(dāng)變?yōu)楦唠娖綍r(shí),在WE上升沿命令通過I/O口鎖存到命令寄存器。
地址鎖存使能(ALE),控制地址輸入到片內(nèi)的地址寄存器中,地址是在WE的上升沿被鎖存的。
片選使能(CE),用于器件的選擇控制。在讀操作、CE變?yōu)楦唠娖綍r(shí),器件返回到  備用狀態(tài);然而,當(dāng)器件在寫操作或擦除操作過程中保持忙狀態(tài)時(shí),CE的變高將被忽略,不會(huì)返回到備用狀態(tài)。
寫使能(WE),用于控制把命令、地址和數(shù)據(jù)在它的上升沿寫入到I/O端口;而在  讀操作時(shí)必須保持高電平。
讀使能(RE),控制把數(shù)據(jù)放到I/O總線上,在它的下降沿tREA時(shí)間后數(shù)據(jù)有效;同時(shí)使內(nèi)部的列地址自動(dòng)加1。
I/O端口,用于命令、地址和數(shù)據(jù)的輸入及讀操作時(shí)的數(shù)據(jù)輸出。當(dāng)芯片未選中時(shí),                I/O口為高阻態(tài)。
工寫保護(hù)(WP),禁止寫操作和擦除操作。當(dāng)它有效時(shí),內(nèi)部的高壓生成器將會(huì)復(fù)位。
準(zhǔn)備/忙(R/B),反映當(dāng)前器件的狀態(tài)。低電平時(shí),表示寫操作或擦除操作以及隨機(jī)讀正進(jìn)行中;當(dāng)它變?yōu)楦唠娖綍r(shí),表示這些操作已經(jīng)完成。它采用了開漏輸出結(jié)構(gòu),在芯片未選中時(shí)不會(huì)保持高阻態(tài)。
3.3 Nor-F1ash/Nand-FIash跳線選擇
由于ARM提供了Nand-Flash Boot-loader技術(shù)和可選擇的多種啟動(dòng)方式,因此硬件設(shè)計(jì)中同時(shí)設(shè)計(jì)了Nor-Flash和Nand-Flash,通過跳線選擇啟動(dòng)方式,如圖7-4所示。


4軟件設(shè)計(jì)
     Flash 存儲(chǔ)器的支撐軟件包括基本的讀/寫/擦除操作和上層的閃存管理軟件,采用的嵌入式Linux操作系統(tǒng)中通過MTD子系統(tǒng)提供的抽象設(shè)備機(jī)制,來實(shí)現(xiàn)對(duì)Flash設(shè)備的管理控制和數(shù)據(jù)讀寫。
4.1 FIash數(shù)據(jù)存儲(chǔ)操作流程
     向Flash存儲(chǔ)器的特定寄存器寫入地址和數(shù)據(jù)命令,就可對(duì)Flash存儲(chǔ)器進(jìn)行燒寫、擦除等操作,但操作必須按照一定的順序,否則就會(huì)導(dǎo)致Flash存儲(chǔ)器復(fù)位而使操作命令無法完成。編程指令只能使“1”變?yōu)?#8220;0”,而擦除命令可使“0”變?yōu)?#8220;1”,因此正確的操作順序是先擦除,后編程,當(dāng)Flash存儲(chǔ)器被擦除以后,讀出的內(nèi)容應(yīng)全為0xFF。
對(duì)Flash操作的程序流程如圖7-5所示。

系統(tǒng)啟動(dòng)后,對(duì)系統(tǒng)關(guān)鍵設(shè)備(包括ARM、sI)RAM、N0r-Flash和Nand-Flash等)進(jìn)行初始化操作,然后啟動(dòng)Boot-loader,將Nand-Flash上的Linux內(nèi)核讀入SDRAM執(zhí)行。
初始化時(shí),除了對(duì)Flash內(nèi)部寄存器進(jìn)行初始化設(shè)置外,還需要設(shè)置ARM的寄存器。
4.2程序代碼說明
對(duì)Flash存儲(chǔ)器的燒寫、整片擦除、按扇區(qū)擦除及其他操作,都可以通過編程實(shí)現(xiàn)(見如下代碼)。對(duì)于編寫連續(xù)燒寫Flash存儲(chǔ)器多個(gè)存儲(chǔ)單元的程序,只需循環(huán)執(zhí)行即可,但應(yīng)在對(duì)每個(gè)單元燒寫命令發(fā)出后進(jìn)行檢測,保證前一個(gè)單元燒寫結(jié)束后再進(jìn)行下一個(gè)存儲(chǔ)單元的燒寫,當(dāng)然也可采用延時(shí)等待的方法進(jìn)行連續(xù)的燒寫。





在讀取Flash的時(shí)候不一定讀取一個(gè)block,可以按照實(shí)際需要的地址讀??;但是在寫的時(shí)候一次需要擦除一個(gè)扇區(qū),然后再寫入。讀取子程序設(shè)定了一次讀取一個(gè)扇區(qū),目的是為了按需要更改后再寫入。
5實(shí)例總結(jié)
     ARM與Flash存儲(chǔ)器的接口電路設(shè)計(jì)與調(diào)試,以及對(duì)Flash存儲(chǔ)器的編程與擦除是ARM系統(tǒng)設(shè)計(jì)中的一項(xiàng)重要部分,F(xiàn)lash存儲(chǔ)器通常裝載著嵌入式系統(tǒng)的Boot-loader程序和操作系統(tǒng)的核心代碼,因此Flash的穩(wěn)定與否直接決定整個(gè)系統(tǒng)能否運(yùn)作。
本章講述了兩種Flash芯片——Nor-Flash和Nand-Flash的特點(diǎn)、軟硬件設(shè)計(jì),在對(duì)Flash的編程中,需要注意以下三個(gè)方面。
   在Flash編程之前應(yīng)先擦除Flash,對(duì)Flash進(jìn)行擦除過程將持續(xù)一段時(shí)間(視不同的Flash芯片而定,具體的可以查找Flash芯片典型擦除時(shí)間,一般為20s左右),擦除后Flash的數(shù)據(jù)為全FF。
   對(duì)Flash編程的過程,將持續(xù)很長時(shí)間,通常編程50KB的文件需要15分鐘左右(視不同的Flash芯片、上位機(jī)和操作系統(tǒng)而定)。
   擦除Flash操作不可恢復(fù),對(duì)Flash編程需使用“初始化配置”,如關(guān)閉看門狗、關(guān)閉系統(tǒng)對(duì)Flash空間的緩沖、設(shè)置對(duì)Flash空間的操作時(shí)序等。
 
 


 

 
 

NAND和NOR flash詳解

作者:未知   時(shí)間:2007-11-10 18:20:04  來自:網(wǎng)上轉(zhuǎn)載  瀏覽次數(shù):520  文字大?。骸?a href="javascript:fontZoom(16)">】【】【

NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù)。Intel于1988年首先開發(fā)出NOR flash技術(shù),徹底改變了原先由EPROM和EEPROM一統(tǒng)天下的局面。緊接著,1989年,東芝公司發(fā)表了NAND flash結(jié)構(gòu),強(qiáng)調(diào)降低每比特的成本,更高的性能,并且象磁盤一樣可以通過接口輕松升級(jí)。但是經(jīng)過了十多年之后,仍然有相當(dāng)多的硬件工程師分不清NOR和NAND閃存。
  相“flash存儲(chǔ)器”經(jīng)??梢耘c相“NOR存儲(chǔ)器”互換使用。許多業(yè)內(nèi)人士也搞不清楚NAND閃存技術(shù)相對(duì)于NOR技術(shù)的優(yōu)越之處,因?yàn)榇蠖鄶?shù)情況下閃存只是用來存儲(chǔ)少量的代碼,這時(shí)NOR閃存更適合一些。而NAND則是高數(shù)據(jù)存儲(chǔ)密度的理想解決方案。  
  NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),這樣應(yīng)用程序可以直接在flash 閃存內(nèi)運(yùn)行,不必再把代碼讀到系統(tǒng)RAM中。NOR的傳輸效率很高,在1~4MB的小容量時(shí)具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。
  NAND結(jié)構(gòu)能提供極高的單元密度,可以達(dá)到高存儲(chǔ)密度,并且寫入和擦除的速度也很快。應(yīng)用NAND的困難在于flash的管理和需要特殊的系統(tǒng)接口。

性能比較
  flash閃存是非易失存儲(chǔ)器,可以對(duì)稱為塊的存儲(chǔ)器單元塊進(jìn)行擦寫和再編程。任何flash器件的寫入操作只能在空或已擦除的單元內(nèi)進(jìn)行,所以大多數(shù)情況下,在進(jìn)行寫入操作之前必須先執(zhí)行擦除。NAND器件執(zhí)行擦除操作是十分簡單的,而NOR則要求在進(jìn)行擦除前先要將目標(biāo)塊內(nèi)所有的位都寫為0。
  由于擦除NOR器件時(shí)是以64~128KB的塊進(jìn)行的,執(zhí)行一個(gè)寫入/擦除操作的時(shí)間為5s,與此相反,擦除NAND器件是以8~32KB的塊進(jìn)行的,執(zhí)行相同的操作最多只需要4ms。

  執(zhí)行擦除時(shí)塊尺寸的不同進(jìn)一步拉大了NOR和NADN之間的性能差距,統(tǒng)計(jì)表明,對(duì)于給定的一套寫入操作(尤其是更新小文件時(shí)),更多的擦除操作必須在基于NOR的單元中進(jìn)行。這樣,當(dāng)選擇存儲(chǔ)解決方案時(shí),設(shè)計(jì)師必須權(quán)衡以下的各項(xiàng)因素。
  ● NOR的讀速度比NAND稍快一些。
  ● NAND的寫入速度比NOR快很多。
  ● NAND的4ms擦除速度遠(yuǎn)比NOR的5s快。
  ● 大多數(shù)寫入操作需要先進(jìn)行擦除操作。
  ● NAND的擦除單元更小,相應(yīng)的擦除電路更少。

接口差別

  NOR flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)部的每一個(gè)字節(jié)。
  NAND器件使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),各個(gè)產(chǎn)品或廠商的方法可能各不相同。8個(gè)引腳用來傳送控制、地址和數(shù)據(jù)信息。
  NAND讀和寫操作采用512字節(jié)的塊,這一點(diǎn)有點(diǎn)像硬盤管理此類操作,很自然地,基于NAND的存儲(chǔ)器就可以取代硬盤或其他塊設(shè)備。



容量和成本
  NAND flash的單元尺寸幾乎是NOR器件的一半,由于生產(chǎn)過程更為簡單,NAND結(jié)構(gòu)可以在給定的模具尺寸內(nèi)提供更高的容量,也就相應(yīng)地降低了價(jià)格。
  NOR flash占據(jù)了容量為1~16MB閃存市場的大部分,而NAND flash只是用在8~128M
B的產(chǎn)品當(dāng)中,這也說明NOR主要應(yīng)用在代碼存儲(chǔ)介質(zhì)中,NAND適合于數(shù)據(jù)存儲(chǔ),NAND在CompactFlash、Secure Digital、PC Cards和MMC存儲(chǔ)卡市場上所占份額最大。



可靠性和耐用性
  采用flahs介質(zhì)時(shí)一個(gè)需要重點(diǎn)考慮的問題是可靠性。對(duì)于需要擴(kuò)展MTBF的系統(tǒng)來說,F(xiàn)lash是非常合適的存儲(chǔ)方案。可以從壽命(耐用性)、位交換和壞塊處理三個(gè)方面來比較NOR和NAND的可靠性。

  壽命(耐用性)
  在NAND閃存中每個(gè)塊的最大擦寫次數(shù)是一百萬次,而NOR的擦寫次數(shù)是十萬次。NAND存儲(chǔ)器除了具有10比1的塊擦除周期優(yōu)勢,典型的NAND塊尺寸要比NOR器件小8倍,每個(gè)NAND存儲(chǔ)器塊在給定的時(shí)間內(nèi)的刪除次數(shù)要少一些。


  位交換
  所有flash器件都受位交換現(xiàn)象的困擾。在某些情況下(很少見,NAND發(fā)生的次數(shù)要比NOR多),一個(gè)比特位會(huì)發(fā)生反轉(zhuǎn)或被報(bào)告反轉(zhuǎn)了。
  一位的變化可能不很明顯,但是如果發(fā)生在一個(gè)關(guān)鍵文件上,這個(gè)小小的故障可能導(dǎo)致系統(tǒng)停機(jī)。如果只是報(bào)告有問題,多讀幾次就可能解決了。
  當(dāng)然,如果這個(gè)位真的改變了,就必須采用錯(cuò)誤探測/錯(cuò)誤更正(EDC/ECC)算法。位反轉(zhuǎn)的問題更多見于NAND閃存,NAND的供應(yīng)商建議使用NAND閃存的時(shí)候,同時(shí)使用EDC/ECC算法。
  這個(gè)問題對(duì)于用NAND存儲(chǔ)多媒體信息時(shí)倒不是致命的。當(dāng)然,如果用本地存儲(chǔ)設(shè)備來存儲(chǔ)操作系統(tǒng)、配置文件或其他敏感信息時(shí),必須使用EDC/ECC系統(tǒng)以確保可靠性。


  壞塊處理
  NAND器件中的壞塊是隨機(jī)分布的。以前也曾有過消除壞塊的努力,但發(fā)現(xiàn)成品率太低,代價(jià)太高,根本不劃算。
  NAND器件需要對(duì)介質(zhì)進(jìn)行初始化掃描以發(fā)現(xiàn)壞塊,并將壞塊標(biāo)記為不可用。在已制成的器件中,如果通過可靠的方法不能進(jìn)行這項(xiàng)處理,將導(dǎo)致高故障率。

  

易于使用
  可以非常直接地使用基于NOR的閃存,可以像其他存儲(chǔ)器那樣連接,并可以在上面直接運(yùn)行代碼。
  由于需要I/O接口,NAND要復(fù)雜得多。各種NAND器件的存取方法因廠家而異。
  在使用NAND器件時(shí),必須先寫入驅(qū)動(dòng)程序,才能繼續(xù)執(zhí)行其他操作。向NAND器件寫入信息需要相當(dāng)?shù)募记?,因?yàn)樵O(shè)計(jì)師絕不能向壞塊寫入,這就意味著在NAND器件上自始至終都必須進(jìn)行虛擬映射。

軟件支持
  當(dāng)討論軟件支持的時(shí)候,應(yīng)該區(qū)別基本的讀/寫/擦操作和高一級(jí)的用于磁盤仿真和閃存管理算法的軟件,包括性能優(yōu)化。
  在NOR器件上運(yùn)行代碼不需要任何的軟件支持,在NAND器件上進(jìn)行同樣操作時(shí),通常需要驅(qū)動(dòng)程序,也就是內(nèi)存技術(shù)驅(qū)動(dòng)程序(MTD),NAND和NOR器件在進(jìn)行寫入和擦除操作時(shí)都需要MTD。
  使用NOR器件時(shí)所需要的MTD要相對(duì)少一些,許多廠商都提供用于NOR器件的更高級(jí)軟件,這其中包括M-System的TrueFFS驅(qū)動(dòng),該驅(qū)動(dòng)被Wind River System、Microsoft、QNX Software System、Symbian和Intel等廠商所采用。
  驅(qū)動(dòng)還用于對(duì)DiskOnChip產(chǎn)品進(jìn)行仿真和NAND閃存的管理,包括糾錯(cuò)、壞塊處理和損耗平衡。
 
 
 

NAND閃存深入解析



From : globalsources

  對(duì)于許多消費(fèi)類音視頻產(chǎn)品而言,NAND閃存是一種比硬盤驅(qū)動(dòng)器更好的存儲(chǔ)方案,這在不超過4GB的低容量應(yīng)用中表現(xiàn)得猶為明顯。隨著人們持續(xù)追求功耗更低、重量更輕和性能更佳的產(chǎn)品,NAND正被證明極具吸引力。

  NAND閃存陣列分為一系列128kB的區(qū)塊(block),這些區(qū)塊是NAND器件中最小的可擦除實(shí)體。擦除一個(gè)區(qū)塊就是把所有的位(bit)設(shè)置為“1”(而所有字節(jié)(byte)設(shè)置為FFh)。有必要通過編程,將已擦除的位從“1”變?yōu)?#8220;0”。最小的編程實(shí)體是字節(jié)(byte)。一些NOR閃存能同時(shí)執(zhí)行讀寫操作(見下圖1)。雖然NAND不能同時(shí)執(zhí)行讀寫操作,它可以采用稱為“映射(shadowing)”的方法,在系統(tǒng)級(jí)實(shí)現(xiàn)這一點(diǎn)。這種方法在個(gè)人電腦上已經(jīng)沿用多年,即將BIOS從速率較低的ROM加載到速率較高的RAM上。

  NAND的效率較高,是因?yàn)镹AND串中沒有金屬觸點(diǎn)。NAND閃存單元的大小比NOR要小(4F2:10F2)的原因,是NOR的每一個(gè)單元都需要獨(dú)立的金屬觸點(diǎn)。NAND與硬盤驅(qū)動(dòng)器類似,基于扇區(qū)(頁),適合于存儲(chǔ)連續(xù)的數(shù)據(jù),如圖片、音頻或個(gè)人電腦數(shù)據(jù)。雖然通過把數(shù)據(jù)映射到RAM上,能在系統(tǒng)級(jí)實(shí)現(xiàn)隨機(jī)存取,但是,這樣做需要額外的RAM存儲(chǔ)空間。此外,跟硬盤一樣,NAND器件存在壞的扇區(qū),需要糾錯(cuò)碼(ECC)來維持?jǐn)?shù)據(jù)的完整性。

  存儲(chǔ)單元面積越小,裸片的面積也就越小。在這種情況下,NAND就能夠?yàn)楫?dāng)今的低成本消費(fèi)市場提供存儲(chǔ)容量更大的閃存產(chǎn)品。NAND閃存用于幾乎所有可擦除的存儲(chǔ)卡。NAND的復(fù)用接口為所有最新的器件和密度都提供了一種相似的引腳輸出。這種引腳輸出使得設(shè)計(jì)工程師無須改變電路板的硬件設(shè)計(jì),就能從更小的密度移植到更大密度的設(shè)計(jì)上。

NAND與NOR閃存比較

  NAND閃存的優(yōu)點(diǎn)在于寫(編程)和擦除操作的速率快,而NOR的優(yōu)點(diǎn)是具有隨機(jī)存取和對(duì)字節(jié)執(zhí)行寫(編程)操作的能力(見下圖圖2)。NOR的隨機(jī)存取能力支持直接代碼執(zhí)行(XiP),而這是嵌入式應(yīng)用經(jīng)常需要的一個(gè)功能。NAND的缺點(diǎn)是隨機(jī)存取的速率慢,NOR的缺點(diǎn)是受到讀和擦除速度慢的性能制約。NAND較適合于存儲(chǔ)文件。如今,越來越多的處理器具備直接NAND接口,并能直接從NAND(沒有NOR)導(dǎo)入數(shù)據(jù)。

  NAND的真正好處是編程速度快、擦除時(shí)間短。NAND支持速率超過5Mbps的持續(xù)寫操作,其區(qū)塊擦除時(shí)間短至2ms,而NOR是750ms。顯然,NAND在某些方面具有絕對(duì)優(yōu)勢。然而,它不太適合于直接隨機(jī)存取。

  對(duì)于16位的器件,NOR閃存大約需要41個(gè)I/O引腳;相對(duì)而言,NAND器件僅需24個(gè)引腳。NAND器件能夠復(fù)用指令、地址和數(shù)據(jù)總線,從而節(jié)省了引腳數(shù)量。復(fù)用接口的一項(xiàng)好處,就在于能夠利用同樣的硬件設(shè)計(jì)和電路板,支持較大的NAND器件。由于普通的TSOP-1封裝已經(jīng)沿用多年,該功能讓客戶能夠把較高密度的NAND器件移植到相同的電路板上。NAND器件的另外一個(gè)好處顯然是其封裝選項(xiàng):NAND提供一種厚膜的2Gb裸片或能夠支持最多四顆堆疊裸片,容許在相同的TSOP-1封裝中堆疊一個(gè)8Gb的器件。這就使得一種封裝和接口能夠在將來支持較高的密度。

 

圖1 不同閃存單元的對(duì)比


圖2 NOR閃存的隨機(jī)存取時(shí)間為0.12ms,而NAND閃存的第一字節(jié)隨機(jī)存取速度要慢得多

NAND基本操作

以2Gb NAND器件為例,它由2048個(gè)區(qū)塊組成,每個(gè)區(qū)塊有64個(gè)頁(見圖3)。

圖3 2GB NAND閃存包含2,048個(gè)區(qū)塊
  每一個(gè)頁均包含一個(gè)2048字節(jié)的數(shù)據(jù)區(qū)和64字節(jié)的空閑區(qū),總共包含2,112字節(jié)??臻e區(qū)通常被用于ECC、耗損均衡(wear leveling)和其它軟件開銷功能,盡管它在物理上與其它頁并沒有區(qū)別。NAND器件具有8或16位接口。通過8或16位寬的雙向數(shù)據(jù)總線,主數(shù)據(jù)被連接到NAND存儲(chǔ)器。在16位模式,指令和地址僅僅利用低8位,而高8位僅僅在數(shù)據(jù)傳輸周期使用。

  擦除區(qū)塊所需時(shí)間約為2ms。一旦數(shù)據(jù)被載入寄存器,對(duì)一個(gè)頁的編程大約要300μs。讀一個(gè)頁面需要大約25μs,其中涉及到存儲(chǔ)陣列訪問頁,并將頁載入16,896位寄存器中。

除了I/O總線,NAND接口由6個(gè)主要控制信號(hào)構(gòu)成:

 

1.芯片啟動(dòng)(Chip Enable, CE#):如果沒有檢測到CE信號(hào),那么,NAND器件就保持待機(jī)模式,不對(duì)任何控制信號(hào)作出響應(yīng)。

2.寫使能(Write Enable, WE#): WE#負(fù)責(zé)將數(shù)據(jù)、地址或指令寫入NAND之中。

3.讀使能(Read Enable, RE#): RE#允許輸出數(shù)據(jù)緩沖器。

4.指令鎖存使能(Command Latch Enable, CLE): 當(dāng)CLE為高時(shí),在WE#信號(hào)的上升沿,指令被鎖存到NAND指令寄存器中。

5.地址鎖存使能(Address Latch Enable, ALE):當(dāng)ALE為高時(shí),在WE#信號(hào)的上升沿,地址被鎖存到NAND地址寄存器中。

6.就緒/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信號(hào)將變低。該信號(hào)是漏極開路,需要采用上拉電阻。

 

  數(shù)據(jù)每次進(jìn)/出NAND寄存器都是通過16位或8位接口。當(dāng)進(jìn)行編程操作的時(shí)候,待編程的數(shù)據(jù)進(jìn)入數(shù)據(jù)寄存器,處于在WE#信號(hào)的上升沿。在寄存器內(nèi)隨機(jī)存取或移動(dòng)數(shù)據(jù),要采用專用指令以便于隨機(jī)存取。

 

  數(shù)據(jù)寄存器輸出數(shù)據(jù)的方式與利用RE#信號(hào)的方式類似,負(fù)責(zé)輸出現(xiàn)有的數(shù)據(jù),并增加到下一個(gè)地址。WE#和RE#時(shí)鐘運(yùn)行速度極快,達(dá)到30ns的水準(zhǔn)。當(dāng)RE#或CE#不為低的時(shí)候,輸出緩沖器將為三態(tài)。這種CE#和RE#的組合使能輸出緩沖器,容許NAND閃存與NOR、SRAM或DRAM等其它類型存儲(chǔ)器共享數(shù)據(jù)總線。該功能有時(shí)被稱為“無需介意芯片啟動(dòng)(chip enable don‘t care)”。這種方案的初衷是適應(yīng)較老的NAND器件,它們要求CE#在整個(gè)周期為低(譯注:根據(jù)上下文改寫)。

圖4 輸入寄存器接收到頁編程(80h)指令時(shí),內(nèi)部就會(huì)全部重置為1s,使得用戶可以只輸入他想以0位編程的數(shù)據(jù)字節(jié)

圖5 帶有隨機(jī)數(shù)據(jù)輸入的編程指令。圖中加亮的扇區(qū)顯示,該指令只需要后面跟隨著數(shù)據(jù)的2個(gè)字節(jié)的地址
所有NAND操作開始時(shí),都提供一個(gè)指令周期(表1)。


  當(dāng)輸出一串WE#時(shí)鐘時(shí),通過在I/O位7:0上設(shè)置指令、驅(qū)動(dòng)CE#變低且CLE變高,就可以實(shí)現(xiàn)一個(gè)指令周期。注意:在WE#信號(hào)的上升沿上,指令、地址或數(shù)據(jù)被鎖存到NAND器件之中。如表1所示,大多數(shù)指令在第二個(gè)指令周期之后要占用若干地址周期。注意:復(fù)位或讀狀態(tài)指令例外,如果器件忙,就不應(yīng)該發(fā)送新的指令。

以2Gb NAND器件的尋址方案為例,第一和第二地址周期指定列地址,該列地址指定頁內(nèi)的起始字節(jié)(表2)。

  注意:因?yàn)樽詈笠涣械奈恢檬?112,該最后位置的地址就是08h(在第二字節(jié)中)和3Fh(在第一字節(jié)中)。PA5:0指定區(qū)塊內(nèi)的頁地址,BA16:6指定區(qū)塊的地址。雖然大多編程和讀操作需要完整的5字節(jié)地址,在頁內(nèi)隨機(jī)存取數(shù)據(jù)的操作僅僅用到第一和第二字節(jié)。塊擦除操作僅僅需要三個(gè)最高字節(jié)(第三、第四和第五字節(jié))來選擇區(qū)塊。

圖6 典型的存儲(chǔ)方法

圖7 頁讀緩存模式
  

  總體而言,NAND的基本操作包括:復(fù)位(Reset, FFh)操作、讀ID(Read ID, 00h)操作、讀狀態(tài)(Read Status, 70h)操作、編程(Program)操作、隨機(jī)數(shù)據(jù)輸入(Random data input, 85h)操作和讀(Read)操作等。

  將NAND連接到處理器

  選擇內(nèi)置NAND接口的處理器或控制器的好處很多。如果沒有這個(gè)選擇,有可能在NAND和幾乎任何處理器之間設(shè)計(jì)一個(gè)“無粘接邏輯(glueless)”接 口。NAND和NOR閃存的主要區(qū)別是復(fù)用地址和數(shù)據(jù)總線。該總線被用于指定指令、地址或數(shù)據(jù)。CLE信號(hào)指定指令周期,而ALE信號(hào)指定地址周期。利用這兩個(gè)控制信號(hào),有可能選擇指令、地址或數(shù)據(jù)周期。把ALE連接到處理器的第五地址位,而把CLE連接到處理器的第四地址位,就能簡單地通過改變處理器輸出的地址,任意選擇指令、地址或數(shù)據(jù)。這容許CLE和ALE在合適的時(shí)間自動(dòng)設(shè)置為低。

  為了提供指令,處理器在數(shù)據(jù)總線上輸出想要的指令,并輸出地址0010h;為了輸出任意數(shù)量的地址周期,處理器僅僅要依次在處理器地址0020h之后輸出想要的NAND地址。注意,許多處理器能在處理器的寫信號(hào)周圍指定若干時(shí)序參數(shù),這對(duì)于建立合適的時(shí)序是至關(guān)重要的。利用該技術(shù),你不必采用任何粘接邏輯,就可以直接從處理器存取指令、地址和數(shù)據(jù)。

 

多層單元  

  多層單元(MLC)的每一個(gè)單元存儲(chǔ)兩位,而傳統(tǒng)的SLC僅僅能存儲(chǔ)一位。MLC技術(shù)有顯著的密度優(yōu)越性,然而,與SLC相比(表3),其速度或可靠性稍遜。因此,SLC被用于大多數(shù)媒體卡和無線應(yīng)用,而MLC器件通常被用于消費(fèi)電子和其它低成本產(chǎn)品。 
  如上所述,NAND需要ECC以確保數(shù)據(jù)完整性。NAND閃存的每一個(gè)頁面上都包括額外的存儲(chǔ)空間,它就是64個(gè)字節(jié)的空閑區(qū)(每512字節(jié)的扇區(qū)有16字節(jié))。該區(qū)能存儲(chǔ)ECC代碼及其它像磨損評(píng)級(jí)或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執(zhí)行,但是,硬件執(zhí)行有明顯的性能優(yōu)勢。在編程操作期間,ECC單元根據(jù)扇區(qū)中存儲(chǔ)的數(shù)據(jù)來計(jì)算誤碼校正代碼。數(shù)據(jù)區(qū)的ECC代碼然后被分別寫入到各自的空閑區(qū)。當(dāng)數(shù)據(jù)被讀出時(shí),ECC代碼也被讀出;運(yùn)用反操作可以核查讀出的數(shù)據(jù)是否正確。 
  有可能采用ECC算法來校正數(shù)據(jù)錯(cuò)誤。能校正的錯(cuò)誤的數(shù)量取決于所用算法的校正強(qiáng)度。在硬件或軟件中包含ECC,就提供了強(qiáng)大的系統(tǒng)級(jí)解決方案。最簡單的硬件實(shí)現(xiàn)方案是采用簡單的漢明(Simple Hamming)碼,但是,只能校正單一位錯(cuò)誤。瑞德索羅門(Reed-Solomon)碼提供更為強(qiáng)大的糾錯(cuò),并被目前的控制器廣為采用。此外,BCH碼由于比瑞德索羅門方法的效率高,應(yīng)用也日益普及。
  要用軟件執(zhí)行NAND閃存的區(qū)塊管理。該軟件負(fù)責(zé)磨損評(píng)級(jí)或邏輯到物理映射。該軟件還提供ECC碼,如果處理器不包含ECC硬件的話。

  編程或擦除操作之后,重要的是讀狀態(tài)寄存器,因?yàn)樗_認(rèn)是否成功地完成了編程或擦除操作。如果操作失敗,要把該區(qū)塊標(biāo)記為損壞且不能再使用。以前已編寫進(jìn)去的數(shù)據(jù)要從損壞的區(qū)塊中搬出,轉(zhuǎn)移到新的(好的)存儲(chǔ)塊之中。2Gb NAND的規(guī)范規(guī)定,它可以最多有40個(gè)壞的區(qū)塊,這個(gè)數(shù)字在器件的生命周期(額定壽命為10萬次編程/擦除周期)內(nèi)都適用。一些有壞塊的NAND器件能夠出廠,主要就歸根于其裸片面積大。管理器件的軟件負(fù)責(zé)映射壞塊并由好的存儲(chǔ)塊取而代之。  

  利用工廠對(duì)這些區(qū)塊的標(biāo)記,軟件通過掃描塊可以確定區(qū)塊的好壞。壞塊標(biāo)記被固定在空閑區(qū)的第一個(gè)位置(列地址2048)。如果在0或1頁的列地址2048上的數(shù)據(jù)是“non-FF”,那么,該塊要標(biāo)記為壞,并映射出系統(tǒng)。初始化軟件僅僅需要掃描所有區(qū)塊確定以確定哪個(gè)為壞,然后建一個(gè)壞塊表供將來參考。

小心不要擦除壞塊標(biāo)記,這一點(diǎn)很重要。工廠在寬溫和寬電壓范圍內(nèi)測試了NAND;一些由工廠標(biāo)記為壞的區(qū)塊可能在一定的溫度或電壓條件下仍然能工作,但是,將來可能會(huì)失效。如果壞塊信息被擦除,就無法再恢復(fù)數(shù)據(jù)。

作者:Jim Cooke
 
 
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
NAND flash和NOR flash的區(qū)別詳解
MTD的概念(轉(zhuǎn)貼)
Nand Flash與Nor Flash
uClinux平臺(tái)下的Flash存儲(chǔ)技術(shù)||uclinux|
各類存儲(chǔ)器區(qū)別
ROM、RAM、DRAM、SRAM和FLASH的區(qū)別
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服