• 
    

    
    

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

      ?

      基于FPGA的固態(tài)盤ECC實(shí)現(xiàn)

      2013-09-19 01:31:34章宇杰沈小波
      電子與封裝 2013年11期
      關(guān)鍵詞:校驗(yàn)碼奇偶存儲(chǔ)器

      章宇杰,沈小波

      (中國電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)

      1 引言

      評(píng)價(jià)存儲(chǔ)器的一個(gè)重要指標(biāo)就是它的可靠性。在一般的數(shù)據(jù)存儲(chǔ)中,幾個(gè)位的錯(cuò)誤可能不是很關(guān)鍵的問題,但是如果發(fā)生在某個(gè)敏感的數(shù)據(jù)上,這個(gè)小小的故障可能會(huì)導(dǎo)致嚴(yán)重的后果。因此,必須采取一些措施來及時(shí)檢出并糾正出錯(cuò)的數(shù)據(jù)。目前常用的方法有:奇偶校驗(yàn)、CRC校驗(yàn)、重復(fù)碼校驗(yàn)等。

      ECC校驗(yàn)是在奇偶校驗(yàn)的基礎(chǔ)上發(fā)展而來的,它將數(shù)據(jù)塊看作一個(gè)矩陣,利用矩陣的行、列奇偶信息生成ECC校驗(yàn)碼。它能夠檢測(cè)并糾正單比特錯(cuò)誤和檢測(cè)雙比特錯(cuò)誤,但對(duì)雙比特以上的錯(cuò)誤不能保證檢測(cè)。它克服了傳統(tǒng)奇偶校驗(yàn)只能檢出奇數(shù)位出錯(cuò)、校驗(yàn)碼冗長、不能糾錯(cuò)的局限性。文中在介紹高速大容量固態(tài)存儲(chǔ)器的硬件結(jié)構(gòu)基礎(chǔ)上,詳細(xì)介紹了ECC校驗(yàn)碼的生成規(guī)則以及ECC校驗(yàn)流程,并通過FPGA實(shí)現(xiàn)了該算法。

      2 存儲(chǔ)器的硬件結(jié)構(gòu)及介紹

      本文中的存儲(chǔ)器是以ARM為SSD控制器,用16片F(xiàn)lash芯片構(gòu)成存儲(chǔ)陣列,采用SATA接口實(shí)現(xiàn)數(shù)據(jù)的高速率存儲(chǔ)。Flash存儲(chǔ)陣列分為8組,每組2片,每組Flash芯片共用數(shù)據(jù)和控制總線。該存儲(chǔ)器的硬件結(jié)構(gòu)如圖1所示。

      圖1 SSD構(gòu)架圖

      存儲(chǔ)板上的存儲(chǔ)芯片用的是Micron公司的高速大容量固態(tài)存儲(chǔ)芯片Nand Flash Memory,其容量為1 G×8 bit,分為8192個(gè)塊,每個(gè)塊又分為64頁,1頁有(2 k+64)Byte,其中一頁有64 bit的空閑區(qū)。存儲(chǔ)板上的SSD控制器是由ARM 926為核心的控制芯片,它負(fù)責(zé)數(shù)據(jù)的緩沖和整個(gè)存儲(chǔ)器的時(shí)序控制,并負(fù)責(zé)以頁為單位生成校驗(yàn)碼,并把校驗(yàn)碼存入到頁的空閑區(qū)內(nèi)。下面以2 048 bit為單位介紹校驗(yàn)碼的生成以及校驗(yàn)流程。

      3 ECC生成

      Flash在讀寫數(shù)據(jù)的時(shí)候是以頁為單位進(jìn)行的,可以以2 048 bit為單位生成校驗(yàn)碼。每個(gè)數(shù)據(jù)有8位信息組成,可以把這2 048個(gè)數(shù)據(jù)看成256×8的矩陣,這樣就可以分別生成行校驗(yàn)碼和列校驗(yàn)碼來分別校驗(yàn)。ECC校驗(yàn)中,每256個(gè)數(shù)據(jù)生成3個(gè)字節(jié)的校驗(yàn)碼,這24位的校驗(yàn)碼分成3個(gè)部分:6位的列校驗(yàn)信息,16位的行校驗(yàn)信息,其余的2位置1,ECC校驗(yàn)碼組成,如圖2所示。其中CP0、CP1、CP2、CP3、CP4、CP5是列校驗(yàn)碼,而LP0、LP1、LP2、LP3、LP4、LP5、LP6、LP7、LP8、LP9、LP10、LP11、LP12、LP13、LP14、LP15是行校驗(yàn)碼。行列校驗(yàn)碼生成表,如圖2所示。

      圖2 列和行奇偶的框圖

      處理每個(gè)數(shù)據(jù)字節(jié)在整個(gè)數(shù)據(jù)模塊上計(jì)算列奇偶。

      列奇偶位的計(jì)算方法為:

      行奇偶位的計(jì)算方法為:

      4 ECC校驗(yàn)

      ECC校驗(yàn)可以檢測(cè)1 bit或2 bit錯(cuò)誤,并糾正1 bit錯(cuò)誤。

      (1)無錯(cuò)誤

      由于flash中存儲(chǔ)的代碼和讀操作所產(chǎn)生的代碼沒有不同,因此這種情況下沒有錯(cuò)誤。

      (2)可校準(zhǔn)的錯(cuò)誤

      在計(jì)算完所有數(shù)據(jù)的ECC后和flash中所儲(chǔ)存的原來的ECC后產(chǎn)生位比較后,所有奇偶位對(duì)(CP0和CP1)…(LP14和LP15)自身有一個(gè)錯(cuò)誤和一個(gè)匹配。這種情況下可以校準(zhǔn)錯(cuò)誤。

      (3)不可校準(zhǔn)的錯(cuò)誤

      在計(jì)算完所有數(shù)據(jù)的ECC后和flash中所儲(chǔ)存的原來的ECC后產(chǎn)生位比較后,只要有奇偶對(duì)都有錯(cuò)誤,如CP0和CP1都有錯(cuò)誤這表示多個(gè)位錯(cuò)誤并不可校準(zhǔn)。

      (4)可校錯(cuò)誤的位置

      通過存儲(chǔ)在flash中的ECC和從數(shù)據(jù)中計(jì)算出的ECC相異或后,找到錯(cuò)誤的位置。(LP15、LP13、LP11、LP9、LP7、LP5、LP3、LP1)這一組數(shù)據(jù)給出了出錯(cuò)的字節(jié)地址。(CP5、CP3、CP1)給出了出錯(cuò)的位的地址。

      5 工程實(shí)現(xiàn)

      該ECC算法在FPGA中實(shí)現(xiàn),ECC碼生成工程實(shí)現(xiàn)按照ECC的生成的算法。

      算法實(shí)現(xiàn)流程圖如圖3所示。

      圖3 算法流程

      本實(shí)驗(yàn)處理對(duì)象為256 Byte的數(shù)據(jù)包,對(duì)其進(jìn)行ECC校驗(yàn)共生成22 bit校驗(yàn)數(shù)據(jù)。為方便讀取,可以在末尾添加兩位,形成完整的3 Byte 校驗(yàn)數(shù)據(jù)。這3 Byte共24 bit,分成兩部分:6 bit的比特校驗(yàn)和16 bit的字節(jié)校驗(yàn),多余的2 bit置1,并置于校驗(yàn)碼的最低位,在進(jìn)行異或操作時(shí)此2 bit忽略。ECC生成實(shí)驗(yàn)結(jié)果如圖4所示。

      圖4 ECC計(jì)算結(jié)果

      圖4中等待256個(gè)字節(jié)的數(shù)據(jù)輸入后,最后生成校驗(yàn)碼4401E9,也就是3個(gè)字節(jié)的校驗(yàn)碼。其中out1、out2和out3為中間數(shù)據(jù),EOF高電平出現(xiàn)代表數(shù)據(jù)運(yùn)算結(jié)束。運(yùn)算結(jié)束,輸出4401E9,其中最后兩位為無效數(shù)據(jù)。數(shù)據(jù)輸入為串行輸入,256個(gè)字節(jié)需要256個(gè)時(shí)鐘周期后才能完成輸入。由此從輸入開始到得出計(jì)算結(jié)果至少需等待256個(gè)時(shí)鐘周期。在實(shí)際使用過程中可以將串行輸入改為并行輸入,或流水線結(jié)構(gòu),以減少等待時(shí)間。

      ECC校驗(yàn)的結(jié)果如圖5所示,其中錯(cuò)誤指示由兩個(gè)bit表示。00表示沒有錯(cuò)誤,01表示有1位錯(cuò)誤,10表示有2位及2位以上錯(cuò)誤,11表示ECC區(qū)出錯(cuò)。當(dāng)出錯(cuò)位為1位時(shí),由錯(cuò)誤位置指出可糾錯(cuò)的位。

      圖5 ECC檢驗(yàn)

      6 結(jié)論

      為了實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸,在固態(tài)盤中需要使用ECC校驗(yàn)。文中介紹了ECC算法的一種實(shí)現(xiàn)方法,說明了ECC的校驗(yàn)流程,最后用xilinx FPGA XC3S500E實(shí)現(xiàn)ECC校驗(yàn)算法。ECC校驗(yàn)算法簡單,軟硬件均能實(shí)現(xiàn),ECC能夠檢測(cè)并糾正單比特錯(cuò)誤和檢測(cè)雙比特錯(cuò)誤,所以可以為數(shù)據(jù)存儲(chǔ)和通信系統(tǒng)提供一種強(qiáng)有力的差錯(cuò)檢測(cè)手段。使用本文提供的ECC算法可以糾錯(cuò)1 bit,檢錯(cuò)2 bit。

      [1]李璐,周海燕.一種含BCH編解碼器的SLC/MLC-Nand flash控制器的VLSI設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009.7.

      [2]Toru Tanzawa etc.A Compact On-Chip ECC for Low Cost Flash Memories [J].IEEE Journal of solid-state circuits,1997,32(5).

      猜你喜歡
      校驗(yàn)碼奇偶存儲(chǔ)器
      三招求解“奇偶項(xiàng)交織”遞推數(shù)列問題
      靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
      談?wù)勂媾己瘮?shù)的應(yīng)用
      n分奇偶時(shí),如何求數(shù)列的通項(xiàng)
      活用奇偶函數(shù)的性質(zhì)妙解題
      基于Excel實(shí)現(xiàn)書號(hào)校驗(yàn)碼的驗(yàn)證
      基于FPGA的循環(huán)冗余校驗(yàn)碼設(shè)計(jì)
      電子世界(2015年14期)2015-11-07 05:32:29
      身份證號(hào)碼中的數(shù)學(xué)
      存儲(chǔ)器——安格爾(墨西哥)▲
      基于Nand Flash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)
      乌恰县| 焦作市| 新密市| 南汇区| 威海市| 山丹县| 长葛市| 和龙市| 保康县| 疏勒县| 双鸭山市| 黔南| 南漳县| 克东县| 青海省| 呼玛县| 灵武市| 轮台县| 呼和浩特市| 台东市| 武威市| 永修县| 延吉市| 彭山县| 贞丰县| 和硕县| 醴陵市| 汉中市| 莱阳市| 甘肃省| 咸丰县| 茂名市| 南京市| 胶州市| 谢通门县| 浪卡子县| 连平县| 广河县| 图们市| 五台县| 托克托县|