在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

電子設(shè)計(jì) ? 來源:電子科技 ? 作者:賈紅恩,劉瑞竹, ? 2020-03-29 08:01 ? 次閱讀

評價(jià)存儲器的一個(gè)重要指標(biāo)就是它的可靠性,在一般的數(shù)據(jù)存儲中,幾個(gè)位的錯(cuò)誤可能不是很關(guān)鍵的問題,如果但是發(fā)生在某個(gè)敏感的數(shù)據(jù)上,這個(gè)小小的故障可能會導(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)碼。它能夠檢測并糾正單比特錯(cuò)誤和檢測雙比特錯(cuò)誤,但對雙比特以上的錯(cuò)誤不能保證檢測。它克服了傳統(tǒng)奇偶校驗(yàn)只能檢出奇數(shù)位出錯(cuò)、校驗(yàn)碼冗長、不能糾錯(cuò)的局限性。文中在高速大容量固態(tài)存儲器的硬件結(jié)構(gòu)基礎(chǔ)上,詳細(xì)介紹了ECC校驗(yàn)碼的生成規(guī)則以及ECC校驗(yàn)流程,并用C語言和VHDL語言兩種方法實(shí)現(xiàn)了該算法。

1、 存儲器的硬件結(jié)構(gòu)及芯片介紹

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

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

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

2 、EGG算法分析及校驗(yàn)流程

2.1 EGG校驗(yàn)碼生成規(guī)則

Flash在讀寫數(shù)據(jù)的時(shí)候是以頁為單位進(jìn)行的,一頁有2 048個(gè)數(shù)據(jù),所以可以以2 048 bit為單位生成校驗(yàn)碼。每個(gè)數(shù)據(jù)有8位信息組成,可以把這2 048個(gè)數(shù)據(jù)看成2 048×8的矩陣,這樣就可以分別生成行校驗(yàn)碼和列校驗(yàn)碼來分別校驗(yàn)。ECC校驗(yàn)中,每2 048個(gè)數(shù)據(jù)生成4個(gè)字節(jié)的校驗(yàn)碼,這32位的校驗(yàn)碼分成3個(gè)部分:6位的列校驗(yàn)信息,22位的行校驗(yàn)信息,其余的4位置1,ECC校驗(yàn)碼組成,如表1所示。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

其中P4_l,P4_2,P2_1,P2_2,P1_1,P1_2是列校驗(yàn)碼,而P8_1,P8_2,P16_1,P16_2,P32_1,P32_2,P64_1,P64_2,P128_1,P128_2,P256_1,P256_2, P512_1,P512_2,P1024_1,P1 024_2, P2 048_1, P2 048_2, P4 096_1,P4096_2,P8192_1,P8192_2是行校驗(yàn)碼。行列校驗(yàn)碼生成表,如表2所示。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

2.2 ECC校驗(yàn)流程

當(dāng)向NAND Flash的頁中寫入數(shù)據(jù)的時(shí)候,每2 048 bit生成4 bit的ECC校驗(yàn)碼,稱之為寫ECC校驗(yàn)碼,保存到每一頁的空閑數(shù)據(jù)區(qū)中。

當(dāng)從NAND Flash中讀取數(shù)據(jù)的時(shí)候,每2 048 bit生成4 bit的ECC校驗(yàn)碼,稱之為讀ECC校驗(yàn)碼。校驗(yàn)的時(shí)候,根據(jù)上述ECC生成原理不難推斷:將從頁空閑區(qū)中讀出的寫ECC校驗(yàn)碼和讀ECC校驗(yàn)碼按位異或,若結(jié)果為0,則表示不存在錯(cuò);若4 bit的異或結(jié)果中存在14 bit為1,表示存在1 bit錯(cuò)誤,且可糾正;若4個(gè)bit的異或結(jié)果中只存在1 bit為1,表示空閑區(qū)中的校驗(yàn)碼出錯(cuò);其他情況均表示出現(xiàn)了無法糾正的錯(cuò)誤,校驗(yàn)流程圖,如圖2所示。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

3、 ECC算法的實(shí)現(xiàn)

3.1 C語言實(shí)現(xiàn)ECC算法

以一頁數(shù)據(jù)2 048個(gè)字節(jié)作為測試數(shù)據(jù)產(chǎn)生ECC校驗(yàn)碼,數(shù)據(jù)是0x00~0xFF,循環(huán)8次產(chǎn)生2048個(gè)數(shù)據(jù),數(shù)據(jù)序列,如圖3所示。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

