久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

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

基于FPGA的K9F4G08 Flash控制器設計

作者: 時間:2010-06-23 來源:網絡 收藏

  摘 要: 設計了一種能使的主狀態機直接管理的控制器,該控制器具有自己的指令集和中斷管理方式。用戶可以根據的系統時鐘對控制器進行操作,無需關心對指令和數據的時序要求。控制器建立了自己的壞塊管理機制,合并了一些的常用關聯指令,方便了用戶對主狀態機的設計。

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

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

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

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

  1 controller_4G08的設計方案

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

  用controller_4G08管理Flash的系統框圖如圖1所示。FPGA部分有2個模塊:主狀態機和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、寫使能re等端口。FPGA主狀態機若想對Flash進行操作,只需要通過cmd_code_4G08向controller_4G08發指令,按照系統時鐘通過data_in_4G08與 data_out_4G08收發數據,然后controller_4G08會對K9F4G08執行相應的操作,指令執行完之后會通過int_ctl_4G08給主狀態機一個中斷信號,告訴主狀態機執行完畢。FPGA主狀態機不必關注Flash指令操作的時序問題,從而使設計簡化。

基于FPGA的K9F4G08 Flash控制器設計

  2 controller_4G08的指令集

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

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

基于FPGA的K9F4G08 Flash控制器設計


上一頁 1 2 3 4 下一頁

關鍵詞: FPGA Flash K9F4G08

評論


相關推薦

技術專區

關閉