Word版可编辑-毕业设计NandFlash控制器的ECC校验原理及验证精心整理.doc_第1页
Word版可编辑-毕业设计NandFlash控制器的ECC校验原理及验证精心整理.doc_第2页
Word版可编辑-毕业设计NandFlash控制器的ECC校验原理及验证精心整理.doc_第3页
Word版可编辑-毕业设计NandFlash控制器的ECC校验原理及验证精心整理.doc_第4页
Word版可编辑-毕业设计NandFlash控制器的ECC校验原理及验证精心整理.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Nand Flash控制器的ECC校验原理及验证*大学毕业设计(论文)题目:Nand Flash控制器的ECC校验原理及验证姓名 学号所在单位指导教师 完成日期 Nand Flash控制器的ECC校验原理及验证摘要移动电话的功能日益丰富,其对系统中数据存储容量的需求正在快速增长。Nand Flash具有速度快、密度大、成本低等特点,在各种数码产品中得到了广泛应用,在各种片上系统芯片中(SOC)集成Nand Flash控制器正成为一种趋势。但是,由于加工工艺的局限性,在Nand Flash控制器设计时应具有处理存储数据出错的功能。为解决该问题,本文分析常用的差错控制编码(ECC)算法,以提高Nand Flash的读写速度,采用该编码可有效减少存储器数据纠错时间。关键词:Nand Flash控制器,ECC算法,汉明码AbstractWith the development of the multifunctional mobile telephonethe demand for the capacity of the chipS memory is growing at a phenomenal rateNand flash memory has become the preferred data storage solution for many digital products due to its fast access time,high desity,cost,performance and SO on advantagesIt becomes a tendency that Nand Flash controller iS integrated in diversified SOCBeca use of limitation of the manufacturing technique condition,a Nand Flash controller is required to handle the bits errorsFor solving this question,this essay expound by the analysis of the error checking and correction (ECC)design method to accelerate the reading and writing process for Nand FlashSimulation shows that the method is effectively reduce the memory data error correction timeKeywords: Nand Flash,ECC Algorithm,Hamming目录目录Nand Flash控制器的ECC校验原理及验证2摘要2Abstract3目录4第一章 引言61.1 Nand Flash的研制背景61.2 Nand Flash的应用领域61.3 Nand Flash的研究前景7第二章 Nand Flash控制器的特点82.1Nand Flash控制器和Nor Flash 控制器82.1.1性能比较82.1.2接口差别92.2 Nand Flash控制器的特点92.2.1Nand Flash的容量和成本102.2.2Nand Flash的物理构成102.3Nand Flash 控制器的缺点102.4Nand Flash的存储结构112.4.1Nand Flash的规格说明112.4.2 Nand Flash的接口说明11第三章 Nand Flash控制器的总体结构153.1Nand Flash控制器的总体架构153.2Nand Flash控制器的接口模块设计163.2.1 AMBA AHB总线介绍163.2.2 接口模块设计思想简介173.2.3 控制器接口模块的设计183.3Nand Flash控制器的主控逻辑模块设计203.4Nand Flash控制器的ECC模块24第四章 ECC模块的校验原理264.1 汉明码算法264.2 ECC生成模块的设计28第五章 ECC模块的验证315.1汉明码验证315.1.1汉明码验证的原理315.1.2汉明码验证的不足33参考文献34第一章 引言1.1 Nand Flash的研制背景Nand Flash 结构最早是在1989年由日本东芝公司引入。Nand flash是非易失性存储设备的一种,是非线性存储单元。具有大容量、成本低等特点。如今, Nand Flash和Nor Flash已经占据了Flash市场的支配地位。由于Nand Flash具有高密度, 低功耗, 低成本等特点, 而且是可升级的器件, 所以它是多媒体产品导入市场的理想选择。先进的在系统内设计也使得为降低成本, 在传统的设计应用上采用Nand Flash来替代Nor Flash成为可能,这种优良的特性使得Nand Flash控制器开始广泛的研发出来。 图1-1 Nand Flash芯片举例(三星系列) 1.2 Nand Flash的应用领域Nand型闪存,主要功能是存储资料,目前Nand Flash已开始广泛运用到电子市场领域。其主要的应用市场在数码相机,比重高达50,其次为手机,比重在1215。种种迹象显示,Nand Flash将作为中、高端手机的一种主流存储解决方案正成为一种趋势。因此,Nand Flash有着广阔的发展前景。1.3 Nand Flash的研究前景在Flash Memory的所有现有的实现架构中,Nand Flash结构相对其他的实现技术可以在给定的模具尺寸内提供更高的容量,换句话说即使选用别的Flash Memory能做到相同的容量也会有着更大的尺寸,而通常体积方面的问题往往是像手机等小型移动电子设备的一个限制,从市场上出现的一些Flash Memory的典型容量规格上看,也只有Nand Flash才具备GB级甚至更大这样的典型容量规格,因此从容量需求规格上来说,选Nand Flash更合适手机大容量的数据存储要求,而且Nand Flash的复用接口为所有最新的器件和密度都提供了一种相似的引脚输出。这种引脚输出使得设计工程师无须改变电路板的硬件设计,就能从较小的密度移植到更大密度的设计上。从Nand Flash本身的应用特点来说, Nand Flash适合应用在顺序存取的场合,而手机的多媒体系统从实际应用需求看,无论音乐的播放、照片的存取还是视频的播放基本都是要求顺序存取的,Nand Flash适合于这样的应用场合。最后一点即成本因素,电子产品的竞争,归根结底是价格的竞争,具体到存储器所有的趋势都指向最关键的单位比特成本最小化,在这一点上按目前的情形可以说Nand Flash相较于Flash Memory其他的实现技术有着非常明显的性能价格比优势,特别是Flash Memory的另一个主流实现技术Nor Flash的固有特性决定了它不可能做到比Nand Flash更低的单位比特成本。而且Nand Flash单位比特成本的下降速度很快,目前还没有迹象表明这种下降趋势已经放慢脚步。Flash Memory的其他实现技术要做到和其在相同的单位比特成本基础上竞争将是困难的。因此,研究Nand Flash具有巨大的实用价值。第二章 Nand Flash控制器的特点2.1Nand Flash控制器和Nor Flash 控制器 Flash Memory中文名字叫闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。功能特性分为两种:一种是Nor型闪存,以编码应用为主,其功能多与运算相关;另一种为Nand型闪存,主要功能是存储资料,如数码相机中所用的记忆卡。Nor和Nand是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出Nor Flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了Nand Flash的创意思想,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清Nor和Nand闪存。所以,下面一章来说一下两者的区别。2.1.1性能比较flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何 flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。Nand器件执行擦除 操作是十分简单的,而Nor则要求在进行擦除前 先要将目标块内所有的位都写为1。 由于擦除Nor器件时是以64128KB的块进行的,执行一个写入/擦除操作的时间为5s ,与此相反,擦除Nand器件是以832KB的块进 行的,执行相同的操作最多只需要4ms。 执行擦除时块尺寸的不同进一步拉大了Nor和Nand之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时), 更多的擦除操作必须在基于Nor的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。 Nor的读速度比Nand稍快一些。 Nand的写入速度比Nor快很多。 Nand的擦除速度远比Nor快。 Nand的擦除单元更小,相应的擦除电路更加简单。 Nand的实际应用方式要比Nor复杂的多。 Nor可以直接使用,并在上面直接运行代码,而Nand需要I/O接口,因此使用时需要驱动。2.1.2接口差别Nor flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每 一个字节。 Nand器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同 。8个引脚用来传送控制、地址和数据信息。 Nand读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于Nand的存储器就可以取代硬盘或其他块设备。Nor的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。 Nor的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用Nand的困难在于flash的管理需要特殊的系统接口。2.2 Nand Flash控制器的特点Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用Nand的困难在于flash的管理和需要特殊的系统接口。2.2.1Nand Flash的容量和成本Nand flash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,Nand结构可以在给定的模具尺寸内提供更高的容量,也就 相应地降低了价格。 Nor flash占据了容量为116MB闪存市场的大部分,而Nand Flash只是用在8128M B的产品当中,这也说明Nor主要应用在代码存 储介质中,Nand适合于数据存储,Nand在CompactFlash、Secure Digital、PC Cards和M MC存储卡市场上所占份额最大。2.2.2Nand Flash的物理构成Nand Flash 的数据是以bit的方式保存在memory cell,一般来说,一个cell 中只能存储一个bit。这些cell 以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是Nand Device的位宽。这些Line会再组成Page,由于 Nand Flash 有多种结构,本人在网上查的Nand Flash 是K9F1208,下面以本文就以K9F1208U0M为例,每页528Bytes(512byte(Main Area)+16byte(Spare Area),每32个page形成一个Block(32*528B)。具体一片flash上有多少个Block视需要所定。k9f1208U0M具有4096个block,故总容量为4096*(32*528B)=66MB,但是其中的2MB是用来保存ECC校验码等额外数据的,故实际中可使用的为64MB。 Nand flash以页为单位读写数据,而以块为单位擦除数据。按照这样的组织方式可以形成所谓的三类地址: Column Address:Starting Address of the Register. 翻成中文为列地址,地址的低8位 Page Address :页地址 Block Address :块地址 对于Nand Flash来讲,地址和命令只能在I/O7:0上传递,数据宽度是8位。2.3Nand Flash 控制器的缺点由于Nand Flash的生产工艺局限性,一个Nand Flash存储不能保证在其整个工作周期中性能的稳定。在Nand Flash的出厂或使用过程中,会产生坏块,从而造成数据存储的错误。为保证数据的可靠性,需要对坏区进行检测。在这种情况下,Nand Flash出错时一般不会造成整个块blocK或页(page)不能读取或全部出错,而是1个页中只有1个或几个比特出错,此时,可通过数据校验的方法对错误数据进行定位及纠正。常用的数据校验方法有奇偶校验H J、循环余校验(CRC)等,在NandFlash处理中,一般使用一种较专用的校验ECC,这个将是本文研究的重点。2.4Nand Flash的存储结构2.4.1Nand Flash的规格说明Nand Flash的数据是以bit的方式保存在memory cell中。一般来说,一个cell中能存储一个或多个bit。这些cell以8 bits或者16 bits为单位,连成bit line,形成所谓的byte(x8)word(x16),这就是Nand Device的位宽。这些Line会再组成页(page),而通常情况下Nand Flash的页有大页和小页之分,大页即每个page包含2112 bytes,其中2048bytes用做主数据区(Main Area,也叫Data Field),Main Area里存放数据,而剩下的64个字节空间叫做备份数据区(Spare Area),Spare Area里存放的是ECC校验码或其他的一些坏块标记之类的信息。小页则每个page包含528bytes。其中512bytes用做Main Area来存放数据,而剩下的16bytes用做Spare Area存放ECC校验码或其他的信息。对于大页的Device,每64个page组成一个block对于小页的Device则每32个page组威一个block。以美光科技公司MT29F4GOSBxC为例,其每页有2112 bytes,每“个page组成一个block,一个device总共包含4096个block,其总容量为:(2K+64)byte64page4096block=4224 MB=(4096MB十128 MB)。2.4.2 Nand Flash的接口说明Nand Flash采用高度复用的访问接口,其IO口即作为数据总线又作为地址总线和指令输入的接ta(女H果是16位的device则地址和指令只在IO7:0】上传输)。此外,Nand Flash还包括5个比较重要的控制信号,对Nand Flash的操作最终都是通过这几个控制信号来控制完成。Nand Flash的外部接口如图2-1所示。图2-1 Nand Flash 的接口示意图由图2-1可以看出,由于IO复用的原因,Nand Flash的引脚很少,节省了引脚数量,并且这样还有一个好处:Nand Flash的复用接口为所有最新的器件提供了一种相似的引脚输出,无须改变控制器的硬件设计就可把更高密度的Nand器件移植进来,使得Flash控制器具有良好的扩展性。Nand Flash的外部接口说明如表2-1所示。表2-1 Nand Flash 的接口说明Nand Flash的内部结构如图23所示,存储器内部由控制逻辑、IO控制逻辑、寄存器(包括地址寄存器、状态寄存器、指令寄存器)和存储阵列组成。图2-2 Nand Flash 的内部结构示意图在5个主要信号RE、WE、ALE、CLE、CE的控制下,控制逻辑将IO口输入的数据锁存进相应的指令寄存器、地址寄存器或数据寄存器,或者通过IO口把状态寄存器、数据寄存器中的数据发送出去。在控制逻辑控制下,把数据寄存器(data register)中的数据写入存储阵列中(写页操作时),或把存储阵列中的数据写入数据寄存器中(读页操作时),控制逻辑控制在数据寄存器和存储阵列之间进行数据传输的过程中,信号RB会被拉低,外部主控制器可以根据RB的高低来判断正在进行的写或读操作是否已经完成。 第三章 Nand Flash控制器的总体结构3.1Nand Flash控制器的总体架构一般说来,Nand Flash控制器具有如下结构。图3-1 Nand Flash控制器的总体架构经过简化,可以发现,Nand Flash控制器可以分为如下三个部分:接口模块、主控逻辑模块、ECC模块。图 3-2 简化后Nand Flash控制器的总体架构3.2Nand Flash控制器的接口模块设计接口模块将来自总线上主设备发出的符合AMBA AHB总线协议的信息流转换成控制器可以接受的格式并发给控制器,或者把来自控制器的数据转换成符合系统总线要求的格式并发送给主设备,我们着重讨论控制器的接口模块的设计思想。3.2.1 AMBA AHB总线介绍由ARM公司开发的AMBA(Advanced Micro controller Bus Architecture)片上总线结构,由于其本身的高性能以及该总线协议的完全开放性,已经成为了SOC设计中使用相当广泛的总线标准。在AMBA规范中定义了四种总线:先进系统总线ASB、先进高性能总线AHB、先进外围设备总线APB、先进可扩展接口AXI。AMBA总线20规范于1999年出台,该规范引入的先进高性能总线(AHB)是目前AMBA实现的主要形式。该总线是为高性能、高时钟频率系统模块设计的总线,它能够对处理器、片上存储器、片外存储器接口以及低功耗外围设备宏单元模块进行有效的互连。该总线具有突发传送、分离传送、单周期总线主设备移交、单时钟沿工作、以多选形式实现总线互连、宽达128位的数据总线配置等特性。一个典型的AMBA AHB系统中包含以下几个组件:(1)AHB主设备(master)启动读、写总线操作的芯核。在任何时候,只能有一个总线主设备在使用总线。(2)AHB从设备(slave)响应(非启动)读或写总线操作的芯核。从设备信号向AHB主设备指明当前数据传输的状态(成功、失败,或等待)。(3)AHB仲栽器(仲裁器)确定访问总线的下一个总线主设备,以保证任何时刻只有一个主设备能启动数据传输。每个AHB系统只能有一个仲裁器。(4)AHB译码器(decoder)译码每次传输的地址,提供传输中涉及的从设备的选择信号。所有的AHB实现方案中需要一个集中的译码器。AMBA AHB系统总线可以支持多达16个总线主设备和任意多个从设备。典型的AHB系统中,常见的主设备有处理器、DSP、DMA控制器、测试接口等,从设备常见有外部存储器接口、APB桥以及内部存储器等外围设备。我们研究的Nand Flash控制器就是基于AMBAAHB总线协议设计出的,它作为一个标准的AHB slave设备挂在AHB总线上和系统中的其他的主设备进行数据传输。3.2.2 接口模块设计思想简介接口模块由图3-1可知,它又包括了AHB从设备接口模块和外部DMA接口模块,AHB从设备接口模块使得控制器作为一个符合AMBAAHB总线协议的标准的从设备模块挂在系统总线上供其他的主设备进行访问,AHB从设备接口的功能包括数据的位宽转换(把系统总线输入的32位数据转换为存储器需要的8位数据或把从控制器读出的数据拼接成32位的数据发往总线)、根据收到的AHB总线输入的控制信号,将其转换成控制器主控逻辑的输入控制信号之后发给控制器主控逻辑、同时对总线输入的各种控制信号做出适当的回应等。外部DMA接口模块主要负责在控制器和系统中其他的模块进行DMA传输时控制器和外部DMA控制器之间的握手信号和数据的传输处理。一般来说,接口定义如下:D7D0 :8位数据总线CLE :命令锁存使能ALE :地址锁存使能RDY/nBSY :flash空闲、,忙信号CE :片选使能RE :读使能WE :写使能WP :写保护CLEALE描述10命令周期01地址周期,分4个字节传送00数据周期11保留 Nand flash访问分为三个阶段:命令周期、地址周期、数据周期,三个阶段串行进行。首先,发送地址命令,CLE为高,将命令写入flash内部的命令寄存器;然后发送地址,ALE为高,将地址串行传送到内部地址寄存器;第三步,在数据总线上传送数据,在传送数据之前需要判断flash空闲、忙信号。3.2.3 控制器接口模块的设计控制器对存储器的所有操作控制都是以符合存储器要求的8位的数据格式进行的,而总线上主设备则是以32位的数据格式访问系统中的从设备的。控制器的接口模块将系统中其他的主设备从AHB总线输入的控制信号和数据转换成控制器可以接受的格式并发给控制器,同时把从控制器中读出的数据转换成符合主设备要求,即符合AHB总线协议所要求的格式后发给主设备,并对总线主设备所发出的各种控制信号做出适当的回应。接口模块为总线上的其他主设备提供了一种访问控制器的方式。图3-2 控制器与系统的连接示意图在基于AMBAAHB总线的系统结构中,控制器和系统的连接如图51所示,LEON3为系统CPU,AHBCTRL为总线控制器,图中虚线框所示的即为控制器的接口模块。首先在AHBCTRL中为控制器分配ID和相应的寻址空间,之后控制器中的各个参数寄存器在总线上的地址便随之确定,使得系统中的CPU或其他主设备可以通过总线访问本控制器,接口模块一边以标准的AHB从设备接口和总线连接,另一边则和后面控制器的主要控制实体逻辑(包括主控逻辑和ECC两大部分)连接,系统中的其他主设备比如CPU对存储器进行各种存取操作的步骤如下:(1)首先主设备选择访问本控制器,读出控制器的状态,以判断控制器是否处于空闲状态,只有控制器处于空闲状态时才可对存储器进行进一步的操作。(2)当接口模块返回给主设备的状态表明控制器处于空闲状态时,主设备便可以对存储器进行读页、写页、块擦除等操作了。首先应对控制器中的各相关寄存器进行配置(主设备从总线输入的数据为32位的,接口模块对其进行位宽转换后在控制逻辑的控制下将其写入相应寄存器中),包括各操作所需要的地址信息,器件规格选择信息、器件的时序参数信息等,这些已经在第三章中各个操作的具体控制实现中介绍。当配置完这些寄存器后,把要进行操作的相关命令写入控制器的指令寄存器,便启动控制器对存储器进行相应的具体操作控制。(3)以写页为例,当把写页命令写入控制器的指令寄存器后,主设备会读控制器的状态寄存器,判断到町以往buffer当中写入数据时,便通过从设备接U把准备写入存储器的数据写入接口模块中的数据缓冲寄存器组,之后接口模块对其做位宽转换后将其写入buffer,写满之后发出握手信号给主控逻辑模块,等待主控逻辑将buffer当中的数据写入存储器后发出握手信号,然后再次写入下一组数据,这样直到写慢一页数据。对于读页操作则和写页是类似的,不再赘述。(4)其他不需要传输数据的操作比如块擦除、读状态、读ID等则相对简单,首先判断控制器的状态寄存器处于空闲状态时,配置好各操作相关的寄存器,之后写相应的命令到控制器的指令寄存器,控制器便开始对存储器进行具体的操作控制,主设备可以通过读控制器的状态寄存器判断正在进行的操作是否完成。3.3Nand Flash控制器的主控逻辑模块设计主控逻辑模块是Nand Flash控制器的一个重要组成部分,它包括了用作数据缓存的Buffer模块、一些保证控制器正常工作所必需配置的参数寄存器。对于存储器的绝大多数操作都是由主控逻辑逻辑负责控制实现,主控逻辑精确的产生各种输出到存储器的控制信号,并在ECC模块的配合下,在写页和读页操作的过程中进行数据的可靠性检测。一般说来,它由一个深度为0 x210的buffer和主状态机模块FsmMNvcs2组成。其中buffer为一个RAM,写页时主状态机模块先把由控制器的AHB从设备接口模块写入的数据暂存到buffer中,当buffer存满数据时,主状态机模块控制把这512个字节的数据作为一块数据顺序的写进存储器,然后发出握手信号给接口模块等待其再次写数据到buffer中,这样重复4次便写入一页共2048个字节的数据。如果存储器件的规格为小页的类型,即每页大小为512字节则这个过程只有一次。在读页操作时,整个过程和写页时是类似的。主状态机模块则负责控制实现对存储器进行所有的存取操作时控制信号的产生以及数据流的控制。在网上用综合工具Synplify Pro 862将设计的HDL代码综合后,所截取的主控逻辑模块的整体接口如图3-3。图3-3 主控逻辑模块的接口示意图其主要接口的含义如下:图3-4 控制器主控逻辑模块的接口说明主控逻辑模块FsmMNvcs2是控制器的核心模块,绝大多数控制器的功能实现包括读页、写页、块擦除、读状态等操作都是通过该模块否则控制完成,它的实现比较复杂,主要是通过设计相互嵌套的有限状态机,由大状态机调用小状态机,大小状态机相互配合完成每一个对于存储器的存取操作。图3-5 主控逻辑模块功能示意图 主控逻辑模块的功能示意如图34所示,每个灰色结点代表一种功能实现,也代表了一个状态序列,系统处于start状态时,通过控制器的AHB从设备接口模块写入指令到控制器的指令寄存器(寄存器的分配和相对应的指令编码前面已经介绍),启动主状态机进入某个状态序列完成对存储器的一种操作,而在某状态序列中的每个状态则通过调用一个叫做toggle控制逻辑的小状态机完成对存储器的每一个具体操作,比如写一个命令、地址到存储器中。3.4Nand Flash控制器的ECC模块ECC模块由ECC生成模块、错误地址定位模块和ECC主控逻辑模块三个子模块。ECC生成模块在写页操作或读页操作过程中以每512个字节为一个数据包生成一组ECC校验码,错误地址定位模块则是在读页操作过程中对读出的数据进行错误的检测和错误地址的生成(有错误发生时),ECC主控逻辑模块则实现控制ECC模块和错误地址定位模块的工作。因为由于加工工艺的局限性,在Nand Flash控制器设计时应具有处理存储数据出错的功能。为解决该问题,本文将着重分析检测和纠正少量位数出错的ECC模块(Error Checking and Correcting)。Nand Flash与其他类型的Flash存储器相比,有着密度大、价格低、读写速度快等优点,特别是密度大的特点使其在移动多媒体应用等领域得到了广泛使用。但是使用Nand Flash也有可能带来一些副作用,比如位反转现象,由于其存储单元采用串联的架构,相邻的存储单元有可能相互影响,使其保存的逻辑值发生反转。因此在控制器的设计中加入了错误的检测和纠正功能,这个功能由ECC模块来实现。对数据进行校验时常用的方法有奇偶校验、CRC校验等,而在Nand Flash的应用中一般使用一种专用的校验ECC校验,ECC即Error Checking andCorrecting的缩写。在操作时序和电路稳定性不存在问题的情况下,Nand Flash不会出现对整个block或是整个page不能正确的存取这种情况,而只是在存取一页数据中有可能出现某一个或几个bit发生反转的错误。而ECC校验能检测并纠正一个bit的错误,而且计算速度很快,对2比特以上的错误不能保证被检测,而这在其实际的应用中很少发生。依据这个实际情况,我们着重对ECC模块进行如下验证。第四章 ECC模块的校验原理ECC校验是一种适合应用于存储器的数据校验技术,针对NAND Flash在使用过程中有可能出现的位反转现象,在控制器的设计中加入了ECC模块。本章将讨论ECC校验码的生成原理以及ECC生成模块的设计实现。4.1 汉明码算法ECC校验是在奇偶校验的基础上发展而来的,它将数据块看作一个矩阵,利用矩阵的行、列奇偶信息生成ECC校验码。它能够检测并纠正单比特错误和检测双比特错误,但对双比特以上的错误不能保证检测。它克服了传统奇偶校验只能检出奇数位出错、校验码冗长、不能纠错的局限性。每nbit的ECC数值可满足2nbit数据包的校验要求。又由于这种Hamming码算法要求一对ECC数据(奇偶),所以总共要求2nbit的ECC校验数据来处理2nbit的数据包。ECC一般每256字节原始数据生成3字节ECC校验数据,这三字节共24比特分成两部分:6比特的列校验和16比特的行校验,多余的两个比特置1,这样对于每页2048字节的存储器需要24字节的ECC校验位。实验室采用矩阵的形式,8位数据线每传来一个字节我们将其作为一行,256个字节作为一组,总共有256行。分别计算每行各bit的异或结果记为字节校验码(Byte-Wise),计算每列各bit的异或结果记为比特校验码(Bit-Wise)。ECC的列校验和生成规则如下图所示:图4-1 ECC列校验用数学表达式表示为:P4=D7(+)D6(+)D5(+)D4P4=D3(+)D2(+)D1(+)D0 P2=D7(+)D6(+)D3(+)D2P2=D5(+)D4(+)D1(+)D0 P1=D7(+)D5(+)D3(+)D1P1=D6(+)D4(+)D2(+)D0这里(+)表示“位异或”操作。ECC的行校验和生成规则如下图所示:图4-2 ECC行校验用数学表达式表示为:P8=2nd(+)4th(+)6th(+)8th(+)这里(+)同样表示“位异或”操作当往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区出错;其他情况均表示出现了无法纠正的错误。4.2 ECC生成模块的设计本章第一节已经讨论了ECC校验码生成原理,在控制器进行读页操作和写页操作时,ECC生成模块的工作是相同的,其内部设置有4个24bits的向量,每个向量对应一块数据的ECC校验码,写页操作时,ECC主控模块把要写入的数据传给存储器的同时,也将其发往ECC生成模块,并产生控制脉冲使ECC生成模块对与该数据块相对应的ECC校验码进行更新,写完一整页数据后,在ECC主控模块的控制下,分别把4组ECC校验码以字节方式发给ECC主控模块并最终写进存储器目标页的备份数据区中。读页操作时,ECC主控模块把从存储器中读出的数据传给主控逻辑模块的同时也将其发给ECC生成模块,在ECC主控模块发出的控制脉冲的控制下对某组ECC校验码进行更新。ECC生成模块直接把当前正被读的“数据块”的最新更新的ECC校验结果输出到ECC错误定位模块,错误定位模块会在读操作过程中进行实时的错误检测。 24位的校验码包括6个列校验码和18个行校验码,6个列校验码的生成电路如图4-3所示。图4-3 ECC校验6个列校验码的生成电路图图4-3中enable为ECC主控逻辑发出的ECC更新控制信号,DATAin为8位数据输入, Pr为一个数据包中所有数据的第0、2、4、6位的异或值,Pl则为数据包中所有数据的第1、3、5、7位和异或值;P2为一个数据包中所有数据的第0、1、4、5位的异或值,P2则为本数据包中所有数据的第2、3、6、7位的异或值;P4、为一个数据包中所有数据的第0、1、2、3位的异或值,P4则为本数据包中所有数据的第4、5、6、7位的异或值。ECC校验18个行校验码的生成电路如图4-4所示。 图4-4 ECC校验18个行校验码的生成电路图图4-4中COUNTill为9位的地址输入,表示正在参与校验的数据在该数据包中的位置。每读或写一个数据, (n_8、16、32、641024、2048)Pn和Pn只有一个被更新,即P8、实际上对数据包中的所有偶数行数据的所有数据位进行校验,P8则对数据包中所有奇数行数据的所有位进行校验;P16、则对第O、1、4、5、8、9508、509行数据的所有位进行校验,P16则对其余的第2、3、6、7510、511行数据的所有位进行校验;依次类推,P2048对第O至第255行数据的所有位进行校验,P2048对第256至第511行数据的所有位进行校验。 至此,ECC生成模块的设计已经完成。第五章 ECC模块的验证5.1汉明码验证5.1.1汉明码验证的原理ECC校验负责检测错误、维护ECC信息、更正由原数值改变了的单比特错误。所有ECC的操作处理都可由一个ECC模块来控制,其作为一种简单地存储一映射接口,放置在Nand器件和处理器接口之间。该模块一般包含Hamming编码产生模块和出错位置模块,分别用于产生ECC校验码和计算出错位置。下面,我将举例验证ECC模块。为计算ECC值,数据包中的比特数据要先进行分割,如1/2组、1/4组、1/8组等,直到其精度达到单个比特为止,以8bit即1Byte的数据包为例进行说明,如下表所示。76543210比特位1101比特偶校验位01011/4偶校验位00011/2偶校验位010

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论