<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于FPGA的NAND FLASH壞塊表的設計與實(shí)現

基于FPGA的NAND FLASH壞塊表的設計與實(shí)現

作者:曾鋒,徐忠錦(北京青云航空儀表有限公司,北京 101399) 時(shí)間:2022-12-21 來(lái)源:電子產(chǎn)品世界 收藏
編者按:在現代電子設備中,越來(lái)越多的產(chǎn)品使用NAND FLASH芯片來(lái)進(jìn)行大容量的數據存儲,而且使用FPGA作為核心處理芯片與NAND FLASH直接交聯(lián)。根據NAND FLASH的特點(diǎn),需要識別NAND FLASH芯片的壞塊并進(jìn)行管理。FPGA對壞塊的管理不能按照軟件的壞塊管理方式進(jìn)行。本文提出了一種基于FPGA的NAND FLASH芯片壞塊表的設計方法,利用FPGA中RAM模塊,設計了狀態(tài)機電路,靈活地實(shí)現壞塊表的建立、儲存和管理,并且對該設計進(jìn)行測試驗證。


本文引用地址:http://dyxdggzs.com/article/202212/441876.htm

0 引言

隨著(zhù)技術(shù)的發(fā)展,越來(lái)越多的電子設備的數據采用 芯片存儲產(chǎn)生的大量數據。在傳統的電路設計中,常用ARM、DSP 等處理器來(lái)用于NANDFLASH 的接口。但是隨著(zhù)實(shí)時(shí)性要求的提高,越來(lái)越多的設備中采用了 來(lái)對 進(jìn)行管理,釋放處理器任務(wù)資源。

由于 的特點(diǎn),NAND FLASH 不可避免地會(huì )有產(chǎn)生,使用NAND FLASH 時(shí),需要對進(jìn)行管理,建立壞壞表(以下簡(jiǎn)稱(chēng)“BBT”)。一般處理管理BBT 的方法,是采用建立數組的方式,將檢測到的壞塊編號記錄在數組中,在操作NAND FLASH 時(shí),對將要操作的塊的編號與BBT 的數據進(jìn)行對比,如果是壞塊,則跳過(guò)該塊,不使用。但是這是建立數組的方法并不適用于 的設計操作,本文根據 的特點(diǎn),利用FPGA 的Block RAM 資源,提出了一種、存儲的方法。

1 電路說(shuō)明

1.1 NAND Flash芯片說(shuō)明

NAND Flash芯片使用型號是三星公司的K9K8G08U0A,單片容量為1 G×8 Bit。該芯片總共有8 192 塊,每塊中含有64 頁(yè),每頁(yè)共2 112 個(gè)字節(前2 048 個(gè)為主存儲空間,后64 個(gè)為擴展存儲空間)。芯片的讀寫(xiě)操作均以頁(yè)為單位進(jìn)行。芯片容量結構如圖1 所示。

1671583664340013.png

圖1 NAND Flash內部存儲空間結構圖

其中,NAND Flash 芯片分為列地址(Column Address)和行地址(Row Address),列地址用于每頁(yè)中的字節尋址,行地址用于芯片的塊、頁(yè)的尋址,其中行地址的A18~A30 為芯片的塊地址。

1.2 FPGA電路說(shuō)明

FPGA 使用型號為Xilinx(現AMD)公司Virtex II系列的XC2V1000,芯片內部有5 120 個(gè)Slice、40 個(gè)乘法器、720 kbit 的RAM 模塊資源,8 個(gè)DCM 時(shí)鐘管理模塊。其主要參數如圖2 所示。

image.png

圖2 FPGA芯片說(shuō)明

2 壞塊表設計

2.1 壞塊表檢測機理

根據NAND FLASH 芯片的檢測原理,芯片出廠(chǎng)后的需要檢測芯片每個(gè)部分的頁(yè)1和頁(yè)2中列地址為2 048的存儲的數據值。若值為0xFF,則該部分為好塊;若值不為0xFF,則該部分為壞塊。NANDFLASH 流程如圖3所示。

1671583833851639.png

2.2 壞塊表的設計思路

根據FPGA 的應用特點(diǎn),本次NAND Flash 的壞塊表采用對所有塊建立壞塊信息的方式,建立一個(gè)完整的塊狀態(tài)信息表,即每一個(gè)塊用1 個(gè)Bit 表征其是否是好塊還是壞塊,定義為:0 代表該塊是良好的,1 代表該塊是故障的。本設計中,NAND Flash 有8 192 個(gè)塊,用8 192 個(gè)Bit 代表每個(gè)塊的狀態(tài)信息,正好用一個(gè)1 024×8 bit 的RAM 對所有的壞塊表數據位進(jìn)行存儲,壞塊表存儲示意圖見(jiàn)圖4。

1671583928396169.png

2.3 壞塊表的存儲

在本設計中,NAND FLASH的壞塊表儲存在NAND FLASH的第1 塊的第1 頁(yè)處。第1 塊只用于壞塊表的存儲,不再用于存儲其他數據,壞塊表在第1 塊中的位置見(jiàn)圖5。

1671583992566178.png


2.4 壞塊表的建立流程

NAND FLASH 在使用時(shí),初次上電后,寫(xiě)入數據之前需要對芯片的塊的好壞進(jìn)行掃描,從而得到壞塊表。在本型號中,NAND FLASH 的出廠(chǎng)壞塊信息需要查詢(xún)每個(gè)塊的第1 個(gè)頁(yè)和第2 個(gè)頁(yè)中的列地址為2 048 的空間上數據是否都為“0xFF”,數據為“0xFF”,則當前塊為好塊,否則當前塊為壞塊。

