色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

            摘 要: 設(shè)計了一種能使的主狀態(tài)機(jī)直接管理的控制器,該控制器具有自己的指令集和中斷管理方式。用戶可以根據(jù)的系統(tǒng)時鐘對控制器進(jìn)行操作,無需關(guān)心對指令和數(shù)據(jù)的時序要求??刂破鹘⒘俗约旱膲膲K管理機(jī)制,合并了一些的常用關(guān)聯(lián)指令,方便了用戶對主狀態(tài)機(jī)的設(shè)計。

            是三星公司的512 MB NAND Flash,具有8 bit輸入輸出總線。存儲空間共分成4 096個塊,每個塊有64個頁,每個頁容量為2 KB,外加64 B的備用空間,組成256 K行×(2 K+64)列的存儲陣列,其地址用5個字節(jié)表示[1]。

            具有自己的指令集,可以完成對Flash一個頁的讀、寫以及對一個塊的擦除等操作。有嚴(yán)格的時序要求以保證芯片正確地執(zhí)行相應(yīng)的指令。Flash在出廠時會有壞塊[1],壞塊是無法操作的,這對于連續(xù)大批量的數(shù)據(jù)存儲來說有一定的難度,需要建立一套Flash空間管理方案以保證壞塊不被讀寫,提高數(shù)據(jù)讀寫的可靠性。

            用FPGA直接管理Flash不僅是一種可行的方案,而且還能精簡硬件結(jié)構(gòu)。但與具有專用Flash接口的MCU或ARM等高檔嵌入式微處理器不同,F(xiàn)PGA不能通過簡單的讀寫指令編程管理Flash,而必須按照時序要求對Flash的端口進(jìn)行指令和參數(shù)的具體操作。若FPGA的主狀態(tài)機(jī)直接管理Flash,將會使?fàn)顟B(tài)機(jī)的狀態(tài)數(shù)量大量增加,代碼將異常復(fù)雜,甚至無法完成設(shè)計[2][3]。

            為解決上述問題,本文設(shè)計了一個Flash控制器controller_4G08,它建立了自己的指令集,可以方便地實現(xiàn)FPGA對Flash的控制和讀寫操作。FPGA主狀態(tài)機(jī)可以在系統(tǒng)時鐘頻率下對controller_4G08發(fā)送指令,然后等待controller_4G08返回的中斷,中斷返回即表示操作完成,無需關(guān)心Flash要求的操作時序。采用這個控制器將大大簡化FPGA主狀態(tài)機(jī)的狀態(tài)數(shù)量,方便設(shè)計和調(diào)試,同時代碼具有很強(qiáng)的可移植性。

            1 controller_4G08的設(shè)計方案

            理論上講FPGA可以直接對Flash操作,但這樣會使主狀態(tài)機(jī)狀態(tài)很多,程序繁瑣,當(dāng)需要大批量數(shù)據(jù)反復(fù)讀寫時很不方便。本文設(shè)計了一個控制器controller_4G08,用這個控制器完成數(shù)據(jù)指令讀寫的時序操作。

            用controller_4G08管理Flash的系統(tǒng)框圖如圖1所示。FPGA部分有2個模塊:主狀態(tài)機(jī)和controller_4G08,它們之間的端口連接包括4 bit指令端口cmd_code_4G08、8 bit數(shù)據(jù)輸入輸出端口data_in_4G08與 data_out_4G08、中斷信號int_ctl_4G08;FPGA對芯片接口包括8 bit雙向數(shù)據(jù)端口data_4G08、忙標(biāo)志rb、讀使能we、寫使能re等端口。FPGA主狀態(tài)機(jī)若想對Flash進(jìn)行操作,只需要通過cmd_code_4G08向controller_4G08發(fā)指令,按照系統(tǒng)時鐘通過data_in_4G08與 data_out_4G08收發(fā)數(shù)據(jù),然后controller_4G08會對K9F4G08執(zhí)行相應(yīng)的操作,指令執(zhí)行完之后會通過int_ctl_4G08給主狀態(tài)機(jī)一個中斷信號,告訴主狀態(tài)機(jī)執(zhí)行完畢。FPGA主狀態(tài)機(jī)不必關(guān)注Flash指令操作的時序問題,從而使設(shè)計簡化。

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

            2 controller_4G08的指令集

            K9F4G08具有自己的指令集,以讀操作為例,其操作過程是:首先發(fā)送命令00h,再發(fā)5個周期地址,最后發(fā)送命令30h。Flash開始讀相應(yīng)的頁,此時rb信號為低(表示Flash處于busy狀態(tài)),等到rb信號為高,再按照時序改變讀使能信號,便可將1個頁的數(shù)據(jù)依次讀出[1]。

            controller_4G08根據(jù)K9F4G08的指令集建立了自己的指令集,新增了全擦、部分擦指令,并且在讀寫指令前加入了壞塊匹配功能,如表1所示。

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


          上一頁 1 2 3 4 下一頁

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

          評論


          相關(guān)推薦

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

          關(guān)閉