基于BCH算法的ECC在MLC Nand Flash中的实现[zz]

ECC校验——汉明码(Hamming Code) 前言  本文主旨意在讲清如何根据原理构造常用的汉明码,鉴于本人在网络查阅资料过程翻阅大量低效/无效文章,特记录如下内容。前篇主要表明如果最简单直接构造汉明码,后续在了解汉明码具体校验原理的情况下,将会补录其内容。 1. 概念性解释  Error Correcting Code (ECC)校验码。  汉明码(Hamming Code)通用常用于各类Memory中纠正/检测single bit,检测double bits错误。根据结果类型可分为: . 阅读详情

摘要:

 

       目前的Flash有nand和nor两种,我们可以认为flash是EEPROM的变种。intel在1988年开发出nor flash技术,彻底改变了EEPROM一统天下的局面。nand flash分为MLC和SLC两种,从前的SLC一般采用Hamming码来实现ECC,能够检测2bit错误,自动纠正1bit错误。但对于MLC虽说具有存储密度上的优势,但也掩饰不了自身的缺陷。

1、读写次数较差

      MLC读写效能更差,SLC闪存约可以反复读写10万次左右,而MLC则大约只能读写1万次左右,甚至有部分产品只能达到5000次左右。

2、读写速度较慢

      同条件下,MLC的读写速度要比SLC芯片慢,目前MLC芯片速度大约只有2M到3M左右。

3、能耗较高

     同条件下,MLC能耗比SLC高,要多15%左右的电流消耗。

4、出错几率更大

      由于MLC的每个cell可以存储2bit的数据,随着技术的不断进步,3bit、4bit、、都有可能。这样对于读写频繁的数码产品(MP4,SD卡等),其出错的几率将会更大,因此对主控芯片和ECC将要求更高。目前有的主控芯片通过纯软件校验,这样,无形当中加重了主控芯片的负担。也有部分主控通过硬件的4bit ECC校验和软件校验相结合,从而减轻了主控负担,但是这只是在一定程度上减少出错的几率,MLC的芯片写入次数限制和传输速度等缺点是无法克服的。

   综上所述,MLC需要多bit ECC,目前采用BCH和Reed Solomon算法的比较多,下面将详细介绍本人采用的基于BCH算法的8b ECC(针对每个page 512byte的nand flash)。

   纠错能力:8b/512byte

 

 

from: http://hi.baidu.com/rymonwang/blog/item/dca2ee8bb9339f17c8fc7ab8.html

NAND FLASH ECC算法演进:从汉明码到BCH的硬件实现与选型指南 本文深入探讨了NAND FLASH ECC算法的演进历程,从经典的汉明码到高效的BCH码,详细解析了其硬件实现与选型指南。文章分析了NAND FLASH的物理特性及ECC保护的必要性,提供了针对不同存储类型的ECC方案推荐,并对比了硬件与软件实现的优劣,帮助工程师在实际项目中做出最优选择。 阅读详情

相关推荐

NAND Flash ECC算法长度计算

NAND Flash中常用的纠错方式<br />       因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配,这也是不能容忍的。相对来说SLC中出错概率比较低,所以使用一个纠错能力不强的Hanming码就可以了,在MLC中Hanming码就显得力不从心了,需要纠错能力更强的RS或者BCH纠错方式了。<br />       BCH擅长处理随机错误,由于NAND Flash自身的特点,出现随机错误的概率更大一些,所以在MLC中目前

skynet000的专栏 1万+

ECC-BCH编码原理

BCH码是一类最重要的循环码,能纠正多个随机错误,它是1959年由Bose、Chaudhuri及Hocquenghem各自独立发现的二元线性循环码,人们用他们的名字字头命名为BCH码。

Nand Flash的特性及烧录问题

为什么烧录Nand Flash经常失败?为什么烧录成功了,一部分Nand芯片贴板之后系统却运行不起来?为什么不能像Nor Flash一样接通过烧录器读取母片?…,等等,你是否了解过Nand Flash的特性吗?

嵌入式大师之路 2622