壞塊表的建立的狀態(tài)機流程如圖6 所示:上電后,狀態(tài)機從狀態(tài)1 跳轉至狀態(tài)2,讀取第一塊中的數據,判斷是否為數據頭0xAA、0x55、0xAA、0x55、0xAA、0x55、0xAA、0x55。如果數據頭相符,則狀態(tài)跳轉至11,直接讀取壞塊表到RAM,建立起壞塊表信息。如果讀到的數據頭與上述的數據頭不相符,則意味NAND FLASH 未存在壞塊表,需要建立壞塊表。狀態(tài)機狀態(tài)依次跳轉至狀態(tài)4、狀態(tài)5、狀態(tài)6,即狀態(tài)機對當前塊的中的第1 頁(yè)和第2 頁(yè)的中列地址為2 048 的空間進(jìn)行訪(fǎng)問(wèn),根據讀值判別當前塊是否為壞塊,如果是壞塊將對應的寄存器位置1。當掃描完8 個(gè)塊,狀態(tài)機跳轉至狀態(tài)7,則將8 個(gè)塊的壞塊信息寫(xiě)入RAM;當未掃描滿(mǎn)8 個(gè)塊,狀態(tài)機跳轉至狀態(tài)8,塊地址加1,對下一個(gè)塊進(jìn)行檢測。當所有的8 092 個(gè)塊都被檢測后,則狀態(tài)機跳轉至狀態(tài)10,將數據頭以及RAM 數據全部寫(xiě)入NAND FLASH 的第0 塊,至此,初始壞塊表建立完成。

壞塊表建立完成后,壞塊信息存在RAM 中,在正常存取操作時(shí),就可以直接讀取RAM 模塊,獲取壞塊信息。

當電路下電,再次上電后,狀態(tài)機就可以從塊0 中讀取到數據頭,跳過(guò)初次壞塊表的建立過(guò)程,狀態(tài)機從第1 塊中繼續讀取到壞塊表,加載到RAM 中,完成后交其他模塊進(jìn)行后續的操作。

1671584113376937.png

3 驗證情況

為驗證是否正確的建立和存儲壞塊表,需要將壞塊表的處理模塊嵌入FPGA 的中整個(gè)NAND FLASH 的接口控制器中,驗證的電路如圖7 所示。壞塊表處理模塊與1 個(gè)1 024×8 Bit 的RAM 連接,該RAM 用于存儲壞塊表。NAND FLASH 接口模塊根據NAND FALSH芯片的讀寫(xiě)接口時(shí)序設計,包含基本的Read 模塊,Write 模塊和擦除模塊。NAND FLASH 接口模塊受壞塊表處理模塊的控制。正常工作模塊在壞塊表處理模塊工作完成之后開(kāi)始工作,通過(guò)UART 接收上位機的命令,控制NAND FLASH 接口模塊與NAND FLASH 交聯(lián);同時(shí),正常工作模塊也通過(guò)UART 上報數據和信息給上位機。

1671584198970082.png

驗證時(shí),通過(guò)上位機發(fā)送讀取命令,正常工作模塊控制NAND FLASH 接口模塊將NAND FLASH 塊0 中的內容讀取出來(lái),從而判斷是否正確地建立了壞塊表,見(jiàn)圖8。

1671584279357118.png

image.png

1671584245323786.png

圖8 壞塊表

通過(guò)讀取內容發(fā)現,新板卡中的NAND FLASH 成功地建立了壞塊表,本測試電路中NAND FLASH 芯片有1 個(gè)壞塊,為第1 761 塊。

4 結束語(yǔ)

通過(guò)驗證證明,本文設計的基于FPGA 的壞塊表設計方式能夠正確地實(shí)現壞塊表建立和存儲,壞塊表能夠方便地被FPGA 使用,壞塊表能完整地表征整個(gè)NANDFLASH 芯片的塊的狀態(tài),RAM 結構能很靈活方便地在FPGA 中進(jìn)行調用,滿(mǎn)足對FPGA 對NAND FLASH 芯片的控制需要。

參考文獻:

[1] 舒文麗,吳云峰.基于NAND FLASH的海量存儲器的設計[J].電子器件,2012,2(35):44-46.

[2] 趙亞慧.基于NAND Flash的高速大容量存儲系統的設計[J].電光與控制,2016,5(23):37-40.

[3] 喬亞飛,,李華旺.基于FPGA的星載NAND FLASH控制器的設計[J].電子設計工程 2018,7(26):29-32.

[4] 周浩,王浩全.基于FPGA和NAND FLASH的便攜式信號采集系統設計[J].測控技術(shù)與儀器儀表,2018,44(9):82-86.

[5] 張?chǎng)?崔建杰.一種多通道NAND FLASH陣列的壞塊管理方案[J].電子器件,2014,10(37):33-36.

[6] 喬立巖,張鵬.一種新型NAND FLASH 壞塊管理算法的研究與實(shí)現[J].電子測量技術(shù), 2015,11(38):19-21.

(本文來(lái)源于《電子產(chǎn)品世界》雜志2022年12月期)



關(guān)鍵詞: NAND FLASH FPGA 壞塊 壞塊檢測 202212

評論


相關(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>