国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于大容量數(shù)據(jù)記錄儀的壞塊管理設(shè)計

2014-03-28 01:53:42胡紅王少云葉艷
電子設(shè)計工程 2014年8期
關(guān)鍵詞:存儲芯片記錄儀芯片

胡紅,王少云,葉艷

(1.南京航空航天大學電子信息工程學院,江蘇南京210016;2.南京航空航天大學無人機研究院,江蘇南京210016)

Flash芯片作為一種新興的半導體存儲器件,具有集成度高、非易失性、功耗低、價格低、容量大、可擦除次數(shù)多等優(yōu)點,被廣泛應(yīng)用于大容量數(shù)據(jù)存儲系統(tǒng)中。Samsung公司的K9F8G08U0M單片容量達到8GB,可通過多片NAND Flash串聯(lián)的方法擴大系統(tǒng)容量。但是由于工藝和使用環(huán)境等因素,NAND Flash較其他形式的存儲芯片更易出現(xiàn)壞塊問題,同時由于NAND Flash存儲芯片的容量大,出現(xiàn)壞塊問題也更多。因此,在使用NAND Flash存儲芯片時,對壞塊的管理愈顯重要。

使用NAND Flash存儲芯片時,對壞塊的管理的一般方法有:1)基于FPGA的片內(nèi)RAM,存儲有效塊信息,將有效塊地址作為數(shù)據(jù)存入RAM中。進行讀寫操作時,從RAM中讀出有效塊地址。2)基于FPGA內(nèi)部RAM,RAM地址與塊地址相對應(yīng),在與壞塊地址相對應(yīng)的RAM中存儲1,而其他存儲0[1]。

本文提出了一種基于FPGA的大容量數(shù)據(jù)記錄儀的壞塊管理方法,利用FPGA[2]內(nèi)部RAM[3]空間建立壞塊地址信息存儲區(qū),通過查詢存儲區(qū)中的信息,來確定當前存儲塊是否損壞,若是壞塊則跳過,從而避免對壞塊的操作,實現(xiàn)了對Flash存儲空間的有效管理。該壞塊管理方案在不增加FPGA使用的復雜程度的條件下,需要的內(nèi)存資源比方法1、方法2明顯減少。

1 NAND Flash K 9F8G08U0M簡介

文中的大容量數(shù)據(jù)記錄儀采用9片Samsung公司的NAND Flash芯片K9F8G08U0M,其總?cè)萘窟_到72G。K9F8G08U0M芯片由4096個塊組成,每個塊有64頁,每個頁為(4K+128)Bytes,其中4KBytes為Main Area,128Bytes為Spare area,Main Area專門存儲數(shù)據(jù),Spare Area存儲其他信息,如ECC校檢碼、壞塊信息等。K9F8G08U0M的讀寫操作以頁為最小單位,擦除操作以塊為最小單位進行,禁止按位擦除。8個I/O引腳為多路復用,既可以作為數(shù)據(jù)線進行數(shù)據(jù)傳輸,也可以作為地址線進行尋址。這個方案顯著減少了芯片引腳,允許在保持系統(tǒng)板不變的情況下升級存儲密度[4]。

2 壞塊管理設(shè)計方案

K9F8G08U0M芯片是數(shù)據(jù)記錄儀的核心部分,若某個塊發(fā)生損壞時,視為壞塊。記錄儀工作時,剔除壞塊,只將數(shù)據(jù)存儲到好塊中,從而提高存儲數(shù)據(jù)的正確性,即數(shù)據(jù)記錄儀使用NAND Flash存儲芯片時,需要對存儲板壞塊進行管理。

2.1 壞塊產(chǎn)生原因及分類

由于Flash的制造工藝不能保證其存儲陣列在其生命周期中保持性能的可靠,因此,在Flash的生產(chǎn)與使用過程中會產(chǎn)生壞塊。

