0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RAM的 Parity与ECC

FPGA自习室 来源:FPGA自习室 作者:FPGA自习室 2020-11-02 16:41 次阅读

RAM的 Parity 与 ECC

一、概念介绍

1.1 Parity的概念

Parity,即奇偶校验位,指在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。它常常是从两个或更多的原始数据中产生一个冗余数据。一个字节数据的校验位等于8bit数据异或即:p=x0^x1^x2^x3^x4^x5^x6^x7。此时,实际的数据传输序列为9bit:数据+奇偶校验位。

Parity 这个概念可能最初接触到可能是在使用串口调试助手时,它有个可选的奇偶校验,就是为了指示数据传输过程中,发送方和接受方数据序列1的个数是否一致。如果不一致,说明数据在传输的链路中可能出错了。

优点:

结构简单,只需异或计算就可以实现,数据量小时实现代价小。

缺点:

1、不能修正错误:只知道校验的数据中有部分比特发生错误,无法判断哪几个比特发送错误。

2、有偶数个比特位时,则无法判断出错。

3、数据位宽较大时实现代价大:如1024比特数据,需要256bit的校验位。

1.2 ECC的概念

ECC是“Error Correcting Code”的简写,ECC是一种能够实现“错误检查和纠正”的技术。通过上面的分析我们知道Parity机制是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,随着数据位每增加8比特,检验位需要增加1比特。当数据量为256字节时,需要256个比特位,并且出错的数据无法恢复。由此,一种存储检错纠错机制出现了,这就是ECC。ECC同样通过增加校验位来进行错误判断,但是能够进行错误纠正。

优点:

1):大量数据位实现代价低:8比特数据需要5个校验位,256字节(256*8比特)的数据值需要5个列校验位和11行校验位

2)能够纠正错误:在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断

缺点:

1):只能修复1比特错误

当数据只有单比特错误时,ECC能够进行错误修复;超过2比特的数据错误,将无法修复,ECC只能输出多比特错误信号

2):不保证能检测超过2比特的错误。

超过2比特的错误不一定能检测出来。

3):算法复杂,逻辑级数比较深,时序不好收敛。

二、应用场景

IC设计中RAM模块需要输出信号有Parity信号和ECC信号。这样能够在一定程度上确保芯片的可测性以及可靠性。特别是在逻辑设计中使用的链表RAM或者控制RAM,如果这类RAM底层有坏块而导致RAM读出的数据某bit发生错误,可能会导致系统挂死。为了减少出现这种情况的风险,一般会对这类RAM做ECC计算逻辑,而像数据流RAM或者配置RAM可以只做Parity校验。

事实上,在做Parity计算时,并不需要严格按照每字节增加1bit Parity校验位,这样对于大位宽的RAM而言,仅仅为了实现校验错误,实现代价太大。因此,可以一个RAM做一个Parity校验位。而对于ECC而言,一般针对位宽较小的RAM。

三、实现细节

Parity是同一个data所有比特的异或,在data_in写入的时候进行异或计算得到parity_in,同时写入到RAM中,读出data的得到data_out,对data_out进行异或计算得到parity_out,若parity_out与parity_in(ram读出数据所携带)不相等,则表示数据有错误。

此外,在RAM的写侧和读侧加入Parity计算逻辑时,特别是大位宽的RAM,则需要考虑reg2mem和mem2reg时序是否收敛的问题,一般情况下处理是写侧计算Parity后打拍后写入,读侧打拍后再做Parity计算逻辑。

ECC负责纠错,能够修正1bit的数据。算法比较复杂,可以参考以下博客,不在叙述。

参考博客:

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

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

责任编辑:xj

原文标题:IC基础:RAM 的 Parity 与 ECC

文章出处:【微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IC
    IC
    +关注

    关注

    35

    文章

    5545

    浏览量

    173232
  • RAM
    RAM
    +关注

    关注

    7

    文章

    1322

    浏览量

    113716
  • ECC
    ECC
    +关注

    关注

    0

    文章

    90

    浏览量

    20378

原文标题:IC基础:RAM 的 Parity 与 ECC

