[摘要] 與NOR Flash和NAND Flash比較,新器件OneNAND Flash體系結構具有存儲容量大、快速讀取、快速編程和上電自啟動等綜合優點。分析和探討了OneNAND Flash的讀數、編程和擦除等操作時序,提供若干OneNAND Flash的應用參考方案。
[關鍵詞] OneNAND Flash 體系結構 操作時序 應用方案
OneNAND Flash是當今最富有創新概念的可編程、可擦除的半導體存儲芯片[1]。這是三星電子運用十多年積累的NAND Flash技術,新近推出的一種集成有NAND存儲內核、NOR接口邏輯和SRAM緩沖區的新型半導體存儲芯片。它綜合了NOR Flash高速讀取、上電能夠自啟動、NAND Flash快速編程和高密度存儲的諸多優點,是一種超高集成度的熔合式存儲器(Fusion Memory)。目前在新一代3G移動電話、數碼相機、便攜式游戲機和MP4播放器等消費類電子產品中,OneNAND Flash被作為統一存儲數據和代碼的大容量存儲器使用,有效地提高了產品的工作性能,降低了成本和功耗。本文以KFM2G16Q2M—DBE[2]為例,介紹OneNAND Flash存儲芯片的體系結構,外部接口信號配置,分析和探討它的讀數、編程和擦除等操作時序,提供若干OneNAND Flash的應用參考方案。
1 內部結構與接口信號配置
KFM2G16Q2M—DBE存儲芯片的集成位密度是2Gb(128M×16),芯片數據字長16位,采用1.8V供電。內部結構由三個邏輯模塊組成,第一個是NAND Flash 模塊,由2048個存儲塊組成(Block0~Block2047)。每個存儲塊由64個存儲頁面(Page0~Page63)組成。每個存儲頁面由主存儲區(Main)和備用存儲區(Spare)組成。Main區域由4個扇區(Sector0~Sector3)組成,每個扇區容量是256字(512字節)。Spare區域也是由4個扇區組成,每個扇區容量是8字(16字節)。即每個存儲頁面的容量是1KW(Main)+32W(Spare)。
第二個是RAM緩沖區,由三個部分組成,其邏輯結構與Flash頁面結構相同。即:①BootRAM存儲區,容量是512W+16W,地址范圍是0~1FFH和8000H~800FH;②RAM0存儲區,容量是1KW+32W,地址范圍是200H~5FFH和8010H~802FH;③RAM1存儲區,容量是1KW+32W,地址范圍是600H~9FFH和8030H~804FH。
第三個是寄存器模塊,地址范圍是F000H~FFFFH,目前開發使用地址寄存器、命令寄存器、狀態寄存器和配置寄存器等32個寄存器。地址寄存器用于尋址Flash塊、頁面和扇區,選擇RAM0或者RAM1。CPU把操作命令寫入命令寄存器后,芯片自動執行內部操作。狀態寄存器自動記錄芯片的實時狀態,供CPU查詢芯片操作是否成功完成等。
在芯片內部Flash數據傳送到RAM0(1),叫做數據裝入(Load)。RAM0(1)數據傳送到Flash,叫做數據編程(Program)。CPU通過向地址寄存器和命令寄存器寫入Flash地址信息和操作命令,控制芯片內部的數據裝入、數據編程和存儲塊擦除等操作。裝入RAM0(1)的數據由CPU讀取。編程數據由CPU寫入RAM0(1)后,再自動編程到Flash頁面。CPU只能讀取BootRAM數據,不能對其寫入數據。CPU可以讀寫RAM0和RAM1存儲區。OneNAND Flash的這種操作特點,稱之為基于寄存器的接口操作(Register Based Interface)。
芯片的接口信號配置有:同步時鐘信號CLK,頻率是54MHz、66MHz或者83MHz;16位地址數據復合總線AD15~AD0,分時輸入地址A15~A0和收發數據D15~D0;地址選通控制信號/AVD,輸入低有效;中斷輸出信號INT,高電平指示芯片內部操作已經完成;忙/就緒輸出信號RDY,高電平指示CPU可以迸發讀取RAM0(1)數據。硬件復位信號/RP,輸入低電平,芯片立即終止任何操作過程;讀數據控制信號/OE,輸入低有效;寫控制信號/WE,輸入低有效;芯片使能控制/CE,輸入低有效;芯片內部結構和接口信號配置如圖1,芯片總線操作功能如表1。