NAND Flash的壞塊可分為兩類:固有壞塊、使用壞塊。固有壞塊是出廠前,由于生產(chǎn)工藝所產(chǎn)生的壞塊。廠商已經(jīng)對固有壞塊進行了壞塊標記,在每個塊第1頁的第一個備份字節(jié)標志壞塊值,若為0xff,則為好塊,若為非0xff,則為壞塊。為了保持與固有壞塊信息一致,使用過程中發(fā)現(xiàn)新的壞塊時,將新的壞塊第一頁的第一個備份字節(jié)標志為非0xff。

使用壞塊是出廠后,用戶對芯片使用產(chǎn)生過程中產(chǎn)生的新壞塊。

2.2 壞塊管理設(shè)計方案分析與實現(xiàn)

本文提出的壞塊管理方法是對方法1上進行改進后形成的。我們稱為方法3。方法3在FPGA中內(nèi)建片上RAM來存儲壞塊地址信息,通過壞塊查詢模塊來辨別當前存儲塊是否有效。壞塊管理需要做以下工作:識別壞塊并建立壞塊表(BBT,bad block table),將壞塊地址信息存儲到壞塊表中;在對當前存儲塊進行操作時,發(fā)生錯誤需更新BBT,并且通過壞塊查詢模塊來跳過壞塊,從而對有效塊進行操作。

2.2.1 識別壞塊與存儲信息

第一次對NAND Flash進行操作之前,先要識別固有壞塊,建立初始BBT。其操作流程為:設(shè)置塊初始地址為0,檢查塊中備份區(qū)的第一個字節(jié)是否為0xff,如果是,則為有效塊,如果不是,則為壞塊,產(chǎn)生初始壞塊表(后面的塊為壞塊,則需更新BBT),將該壞塊地址信息存儲進去,增加塊地址,繼續(xù)上面的步驟,直到最后一塊。流程圖如圖1所示。

圖1 創(chuàng)建壞塊表的流程圖Fig.1 Flow chart of creating initial bad block table

在壞塊管理過程中,不僅僅要識別壞塊,而且必須將壞塊地址信息存儲起來,這樣在對存儲塊進行操作時只需要檢查該塊是否在BBT中,不需要每次去識別,節(jié)省了大量時間。首先在FPGA中建立RAM空間,將壞塊地址信息存儲到RAM壞塊地址信息存儲區(qū),然后再寫入到NAND Flash的一個有效塊中。為了防止意外掉電,每個BBT必須在Flash里保存兩份[5]。當發(fā)現(xiàn)兩個BBT不一樣時,說明出現(xiàn)狀況,必須重新建立壞塊表[7]。

NAND Flash除了固有壞塊,對NAND Flash進行讀寫擦除操作過程中也會隨機產(chǎn)生新的壞塊,這時需要更新BBT。NAND Flash讀操作失敗時,一般不會造成整頁全部出錯,僅僅是頁中的一個或幾個比特出錯。文中使用一種比較專用的校檢—ECC(Error Correction Code)。ECC能夠糾正一個比特錯誤以及檢測兩個比特錯誤,而且計算速度很快[6]。本設(shè)計中,對每個512Bytes原始數(shù)據(jù)生成3個字節(jié)ECC校檢碼:8比特的列校檢碼和16比特的行校檢碼。對于每頁4KB的數(shù)據(jù)來說,會產(chǎn)生24Bytes的ECC校檢碼。當出現(xiàn)1bit錯誤時,可糾正;當出現(xiàn)2bits以上的錯誤,就將該塊標記為壞塊,這時需要更新BBT,如圖2所示。當擦寫操作失敗時,其狀態(tài)會相應(yīng)地反映到狀態(tài)寄存器上,將壞塊里面的內(nèi)容備份到有效塊中,然后將其標志為壞塊,這時也需要更新BBT,如圖3所示。

圖2 讀操作失敗更新BBTFig.2 Update BBT with failure of read operation

2.2.2 壞塊查詢模塊

對當前存儲塊進行操作時,需要調(diào)用壞塊查詢模塊。上電時,首先將壞塊信息從Flash的存儲區(qū)讀入到RAM中。當對第n塊進行操作時,只需調(diào)用壞塊查詢模塊,查詢FPGA內(nèi)部RAM的壞塊地址信息,如果該塊為壞塊,則對第n+1個壞塊查詢,直至查詢到一個有效塊。查詢壞塊模塊部分代碼如下所示。