按前面的ECC校驗(yàn)碼生成規(guī)則,2 048個(gè)數(shù)據(jù)應(yīng)該生成4個(gè)校驗(yàn)碼,生成的校驗(yàn)碼,如圖4所示,其中ecccode1,ecccode2,ecccode3,ecccode4是生成的4個(gè)校驗(yàn)碼。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

現(xiàn)在假設(shè)讀出的數(shù)據(jù)中有一位數(shù)據(jù)發(fā)生了翻轉(zhuǎn),出現(xiàn)了一位數(shù)據(jù)錯(cuò)誤的情況,即假設(shè)數(shù)據(jù)的第2 bit的最低位發(fā)生了翻轉(zhuǎn),0×0l變成了O×00,此時(shí)讀出的數(shù)據(jù)序列,如圖5所示。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

3.2 利用VHDL語言實(shí)現(xiàn)EGG算法

文中以0x00~OxFF循環(huán)8次產(chǎn)生2 048個(gè)數(shù)據(jù),利用VHDL語言編程,在QuartusII7.2下進(jìn)行了仿真,得到了如圖7所示的校驗(yàn)碼。其中ecccodel =00000000,ecccode2=00000000,ecccode3=11000000,ecccode4=000000ll是生成的4個(gè)校驗(yàn)碼,從圖中可以看到利用VHDL語言得到的校驗(yàn)碼和用C語言得到的ECC校驗(yàn)碼是相同的。

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

使用C語言和VHDL語言在高速大容量固態(tài)存儲器實(shí)現(xiàn)ECC算法

4 、結(jié)束語

文中介紹了ECC算法的一種實(shí)現(xiàn)方法,說明了ECC的校驗(yàn)流程,最后用兩種方法實(shí)現(xiàn)ECC校驗(yàn)算法。ECC校驗(yàn)算法簡單,軟硬件均能實(shí)現(xiàn),它能夠檢測并糾正單比特錯(cuò)誤和檢測雙比特錯(cuò)誤,所以可以為數(shù)據(jù)存儲和通信系統(tǒng)提供一種強(qiáng)有力的差錯(cuò)檢測手段。