2 OneNAND Flash的存取操作
2.1 數據裝入操作(Load)
在芯片內部,把某個Flash頁面數據傳送到RAM0(1)緩沖區,叫做數據裝入。分為單頁面和多頁面數據裝入。
2.1.1 單頁面數據裝入
單個Flash頁面數據裝入的操作步驟是:①初始化Flash地址寄存器,設置塊、頁和扇區地址。②選擇RAM0或者RAM1緩沖區。③執行數據裝入命令。④查詢數據裝入是否完成。⑤查詢狀態寄存器,檢測數據裝入是否成功。⑥如果數據裝入成功,由CPU讀取RAM緩沖區數據。單個頁面裝入的數據量可以是1~4扇區。單個Flash頁面數據裝入的操作時序圖(最后兩個周期)如圖2。在圖2中,AA表示Flash地址寄存器,LMA表示Flash頁面地址參數,CA表示命令寄存器,LCD表示裝入命令,SA表示狀態寄存器,“就緒”是查詢Flash頁面數據裝入RAM緩沖區是否成功完成。

2.1.2 Cache數據裝入
Cache數據裝入是指在預置兩個Flash頁面地址后,一次可以傳送兩個Flash頁面數據。因此需要使用RAM0和RAM1交替裝入兩個Flash頁面數據。Cache裝入命令由First Cache命令和Finish Cache命令組成。First Cache命令(0EH)把第1頁面數據裝入RAM0(1),同時把第2頁面數據傳送到頁面緩沖區(Page Buffer)。Finish Cache命令(0CH)把頁面緩沖區數據裝入RAM1(0)。通過再寫入第3、第4等Flash頁面地址,配合CPU交替讀取RAM0和RAM1數據,可以裝入更多的Flash頁面數據。Cache數據裝入原理如圖3所示。

2.1.3 Flash塊數據裝入
與Cache數據裝入比較,Flash塊(Block)數據裝入操作,只要設置好Flash首頁面地址和頁面數后,執行塊數據裝入命令,配合CPU交替讀取RAM0和RAM1操作,一次可以讀出3~64個Flash頁面數據,數據傳輸量大,速度快。塊數據裝入操作必須遵守的約束是:①數據必須從RAM0開始裝入,然后與RAM1交替裝入;②所有頁面同屬于一個Flash塊,頁面數3~64;③只能裝入和讀出Flash頁面的Main存儲區數據。
2.1.4 CPU讀寫RAM0(1)緩沖區
CPU通過尋址芯片內部的RAM0(1)緩沖區,對其進行讀寫操作。讀寫RAM0(1)緩沖區分為異步讀寫方式和同步讀寫方式。在異步讀寫方式下,芯片不需要輸入CLK時鐘信號,CPU輸出某個RAM緩沖區的地址,就讀出或者寫入一個字單元。在同步讀寫方式下,芯片需要輸入CLK時鐘信號,在配置好線性迸發存取長度后,CPU輸出RAM緩沖區的地址后,在延遲BRWL時間(迸發讀寫延遲,3~7個時鐘周期,與CLK頻率成正比)后,可以讀出或者寫入4、8、16、32或1024個字單元。如果采用握手控制方式,通過查詢RDY輸出狀態,判斷芯片輸出的迸發數據是否可讀。4字線性迸發讀RAM0(1)緩沖區數據的時序如圖4。

