《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的K9F4G08 Flash控制器設計
基于FPGA的K9F4G08 Flash控制器設計
來源:電子技術應用2010年第5期
唐 磊,周 旋,吳 瑤,李金城
北京交通大學 電子信息工程學院,北京100044
摘要: 設計了一種能使FPGA的主狀態機直接管理Flash的控制器,該控制器具有自己的指令集和中斷管理方式。用戶可以根據FPGA的系統時鐘對控制器進行操作,無需關心Flash對指令和數據的時序要求??刂破鹘⒘俗约旱膲膲K管理機制,合并了一些Flash的常用關聯指令,方便了用戶對FPGA主狀態機的設計。
中圖分類號: TN431.2
文獻標識碼: A
Design of K9F4G08 Flash controller based on FPGA
TANG Lei,ZHOU Xuan,WU Yao,LI Jin Cheng
School of Electronic and Information Engineering, Beijing Jiaotong University, Beijing 100044,China
Abstract: This paper designs a Flash controller, which enables the FPGA main state-machine to manage a Flash memory chip efficiently. The controller builds its own instruction set derived from the construction set of Flash, as well as a simple interrupt mechanism. User operates the controller with the system clock of FPGA without caring about the timing sequences required by the Flash. The proposed Flash controller develops its own method for the reorganization and mapping of invalid blocks in a Flash chip. Some of the constructions in the original construction set of the Flash are combined and enhanced to help the users coding their HDL with a more compact style.
Key words : FPGA;Flash;state-machine;mapping;instruction set

    K9F4G08是三星公司的512 MB NAND Flash,具有8 bit輸入輸出總線。存儲空間共分成4 096個塊,每個塊有64個頁,每個頁容量為2 KB,外加64 B的備用空間,組成256 K行×(2 K+64)列的存儲陣列,其地址用5個字節表示[1]。
    K9F4G08具有自己的指令集,可以完成對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對K9F4G08芯片接口包括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指令操作的時序問題,從而使設計簡化。

2 controller_4G08的指令集
    K9F4G08具有自己的指令集,以讀操作為例,其操作過程是:首先發送命令00h,再發5個周期地址,最后發送命令30h。Flash開始讀相應的頁,此時rb信號為低(表示Flash處于busy狀態),等到rb信號為高,再按照時序改變讀使能信號,便可將1個頁的數據依次讀出[1]。
    controller_4G08根據K9F4G08的指令集建立了自己的指令集,新增了全擦、部分擦指令,并且在讀寫指令前加入了壞塊匹配功能,如表1所示。

2.1 匹配表
    Flash出廠后可能存在壞塊,使用中也有可能會再出現新的壞塊。制造商保證每個芯片中的壞塊不多于80個,同時保證第0個塊肯定是好的,且保證擦寫1 000次不壞[1]。當進行連續地址的數據讀寫時有可能遇到壞塊,壞塊無法進行操作,會導致數據的丟失。因此必須建立一個匹配表,當遇到壞塊時,將其匹配到好塊的地址上。
    實際的數據讀寫中只使用4 000個塊,根據這些要求設計了這樣的匹配表:長度512 B,存放在第0個塊的第0個頁(B0P0)。具體內容見表2。

    一個塊的地址用2 B的16進制數表示。256 B可以存儲128個塊地址。0~255與256~512中存儲的塊地址是一一對應的,當使用到0~255中的塊地址時,需要從256~511中尋找對應的塊地址進行替換。
    在FPGA中生成一個512 B的ram:ram_512,專門用于存放匹配表,當系統上電復位后,狀態機會自動將B0P0的數據讀出,并將前512 B的數據存入該ram_512中,以便后面匹配時使用[4]。