NAND FLASH 读写ECC校验(BCH)

ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法。如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个Block或是Page不能读取或是全部出错,而是整个Page(例如512Bytes)中只有一个或几个bit出错。常采用BCH算法纠正4bit或是8bit的错误码修正,其实现代码在内核3.0以上或是ub...

qq_39491224的博客 1万+

NAND Flash内存控制器实战:从ECC算法到多Die管理的5个关键设计要点

本文深入探讨NAND Flash内存控制器的5个关键设计要点,包括BCH编解码器硬件优化、3D NAND的ECC spare区域布局、多Die并行访问时序精调、坏块管理与磨损均衡协同设计,以及3D NAND读干扰抑制技术。特别针对Multi-die管理提出创新解决方案,帮助工程师提升存储系统性能和可靠性。

whisky的博客 1026

linux驱动之nand flash

linux驱动之nand flash 1、 Nand Flash一些名词的解释 1.1 (Bad) Block Management(坏)块管理 Nand Flash由于其物理特性,只有有限的擦写次数,超过那个次数,基本上就是坏了。在使用过程中,有些Nand Flash的block会出现被用坏了,当发现了,要及时将此block标注为坏块,不再使用。 于此相关的管理工作,属于Nand Flash的坏块管理的一部分工作。 1.2 Wear-Leveling负载平衡 Nand Flash的block的管理,还包括

carlos博客 3307

模拟NAND FLASH 读写BCH ECC校验