2.2 頁面編程操作
CPU把數據寫入RAM0(1)緩沖區后,再自動傳送到指定的Flash頁面中,叫做Flash頁面數據編程。編程分為單頁面編程、雙頁面編程、多頁面編程和頁面備份編程等操作。頁面編程必須遵守的約束是:在一個Flash存儲塊內部,頁面編程的順序是從頁面0到頁面63,不支持隨機頁面編程。在編程期間,芯片拒收CPU的任何命令和禁止芯片復位。
2.2.1單頁面編程
單頁面編程的單位是1~4扇區。頁面編程步驟是:①設置Flash塊、頁面和扇區地址;②選擇RAM0或者RAM1;③CPU把數據寫入RAM0或者RAM1;④執行編程命令,開始編程;⑤查詢編程是否成功完成。如果頁面編程失敗,該存儲塊必須打上無效存儲塊標記,另選一個有效存儲塊編程。單頁面編程時序(最后兩個周期)如圖5。在圖5中,AA表示Flash地址寄存器,PMA表示Flash頁面地址參數,BA表示RAM0(1)緩沖區,BD表示編程數據,CA表示命令寄存器,PCD表示編程命令,SA表示狀態寄存器,“就緒”是查詢Flash頁面數據編程是否成功完成。

2.2.2雙頁面編程
芯片中NAND Flash由2048個存儲塊(Block0 ~ Block2047)組成。在雙頁面編程時,一個頁面來自偶地址塊Block2j(j=0,1,2 …),另一個頁面來自奇地址塊Block2j+1,兩個頁面地址必須相同。RAM0數據編程到Block2j塊中頁面,RAM1數據編程到Block2j+1塊中頁面。雙頁面編程操作的步驟是:①設置Block2j塊地址和頁面地址;②設置RAM0編程Block2j塊中頁面;③CPU把編程數據寫入RAM0和RAM1;④執行雙頁面編程命令;⑤查詢雙頁面編程是否成功完成。
以上操作步驟說明,雙頁面編程只要確定偶地址塊及其頁面地址后,奇地址塊及其頁面地址也就隨之而定,反之則不然。另外,如果編程數據少于頁面容量,頁面中剩下的所有單元必須寫入全1數據。
2.2.3多頁面編程
多頁面編程也叫做Cache編程。其功能是至少執行三次雙頁面編程操作。可以完成對偶地址存儲塊和奇地址存儲塊中各3個頁面的數據編程,因此編程效率更高。Cache編程的原理是,CPU把4KB編程數據分別寫入RAM0和RAM1后,執行Cache編程命令,RAM0和RAM1數據同時分別傳送到兩個頁面緩沖區中,與此同時中斷標志置1,指示CPU再把新的4KB編程數據分別寫入RAM0和RAM1,其后再執行Cache編程命令或者執行結束Cache編程命令,完成多頁面編程操作。Cache編程操作原理如圖6。

