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

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

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

RAM的 Parity與ECC

FPGA自習(xí)室 ? 來源:FPGA自習(xí)室 ? 作者:FPGA自習(xí)室 ? 2020-11-02 16:41 ? 次閱讀

RAM的 Parity 與 ECC

一、概念介紹

1.1 Parity的概念

Parity,即奇偶校驗(yàn)位,指在數(shù)據(jù)存儲(chǔ)和傳輸中,字節(jié)中額外增加一個(gè)比特位,用來檢驗(yàn)錯(cuò)誤。它常常是從兩個(gè)或更多的原始數(shù)據(jù)中產(chǎn)生一個(gè)冗余數(shù)據(jù)。一個(gè)字節(jié)數(shù)據(jù)的校驗(yàn)位等于8bit數(shù)據(jù)異或即:p=x0^x1^x2^x3^x4^x5^x6^x7。此時(shí),實(shí)際的數(shù)據(jù)傳輸序列為9bit:數(shù)據(jù)+奇偶校驗(yàn)位。

Parity 這個(gè)概念可能最初接觸到可能是在使用串口調(diào)試助手時(shí),它有個(gè)可選的奇偶校驗(yàn),就是為了指示數(shù)據(jù)傳輸過程中,發(fā)送方和接受方數(shù)據(jù)序列1的個(gè)數(shù)是否一致。如果不一致,說明數(shù)據(jù)在傳輸?shù)逆溌分锌赡艹鲥e(cuò)了。

優(yōu)點(diǎn):

結(jié)構(gòu)簡(jiǎn)單,只需異或計(jì)算就可以實(shí)現(xiàn),數(shù)據(jù)量小時(shí)實(shí)現(xiàn)代價(jià)小。

缺點(diǎn):

1、不能修正錯(cuò)誤:只知道校驗(yàn)的數(shù)據(jù)中有部分比特發(fā)生錯(cuò)誤,無法判斷哪幾個(gè)比特發(fā)送錯(cuò)誤。

2、有偶數(shù)個(gè)比特位時(shí),則無法判斷出錯(cuò)。

3、數(shù)據(jù)位寬較大時(shí)實(shí)現(xiàn)代價(jià)大:如1024比特?cái)?shù)據(jù),需要256bit的校驗(yàn)位。

1.2 ECC的概念

ECC是“Error Correcting Code”的簡(jiǎn)寫,ECC是一種能夠?qū)崿F(xiàn)“錯(cuò)誤檢查和糾正”的技術(shù)。通過上面的分析我們知道Parity機(jī)制是通過在原來數(shù)據(jù)位的基礎(chǔ)上增加一個(gè)數(shù)據(jù)位來檢查當(dāng)前8位數(shù)據(jù)的正確性,隨著數(shù)據(jù)位每增加8比特,檢驗(yàn)位需要增加1比特。當(dāng)數(shù)據(jù)量為256字節(jié)時(shí),需要256個(gè)比特位,并且出錯(cuò)的數(shù)據(jù)無法恢復(fù)。由此,一種存儲(chǔ)檢錯(cuò)糾錯(cuò)機(jī)制出現(xiàn)了,這就是ECC。ECC同樣通過增加校驗(yàn)位來進(jìn)行錯(cuò)誤判斷,但是能夠進(jìn)行錯(cuò)誤糾正。

優(yōu)點(diǎn):

1):大量數(shù)據(jù)位實(shí)現(xiàn)代價(jià)低:8比特?cái)?shù)據(jù)需要5個(gè)校驗(yàn)位,256字節(jié)(256*8比特)的數(shù)據(jù)值需要5個(gè)列校驗(yàn)位和11行校驗(yàn)位

2)能夠糾正錯(cuò)誤:在內(nèi)存中ECC能夠容許錯(cuò)誤,并可以將錯(cuò)誤更正,使系統(tǒng)得以持續(xù)正常的操作,不致因錯(cuò)誤而中斷

缺點(diǎn):

1):只能修復(fù)1比特錯(cuò)誤

當(dāng)數(shù)據(jù)只有單比特錯(cuò)誤時(shí),ECC能夠進(jìn)行錯(cuò)誤修復(fù);超過2比特的數(shù)據(jù)錯(cuò)誤,將無法修復(fù),ECC只能輸出多比特錯(cuò)誤信號(hào)。

2):不保證能檢測(cè)超過2比特的錯(cuò)誤。

超過2比特的錯(cuò)誤不一定能檢測(cè)出來。

3):算法復(fù)雜,邏輯級(jí)數(shù)比較深,時(shí)序不好收斂。

二、應(yīng)用場(chǎng)景