2.2 全擦與部分擦指令
    該指令用于擦除所有的塊,建立新的匹配表。由于壞塊會導致擦除不成功,狀態機在擦除過程中會記錄下1~4 000個塊中擦除失敗的壞塊的地址、4 000~4 095個塊中好塊的地址,先按照匹配表規定的順序寫入ram_512,全部擦除完成后將ram_512中的數據寫入B0P0。由于數據量不足2 KB,因此后面補零。其流程圖如圖2所示。

    部分擦除與全擦類似,執行這條指令需要給定起始與結尾的塊地址,controller_4G08可以完成對2個塊地址之間所有塊的擦除。當擦除過程中擦到壞塊時,狀態機會從匹配表中尋找該壞塊對應的好塊,并擦除。若沒有尋找到該壞塊的匹配塊,則出現了新的壞塊,會產生一個報錯的標志位,提示主狀態機需要進行全擦,以便建立新的匹配表。
2.3 讀寫匹配
    如果遇到壞塊,會造成讀寫失敗,為了滿足大批量數據讀寫的連續性,在讀寫數據之前必須對當前塊地址進行匹配,這些工作由controller_4G08完成,當主狀態機給controller_4G08發送塊地址后就會執行。
    Flash讀寫是對頁操作的,一次2 KB。FPGA中有一個4 KB的ram:ram_4096,用來作為緩沖區存放數據。當需要向Flash中寫入數據時,主狀態機向controller_4G08發Page_program指令,發送5 B地址,controller_4G08會自動進行塊地址匹配,匹配完之后會給主狀態機一個中斷信號,主狀態機收到這個信號便開始將ram_4096中的數據發給controller_4G08,之后等待中斷,收到中斷說明寫指令執行成功。
    當需要讀取數據時,主狀態機向controller_4G08發Page_read指令,發送5字節地址,controller_4G08會自動進行塊地址匹配及Flash的頁讀操作,等中斷一到便開始接收來自controller_4G08的數據并存至ram_4096中。
    controller_4G08中有一個存放上次塊地址的寄存器,每次進行讀寫操作時,會將當前塊地址與上次的塊地址進行比較,若相同則說明是好塊,可以讀寫;若不同則需要進行匹配。狀態機會從ram_512中尋找該塊是否為壞塊,進行一系列處理。與擦除指令一樣,當讀寫操作遇到新的壞塊時,也會向系統報錯。匹配流程圖如圖3所示。

3 controller_4G08主狀態機
    圖4是主狀態機的狀態轉換圖,系統上電復位后,主狀態機將進入等待使能信號狀態。收到使能信號后,主狀態機會從cmd_code_4G08中讀取操作碼,然后啟動對應的子狀態機,執行對應的操作。子狀態機執行完畢以后就會通過int_ctl_4G08發送給主狀態機一個中斷信號,同時將執行結果返回。主狀態機收到中斷信號后,又進入空閑狀態等待下一個使能信號。這樣設計的主狀態機隨時都可以添加新的指令,可擴展性強[4-5]。

4 FPGA下裝驗證結果
    采用FPGA開發板進行驗證。此開發板的硬件資源包括Cyclone的FPGA:EP1C12Q240C、3片Flash:K9F4G08、1片USB總線控制芯片:CH372。利用FPGA控制CH372,可以完成FPGA與PC通過USB進行數據收發[6]。
    在PC上用VB軟件編寫了調試軟件[7],利用該軟件可以通過USB口向FPGA發送指令,從而完成對任意Flash頁的讀、寫及全擦。
    首先進行Flash全擦,讀取B0P0即可看到匹配表。從匹配表中找到一個壞塊的地址對其寫入2 KB的數據,然后斷電再上電,讀取該壞塊地址,比較寫入與讀出的數據發現完全一致,從而驗證了本設計的壞塊管理和壞塊匹配方法的正確性。通過軟件操作,對普通好塊的讀寫也是正確的,這里就不再說明了。
    本文用FPGA主狀態機直接管理controller_4G08、controller_4G08控制芯片的設計方案可以減少主狀態機的狀態數量,使FPGA很方便地實現Flash控制功能,設計更加容易實現,具有較強的可復用性與移植性。同時建立了一套完善的Flash文件管理機制。目前該控制器模塊已經應用于數據采集回放系統中[8-9]。