2.2.4頁面備份編程
芯片的擦除操作是以存儲塊為單位。因此,當存儲塊中有部分頁面數據需要修改時,必須擦除去整個存儲塊數據后,重新進行頁面數據編程才能完成修改。為了保護存儲塊中其他的頁面數據,必須把這些頁面數據拷貝到另一個空白的存儲塊中,這種數據拷貝叫做頁面備份編程操作。頁面備份編程操作完全是在芯片內部進行,無需借助外部存儲器,因此省時間和速度快。頁面備份操作的步驟是:①設置Flash源與目頁面地址;②選擇RAM0或者RAM1;③執行備份編程命令,把源頁面數據裝入RAM0(1),覆蓋先前數據,然后自動編程到目標頁面;④查詢頁面備份編程操作是否成功完成。
2.2.5可修改數據的備份編程
數據可以修改的頁面備份編程操作分三步進行:①執行數據裝入命令,把Flash源頁面數據裝入RAM0(1)中;②由CPU完成對RAM0(1)數據的修改;③執行頁面編程命令,把RAM0(1)數據寫入目標Flash頁面。
2.3 芯片擦除操作
Flash以存儲塊為單位擦除操作。存儲塊被擦除前應處于開鎖狀態,處于鎖定狀態的存儲塊無法擦除。可以擦除單個存儲塊,也支持一次最多擦除64個存儲塊的多塊擦除操作。
2.3.1單存儲塊擦除
每次擦除一個存儲塊。擦除步驟是:①設置存儲塊地址;②執行塊擦除命令;③查詢塊擦除是否成功完成。在塊擦除期間,禁止對芯片復位操作。除了擦除暫停命令外,芯片拒收CPU寫入的任何命令。單個存儲塊擦除操作時序如圖7。在圖7中,AA表示Flash地址寄存器,EMA表示Flash存儲塊地址參數,CA表示命令寄存器,ECD表示存儲塊擦除命令,SA表示狀態寄存器,“就緒”是查詢Flash存儲塊擦除操作是否成功完成。
2.3.2多存儲塊擦除
多個存儲塊擦除操作,一次可以擦除2~64個存儲塊。多塊擦除操作的步驟是:①逐個輸入要擦除的存儲塊地址;②執行多塊擦除命令,啟動擦除過程;③再逐個輸入塊地址,查詢每個存儲塊是否擦除成功。在多塊擦除期間,如果遇到某個存儲塊擦除失敗的情況,也不會中止擦除過程,直到完成所有存儲塊的擦除操作。在多塊擦除操作中,除非遇到最后一個存儲塊被鎖定的情況,會導致擦除操作失敗。否則會自動跳過鎖定塊,完成其他未鎖定存儲塊的擦除操作。