IC設(shè)計(jì)中RAM模塊需要輸出信號(hào)有Parity信號(hào)和ECC信號(hào)。這樣能夠在一定程度上確保芯片的可測(cè)性以及可靠性。特別是在邏輯設(shè)計(jì)中使用的鏈表RAM或者控制RAM,如果這類RAM底層有壞塊而導(dǎo)致RAM讀出的數(shù)據(jù)某bit發(fā)生錯(cuò)誤,可能會(huì)導(dǎo)致系統(tǒng)掛死。為了減少出現(xiàn)這種情況的風(fēng)險(xiǎn),一般會(huì)對(duì)這類RAM做ECC計(jì)算邏輯,而像數(shù)據(jù)流RAM或者配置RAM可以只做Parity校驗(yàn)。

事實(shí)上,在做Parity計(jì)算時(shí),并不需要嚴(yán)格按照每字節(jié)增加1bit Parity校驗(yàn)位,這樣對(duì)于大位寬的RAM而言,僅僅為了實(shí)現(xiàn)校驗(yàn)錯(cuò)誤,實(shí)現(xiàn)代價(jià)太大。因此,可以一個(gè)RAM做一個(gè)Parity校驗(yàn)位。而對(duì)于ECC而言,一般針對(duì)位寬較小的RAM。

三、實(shí)現(xiàn)細(xì)節(jié)

Parity是同一個(gè)data所有比特的異或,在data_in寫入的時(shí)候進(jìn)行異或計(jì)算得到parity_in,同時(shí)寫入到RAM中,讀出data的得到data_out,對(duì)data_out進(jìn)行異或計(jì)算得到parity_out,若parity_out與parity_in(ram讀出數(shù)據(jù)所攜帶)不相等,則表示數(shù)據(jù)有錯(cuò)誤。

此外,在RAM的寫側(cè)和讀側(cè)加入Parity計(jì)算邏輯時(shí),特別是大位寬的RAM,則需要考慮reg2mem和mem2reg時(shí)序是否收斂的問題,一般情況下處理是寫側(cè)計(jì)算Parity后打拍后寫入,讀側(cè)打拍后再做Parity計(jì)算邏輯。

ECC負(fù)責(zé)糾錯(cuò),能夠修正1bit的數(shù)據(jù)。算法比較復(fù)雜,可以參考以下博客,不在敘述。

參考博客:

https://blog.csdn.net/wzsalan/article/details/79842220

https://blog.csdn.net/icxiaoge/article/details/79996456

責(zé)任編輯:xj

原文標(biāo)題:IC基礎(chǔ):RAM 的 Parity 與 ECC

文章出處:【微信公眾號(hào):FPGA自習(xí)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    36

    文章

    5792

    瀏覽量

    174424
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114229
  • ECC
    ECC
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    20473

原文標(biāo)題:IC基礎(chǔ):RAM 的 Parity 與 ECC

