ECC校验原理以及在Nand Flash中的应用

这篇具有很好参考价值的文章主要介绍了ECC校验原理以及在Nand Flash中的应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ECC介绍

ECC,全称为Error Correcting Code,错误纠正码,这是一种编码方式,用于在于可以在一定程度上自行发现和纠正传输过程中发生的错误。

 香农在1948年发表的《通信的数学理论》中的信道编码定理指出:主要采取适当的纠错码,就可以在多类信道上传输消息,其误码率可以任意小。经过历代人们的持续努力,找出了许多好的信道编码方法,满足许多实用要求。

 在构造纠错码时,将输入信息分为k位一组进行编码。若编出的校验位仅与本组的信息位有关,这样的码成为分组码。若不仅与本组的K个信息位有关,而且与前若干组的信息位有关,则成为卷积码。

纠错码能够检错或者纠错,主要靠码字之间的差别。这可以用汉明距离d(x,y)来衡量。一种纠错码的最小距离d定义为该种码中任意两个码字之间的距离的最小值。

 一种码要能发现n个错误,它的最小距离d应不小于(n+1),

 一种码要能纠正n个错误,它的最下距离d应不小于(2n+1)

汉明码介绍

它是一种可以发现并且纠正一个独立错误的线性分组码,使用多余的奇偶校验位来识别一位的错误。

 1、把所有2的幂次方的数据位标记为奇偶校验位(编号为1, 2, 4, 8, 16, 32, 64等的位置)

 2、其他数据位用于待编码数据. (编号为3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 17等的位置)

3、每个奇偶校验位的值代表了代码字中部分数据位的奇偶性,其所在位置决定了要校验和跳过的比特位顺序。

位置1:校验1位,跳过1位,校验位数编号为:1,3,5,7,9,11,13,15,…

位置2:校验2位,跳过2位, 校验位数编号为:2,3,6,7,10,11,14,15,…

位置4:校验4位,跳过4位, 校验位数编号为:4,5,6,7,12,13,14,15,20,21,22,23,…

位置8:校验8位,跳过8位,校验位数编号为: 8-15,24-31,40-47,…

如果全部校验的位置中有奇数个1,把该奇偶校验位置为1;如果全部校验的位置中有偶数个1,把该奇偶校验位置为0

如下图所示:
ecc校验,汽车功能安全,网络,算法
举例说明:一个字节的数据 1001_1010,按照上图所示,D[0]~D[7]填写对应数值,D[0]写1,D[1]写0….,需要计算得出4个校验位,根据上述原理可知:

C[0] = D[0] xor D[1] xor D[3] xor D[4] xor D[6]  = 0
C[1] = D[0] xor D[2] xor D[3] xor D[5] xor D[6]  = 1
C[2] = D[1] xor D[2] xor D[3] xor D[7]              = 1
C[3] = D[4] xor D[5] xor D[6] xor D[7]              = 0

最终排列出来的结果为: 011100101010 ,这个码字代表了8位真实码加上4位冗余码,可以自纠正一位错误。也就是说,在传输过程中,这列码字,无论哪一位出现位翻转,在接收端都可以被检测并且纠正回来。

在接收端收到此列数据,还是按照上述方法来计算,看M[0] 和 M[2] xor M[4] xor M[5] xor M[6] xor M[10] 是否相等,如果相等,则设置对于M[0]位设为0,不等则设置对应位为1.

通过这样来计算四次,得到M[7] M[3] M[2] M[0],如果传输没错,则这四位均为0.如果某一位发生翻转,比如M[4]发生错误,从0变为1,那么M[0]和M[3]的奇偶性就会计算错误,那么
ecc校验,汽车功能安全,网络,算法

适用范围

纠错码传输的都是数字信号。这既可用硬件实现,也可用软件实现。前者主要用各种数字电路,主要是采用大规模集成电路。软件实现特别适合计算机通信网等场合。因为这时可以直接利用网中的计算机进行编码和译码,不需要另加专用设备。硬件实现的速度较高,比软件可快几数量级。

