NOR Flash在1988年首先由Intel開發(fā)出來,經(jīng)過這么多年的發(fā)展,廣泛應(yīng)用于各種計算機(jī)、嵌入式產(chǎn)品中。NOR和NAND是目前市場上兩種主要的非易失性存儲器。
NOR的特點(diǎn)是芯片內(nèi)執(zhí)行(XIP,eXecute In Place),所以程序可以直接在NOR中執(zhí)行,無需先把代碼讀到系統(tǒng)RAM中去。NOR的讀取效率很高,并且由于他的XIP特性,所以常用與存儲嵌入式產(chǎn)品的Bootloader等啟動代碼,但是NOR的寫入和擦除速度很低。
NOR和NAND都是使用包含源極、漏極和柵極的三端器件作為存儲單元的,這種三端器件和場效應(yīng)管的工作原理相似,利用電壓控制源極和漏極之間的通斷,柵極的電流消耗極小,不同的是場效應(yīng)管為單柵極結(jié)構(gòu),而Flash為雙柵極結(jié)構(gòu),在柵極和硅襯底之間還有一個浮置柵極。浮置柵極由氮化物夾在兩層二氧化硅材料之間構(gòu)成,中間的氮化物是可以存儲電荷的電荷勢阱。上下兩層的氧化物的厚度大于50埃,可避免發(fā)生擊穿。
向電荷勢阱注入電荷的過程就是向存儲單元寫入數(shù)據(jù)的過程,寫入數(shù)據(jù)的技術(shù)有兩種:熱電子注入和F-N隧道效應(yīng),前者是通過源極給浮柵充電(NOR使用這種方式給浮柵充電),后者是通過硅基層給浮柵充電(NAND使用這種方式給浮柵充電)。
值得注意的是,在寫入新數(shù)據(jù)之前,必須先將原有的數(shù)據(jù)擦除,也就是先要將浮柵的電荷泄放,兩種Flash都是通過F-N隧道效應(yīng)放電。
向浮柵中注入電荷表示寫入了數(shù)據(jù)“0”,沒有注入電荷表示數(shù)據(jù)“1”,所以擦除Flash的數(shù)據(jù)是寫數(shù)據(jù)“1”。對于浮柵中有電荷的單元來說,由于浮柵的感應(yīng)作用,在源極和漏極之間將形成帶正電的空間電荷區(qū),這時無論控制極上有沒有施加偏置電壓,晶體管都將處于導(dǎo)通狀態(tài)。而對于浮柵中沒有電荷的晶體管來說,只有當(dāng)控制極上施加有適當(dāng)?shù)钠秒妷海诠杌鶎由细袘?yīng)出電荷,源極和漏極才能導(dǎo)通,也就是說在沒有給控制極施加偏置電壓時,晶體管是截止的。
如果晶體管的源極接地而漏極接位線,在無偏置電壓的情況下,檢測晶體管的導(dǎo)通狀態(tài)就可以獲得存儲單元中的數(shù)據(jù),如果位線上的電平為低,在說明晶體管處于導(dǎo)通狀態(tài),讀取數(shù)據(jù)“0”;如果位線上為高電平,則說明晶體管處于截止?fàn)顟B(tài),讀取的數(shù)據(jù)為“1”。又因?yàn)榭刂茤艠O在讀取數(shù)據(jù)的過程中施加的電壓較小或者根本不需要施加電壓,不足以改變浮柵中原有的電荷量,故讀取操作不會改變Flash中原有的數(shù)據(jù)。
NOR的每個存儲單元以并聯(lián)的方式連接到位線,方便對每一位進(jìn)行隨機(jī)存?。痪哂袑S械牡刂肪€,可以實(shí)現(xiàn)一次性的尋址,flash對處理器指令的執(zhí)行時間較短。
在寫數(shù)據(jù)和擦除數(shù)據(jù)時,NAND支持整塊擦鞋操作,所以速度比NOR快很多;讀數(shù)據(jù)時,由于NAND要先向芯片發(fā)送地址信息進(jìn)行尋址才可以開始讀寫數(shù)據(jù),且他的地址信息包括塊號、塊內(nèi)頁號和頁內(nèi)字節(jié)號等,要順序選擇才能定位到要操作的字節(jié);所以每進(jìn)行一次數(shù)據(jù)訪問需要經(jīng)過三次尋址,至少要三個時鐘周期;而NOR的操作則是以字或者字節(jié)為單位進(jìn)行,直接讀取,所以讀數(shù)據(jù)時NOR比NAND快很多。
NOR的每個存儲單元與位線相連,增加了芯片內(nèi)位線的數(shù)量,不利于存儲密度的提高,所以在面積和工藝相同的情況下,NAND的容量要比NOR的容量大很多,生產(chǎn)成本更低,更容易生產(chǎn)大容量的芯片。
Flash在寫入和擦除數(shù)據(jù)時會導(dǎo)致介質(zhì)的氧化降解,導(dǎo)致芯片老化,尤其是NOR,這個問題尤甚,所以并不適合頻繁地擦寫。
上圖是Spansion公司的S29GLxxxN的讀操作的時序,首先先從地址發(fā)出尋址信號,當(dāng)該信號穩(wěn)定后,CE#(Chip Enalbe,低有效)變?yōu)榈碗娖教幱谟行顟B(tài),然后是OE#(Output Enable,低有效)變?yōu)榈碗娖教幱谟行顟B(tài),之后數(shù)據(jù)就可以通過數(shù)據(jù)線輸出。在這個過程中WE#(Write Enabel,低有效)信號始終為高電平處于無效狀態(tài)。
上圖反映了NOR的尋址過程,由Amax-A3選擇頁地址,A2-A0選擇頁內(nèi)陸址。圖中應(yīng)為A23-A3。
NOR的寫過程和讀過程類似,在寫過程中OE#為高,WE#為低。
談到Flash,不能不提到一個概念CFI(Commen Flash Interface),公共閃存接口。自Flash誕生之后,他的應(yīng)用就越來越廣泛,由于生產(chǎn)Flash的廠家很多,不同廠商的Flash產(chǎn)品的操作命令集合電氣參數(shù)各不相同,這給Flash的開發(fā)和設(shè)計人員和OEM制造商帶來許多不便。為了對現(xiàn)有的Flash產(chǎn)品進(jìn)行升級或者使用其它公司的Flash產(chǎn)品替代,必須對原有的程序代碼和硬件結(jié)構(gòu)進(jìn)行修改。為了解決上述問題,CFI就誕生了,CFI是一個公開的標(biāo)準(zhǔn),從Flash器件中讀取數(shù)據(jù)的接口。他可以使系統(tǒng)軟件查詢已安裝的Flash器件的各種參數(shù),包括器件陣列結(jié)構(gòu)參數(shù)、電氣和時間參數(shù)以及器件支持的功能等。利用CFI可以不用修改系統(tǒng)軟件就可以使用新型的和改進(jìn)的產(chǎn)品代替舊版本的產(chǎn)品。為了確定一個Flash器件是否為CFI使能的,系統(tǒng)軟件首先要通過CUI(命令用戶接口)往Flash器件的地址55H寫入數(shù)據(jù)98H,然后從器件的地址10H開始通過數(shù)據(jù)總線連續(xù)讀取3個存儲單元的內(nèi)容,如果數(shù)據(jù)總線返回的3個存儲單元的字符分別為“Q”“R”“Y”,則該器件是CFI使能的。