1 引言
在便攜式電子產品如U盤、MP3播放器、數碼相機中,常常需要大容量、高密度的存儲器,而在各種存儲器中,NAND FLASH以價格低、密度高、效率高等優勢成為最理想的器件。但NAND FLASH的控制邏輯比較復雜,對時序要求也十分嚴格,而且最重要的是NAND FLASH中允許存在一定的壞塊(壞塊在使用過程中還可能增加),這就給判斷壞塊、給壞塊做標記和擦除等操作帶來很大的難度,于是就要求有一個控制器,使系統用戶能夠方便地使用NAND FLASH,為此提出了一種基于FPGA的NAND FLASH控制器的設計方法,并用VHDL給予實現,Modelsim得出仿真結果,并在ALTERA公司的EP2C35F672器件中得到驗證。FPGA與NAND FLASH接口圖如圖1所示。
2 NAND FLASH操作
NAND FLASH器件的管腳分為控制信號、I/O二類,地址和數據是復用I/O管腳。通常NAND FLASH器件包括一定數目BLOCK,每個BLOCK包括一定數目的PAGE,每個NAND FLASH器件把BLOCK,PAGE按照行列地址進行尋址,基于這種特殊的結構。
2.1 READ ID
NAND FLASH器件ID包括:Manufacture ID,device ID以及容量大小,這些重要的信息是判斷NAND FLASH的重要憑證,因此將這些信息讀出來加以判斷就顯得特別重要。在CLE為高,WE#上升沿,在I/O輸入90H命令讓NAND FLASH進入讀ID狀態,接著在ALE為高,WE#上升沿,在I/O輸入00H地址,在等待tWHR將RE#置為讀,在RE#連續4個上升沿將ID讀出。仿真圖如圖2所示。
2.2 判斷壞塊
NAND FLASH作為一種特殊的儲存器件,內部集成電路使得BLOCK與BLOCK是相互獨立的,因此一定數目壞塊的存在不會影響其他BLOCK。但壞塊總數是有一定的限制的,超過一定的數目后器件將認為不能再使用。在出廠前廠家會在器件的每個BLOCK的第一頁和第二頁的列地址為2048標注上壞的信息,FFh代表此BLOCK是好,非FFh代表此BLOCK是壞。但是這些重要信息在執行Erase和Programming命令的時候會被擦除掉,因此,我們在做這些操作之前應該將壞塊識別出來如圖3所示,并加以標注或者用好的塊來代替,以方便以后的訪問。隨著使用時間的推移,壞塊的數目還會增加,因此我們必須隨時更新壞塊鏈表。壞塊識別時序仿真圖如圖4所示。
3擦除操作
一般芯片進行PROGRAM/ERASE的次數是100 000 cycles,第一個BLOCK次數更多,一般可用于存放boot code或者重要的信息。由于擦除操作是以BLOCK為基準,也就是每執行一次擦除操作將會擦除指定的BLOCK,所以在執行擦除時必須注意共享區域里的重要信息如壞塊標識、ECC校驗等。以免被擦除掉,擦除掉了及時恢復,擦除操作仿真如圖5所示。
4編程操作及其他操作
編程操作和擦除操作相似,只不過編程操作是以頁為單位,在執行編程操作時同樣也要注意共享區域里的重要信息以免被覆蓋掉,重要信息被覆蓋后要及時恢復。其他操作如復位還有有些芯片廠家各自新的操作等,但總體來說主流芯片都支持以上幾種操作。
5 結 語
在實際應用中,使用ALTERA公司的Cyclone2 FP-GA器件進行設計,設計輸入采用VHDL來完成,實現了上述的NAND FLASH控制器接口電路。此外,由于采用了通用性設計思想,可以對不同廠家不同的芯片進行控制和操作,具有一定的通用性
-
FPGA
+關注
關注
1630文章
21769瀏覽量
604629 -
控制器
+關注
關注
112文章
16416瀏覽量
178747 -
仿真
+關注
關注
50文章
4111瀏覽量
133782
發布評論請先 登錄
相關推薦
評論