責(zé)任編輯:t

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1644

    文章

    21989

    瀏覽量

    615222
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7640

    瀏覽量

    166636
  • vhdl
    +關(guān)注

    關(guān)注

    30

    文章

    819

    瀏覽量

    129642
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    應(yīng)用VHDL語言的FFT算法實(shí)現(xiàn)

    應(yīng)用VHDL語言的FFT算法實(shí)現(xiàn)
    發(fā)表于 08-20 20:17

    請問VHDL語言和verilog語言有什么區(qū)別?

    VHDL語言和verilog語言有何區(qū)別
    發(fā)表于 03-28 06:52

    請問VHDL語言和verilog語言有什么區(qū)別?

    VHDL語言和verilog語言有何區(qū)別
    發(fā)表于 03-29 07:55

    如何利用固態(tài)存儲器進(jìn)行ECC算法分析與實(shí)現(xiàn)?

    特錯(cuò)誤和檢測雙比特錯(cuò)誤,但對雙比特以上的錯(cuò)誤不能保證檢測。它克服了傳統(tǒng)奇偶校驗(yàn)只能檢出奇數(shù)位出錯(cuò)、校驗(yàn)碼冗長、不能糾錯(cuò)的局限性。文中高速容量固態(tài)
    發(fā)表于 07-31 06:47

    單片機(jī)C語言和普通的C語言有什么區(qū)別

    是一門通用計(jì)算機(jī)編程語言,廣泛應(yīng)用于底層開發(fā)。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程
    發(fā)表于 11-30 06:49

    vhdl語言ppt

    VHDL的定義和功能VHDL的發(fā)展概況程序編程語言和硬件描述語言的對比引入硬件描述語言對系統(tǒng)進(jìn)
    發(fā)表于 09-03 12:58 ?39次下載
    <b class='flag-5'>vhdl</b><b class='flag-5'>語言</b>ppt

    容量固態(tài)存儲設(shè)備的FPGA實(shí)現(xiàn)

    采用大容量固態(tài)Flash作為存儲介質(zhì),用FPGA作為存儲陣列的控制,設(shè)計(jì)了高速
    發(fā)表于 12-08 17:25 ?29次下載

    C語言和匯編語言混合編程方法和C語言中斷處理方法

    C語言和匯編語言混合編程方法和C語言中斷處理方法,new
    發(fā)表于 01-06 14:36 ?36次下載

    vhdl語言和c語言區(qū)別大嗎?差異性體現(xiàn)在哪兒

    相信對vhdl語言和c語言區(qū)別也有了一定的了解,并且它們兩者之間的區(qū)別還是挺大的,下面我們詳細(xì)細(xì)數(shù)一下它們的區(qū)別。
    發(fā)表于 11-09 16:06 ?2.1w次閱讀
    <b class='flag-5'>vhdl</b><b class='flag-5'>語言和</b><b class='flag-5'>c</b><b class='flag-5'>語言</b>區(qū)別大嗎?差異性體現(xiàn)在哪兒

    單片機(jī)C語言和C語言為什么有差異?

    許多小伙伴在學(xué)完C語言后想入門單片機(jī),但學(xué)著學(xué)著發(fā)現(xiàn)明明都是C語言,為什么單片機(jī)C語言和我當(dāng)初學(xué)
    發(fā)表于 09-01 16:39 ?3956次閱讀

    使用單片機(jī)實(shí)現(xiàn)I2C存儲器設(shè)計(jì)的中文硬件字庫應(yīng)用的C語言實(shí)例

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)I2C存儲器設(shè)計(jì)的中文硬件字庫應(yīng)用的C語言實(shí)例。
    發(fā)表于 03-31 14:45 ?2次下載

    [ 愛找茬 ]都是C語言,單片機(jī)C語言和普通的C語言究竟有什么差異呢?

    是一門通用計(jì)算機(jī)編程語言,廣泛應(yīng)用于底層開發(fā)。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程
    發(fā)表于 11-20 19:36 ?31次下載
    [ 愛找茬 ]都是<b class='flag-5'>C</b><b class='flag-5'>語言</b>,單片機(jī)<b class='flag-5'>C</b><b class='flag-5'>語言和</b>普通的<b class='flag-5'>C</b><b class='flag-5'>語言</b>究竟有什么差異呢?

    如何選擇創(chuàng)建c語言和c++

    選擇創(chuàng)建 C 語言和 C++ 都需要綜合考慮多個(gè)因素。決定使用哪種語言之前,我們需要對這兩種語言
    的頭像 發(fā)表于 11-27 15:58 ?909次閱讀

    vb語言和c++語言的區(qū)別

    VB語言和C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設(shè)計(jì)和用途上有很多區(qū)別。下面將詳細(xì)比較VB
    的頭像 發(fā)表于 02-01 10:20 ?3190次閱讀

    PLC編程語言和C語言的區(qū)別

    工業(yè)自動(dòng)化和計(jì)算機(jī)編程領(lǐng)域中,PLC(可編程邏輯控制)編程語言和C語言各自扮演著重要的角色。盡管兩者都是編程
    的頭像 發(fā)表于 06-14 17:11 ?4484次閱讀
    主站蜘蛛池模板: 中文字幕一区二区三区在线播放 | 亚洲福利视频网站 | 99精品福利 | www射射一区 | 人人九九精品 | 成人精品视频一区二区三区 | 曰本女人色黄网站 | 亚洲视频色 | 黄色网址免费在线 | 激情综合五月亚洲婷婷 | 成人美女隐私免费 | 天天艹夜夜 | 丁香六月婷婷精品免费观看 | 扛着高跟鞋丝袜腿呻吟视频 | 亚洲国产精品嫩草影院 | 天天做天天爽爽快快 | 爽爽爽爽爽爽a成人免费视频 | 夜夜想夜夜爽天天爱天天摸 | 黑色丝袜在丝袜福利国产 | 女人午夜啪啪性刺激免费看 | 天天色综合6 | 在线免费看片a | 久操综合| 天堂网在线视频 | 六月婷婷激情 | 涩多多在线观看 | 亚洲天堂视频一区 | 天天爽夜夜爽每晚高澡 | 五月婷婷基地 | 天天骑夜夜操 | 18一20岁一级毛片 | 年轻人影院www你懂的 | 四虎国产永久在线观看 | 久久久久久久久综合影视网 | 午夜精品免费 | 日本三级成人午夜视频网 | 综合色亚洲 | 这里只有精品视频 | 国产三级日本三级在线播放 | 天天干天天操天天插 | 免费鲁丝片一级观看 |