新聞中心

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

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

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

  2.3 讀寫匹配

  如果遇到壞塊,會造成讀寫失敗,為了滿足大批量數(shù)據(jù)讀寫的連續(xù)性,在讀寫數(shù)據(jù)之前必須對當(dāng)前塊地址進(jìn)行匹配,這些工作由controller_4G08完成,當(dāng)主狀態(tài)機給controller_4G08發(fā)送塊地址后就會執(zhí)行。

  讀寫是對頁操作的,一次2 KB。中有一個4 KB的ram:ram_4096,用來作為緩沖區(qū)存放數(shù)據(jù)。當(dāng)需要向中寫入數(shù)據(jù)時,主狀態(tài)機向controller_4G08發(fā)Page_program指令,發(fā)送5 B地址,controller_4G08會自動進(jìn)行塊地址匹配,匹配完之后會給主狀態(tài)機一個中斷信號,主狀態(tài)機收到這個信號便開始將ram_4096中的數(shù)據(jù)發(fā)給controller_4G08,之后等待中斷,收到中斷說明寫指令執(zhí)行成功。

  當(dāng)需要讀取數(shù)據(jù)時,主狀態(tài)機向controller_4G08發(fā)Page_read指令,發(fā)送5字節(jié)地址,controller_4G08會自動進(jìn)行塊地址匹配及的頁讀操作,等中斷一到便開始接收來自controller_4G08的數(shù)據(jù)并存至ram_4096中。

  controller_4G08中有一個存放上次塊地址的寄存器,每次進(jìn)行讀寫操作時,會將當(dāng)前塊地址與上次的塊地址進(jìn)行比較,若相同則說明是好塊,可以讀寫;若不同則需要進(jìn)行匹配。狀態(tài)機會從ram_512中尋找該塊是否為壞塊,進(jìn)行一系列處理。與擦除指令一樣,當(dāng)讀寫操作遇到新的壞塊時,也會向系統(tǒng)報錯。匹配流程圖如圖3所示。

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

  3 controller_4G08主狀態(tài)機

  圖4是主狀態(tài)機的狀態(tài)轉(zhuǎn)換圖,系統(tǒng)上電復(fù)位后,主狀態(tài)機將進(jìn)入等待使能信號狀態(tài)。收到使能信號后,主狀態(tài)機會從cmd_code_4G08中讀取操作碼,然后啟動對應(yīng)的子狀態(tài)機,執(zhí)行對應(yīng)的操作。子狀態(tài)機執(zhí)行完畢以后就會通過int_ctl_4G08發(fā)送給主狀態(tài)機一個中斷信號,同時將執(zhí)行結(jié)果返回。主狀態(tài)機收到中斷信號后,又進(jìn)入空閑狀態(tài)等待下一個使能信號。這樣設(shè)計的主狀態(tài)機隨時都可以添加新的指令,可擴展性強[4-5]。

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



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

評論


相關(guān)推薦

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

關(guān)閉