文章出處:【微信號(hào):FPGA_Study,微信公眾號(hào):FPGA自習(xí)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ram和eeprom各有什么特點(diǎn)

    RAM(Random Access Memory,隨機(jī)存取存儲(chǔ)器)和EEPROM(Electrically Erasable Programmable Read-Only Memory,電
    的頭像 發(fā)表于 09-18 11:11 ?177次閱讀

    PSoC5LP:ECC總是返回失敗的原因?

    ECC 后,使用 AN78175 項(xiàng)目提供的示例和 SelfTest_FlashECC() 函數(shù)應(yīng)該很容易: uint8_t SelfTest_FlashECC(void) { uint8_t
    發(fā)表于 05-30 08:15

    CYT4BF的監(jiān)管區(qū) (SFlash) 是否支持 ECC?

    CYT4BF 的監(jiān)管區(qū) (SFlash) 是否支持 ECC? 如果支持 ECC, 控制 ECC 的寄存器是否與 FLASHC/FLASHC1_FLASH_CTL.MAIN_ECC_EN
    發(fā)表于 05-23 07:26

    MCU重新上電后,如何進(jìn)行ECC初始化?

    如題,在重新上電之后,需要讀取ram地址,讀取時(shí)進(jìn)入異常,查閱資料后發(fā)現(xiàn)是由于重新上電,需要進(jìn)行ECC初始化,請(qǐng)問這該如何進(jìn)行
    發(fā)表于 03-19 07:53

    fpga雙口ram的使用

    FPGA雙口RAM的使用主要涉及配置和使用雙端口RAM模塊。雙端口RAM的特點(diǎn)是有兩組獨(dú)立的端口,可以對(duì)同一存儲(chǔ)塊進(jìn)行讀寫操作,從而實(shí)現(xiàn)并行訪問。
    的頭像 發(fā)表于 03-15 13:58 ?769次閱讀

    ECC功能開啟后如何驗(yàn)證這個(gè)功能是否正常開啟呢?

    各位大佬,現(xiàn)在我這邊一個(gè)項(xiàng)目,代碼層面開啟ECC監(jiān)控和中斷后,如何驗(yàn)證當(dāng)真實(shí)應(yīng)用環(huán)境下,Ram區(qū)或者Flash區(qū)某個(gè)位被打翻后,會(huì)正常觸發(fā)中斷,實(shí)現(xiàn)讀和回寫的功能呢?
    發(fā)表于 03-11 06:39

    如何通過為TC332微控制器注入ECC錯(cuò)誤來測(cè)試RAM錯(cuò)誤?

    我們使用的是 TC332 微控制器,我們使用了 MBIST 測(cè)試和無損測(cè)試方法。 這些測(cè)試提供了在測(cè)試期間沒有錯(cuò)誤的肯定答案。 根據(jù) fuSA 的指導(dǎo)方針,我們需要通過注入 ECC 錯(cuò)誤來測(cè)試 RAM 錯(cuò)誤和 Pflash 錯(cuò)誤。
    發(fā)表于 01-31 06:39

    求助,如何在aurix中測(cè)試Flash ECC

    嗨英飛凌??! 我需要在閃存中測(cè)試 TC39x 微控制器的 ECC 錯(cuò)誤檢測(cè),有一些文檔描述了注入錯(cuò)誤的正確程序?
    發(fā)表于 01-31 06:27

    Pflash和Dflash都有閃存ECC保護(hù),ECC內(nèi)存在哪里?

    在用戶手冊(cè)中,Pflash 和 Dflash 都有閃存 ECC 保護(hù),我想知道 ECC 內(nèi)存在哪里? 它會(huì)占用 pflash 空間還是存儲(chǔ)在用戶無法訪問的地方? 在此先謝謝!
    發(fā)表于 01-26 08:12

    Aurix pFlash內(nèi)存部分是如何在微控制器級(jí)別上創(chuàng)建ECC寫入錯(cuò)誤的?

    我正在查看 Aurix pFlash 內(nèi)存部分是如何在微控制器級(jí)別上創(chuàng)建 ECC 寫入錯(cuò)誤的,以及他們是如何通過故障注入技術(shù)使用它產(chǎn)生多位錯(cuò)誤的 通常 ecc 錯(cuò)誤是使用高電壓和其他方法產(chǎn)生的,但
    發(fā)表于 01-22 07:37

    MCU內(nèi)部SRAM的ECC初始化竟可由ROM完成

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是i.MXRT1170內(nèi)部RAMECC初始化工作可全部由ROM完成。
    的頭像 發(fā)表于 01-04 15:39 ?1143次閱讀

    是什么導(dǎo)致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯(cuò)碼(ECC)如何修復(fù)位翻轉(zhuǎn)?

    是什么導(dǎo)致RAM中的內(nèi)存數(shù)據(jù)損壞?糾錯(cuò)碼(ECC)如何修復(fù)位翻轉(zhuǎn)? RAM中的內(nèi)存數(shù)據(jù)損壞可能由多種原因?qū)е?。其中一些原因包括電磁干擾、電壓波動(dòng)、溫度變化等外部因素,還有由內(nèi)部設(shè)計(jì)和制造缺陷
    的頭像 發(fā)表于 12-15 09:58 ?1656次閱讀

    易靈思RAM使用--Update3

    易靈思RAM在使用時(shí)可以會(huì)遇到一些問題,這里把常用的問題總結(jié)下。 1、ram初始化文件路徑是工程路徑 在對(duì)ram進(jìn)行初始化時(shí)需要指定文件路徑,這里要注意'/'的方向。 (1)如果文件放在工程目錄
    的頭像 發(fā)表于 12-12 09:52 ?469次閱讀
    易靈思<b class='flag-5'>RAM</b>使用--Update3

    IC設(shè)計(jì)中關(guān)于ram的應(yīng)用

    統(tǒng)計(jì)有效數(shù)據(jù)包的個(gè)數(shù)。 假設(shè)數(shù)據(jù)中存在pkt_id,pkt_id為0~63,則ram的深度為64。pkt_id用于作為讀寫地址。RAM讀延時(shí)為3個(gè)時(shí)鐘周期。
    的頭像 發(fā)表于 11-17 17:36 ?514次閱讀
    IC設(shè)計(jì)中關(guān)于<b class='flag-5'>ram</b>的應(yīng)用

    IC設(shè)計(jì):常見的ram訪問沖突

    ram沖突是幾乎每顆芯片都需要關(guān)注的問題,部分場(chǎng)景下,ram訪問沖突不容易驗(yàn)證到,容易造成芯片bug。ram訪問沖突的類型通常有訪問接口沖突和訪問地址沖突。
    的頭像 發(fā)表于 11-13 10:44 ?1363次閱讀
    IC設(shè)計(jì):常見的<b class='flag-5'>ram</b>訪問沖突