在传信率一定的情况下,如果采用纠错码提高可靠性,要求信道的传输率增加,带宽加大。因此,纠错码主要用于功率受限制而带宽较大的信道,如卫星、散射等系统中。纠错码还用在一些可靠性要求较高,但设备或器件的可靠性较差,而余量较大的场合,如磁带、磁盘和半导体存储器等。

Nand Flash中的应用

由于Nand Flash工艺,不能保证Nand中Memory Array在生命周期中保持可靠性能,因此,在使用过程中,会产生坏块,为了保证数据的可靠性,Nand Flash控制器中一般都内置了坏快管理策略。如果操作时序和电路稳定性不存在问题的前提下,Nand Flash出错一般不会造成整个Block或Page出错、而是整个Page中某一个或者某几个bit出错。

 在Nand Flash的处理中,使用专用的校验方法,ECC,它能够纠正单比特错误和检测双比特错误,而且计算速度很快。以三星Flash为例子,一片Nand flash为一个设备(device),1 (Device) = xxxx (Blocks),1 (Block) = xxxx (Pages),1(Page) =528 (Bytes) = 数据块大小(512Bytes) + OOB 块大小(16Bytes,除OOB第六字节外,通常至少把OOB的前3个字节存放Nand Flash硬件ECC码。

ECC一般每256个字节原始数据生成3字节ECC校验数据,这24位的校验数据分为6位的列校验数据和16位的行校验数据,剩余2位置为1,具体分布如下:

ECC行列校验生成规则如下,和汉明码差不多的思想:

ecc校验,汽车功能安全,网络,算法

其中,行校验生成规则:

P8 = bit7(+)bit6(+)bit5(+)bit4(+)bit3(+)bit2(+)bit1(+)bit0 对所有偶数行字节的所有位进行异或操作的结果。

P8`= bit7(+)bit6(+)bit5(+)bit4(+)bit3(+)bit2(+)bit1(+)bit0 对所有奇数行字节的所有位进行异或操作的结果。

列校验生成规则:

P1=D7(+)D5(+)D3(+)D1 P1`=D6(+)D4(+)D2(+)D0

P2=D7(+)D6(+)D3(+)D2 P2`=D5(+)D4(+)D1(+)D0

P4=D7(+)D6(+)D5(+)D4 P4`=D3(+)D2(+)D1(+)D0

这里面的D6,D4为所有保存的字节上对于的Bit位值。比如P4是对所有字节的Bit 4 5 6 7 进行异或操作的结果。P2是对所有字节的Bit2 3 6 7进行异或操作的结果。

经过上述计算结果的基础上,汇总成ECC三个字节的保存布局:

当往NAND Flash的page中写入数据的时候,每256字节我们生成一个ECC校验和,称之为原ECC校验和,保存到PAGE的OOB(out-of-band)数据区中。
当从NAND Flash中读取数据的时候,每256字节我们生成一个ECC校验和,称之为新ECC校验和。
校验的时候,根据上述ECC生成原理不难推断:将从OOB区中读出的原ECC校验和新ECC校验和按位异或,若结果为0,则表示不存在错(或是出现了ECC无法检测的错误);若3个字节异或结果中存在11个比特位为1,表示存在一个比特错误,且可纠正;若3个字节异或结果中只存在1个比特位为1,表示OOB区出错;其他情况均表示出现了无法纠正的错误。

转:https://www.bbsmax.com/A/mo5kqjm3zw/文章来源地址https://www.toymoban.com/news/detail-784036.html

到了这里,关于ECC校验原理以及在Nand Flash中的应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [深入理解NAND Flash (原理篇)] Flash(闪存)存储器底层原理 | 闪存存储器重要参数

    传送门 总目录  所在专栏   《 深入理解SSD》 个人辛苦整理,付费内容,禁止转载。 内容摘要 从底层物理原理上了解 Nand Flash。 现代计算机构想是基于冯 · 诺依曼架构的图灵计算机设备,图灵从理论上去论证了现代计算机可以实现,也就是给现代计算机注入了灵魂,而冯

    2024年02月06日
    浏览(47)
  • ECC椭圆曲线入门

    https://web3study.club/ ECC(Ellipse Curve Cryptography)又称椭圆曲线密码体制、椭圆曲线加密算法等。 椭圆曲线加密算法在比特币、区块链上有着广泛的应用。 公式: y^2 = x^3 + ax + b 这里使用简单易懂的方式对大家介绍这部分内容,让大家有个简单的理解 公私钥加密内容​ 公钥未公开部

    2023年04月09日
    浏览(41)
  • DDR5 内存ECC

    针对DDR5,已经写了很多文章来分析,但最近工作中碰到一个问题, 同一个channel里的CB是不是可以任意互换?  让我对DDR5的ECC功能有一些疑问,查了下资料发现这里面水挺深,ECC居然还有好几种? DDR作为目前主板上带宽最高的设备和协议,误码率当然是其中最重要的参数之一

    2024年02月15日
    浏览(34)
  • ECC算法学习(一)算法公式

    ECC全称为“Ellipse Curve Ctyptography”,是一种基于椭圆曲线数学的公开密钥加密算法。与传统的基于大质数分解难题的加密算法不同,该加密方式基于 “离散对数” 这种数学难题。 椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。 优缺点 优点:

    2024年04月22日
    浏览(63)
  • 椭圆曲线加密算法(ECC)——计算问题

    椭圆曲线加密算法,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。 一般情况下,椭圆曲线可用下列方程式来表示,其中a,b,c,d为系数。 E:y2=ax3+ bx2+cx+d 题目:已知点G=(2,7)在椭圆曲线E11(1,6)上,计算2G的值。 ! 1这里设Q为椭圆曲线上的一个点,叫做基点

    2024年02月11日
    浏览(40)
  • ECC加密——C++/OPENssl实现

    一、介绍: 因为最近设计一些密钥交换相关的协议,做了很多调研,和学习。本来想直接使用ECC完成密钥交换协议,但是现存的很多代码都是基于ECDH的,这完全不是基于ECC加密的。尝试了很久之后终于自己手写了一份加密方案出来,为了方便更好的加解密,我封装成数组进

    2024年02月13日
    浏览(37)
  • ECC加密算法详解+python实现

    目前比较受欢迎的加密算法一共存在两种,一种是基于大整数因子分解问题( IFP )的 RSA 算法和基于椭圆曲线上离散对数计算问题( ECDLP )的 ECC 算法。之前对 RSA 算法进行过很详细的讲解,但是 ECC 加密算法还没有讲过,所以给大家在尽量简单易懂不去深究数学概念的情况

    2024年02月11日
    浏览(38)
  • 数字签名验签 — ECC算法

    ​ 前段时间,项目上有需求对于重要文件的传输接收时,接收端需要对文件进行安全校验,采用数字签名的方式确保数据来源的安全性以及数据完整性。之前未接触过密码安全方面的知识,现将实施过程中所遇所学记录下来~ ​ 本文将按照以下知识内容来记录: ​ 1 数字签

    2024年02月05日
    浏览(37)
  • [密码学][ecc]secp256k1

    secp256k1 is the elliptic curve used in Bitcoin’s public key cryptography. It is defined by the equation y^2 = x^3 + 7 and is based on the finite field mathematics. The “secp” in secp256k1 stands for “Standards for Efficient Cryptography” and “256” refers to the curve’s bit length. The “k1” indicates that it is the first elliptic curve pr

    2024年02月03日
    浏览(44)
  • 如何选择 SSL证书的加密算法:RSA、ECC、SM2

    沃通CA可以提供这三种加密算法的SSL证书。 RSA、ECC、SM2。这也是目前 SSL证书涉及到的 3 种加密算法。 按照目前的使用普遍度:RSA ECC SM2 SSL证书在提交申请的时候,就会需要选择加密算法,目前使用较多的依然是 RSA,或者 RSA 和 ECC 配合使用。在某些情况下会选择 SM2 算法。

    2023年04月09日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包