文章出处:【微信号:FPGA_Study,微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCU重新上电后,如何进行ECC初始化?

    如题,在重新上电之后,需要读取ram地址,读取时进入异常,查阅资料后发现是由于重新上电,需要进行ECC初始化,请问这该如何进行
    发表于 03-19 07:53

    ECC功能开启后如何验证这个功能是否正常开启呢?

    各位大佬,现在我这边一个项目,代码层面开启ECC监控和中断后,如何验证当真实应用环境下,Ram区或者Flash区某个位被打翻后,会正常触发中断,实现读和回写的功能呢?
    发表于 03-11 06:39

    如何通过为TC332微控制器注入ECC错误来测试RAM错误?

    我们使用的是 TC332 微控制器,我们使用了 MBIST 测试和无损测试方法。 这些测试提供了在测试期间没有错误的肯定答案。 根据 fuSA 的指导方针,我们需要通过注入 ECC 错误来测试 RAM 错误和 Pflash 错误。
    发表于 01-31 06:39

    Pflash和Dflash都有闪存ECC保护,ECC内存在哪里?

    在用户手册中,Pflash 和 Dflash 都有闪存 ECC 保护,我想知道 ECC 内存在哪里? 它会占用 pflash 空间还是存储在用户无法访问的地方? 在此先谢谢!
    发表于 01-26 08:12

    MCU内部SRAM的ECC初始化竟可由ROM完成

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1170内部RAMECC初始化工作可全部由ROM完成。
    的头像 发表于 01-04 15:39 735次阅读

    是什么导致RAM中的内存数据损坏?纠错码(ECC)如何修复位翻转?

    是什么导致RAM中的内存数据损坏?纠错码(ECC)如何修复位翻转? RAM中的内存数据损坏可能由多种原因导致。其中一些原因包括电磁干扰、电压波动、温度变化等外部因素,还有由内部设计和制造缺陷
    的头像 发表于 12-15 09:58 1052次阅读

    SAP ECC到停止运营时间如何实现向S/4HANA的平稳升级

    SAP ECC是ERP Central Components的缩写,其中文名称为SAP 企业核心组件,是全球领先的软件提供商SAP推出的产品,其前身是SAP R/3。包含FI,CO, MM, SD
    的头像 发表于 09-13 21:54 459次阅读
    SAP <b class='flag-5'>ECC</b>到停止运营时间如何实现向S/4HANA的平稳升级

    实际底层的RAM尺寸到底是多少呢?就是32x119吗?

    在ASIC设计中,我们使用FIFO或者RAM的时候经常会用到校验位,例如奇偶校验或者ECC(海明码)校验,当然,也有可能不使用任何校验位。
    的头像 发表于 08-31 14:16 1093次阅读
    实际底层的<b class='flag-5'>RAM</b>尺寸到底是多少呢?就是32x119吗?

    ECC IP用户手册

    ECC(Error Correcting Code),纠错编码,是一种能实现错误检测和纠正的技术。
    发表于 08-09 07:36

    求助,MCU重新上电后如何进行ECC初始化?

    如题,在重新上电之后,需要读取ram地址,读取时进入异常,查阅资料后发现是由于重新上电,需要进行ECC初始化,请问这该如何进行?
    发表于 08-07 10:05

    Xilinx分布式RAM和块RAM—单口、双口、简单双口、真双口的区别

    单口 RAM(Single RAM)、双口 RAM(Dual RAM)、简单双口 RAM(Simple-Dual
    发表于 06-25 17:47 2244次阅读
    Xilinx分布式<b class='flag-5'>RAM</b>和块<b class='flag-5'>RAM</b>—单口、双口、简单双口、真双口的区别

    Micrium全家桶之uC-CRC: 0x01 ECC

    我们这一篇来讲讲Micrium全家桶的uC-CRC。该代码库提供了CRC算法进行错误检测EDC,使用HAMMING算法实现ECC错误纠正。ECC算法在NAND的TFL中使用。
    的头像 发表于 06-08 11:04 880次阅读
    Micrium全家桶之uC-CRC: 0x01 <b class='flag-5'>ECC</b>

    使用带有ECC芯片的4GB DDR3 RAM连接到T1040处理器DDR控制器,未能成功生成DDR地址奇偶校验错误的原因?

    我正在使用带有 ECC 芯片的 4GB DDR3 RAM 连接到 T1040 处理器 DDR 控制器。 我尝试了这个序列,但未能成功生成 DDR 地址奇偶校验错误: 步骤1: ERR_INT_EN
    发表于 05-31 06:13

    ECC82 JJ电子管规格

    ECC82 JJ电子管规格
    发表于 05-29 14:43 3次下载

    服务器RAM模块-可靠性和稳定性至关重要

    和消费者RAM之间的主要区别在于芯片的质量和数量。服务器RAM需要一天24小时运行,因此产品中使用的芯片必须是高质量的,并且在预制造时经过精心挑选。有不同的服务器RAM模块 - ECC
    的头像 发表于 05-04 11:15 1410次阅读
    服务器<b class='flag-5'>RAM</b>模块-可靠性和稳定性至关重要