王續(xù)朝
(北京自動測試技術研究所,北京 100088)
隨著當前移動存儲技術的快速發(fā)展和移動存儲市場的高速擴大,F(xiàn)lash型存儲器的用量迅速增長。Flash芯片由于其便攜、可靠、成本低等優(yōu)點,在移動產(chǎn)品中非常適用。市場的需求催生了一大批Flash芯片研發(fā)、生產(chǎn)、應用企業(yè)。為保證芯片長期可靠的工作,這些企業(yè)需要在產(chǎn)品出廠前對Flash存儲器進行高速和細致地測試,因此,高效Flash存儲器測試算法的研究就顯得十分必要。
本文以三星公司的K9F2G08R0A芯片為例,介紹Nand-flash存儲器芯片的讀寫流程和時序。
K9F2G08R0A的容量為256M×8 Bit,存儲空間按128K個頁(行)、每頁中2K+64個字節(jié)(列)的組成方式構成,備用的64列。K9F2G08R0A還將存儲空間分為塊(block),每1塊由64個頁構成。因此K9F2G08R0A中一共有2,048個塊。這種“塊-頁”結構,恰好能滿足文件系統(tǒng)中劃分簇和扇區(qū)的結構要求。K9F2G08R0A的內部結構如圖1所示。
圖1 K9F2G08R0A的內部結構
K9F2G08R0A的讀和寫都以頁為單位,擦除則以塊為單位進行操作。
K9F2G08R0A的地址通過8位端口傳送,有效地節(jié)省了引腳的數(shù)量,并能夠保持不同密度器件引腳的一致性,系統(tǒng)可以在電路不作改動的情況下升級為高容量存儲器件。
K9F2G08R0A通過CLE和ALE信號線實現(xiàn)I/O口上指令和地址的復用。指令、地址和數(shù)據(jù)都通過拉低WE和CE從I/O口寫入器件中。有一些指令只需要一個總線周期完成,例如,復位指令、讀指令和狀態(tài)讀指令等;另外一些指令,例如頁寫入和塊擦除,則需要2個周期,其中一個周期用來啟動,而另一個周期用來執(zhí)行。
1.2.1 頁讀操作
在初始上電時,器件進入缺省的“讀方式1模式”。在這一模式下,頁讀操作通過將00h指令寫入指令寄存器,接著寫入5個地址(2個列地址,3個行地址)來啟動。一旦頁讀指令被器件鎖存,下面的頁讀操作就不需要再重復寫入指令了。
寫入指令和地址后,處理器可以通過對信號線R/B的分析來判斷該操作是否完成。如果信號為低電平,表示器件正“忙”;為高電平,說明器件內部操作完成,要讀取的數(shù)據(jù)被送入了數(shù)據(jù)寄存器。外部控制器可以在以50ns為周期的連續(xù)RE脈沖信號的控制下,從I/O口依次讀出數(shù)據(jù)。連續(xù)頁讀操作中,輸出的數(shù)據(jù)是從指定的列地址開始,直到該頁的最后一個列地址的數(shù)據(jù)為止。如圖2讀指令流程圖所示。
圖2 讀指令流程圖
1.2.2 頁寫操作
K9F2G08R0A的寫入操作也以頁為單位。寫入必須在擦除之后,否則寫入將出錯。
頁寫入周期總共包括3個步驟:寫入串行數(shù)據(jù)輸入指令(80h),然后寫入5個字節(jié)的地址信息,最后串行寫入數(shù)據(jù)。串行寫入的數(shù)據(jù)最多為2K+64字節(jié),它們首先被寫入器件內的頁寄存器,接著器件進入一個內部寫入過程,將數(shù)據(jù)從頁寄存器寫入存儲宏單元。
串行數(shù)據(jù)寫入完成后,需要寫入“頁寫入確認”指令10h,這條指令將初始化器件的內部寫入操作。如果單獨寫入10h而沒有前面的步驟,則10h不起作用。10h寫入之后,K9F2G08R0A的內部寫控制器將自動執(zhí)行內部寫入和校驗中必要的算法和時序,這時系統(tǒng)控制器就可以去做別的事了。
內部寫入操作開始后,器件自動進入“讀狀態(tài)寄存器”模式。在這一模式下,當RE和CE為低電平時,系統(tǒng)可以讀取狀態(tài)寄存器??梢酝ㄟ^檢測R/B的輸出,或讀狀態(tài)寄存器的狀態(tài)位(I/O 6)來判斷內部寫入是否結束。在器件進行內部寫入操作時,只有讀狀態(tài)寄存器指令和復位指令會被響應。當頁寫入操作完成,應該檢測寫狀態(tài)位(I/O 0)的電平。
內部寫校驗只對沒有成功地寫為0的情況進行檢測。指令寄存器始終保持著讀狀態(tài)寄存器模式,直到其他有效的指令寫入指令寄存器為止。如圖3 寫指令流程圖所示。
圖3 寫指令流程圖
1.2.3 塊擦除
擦除操作是以塊為單位進行的。擦除的啟動指令為60h,塊地址的輸入通過兩個時鐘周期完成。塊地址載入之后執(zhí)行擦除確認指令D0h,它用來初始化內部擦除操作。擦除確認命令還用來防止外部干擾產(chǎn)生擦除操作的意外情況。器件檢測到擦除確認命令輸入后,在WE的上升沿啟動內部寫控制器開始執(zhí)行擦除和擦除校驗。內部擦除操作完成后,檢測寫狀態(tài)位(I/O 0),從而了解擦除操作是否有錯誤發(fā)生。如圖4擦除指令流程圖所示。
圖4 擦除令流程圖
1.2.4 讀狀態(tài)寄存器
K9F2G08R0A包含一個狀態(tài)寄存器,該寄存器反應了寫入或擦除操作是否完成,或寫入和擦除操作是否無錯。寫入70h指令,啟動讀狀態(tài)寄存器周期。狀態(tài)寄存器的內容將在CE或RE的下降沿處送出至I/O端口。
器件一旦接收到讀狀態(tài)寄存器的指令,它就將保持狀態(tài)寄存器在讀狀態(tài),直到有其他的指令輸入。因此,如果在任意讀操作中采用了狀態(tài)寄存器瀆操作,則在連續(xù)頁讀的過程中,必須重發(fā)00h或50h指令。
1.2.5 讀器件ID
K9F2G08R0A器件具有一個產(chǎn)品鑒定識別碼(ID),系統(tǒng)控制器可以讀出這個ID,從而起到識別器件的作用。讀ID的步驟是:寫入90h指令,然后寫入一個地址00h。在兩個讀周期下,廠商代碼和器件代碼將被連續(xù)輸出至I/O口。
同樣,一旦進入這種命令模式,器件將保持這種命令狀態(tài),直到接收到其他的指令為止。
1.2.6 復位
器件提供一個復位(RESET)指令,通過向指令寄存器寫入FFh來完成對器件的復位。當器件處于任意讀模式、寫入或擦除模式的忙狀態(tài)時,發(fā)送復位指令可以使器件中止當前的操作,正在被修改的存儲器宏單元的內容不再有效,指令寄存器被清零并等待下一條指令的到來。當WP為高時,狀態(tài)寄存器被清為C0h。
INC:執(zhí)行當前行圖形,然后轉到下一行
LDC,n:加載循環(huán)計數(shù)器,該行為循環(huán)起始行。同時執(zhí)行當前行圖形,之后轉到下一行圖形。循環(huán)次數(shù)為n。
LOOP:循環(huán)語句。執(zhí)行當前行圖形后,開始循環(huán)LDC到LOOP語句之間的圖形n次。循環(huán)滿后轉到下一行圖形。
RPT,n:重復執(zhí)行當前行圖形n次,然后跳轉到下一行圖形。RPT,1執(zhí)行當前圖形2次,即重復一次。
HALT :停止命令。
A:<16 位數(shù) > B:<16 位數(shù) > :裝 載 Load, 可同時裝載
A++ B++ : A 、B 寄存器加 1
A-- B-- : A、B 寄存器減 1
A B :無操作
A:X :A 寄存器裝載 X 地址
指令 算法圖形 WP CE1 CE2 WE RE CLE ALE R/B1 R/B2 IO
INC,
WRITED,X=A,A:0;Y=A;D=Z; 1 1 1 1 1 0 0 X X XXXXXXXX //Page Write(BOCK1)
LDC,63, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 1 0 X Z 10000000 //80h_(SerialData Input)
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 Z Z 00000000 //Col Addr1
INC, WRITED,X=A;Y=A;D=A; 1 0 1 0 1 0 1 Z Z 00000000 //Col Addr2
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 Z X ZZZZZZZZ //Raw Addr3
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 X Z 00000000 //Raw Addr4
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 Z X 00000000 //Raw Addr5
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 0 0 Z Z XZZXZXZX
RPT,2111, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 0 Z X 01010101 //Write 55
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 1 0 X Z 00010000 //10h_(Program Command)
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 1 0 X Z XXXXXXXX
RPT,500, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 1 0 L Z XXXXXXXX //tPROG
RPT,7000, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 1 0 X Z ZZZZZZZZ //tPROG
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 1 0 Z Z 01110000 //70h_(Read State Command)
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 1 0 0 0 Z X XXXXXXXL //I/O0=0
INC, WRITED,X=A,A++;Y=A;D=Z; 1 1 1 1 1 0 0 Z Z XXXXXXXX
LOOP, WRITED,X=A;Y=A;D=Z; 1 1 1 1 1 0 0 Z Z XXXXXXXX
HALT, WRITED,X=A;Y=A;D=Z; 1 1 1 1 1 0 0 Z Z XXXXXXXX //---------------
指令 算法圖形 WP CE1 CE2 WE RE CLE ALE R/B1 R/B2 IO
INC, WRITED,X=A,A:0;Y=A;D=Z; 1 1 1 1 1 0 0 X X XXXXXXXX //Page Read
LDC,63, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 1 0 Z X 00000000 //00H_(Read Addr)
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 X X 00000000 //Col Addr1
INC, WRITED,X=A;Y=A;D=A; 1 0 1 0 1 0 1 X X 00000000 //Col Addr2
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 X X ZZZZZZZZ //Raw Addr3
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 X X 00000000 //Raw Addr4
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 0 1 X X 00000000 //Raw Addr5
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 0 1 1 0 Z X 00110000 //30H_(Read Command)
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 0 0 X X ZXXXXXXX
RPT,50, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 0 0 L Z ZXXXXXXX //tR
RPT,200, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 0 0 Z X XXXXXXXX //tR
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 0 0 Z X XXXXXXXX
RPT,2111, WRITED,X=A;Y=A;D=Z; 1 0 1 1 0 0 0 Z X LHLHLHLH //Read 55
INC, WRITED,X=A;Y=A;D=Z; 1 0 1 1 1 0 0 Z X ZXXXXXXX
INC, WRITED,X=A,A++;Y=A;D=Z; 1 1 1 1 1 0 0 X X ZZZZZZZZ
LOOP, WRITED,X=A;Y=A;D=Z; 1 1 1 1 1 0 0 X X ZZZZZZZZ
HALT, WRITED,X=A;Y=A;D=Z; Z Z Z Z Z Z Z X X XXXXXXXX //---------------
根據(jù)上述思想,我們在國產(chǎn)BC3196H的測試系統(tǒng)平臺上,對K9F2G08R0A進行了測試并通過對數(shù)字系統(tǒng)算法圖形功能進行改善,算法圖形發(fā)生器由多個算術邏輯單元、多路選擇器以及操作寄存器組成,可以實現(xiàn)復雜的邏輯操作和算術運算,在原有的X地址、Y地址復用的基礎上,增加為X地址、Y地址、D數(shù)據(jù)的復用,可以更快、更簡便的對地址復用型Flash存儲器進行測試,減少測試程序開發(fā)難度。
本文主要討論了Nand-Flash存儲器芯片的工作原理,較好地解決了Flash存儲器測試的困難。通過對復用型Flash算法圖形功能的改善,可以實現(xiàn)復雜的邏輯操作和算術運算,更快捷的對存儲器進行測試,提高了Flash存儲器芯片的測試開發(fā)周期,提高了測試效率。在大容量的存儲器測試的時候,測試時間還有待提高,希望在以后能夠研究出更快速更簡潔的算法圖形發(fā)生器及算法,進一步提高整個Flash存儲器芯片的測試效率。
[1]黃海軍,宜懷.嵌入式系統(tǒng)中Nand-Flash的原理及應用[J].電子開發(fā)網(wǎng),2010.
[2]李海宏,劉文怡,張彥軍.通用Flash存儲器檢測裝置的設計與實現(xiàn)[J].微計算機信息,2008(2).
[3]樊寅逸,何海光.AT45DB081B在數(shù)據(jù)采集系統(tǒng)中的應用[J].電子元器件應用,2007 (3).
[4]岳麗華,韋鵬,鐘誠.一種自適應的復合多路flash存儲結構[J].中國科學技術大學學報,2008(7).
[5]王藝燃,于宗光.一種應用于DSP嵌入式存儲器的靈敏放大器設計[J].微電子學,2010 (2).
[6]雷加,晏筱薇.Flash存儲器的內建自測試設計[J].微計算機信息,2008 (5)
[7]陳桂生,李志剛.嵌入式Flash文件系統(tǒng)的設計與實現(xiàn)[J].計算機系統(tǒng)應用,2010 (5).
[8]任勇峰,郭亞力.Flash存儲器的高速寫入方法[J].電腦開發(fā)與應用,2001(5).
[9]廖專崇,黃俊義.存儲技術的現(xiàn)狀與未來[J].電子產(chǎn)品世界,2004(01).