參考文獻
[1] Samsung.K9F4G08手冊.2006.
[2] 王崇劍,李玉山.基于FPGA的K9F2G08U0M Nand FLASH控制器設計[J].電子元器件應用,2008,10(3):4-7.
[3] 陳明義,連帥軍,周建國.基于FPGA的FLASH控制器系統設計及實現[J].電子科技,2008,21(7):11-13.
[4] 王誠,吳繼華.Altera FPGA/CPLD設計[M].北京:人民郵電出版社,2005.
[5] 夏雨聞.Verilog數字系統設計教程[M].北京:北京航天航空大學出版社,2003.
[6] 南京沁恒電子有限公司.CH372中文手冊(一).2007.
[7] 劉彬彬,高春艷,孫秀梅.VB從入門到精通[M].北京:清華大學出版社,2008.
[8] 李蘭,寧永海,基于CH372的USB數據采集系統的設計與實現[J].微計算機信息,2007,23(12):76-77.
[9] 周治良,劉俊,張斌珍.基于FPGA及FLASH的數據采集存儲系統設計[J].微計算機信息,2007,23(31):91-92.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲一区二区视频| 国内外成人免费激情在线视频| 欧美三级日韩三级国产三级| 久久蜜桃香蕉精品一区二区三区| 欧美日韩免费一区二区三区| 亚洲人成网站精品片在线观看| 在线亚洲美日韩| 在线亚洲精品福利网址导航| 99国产欧美久久久精品| 欧美成人中文字幕在线| 亚洲一区在线看| 美女啪啪无遮挡免费久久网站| 伊人久久综合97精品| 国产精品久久夜| 久色婷婷小香蕉久久| 国内精品久久久久影院薰衣草| 亚洲免费在线视频| 韩日精品视频一区| 国产精品都在这里| 欧美偷拍一区二区| 欧美午夜激情小视频| 欧美成人精品三级在线观看| 欧美日韩视频免费播放| 好吊妞这里只有精品| 欧美成人在线免费观看| 国产视频在线观看一区二区三区| 国产欧美日韩精品专区| 国产精品女主播| 欧美一区免费视频| 有码中文亚洲精品| 欧美精品在线观看一区二区| 久久久久国产精品厨房| 国产精品二区在线| 久久综合综合久久综合| 欧美日韩国产色综合一二三四| 欧美mv日韩mv国产网站app| 日韩亚洲欧美综合| 免费试看一区| 国产视频丨精品|在线观看| 欧美日韩精品伦理作品在线免费观看| 欧美国产在线视频| 欧美丝袜第一区| 浪潮色综合久久天堂| 亚洲中字在线| 久久国产精品一区二区三区四区| 久久精品99| 91久久久在线| 欧美日韩精品久久| 欧美视频不卡中文| 91久久精品一区二区别| 国产欧美一区二区精品秋霞影院| 亚洲一区二区三区四区五区午夜| 亚洲国产一区二区a毛片| 国产精品欧美经典| 国产精品国产成人国产三级| 亚洲综合视频在线| 亚洲欧美日韩精品久久奇米色影视| 欧美精品福利视频| 国产婷婷成人久久av免费高清| 国产精品一二三四区| 欧美国产成人精品| 亚洲剧情一区二区| 久久免费视频这里只有精品| 久久精品国内一区二区三区| 免费在线观看精品| 久久福利资源站| 亚洲一区二三| 99视频精品| 美女网站在线免费欧美精品| 国产综合欧美| 欧美国产一区视频在线观看| 亚洲激情欧美| 欧美视频在线不卡| 亚洲精品影院在线观看| 国内精品久久久久影院优| 日韩午夜在线播放| 亚洲一二三区在线| 韩国在线视频一区| 国产精品一区在线观看你懂的| 欧美日韩精品免费在线观看视频| 久久精品官网| 欧美日韩国产黄| 亚洲免费一区二区| 美女爽到呻吟久久久久| 欧美一区二区视频在线观看2020| 亚洲国产欧美一区二区三区同亚洲| 午夜精彩国产免费不卡不顿大片| 欧美人与禽性xxxxx杂性| 欧美高清在线视频观看不卡| 欧美日韩一区在线| 在线播放视频一区| 欧美三级日韩三级国产三级| 性久久久久久久| 久久精品二区三区| 国产精品久久久91| 欧美午夜精品久久久久久超碰| 久久精品国产亚洲a| 国产免费亚洲高清| 欧美一区二视频在线免费观看| 欧美高清你懂得| 久久蜜桃资源一区二区老牛| 欧美日韩在线观看一区二区三区| 亚洲综合色网站| 国产精品一区=区| 美日韩免费视频| 亚洲国产精品一区二区www在线| 国产精品成人av性教育| 欧美图区在线视频| 精品成人国产在线观看男人呻吟| 亚洲激情视频在线播放| 99视频超级精品| 国产亚洲一区在线播放| 激情成人综合网| 欧美国产高潮xxxx1819| 美女诱惑黄网站一区| 狼人社综合社区| 国产农村妇女毛片精品久久莱园子| 午夜精品一区二区三区四区| 韩国一区二区在线观看| 久久综合亚洲社区| 亚洲视频香蕉人妖| 中日韩美女免费视频网址在线观看| 亚洲欧美在线一区二区| 国产日韩欧美电影在线观看| 国产精品日韩欧美综合| 亚洲国产精品久久| 欧美好骚综合网| 国产精品成人免费视频| 亚洲国产日韩精品| 久久av红桃一区二区小说| 久久久久久久999精品视频| 国产精品一区在线播放| 久久免费国产精品1| 午夜精品福利电影| 国产欧美综合在线| 一区二区三区国产精华| 欧美制服丝袜第一页| 狠狠色丁香久久婷婷综合丁香| 欧美精品日韩一本| 久久成人一区| 久久精品青青大伊人av| 国产精品永久在线| 欧美日韩日本网| 亚洲欧美综合v| 欧美成人a∨高清免费观看| 亚洲欧美激情视频在线观看一区二区三区| 一区二区三区视频在线看| 欧美喷水视频| 国产乱码精品一区二区三区忘忧草| 精品1区2区3区4区| 韩国一区二区三区美女美女秀| 亚洲电影网站| 一区二区久久| 99香蕉国产精品偷在线观看| 欧美日韩国产一中文字不卡| 久久久777| 欧美在线视频在线播放完整版免费观看| 欧美高清在线视频| 欧美视频专区一二在线观看| 亚洲激情电影在线| 欧美日韩国产美女| 国产免费亚洲高清| 黄色国产精品一区二区三区| 欧美在线视频观看免费网站| 亚洲欧美日韩一区二区| 精品电影一区| 亚洲成色www久久网站| 国产精品亚洲产品| 国产欧美日韩一区二区三区| 国产网站欧美日韩免费精品在线观看| 亚洲精品日韩欧美| 国产精品区一区二区三区| 欧美在线观看视频一区二区三区| 欧美在线免费视频| 欧美日韩一区二区免费在线观看| 亚洲精品一品区二品区三品区| 国产精品国内视频| 亚洲三级免费观看| 国产亚洲成年网址在线观看| 国语自产在线不卡| 亚洲国产黄色| 欧美成人免费一级人片100| 欧美精品一区二区视频| 久久精品人人| 艳女tv在线观看国产一区| 欧美国产极速在线| 久久福利影视| 欧美黄色成人网| 欧美日本成人| 99国产精品久久久久久久| 亚洲国产高清自拍| 国产亚洲综合性久久久影院| 欧美二区不卡| 欧美天天综合网| 韩国成人精品a∨在线观看| 亚洲精品1区2区| 亚洲欧美日韩一区二区三区在线观看| 欧美日韩国产一中文字不卡| 亚洲国产日本| 亚洲人成在线观看| 欧美电影电视剧在线观看| 亚洲美女91| 久久九九久精品国产免费直播| 一区二区三区国产在线| 国产女人精品视频| 欧美一区二区三区另类| 国产精品视频免费在线观看| 一区二区三区高清| 韩国av一区二区三区在线观看| 亚洲美女淫视频| 久久视频国产精品免费视频在线| 欧美在线视频一区二区| 国产精品网红福利| 夜夜爽av福利精品导航| 欧美二区在线播放| 久久成人久久爱| 蜜臀久久久99精品久久久久久| 国产精品av一区二区| 欧美激情一区二区在线| 国产午夜精品麻豆| 国产精品白丝jk黑袜喷水| 国产色综合天天综合网| 欧美福利视频网站| 久久婷婷国产麻豆91天堂| 在线成人免费观看| 一本久道久久综合狠狠爱| 欧美成人视屏| 日韩一区二区精品视频| 艳妇臀荡乳欲伦亚洲一区| 国产一区二区三区免费观看| 欧美激情一区二区三区在线视频| 久久综合中文字幕| 99视频一区二区三区| 在线精品高清中文字幕| 国产九九精品| 欧美另类69精品久久久久9999| 女女同性女同一区二区三区91| 欧美日韩精品欧美日韩精品一| 欧美精品久久久久久久久老牛影院| 欧美极品一区二区三区| 国产精品色婷婷久久58| 国产精品免费福利| 国产精品久久久爽爽爽麻豆色哟哟| 国产一区二区三区久久久| 欧美日韩另类一区| 狠狠色丁香久久婷婷综合丁香| 国产精品影院在线观看| 99av国产精品欲麻豆| 久久综合国产精品台湾中文娱乐网| 亚洲欧美日韩在线高清直播| 亚洲精选久久| 在线观看欧美一区| 国产精品美女久久久免费| 蜜臀久久久99精品久久久久久| 一区一区视频| 性伦欧美刺激片在线观看| 女人天堂亚洲aⅴ在线观看| 欧美一区二区视频观看视频| 性欧美超级视频| 久久人人爽人人| 国产综合欧美在线看| 欧美亚州一区二区三区| 欧美色偷偷大香| 国产精品国产| 日韩天天综合| 免费在线亚洲欧美| 亚洲麻豆视频| 亚洲精品在线免费观看视频| 国产精品自拍在线| 国产日韩欧美成人| 欧美精品18videos性欧美| 亚洲麻豆一区| 夜夜嗨av一区二区三区网站四季av| 亚洲国产一区二区精品专区| 禁断一区二区三区在线| 亚洲精品一区二区三区婷婷月| 嫩草成人www欧美| 国产日韩欧美自拍| 欧美激情中文不卡| 国产一区成人| 9l国产精品久久久久麻豆| 国产精品国产三级国产专区53| 国产精品久久久久久久9999| 久久久91精品国产一区二区三区| 久久av最新网址| 欧美综合第一页| 久久激情五月激情| 狠狠色综合色区| 国产精品视频大全| 欧美小视频在线观看| 99国产精品私拍| 亚洲尤物影院| 亚洲香蕉伊综合在人在线视看| 国产精品理论片在线观看| 亚洲精品视频在线观看免费| 欧美一区二区三区免费观看视频| 国产欧美日本| 在线亚洲一区观看| 久久久久国产成人精品亚洲午夜| 国产精品久久久一区二区三区| 欧美视频一二三区| 欧美亚洲动漫精品| 欧美电影在线| 狠狠干狠狠久久| 久久久最新网址| 久久久噜噜噜久久中文字幕色伊伊| 欧美国产精品va在线观看| 欧美精品久久一区| 亚洲精品国偷自产在线99热| 久久久蜜桃一区二区人| 欧美日韩ab片| 欧美影院在线| 一区二区三区|亚洲午夜| 国产精品久久久久99| 一区二区欧美亚洲| 最新亚洲激情| 久久国产精品电影| 国产有码一区二区| 国产欧美精品国产国产专区| 亚洲高清免费| 国产精品激情| 日韩特黄影片| 久久精品官网| 亚洲精品影院在线观看| 国产精品yjizz| 欧美日韩一区二区在线观看视频| 99热这里只有成人精品国产| 国产精品久久久一区二区|