always@(posedge clk or negedge rst)

if(!rst)

begin

valid_blockaddr<=12'b0;

i<=5'b0;

read<=1'b0;

圖3 擦寫操作失敗更新BBTFig.3 Update BBT with failure of erase and write operation

num<=5'b0;

end

else

begin

if(i<64)

begin

block_addr<=addr[30:19]+num;

read<=1'b1;

address<=i;

if(block_addr==data)//說明該塊為壞塊,設(shè)num為1,則塊地址加1

begin

i<=0;

num<=num+5'b1;

end

else//與下一個地址信息對比,num不變,則地址不變

begin

i<=i+5'b1;

num<=num;

end

end

else//當i大于63時,說明已與所有壞塊地址信息對比過,并且該塊不在壞塊中

begin

valid_blockaddr<=block_addr;

i<=0;

num<=5'b0;

end

end

其中read、address分別為存儲壞塊地址信息RAM的讀使能端、地址,數(shù)據(jù)寬度為12,深度為64。addr為31位操作地址,data為RAM輸出的壞塊地址,將操作地址與壞塊地址data相比較,如果數(shù)據(jù)相同,說明該塊為壞塊,則將塊地址加1,從而跳過壞塊。由于所選型號不同以及工藝上的差別,壞塊數(shù)目自然不同,因此根據(jù)實際情況建立RAM[5]。

2.3 壞塊管理設(shè)計方法比較

由于一般壞塊的數(shù)量不超過總量的2%,所以其壞塊信息量較有效塊信息量小很多。方法3只占用FPGA較少的RAM資源。對于單片K9F8GU0M而言,對方法1、方法2以及本文所提出的方法進行存儲信息以及占用RAM資源的比較,如表1所示。方法3占用RAM的資源大約是方法1的2.5%,是方法3的30%。

表1 壞塊管理設(shè)計方法比較Tab.1 The comparison of bad block storage methods

3 仿真分析

3.1 仿真試驗

本文使用Verilog HDL語言進行編程,在QuartusII軟件平臺上對實現(xiàn)的功能進行編譯、運行,并且在Modelsim仿真平臺上編寫測試[8]平臺,對模塊進行功能仿真。圖4、圖5分別為識別壞塊仿真圖、壞塊查詢仿真圖。

圖4 識別壞塊仿真圖Fig.4 Simulation diagram of identifying bad block

3.2 結(jié)果分析

圖5 壞塊查詢仿真圖Fig.5 Stimulation graph of checking bad block

圖4為識別固有壞塊仿真時序。該數(shù)據(jù)記錄儀由9片K9F8G08U0M組成,圖中CE_L為9位片選信號,低電平有效;ALE_H為地址鎖存使能,高電平有效;CLE_H為命令鎖存使能,高電平有效;WE_L為寫使能,低電平有效;RE_L為讀使能,低電平有效;RB為設(shè)備狀態(tài)對于識別壞塊的仿真,本設(shè)計片選第1個芯片,讀出每塊的第一個備份字節(jié)。塊的初始地址為0,讀出數(shù)據(jù)后,將塊地址加1。由仿真圖可知第0,1塊為好塊,第2塊為壞塊,依次類推。仿真結(jié)果表明該壞塊管理中的壞塊識別模塊能夠?qū)崿F(xiàn)識別壞塊的功能。

圖5為壞塊查詢模塊仿真圖。為了便于觀察,設(shè)置RAM中第1、2、3、4地址存儲的壞塊地址為第1、3、5、6塊。圖5中addr為31位操作地址,分別設(shè)置為0x00000000、0x00180000、0x00280000,其對應(yīng)的塊地址為第0、3、5塊;valid_block為12位有效塊地址。由圖5可知,當對第3塊操作時,由于該塊為壞塊,所以跳過壞塊,對第4塊進行操作;當對第5塊進行操作時,由于該塊為壞塊,并且下一個塊即第6塊也為壞塊,所以跳到第7塊進行操作。仿真結(jié)果表明,該壞塊管理中壞塊查詢模塊能夠?qū)崿F(xiàn)辨別當前存儲塊是否為壞塊,并且跳過壞塊的功能。

