新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的K9F4G08 Flash控制器設(shè)計

基于FPGA的K9F4G08 Flash控制器設(shè)計

作者: 時間:2010-06-23 來源:網(wǎng)絡(luò) 收藏

  2.1 匹配表

  出廠后可能存在壞塊,使用中也有可能會再出現(xiàn)新的壞塊。制造商保證每個芯片中的壞塊不多于80個,同時保證第0個塊肯定是好的,且保證擦寫1 000次不壞[1]。當(dāng)進(jìn)行連續(xù)地址的數(shù)據(jù)讀寫時有可能遇到壞塊,壞塊無法進(jìn)行操作,會導(dǎo)致數(shù)據(jù)的丟失。因此必須建立一個匹配表,當(dāng)遇到壞塊時,將其匹配到好塊的地址上。

  實際的數(shù)據(jù)讀寫中只使用4 000個塊,根據(jù)這些要求設(shè)計了這樣的匹配表:長度512 B,存放在第0個塊的第0個頁(B0P0)。具體內(nèi)容見表2。

基于FPGA的K9F4G08 Flash控制器設(shè)計

  一個塊的地址用2 B的16進(jìn)制數(shù)表示。256 B可以存儲128個塊地址。0~255與256~512中存儲的塊地址是一一對應(yīng)的,當(dāng)使用到0~255中的塊地址時,需要從256~511中尋找對應(yīng)的塊地址進(jìn)行替換。

  在中生成一個512 B的ram:ram_512,專門用于存放匹配表,當(dāng)系統(tǒng)上電復(fù)位后,狀態(tài)機會自動將B0P0的數(shù)據(jù)讀出,并將前512 B的數(shù)據(jù)存入該ram_512中,以便后面匹配時使用[4]。

  2.2 全擦與部分擦指令

  該指令用于擦除所有的塊,建立新的匹配表。由于壞塊會導(dǎo)致擦除不成功,狀態(tài)機在擦除過程中會記錄下1~4 000個塊中擦除失敗的壞塊的地址、4 000~4 095個塊中好塊的地址,先按照匹配表規(guī)定的順序?qū)懭雛am_512,全部擦除完成后將ram_512中的數(shù)據(jù)寫入B0P0。由于數(shù)據(jù)量不足2 KB,因此后面補零。其流程圖如圖2所示。

基于FPGA的K9F4G08 Flash控制器設(shè)計

  部分擦除與全擦類似,執(zhí)行這條指令需要給定起始與結(jié)尾的塊地址,controller_4G08可以完成對2個塊地址之間所有塊的擦除。當(dāng)擦除過程中擦到壞塊時,狀態(tài)機會從匹配表中尋找該壞塊對應(yīng)的好塊,并擦除。若沒有尋找到該壞塊的匹配塊,則出現(xiàn)了新的壞塊,會產(chǎn)生一個報錯的標(biāo)志位,提示主狀態(tài)機需要進(jìn)行全擦,以便建立新的匹配表。



關(guān)鍵詞: FPGA Flash K9F4G08

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