2.4 存儲塊的寫保護
芯片中的每一個存儲塊都可以設置成寫保護狀態,以便禁止對存儲塊進行編程和擦除操作。芯片上電時,內部自動產生冷復位(Cold reset),所有存儲塊自動進入寫保護狀態。當芯片的/RP引腳輸入低電平時,產生硬件復位操作,所有存儲塊也自動進入寫保護狀態。芯片設計了開鎖(Unlock)、鎖定(Lock)和鎖緊(Lock tight)三種軟件命令,分別用于對每個存儲塊的開鎖、鎖定或者鎖緊操作。處于開鎖狀態的存儲塊接受數據編程或者擦除操作。處于鎖緊狀態的存儲塊,使用開鎖命令無法打開,只能對芯片硬件復位或者斷電后重新啟動,才能使存儲塊從鎖緊狀態轉換到鎖定狀態,再使用開鎖命令打開。芯片還設計了同時解鎖所有存儲塊的命令,以便在芯片上電后,控制所有存儲塊一次性開鎖。查詢寫保護狀態寄存器,可以知道任何一個存儲塊當前是處于開鎖、鎖定或者鎖緊狀態。
另外,芯片中的BootRAM也受到寫保護。當芯片上電時,受內部產生的冷復位觸發,自動將存儲于存儲塊0頁面0中,容量為1KB的啟動代碼裝入BootRAM,此后BootRAM處于鎖定狀態,CPU可以讀取,但不能改寫。
2.5 芯片的復位操作
芯片具有冷(Cold)、溫(Warm)和熱(Hot)復位三種操作。冷復位就是芯片上電復位(Power On Reset)。暖復位就是/RP引腳輸入低電平的硬件復位。熱復位是軟件復位。軟件復位命令分為“Flash內核復位命令”和“芯片復位命令”兩種。它們的區別是,前者復位不影響寄存器陣列,而后者復位要初始化寄存器陣列,兩種軟件命令都不影響BootRAM和RAM0(1)。
2.6 OTP塊的操作
芯片中有兩個是一次性可編程存儲塊(One Time Progr- ammable Block),一個是獨立于Flash陣列的OTP塊,另一個是Flash陣列中的Block0存儲塊。OTP塊可以讀出、一次性編程和鎖定操作,但不能被擦除。OTP塊不能與其他存儲塊配對進行雙頁面編程操作。OTP塊保證是合格有效的存儲塊。OTP塊不是使用塊地址訪問,而是使用專用的命令訪問。通過任何一種復位操作可以退出OTP塊操作。獨立OTP塊劃分成兩個部分,頁面0~頁面49供用戶使用,頁面50~頁面63由廠家在芯片出廠前完成編程。Block0存儲塊內部64個頁面全部供用戶使用。
讀取OTP塊內部頁面數據的操作步驟是:①執行OTP塊訪問命令(65H);②設置OTP塊頁面和扇區地址;③選擇RAM0(1);④執行數據裝入命令;⑤CPU讀取RAM0(1)數據;⑥執行任何一種復位命令,退出OTP塊操作。
OTP塊內部任何單元都只能編程一次,而且無法擦除。OTP塊的編程操作步驟是:①執行OTP塊訪問命令(65H);②設置OTP塊頁面和扇區地址;③選擇RAM0(1);④CPU把編程數據寫入RAM0(1);⑤執行編程命令;⑥執行任何一種復位命令,退出OTP塊操作。
OTP塊的鎖定操作是通過編程獨立OTP塊內部頁面0中備用扇區0的第8字單元實現的。如果該字單元寫入數據0FCH,則鎖定獨立OTP塊。如果該字單元寫入數據0F3H,則鎖定Block0存儲塊。如果該字單元寫入數據0F0H,則同時鎖定兩個OTP塊。兩個OTP塊之間的鎖定約束是:如果先鎖定獨立OTP塊,那么Block0存儲塊不能鎖定;如果先鎖定Block0存儲塊,獨立OTP塊可以任何時候鎖定。OTP存儲塊或Block0存儲塊鎖定后,必須執行上電復位命令,退出OTP塊操作。
2.7上電自啟動
芯片具有的最好特性之一,就是可以作為啟動設備使用。芯片內置有啟動裝載器(Boot Loader)。芯片上電時,啟動裝載器把事先存儲在Flash中的啟動程序傳送到BootRAM,CPU就象讀取SRAM或者NOR Flash一樣讀取BootRAM中的指令并執行之。如果啟動程序容量不超過1KB,那么BootRAM正好存儲。如果啟動程序容量大于1KB而小于3KB,那么1KB傳送到BootRAM,剩下部分使用裝入命令傳送到RAM0或者RAM1,CPU執行完BootRAM指令后,再執行RAM0或者RAM1指令。如果啟動程序容量大于3KB,那么1KB傳送到BootRAM,剩下部分使用雙緩沖方式,通過兩個數據緩沖區(RAM0和RAM1)傳送到系統的DRAM中,CPU讀取和執行DRAM中的指令,速度更快。
2.8 自動檢糾錯
芯片內置有ECC(Error Correction Code)檢糾錯邏輯,可以檢測出Flash頁面數據中發生的兩個位錯誤和糾正一個位錯誤。在Flash頁面編程時,ECC邏輯自動為每個主扇區產生24位ECC代碼,為每個備用扇區產生10位ECC代碼,分別存儲在備用扇區的相應字單元中。在裝入Flash頁面數據時,ECC邏輯又會產生新的ECC代碼,但沒有存儲到備用扇區,通過自動比較讀和寫過程中產生的兩種ECC代碼,就能夠檢測出Flash頁面中發生錯誤的數據字和數據位,并且記錄在相應的狀態寄存器中。狀態寄存器記錄三種錯誤類型,分別是:無錯誤;1位可糾正的錯誤;2位無法糾正的錯誤。如果需要,CPU可以查詢狀態寄存器,確定讀取Flash頁面數據是否發生錯誤。
2.9 無效存儲塊的管理
新出廠的芯片或者在芯片的使用壽命期間,都可能存在和產生無效的存儲塊(Invalid Block)。無效塊也就是壞塊(Bad Block),是指存儲塊內部存在著一個或者幾個可靠性無法得到保證的位單元。壞塊不會影響有效塊的性能,因為存儲塊之間是互相絕緣的。芯片中的Block0和OTP這兩個存儲塊保證是有效的,否則是廢品。芯片出廠前,在每個存儲塊的頁面0或者頁面1的備用扇區0的首字單元中,存儲著該存儲塊有效性的信息,有效存儲塊的信息是FFFFH,否則就是壞塊。在使用中有必要創建一個壞塊記錄表,用來登記壞塊的地址,以供查詢。
3 實際應用方案
OneNAND Flash以存儲容量大、讀數與編程快速、功耗低、價格低廉、上電自啟動和自動糾錯等綜合優點,目前正逐步取代以往使用的NOR Flash和NAND Flash,被廣泛應用在各種消費類電子產品中,實現了使用一塊OneNAND Flash芯片同時存儲程序和數據,有效降低了電子產品的功耗,顯著提高了電子產品的性能。
3.1 在3G移動電話中的應用
新一代的3G移動電話要求配置更大容量的存儲器,以便能夠以更高的帶寬下載和處理大容量的多媒體信息。以往移動電話的組成方案如圖8所示,其中使用NOR Flash+NAND Flash組合,分別存儲程序和數據。使用OneNAND Flash統一存儲程序和數據的3G移動電話的最新解決方案如圖9,本系統有效減少了Flash芯片的使用品種,顯著降低了系統的成本和功耗,3G移動電話的成本效益得到顯著提高。

