<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于FPGA的K9F4G08 Flash控制器設計

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

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

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

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

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

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

  1 controller_4G08的設計方案

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

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

基于FPGA的K9F4G08 Flash控制器設計

  2 controller_4G08的指令集

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

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

基于FPGA的K9F4G08 Flash控制器設計


上一頁(yè) 1 2 3 4 下一頁(yè)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>