模拟NAND FLASH 读写BCH ECC校验 将内核源码里的bch校验程序分离出来,从而可以手动修改原始数据和bch校验码,达到模拟出错纠正过程。 源码 bch.c、bch.h、types.h 1、bch.c /* * Generic binary BCH encoding/decoding library * * This program is free software; you can redistribute it and/or modify it * under the terms o

大猫的博客 5794

Flash存储的守护者:深入理解ECC校验中的汉明码与BCH算法选择

本文深入探讨了Flash存储中ECC校验的核心技术,重点对比了汉明码与BCH算法的原理与应用。汉明码计算简单,适合纠错需求低的SLC Flash;而BCH码纠错能力强且可配置,是应对MLC/TLC等高误码率存储器的关键。文章为系统设计工程师提供了清晰的ECC方案选型逻辑,以保障工业、车载等高可靠性领域的数据完整性。

weixin_29206669的博客 510

S5PV210 nand 4bit ecc笔记与AM335x的ECC

转载地址:http://blog.chinaunix.net/uid-30031530-id-5088896.html 首先假设flash芯片页大小为2K + 64B的格式。 S5PV210 根据User Manual的4.3.7  4-BIT ECC PROGRAMMING GUIDE (ENCODING) 得知4bitecc的编码步骤为: 1.  写数据之前,设置Msglength(NCON...

kunkliu的博客 2364

NAND Flash ECC技术解析:从汉明码到BCH码的硬件实现与调试

在嵌入式存储系统中,数据完整性是核心挑战之一。纠错码作为一种数据冗余技术,通过在原始数据中添加校验信息,能够在数据传输或存储过程中检测并纠正错误,其原理基于编码理论,通过在发送端生成校验码,在接收端进行校验和纠错。这项技术的核心价值在于显著提升存储介质的可靠性,尤其适用于NAND Flash这类因物理特性易产生位错误的设备。其典型应用场景包括固态硬盘、eMMC/UFS存储、以及各类嵌入式系统的固件存储。随着存储密度提升,简单的汉明码已无法满足需求,能够纠正多比特错误的BCH码成为主流。本文以德州仪器AM26

weixin_30599769的博客 372

NAND Flash数据纠错:BCH ECC原理与AM62L GPMC硬件实现详解

在存储系统和嵌入式开发中,数据完整性是核心挑战。NAND Flash存储器因其高密度和低成本被广泛应用,但其固有的位翻转(Bit Flip)问题会导致数据错误。为确保数据可靠,纠错码(ECC)技术至关重要。BCH码作为一种强大的循环码,其原理基于有限域上的多项式运算,通过生成校验位实现多位错误的检测与纠正,技术价值在于可灵活配置纠错能力(如4-bit、8-bit纠错),有效应对NAND Flash中常见的多位随机错误。该技术广泛应用于eMMC/UFS、固态硬盘(SSD)、工控存储等场景。本文以TI AM62

weixin_29176179的博客 359

Hanming,RS,BCH —— NAND Flash中常用的纠错方式

转载:http://blog.chinaunix.net/uid-21736802-id-1817917.html 因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配,这也是不能容忍的。相对来说SLC中出错概率比较低,所以使用一个纠错能力不强的Hanming码就可以了,在MLC中Hanming码就显得力不从心了,需要纠错...

u012385733的专栏 7963

4bits BCH纠错算法在NAND Flash控制器中的工程实现与验证

数据存储的可靠性依赖于强大的纠错机制,尤其在NAND Flash这类介质中,电荷泄漏和读扰动会导致bit翻转。ECC(纠错码)技术应运而生,其中BCH码凭借强大的多bit纠错能力成为SSD主控、eMMC控制器和FPGA存储加速方案的核心选择。本文从有限域GF(2^m)的数学基础出发,讲解生成多项式、伴随式计算、BM迭代译码和Chien搜索的实现原理,并通过C语言源码拆解4bits BCH在工程中的落地方法。针对硬件设计,还分析了参数取舍、面积优化和缩短码处理等关键问题。最后给出错误注入测试矩阵和典型排错经验

weixin_36012152的博客 235

4bits 纠错ECC BCH算法源代码及三星4GB MLC NAND Flash 芯片资料

4bits 纠错ECC BCH算法源代码及三星4GB MLC NAND Flash 芯片资料 去发现同类优质开源项目:https://gitcode.com/ 简介 本项目提供了4bits纠错ECC BCH算法的源代码,同时包含了一份珍贵的三星4GB MLC NAND Flash芯片资料。该源代码可用于实现数据存储中的错误检测和纠正功能,对于提高存储系统的可靠性和数据完整性至关重要。 内容概述 ...

gitblog_06767的博客 1002

MLC NAND Flash与BCH ECC编码技术实践指南

NAND Flash是一种非易失性存储技术,它被广泛应用于固态驱动器(SSD)和USB闪存驱动器中。MLC(Multi-Level Cell)NAND Flash相较于SLC(Single-Level Cell)NAND Flash能够存储更多的数据位,虽然牺牲了部分速度和可靠性,但是显著降低了成本,使其成为消费级电子产品中的主流选择。

weixin_35906794的博客 1170

论文研究-基于BCH码的纠2位错编解码电路的设计与实现 .pdf

基于BCH码的纠2位错编解码电路的设计与实现,刘必慰,,随着各种航天器中逐渐采用纳米级集成电路来构建其电子系统,多位数据同时翻转的问题日益凸显。多位翻转不能被目前在航天电子系统

FPGA中Nand Flash ECC硬件实现:从汉明码到BCH码的Verilog设计

在数字存储和通信系统中,纠错码(ECC)是保障数据可靠性的核心技术,其核心原理是通过添加冗余校验信息来检测和纠正传输或存储过程中产生的随机比特错误。从基础的奇偶校验到更强大的循环码,ECC算法在硬件中的高效实现直接决定了系统的纠错能力和数据完整性。在工程实践中,针对Nand Flash存储介质普遍存在的位翻转问题,ECC的硬件加速价值尤为突出,它能够实时、低延迟地纠正错误,避免数据静默损坏。特别是在FPGA平台上,自主实现ECC编解码逻辑,如汉明码或BCH码,可以实现与定制化Nand Flash控制器的紧密

weixin_29189987的博客 299

从零搭建芯片设计环境:在Cadence虚拟机中集成QRC进行寄生参数提取

本文详细介绍了在Cadence虚拟机中集成QRC工具进行芯片设计中的寄生参数提取的全流程。从环境准备、QRC安装配置到实际提取操作,提供了完整的步骤指南和常见问题解决方案,帮助工程师高效搭建芯片设计环境并优化提取性能。

weixin_30379531的博客 618
上一篇: 过采样理论简介
下一篇: 中间件调研.
EMMA3SLP
博客等级 码龄17年 5粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值