3.2 在硬盤式MP3播放器中的應用
當前硬盤式MP3播放器的組成結構如圖10,其中容量512Mb DRAM的待機功耗是200微安,容量16Mb NOR Flash的待機功耗是10微安,總待機功耗是210微安。使用One NAND Flash的MP3播放器結構如圖11,其中容量512Mb OneNAND Flash的待機功耗也只是10微安,而DRAM的配置容量被顯著減小到64Mb,待機功耗減少到90微安,從而系統總待機功耗降低到100微安。由此可見,使用OneNAND Flash的電子產品,系統功耗得到明顯降低,因此電池的供電時間和使用壽命都會得到顯著的增加。

4 結語
目前三星電子推出的OneNAND Flash系列產品非常豐富。本系列產品還有KFN4G16Q2M[3]和KFK8G16Q2M[4]。這兩種芯片的數據字長都是16位,芯片存儲密度分別是4Gb和8Gb。4Gb芯片內部集成兩個2Gb模塊,而且只配置一條片選輸入/CS,它是通過對配置寄存器進行設置,來選擇內部的某一個2Gb模塊,進行各種存取和擦除操作。8Gb芯片內部集成四個2Gb模塊,配置兩條片選輸入/CS1和/CS2,再配合對配置寄存器的設置,來選擇內部的某一個2Gb模塊,進行各種存取和擦除操作。高密度、高速度、低功耗、高性價比的OneNAND Flash系列存儲芯片,滿足了新一代3G移動設備需要配置大容量存儲器,以便能夠下載和存儲大容量的多媒體信息以及高帶寬傳輸多媒體信息的要求。
參考文獻
[1] Samsung Electronics Co., LTD. OneNAND Product overview [EB/OL]. [2008-3-26].http://www.samsung.com/global/business/semiconductor/products/fusionmemory/Products_OneNAND.html
[2] Samsung Electronics Co., LTD. KFM2G16Q2M-DEBX [EB/OL]. [2008-3- 26].http//www.samsung.com/products/fusionmemory/oneNAND.htlm.
[3] Samsung Electronics Co., LTD. KFN4G16Q2M-DEBX [EB/OL]. [2008- 3-26].http//www.samsung.com/products/fusionmemory/oneNAND.htlm.
[4] Samsung Electronics Co., LTD. KFK8G16Q2M-DEBX [EB/OL]. [2008- 3-26].http//www.samsung.com/products/fusionmemory/oneNAND.htlm.