• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      胡紅,王少云,葉艷

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

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

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

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

      1 NAND Flash K 9F8G08U0M簡(jiǎn)介

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

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

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

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

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

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

      使用壞塊是出廠(chǎng)后,用戶(hù)對(duì)芯片使用產(chǎn)生過(guò)程中產(chǎn)生的新壞塊。

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

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

      2.2.1 識(shí)別壞塊與存儲(chǔ)信息

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

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

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

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

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

      2.2.2 壞塊查詢(xún)模塊

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

      always@(posedge clk or negedge rst)

      if(!rst)

      begin

      valid_blockaddr<=12'b0;

      i<=5'b0;

      read<=1'b0;

      圖3 擦寫(xiě)操作失敗更新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)//說(shuō)明該塊為壞塊,設(shè)num為1,則塊地址加1

      begin

      i<=0;

      num<=num+5'b1;

      end

      else//與下一個(gè)地址信息對(duì)比,num不變,則地址不變

      begin

      i<=i+5'b1;

      num<=num;

      end

      end

      else//當(dāng)i大于63時(shí),說(shuō)明已與所有壞塊地址信息對(duì)比過(guò),并且該塊不在壞塊中

      begin

      valid_blockaddr<=block_addr;

      i<=0;

      num<=5'b0;

      end

      end

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

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

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

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

      3 仿真分析

      3.1 仿真試驗(yàn)

      本文使用Verilog HDL語(yǔ)言進(jìn)行編程,在QuartusII軟件平臺(tái)上對(duì)實(shí)現(xiàn)的功能進(jìn)行編譯、運(yùn)行,并且在Modelsim仿真平臺(tái)上編寫(xiě)測(cè)試[8]平臺(tái),對(duì)模塊進(jìn)行功能仿真。圖4、圖5分別為識(shí)別壞塊仿真圖、壞塊查詢(xún)仿真圖。

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

      3.2 結(jié)果分析

      圖5 壞塊查詢(xún)仿真圖Fig.5 Stimulation graph of checking bad block

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

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

      4 結(jié)束語(yǔ)

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

      [1] 張勝勇,高世杰,吳志勇,等.基于FPGA的NAND Flash壞塊處理方法[J].計(jì)算機(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] 華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)中心.FPGA應(yīng)用開(kāi)發(fā)入門(mén)與典型實(shí)例[M].北京:人民郵電出版社,2008.

      [3] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,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è)計(jì)工程,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ì)[J].單片機(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] 王文龍,張少博,陳海峰.一種試驗(yàn)數(shù)據(jù)處理軟件設(shè)計(jì)[J].火箭推進(jìn),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.

      猜你喜歡
      存儲(chǔ)芯片記錄儀芯片
      做夢(mèng)記錄儀
      基于GPS的便攜式汽車(chē)行駛記錄儀的研制
      中國(guó)存儲(chǔ)芯片打破韓美日壟斷局面邁出堅(jiān)實(shí)一步
      多通道NAND Flash存儲(chǔ)芯片控制器的設(shè)計(jì)與實(shí)現(xiàn)
      汽車(chē)記錄儀保險(xiǎn)絲搭接轉(zhuǎn)換裝置及其模具設(shè)計(jì)
      芯片測(cè)試
      多通道采樣芯片ADS8556在光伏并網(wǎng)中的應(yīng)用
      iPhone換閃存加容量這事靠譜嗎?
      電腦迷(2015年12期)2015-04-29 23:22:51
      大容量Flash在井下記錄儀中的應(yīng)用
      武漢新芯3D NAND將成為中國(guó)存儲(chǔ)芯片產(chǎn)業(yè)彎道超車(chē)的切入點(diǎn)
      電子世界(2015年24期)2015-01-16 03:19:38
      内丘县| 内江市| 武安市| 齐河县| 天水市| 吉林市| 新蔡县| 凤翔县| 康马县| 香港 | 鄄城县| 金阳县| 喀什市| 根河市| 安平县| 绵竹市| 汝城县| 天津市| 临安市| 青河县| 梁河县| 射洪县| 汾西县| 三都| 巫溪县| 滁州市| 武强县| 会昌县| 昌平区| 全州县| 岳池县| 曲麻莱县| 武汉市| 天长市| 武陟县| 长兴县| 石棉县| 元阳县| 方山县| 鹿邑县| 无棣县|