4 結(jié)束語

文中的大容量數(shù)據(jù)記錄儀的存儲板由9片NAND Flash串聯(lián)組成,存儲容量大,出現(xiàn)壞塊問題的可能也多,因此提出了一種基于FPGA存儲壞塊地址信息的壞塊管理方案,來解決存儲板中的壞塊管理問題。仿真分析表明,該壞塊管理方案能夠有效地解決NAND Flash的壞塊管理問題,具有占用FPGA資源少的優(yōu)點,也可供其他類型的大容量數(shù)據(jù)記錄儀作為參考。

[1] 張勝勇,高世杰,吳志勇,等.基于FPGA的NAND Flash壞塊處理方法[J].計算機工程,2010,36(6):239-243.ZHANG Sheng-yong,GAO Shi-jie,WU Zhi-yong,et al.Bad block handle method of NAND flash memory based on FPGA[J].Computer Engineering,2010,36(6):239-243.

[2] 華清遠見嵌入式培訓中心.FPGA應(yīng)用開發(fā)入門與典型實例[M].北京:人民郵電出版社,2008.

[3] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學出版社,2008.

[4] Samsung Electronics.K9F8G08UXMFLASH Memory[M].2007.

[5] 羅曉,劉昊.一種基于FAT文件系統(tǒng)的NAND Flash壞塊處理方法[J].電子器件,2008,31(2):716-719.LUO Xiao,LIU Hao.Method of NAND flash memory bad block management based on FAT file system[J].Chinese Journal Of Electron Devices,2008,31(2):716-719.

[6] 韓勇豪,王少云.一種固態(tài)飛行參數(shù)記錄儀的研制[J].電子設(shè)計工程,2011,19(16)159-162.HAN Yong-hao,WANG Shao-yun.Design of a solid flight parameter recorder[J].Electronic Design Engineering,2011,19(16)159-162.

[7] 周軍.NAND Flash的壞塊管理設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2010(9):15-17.ZHOU Jun.Bad block management for NAND flash[J].Microcontrollers&Embedded Systems,2010(9):15-17.

[8] 王文龍,張少博,陳海峰.一種試驗數(shù)據(jù)處理軟件設(shè)計[J].火箭推進,2012(1):76-80.WANG Wen-long,ZHANG Shao-bo,CHEN Hai-feng.Design of a test data processing software[J].Journal of Rocket Propulsion,2012(1):76-80.

猜你喜歡
存儲芯片記錄儀芯片
做夢記錄儀
基于GPS的便攜式汽車行駛記錄儀的研制
中國存儲芯片打破韓美日壟斷局面邁出堅實一步
多通道NAND Flash存儲芯片控制器的設(shè)計與實現(xiàn)
無線電工程(2018年9期)2018-08-23 02:11:20
汽車記錄儀保險絲搭接轉(zhuǎn)換裝置及其模具設(shè)計
芯片測試
多通道采樣芯片ADS8556在光伏并網(wǎng)中的應(yīng)用
iPhone換閃存加容量這事靠譜嗎?
電腦迷(2015年12期)2015-04-29 23:22:51
大容量Flash在井下記錄儀中的應(yīng)用
武漢新芯3D NAND將成為中國存儲芯片產(chǎn)業(yè)彎道超車的切入點
電子世界(2015年24期)2015-01-16 03:19:38
永登县| 博爱县| 邢台市| 霍州市| 阜城县| 沧州市| 陆河县| 德江县| 祁门县| 林周县| 收藏| 亚东县| 秦皇岛市| 田东县| 色达县| 兰坪| 瑞安市| 仙居县| 镇平县| 朝阳县| 京山县| 雷波县| 石狮市| 英山县| 富裕县| 丹凤县| 栾川县| 万全县| 阳泉市| 财经| 泌阳县| 尖扎县| 长泰县| 昭通市| 苗栗县| 肥东县| 株洲县| 思南县| 广河县| 泽州县| 吉木萨尔县|