毕业设计NandFlash控制器的ECC校验原理及验证.docx
- 文档编号:26074886
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:934.77KB
毕业设计NandFlash控制器的ECC校验原理及验证.docx
《毕业设计NandFlash控制器的ECC校验原理及验证.docx》由会员分享,可在线阅读,更多相关《毕业设计NandFlash控制器的ECC校验原理及验证.docx(28页珍藏版)》请在冰豆网上搜索。
毕业设计NandFlash控制器的ECC校验原理及验证
毕业设计Nand-Flash控制器的ECC校验原理及验证
***大学
毕 业 设 计(论文)
题目:
NandFlash控制器的ECC校验原理及验证
姓名 学 号
所在单位
指导教师 完成日期
NandFlash控制器的ECC校验原理及验证
摘要
移动电话的功能日益丰富,其对系统中数据存储容量的需求正在快速增长。
NandFlash具有速度快、密度大、成本低等特点,在各种数码产品中得到了广泛应用,在各种片上系统芯片中(SOC)集成NandFlash控制器正成为一种趋势。
但是,由于加工工艺的局限性,在NandFlash控制器设计时应具有处理存储数据出错的功能。
为解决该问题,本文分析常用的差错控制编码(ECC)算法,以提高NandFlash的读写速度,采用该编码可有效减少存储器数据纠错时间。
关键词:
NandFlash控制器,ECC算法,汉明码
第一章引言
1.1NandFlash的研制背景
NandFlash结构最早是在1989年由日本东芝公司引入。
Nandflash是非易失性存储设备的一种,是非线性存储单元。
具有大容量、成本低等特点。
如今,NandFlash和NorFlash已经占据了Flash市场的支配地位。
由于NandFlash具有高密度,低功耗,低成本等特点,而且是可升级的器件,所以它是多媒体产品导入市场的理想选择。
先进的在系统内设计也使得为降低成本,在传统的设计应用上采用NandFlash来替代NorFlash成为可能,这种优良的特性使得NandFlash控制器开始广泛的研发出来。
图1-1NandFlash芯片举例(三星系列)
1.2NandFlash的应用领域
Nand型闪存,主要功能是存储资料,目前NandFlash已开始广泛运用到电子市场领域。
其主要的应用市场在数码相机,比重高达50%,其次为手机,比重在12%~15%。
种种迹象显示,NandFlash将作为中、高端手机的一种主流存储解决方案正成为一种趋势。
因此,NandFlash有着广阔的发展前景。
1.3NandFlash的研究前景
在FlashMemory的所有现有的实现架构中,NandFlash结构相对其他的实现技术可以在给定的模具尺寸内提供更高的容量,换句话说即使选用别的FlashMemory能做到相同的容量也会有着更大的尺寸,而通常体积方面的问题往往是像手机等小型移动电子设备的一个限制,从市场上出现的一些FlashMemory的典型容量规格上看,也只有NandFlash才具备GB级甚至更大这样的典型容量规格,因此从容量需求规格上来说,选NandFlash更合适手机大容量的数据存储要求,而且NandFlash的复用接口为所有最新的器件和密度都提供了一种相似的引脚输出。
这种引脚输出使得设计工程师无须改变电路板的硬件设计,就能从较小的密度移植到更大密度的设计上。
从NandFlash本身的应用特点来说,NandFlash适合应用在顺序存取的场合,而手机的多媒体系统从实际应用需求看,无论音乐的播放、照片的存取还是视频的播放基本都是要求顺序存取的,NandFlash适合于这样的应用场合。
最后一点即成本因素,电子产品的竞争,归根结底是价格的竞争,具体到存储器所有的趋势都指向最关键的单位比特成本最小化,在这一点上按目前的情形可以说NandFlash相较于FlashMemory其他的实现技术有着非常明显的性能价格比优势,特别是FlashMemory的另一个主流实现技术NorFlash的固有特性决定了它不可能做到比NandFlash更低的单位比特成本。
而且NandFlash单位比特成本的下降速度很快,目前还没有迹象表明这种下降趋势已经放慢脚步。
FlashMemory的其他实现技术要做到和其在相同的单位比特成本基础上竞争将是困难的。
因此,研究NandFlash具有巨大的实用价值。
第二章NandFlash控制器的特点
2.1NandFlash控制器和NorFlash控制器
FlashMemory中文名字叫闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。
功能特性分为两种:
一种是Nor型闪存,以编码应用为主,其功能多与运算相关;另一种为Nand型闪存,主要功能是存储资料,如数码相机中所用的记忆卡。
Nor和Nand是现在市场上两种主要的非易失闪存技术。
Intel于1988年首先开发出NorFlash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。
紧接着,1989年,东芝公司发表了NandFlash的创意思想,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。
但是经过了十多年之后,仍然有相当多的硬件工程师分不清Nor和Nand闪存。
所以,下面一章来说一下两者的区别。
2.1.1性能比较
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。
任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。
Nand器件执行擦除操作是十分简单的,而Nor则要求在进行擦除前先要将目标块内所有的位都写为1。
由于擦除Nor器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除Nand器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
执行擦除时块尺寸的不同进一步拉大了Nor和Nand之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于Nor的单元中进行。
这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。
●Nor的读速度比Nand稍快一些。
●Nand的写入速度比Nor快很多。
●Nand的擦除速度远比Nor快。
●Nand的擦除单元更小,相应的擦除电路更加简单。
●Nand的实际应用方式要比Nor复杂的多。
●Nor可以直接使用,并在上面直接运行代码,而Nand需要I/O接口,因此使用时需要驱动。
2.1.2接口差别
Norflash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
Nand器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。
8个引脚用来传送控制、地址和数据信息。
Nand读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于Nand的存储器就可以取代硬盘或其他块设备。
Nor的特点是芯片内执行(XIP,eXecuteInPlace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
Nor的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。
Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。
应用Nand的困难在于flash的管理需要特殊的系统接口。
2.2NandFlash控制器的特点
Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。
应用Nand的困难在于flash的管理和需要特殊的系统接口。
2.2.1NandFlash的容量和成本
Nandflash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,Nand结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
Norflash占据了容量为1~16MB闪存市场的大部分,而NandFlash只是用在8~128MB的产品当中,这也说明Nor主要应用在代码存储介质中,Nand适合于数据存储,Nand在CompactFlash、SecureDigital、PCCards和MMC存储卡市场上所占份额最大。
2.2.2NandFlash的物理构成
NandFlash的数据是以bit的方式保存在memorycell,一般来说,一个cell中只能存储一个bit。
这些cell以8个或者16个为单位,连成bitline,形成所谓的byte(x8)/word(x16),这就是NandDevice的位宽。
这些Line会再组成Page,由于NandFlash有多种结构,本人在网上查的NandFlash是K9F1208,下面以本文就以K9F1208U0M为例,每页528Bytes(512byte(MainArea)+16byte(SpareArea)),每32个page形成一个Block(32*528B)。
具体一片flash上有多少个Block视需要所定。
k9f1208U0M具有4096个block,故总容量为4096*(32*528B)=66MB,但是其中的2MB是用来保存ECC校验码等额外数据的,故实际中可使用的为64MB。
Nandflash以页为单位读写数据,而以块为单位擦除数据。
按照这样的组织方式可以形成所谓的三类地址:
ColumnAddress:
StartingAddressoftheRegister.翻成中文为列地址,地址的低8位
PageAddress:
页地址
BlockAddress:
块地址
对于NandFlash来讲,地址和命令只能在I/O[7:
0]上传递,数据宽度是8位。
2.3NandFlash控制器的缺点
由于NandFlash的生产工艺局限性,一个NandFlash存储不能保证在其整个工作周期中性能的稳定。
在NandFlash的出厂或使用过程中,会产生坏块,从而造成数据存储的错误。
为保证数据的可靠性,需要对坏区进行检测。
在这种情况下,NandFlash出错时一般不会造成整个块blocK或页(page)不能读取或全部出错,而是1个页中只有1个或几个比特出错,此时,可通过数据校验的方法对错误数据进行定位及纠正。
常用的数据校验方法有奇偶校验HJ、循环余校验(CRC)等,在NandFlash处理中,一般使用一种较专用的校验——ECC,这个将是本文研究的重点。
2.4NandFlash的存储结构
2.4.1NandFlash的规格说明
NandFlash的数据是以bit的方式保存在memorycell中。
一般来说,一个cell
中能存储一个或多个bit。
这些cell以8bits或者16bits为单位,连成bitline,形成所谓的byte(x8)/word(x16),这就是NandDevice的位宽。
这些Line会再组成页(page),而通常情况下NandFlash的页有大页和小页之分,大页即每个page包含2112bytes,其中2048bytes用做主数据区(MainArea,也叫DataField),MainArea里存放数据,而剩下的64个字节空间叫做备份数据区(SpareArea),SpareArea里存
放的是ECC校验码或其他的一些坏块标记之类的信息。
小页则每个page包含528
bytes。
其中512bytes用做MainArea来存放数据,而剩下的16bytes用做SpareArea
存放ECC校验码或其他的信息。
对于大页的Device,每64个page组成一个block.
对于小页的Device则每32个page组威一个block。
以美光科技公司MT29F4GOSBxC为例,其每页有2112bytes,每“个page组成一个block,一个device总共包含4096个block,其总容量为:
(2K+64)byte×64page×4096block=4224MB=(4096MB十128MB)。
2.4.2NandFlash的接口说明
NandFlash采用高度复用的访问接口,其I/O口即作为数据总线又作为地址总线和指令输入的接ta(女H果是16位的device则地址和指令只在I/O[7:
0】上传输)。
此外,NandFlash还包括5个比较重要的控制信号,对NandFlash的操作最终都是通过这几个控制信号来控制完成。
NandFlash的外部接口如图2-1所示。
图2-1NandFlash的接口示意图
由图2-1可以看出,由于I/O复用的原因,NandFlash的引脚很少,节省了
引脚数量,并且这样还有一个好处:
NandFlash的复用接口为所有最新的器件提供了一种相似的引脚输出,无须改变控制器的硬件设计就可把更高密度的Nand器件移植进来,使得Flash控制器具有良好的扩展性。
NandFlash的外部接口说明如表2-1所示。
表2-1NandFlash的接口说明
NandFlash的内部结构如图2.3所示,存储器内部由控制逻辑、I/O控制逻辑、寄存器(包括地址寄存器、状态寄存器、指令寄存器)和存储阵列组成。
图2-2NandFlash的内部结构示意图
在5个主要信号RE、WE、ALE、CLE、CE的控制下,控制逻辑将I/O口输入的数据锁存进相应的指令寄存器、地址寄存器或数据寄存器,或者通过I/O口把
状态寄存器、数据寄存器中的数据发送出去。
在控制逻辑控制下,把数据寄存器
(dataregister)中的数据写入存储阵列中(写页操作时),或把存储阵列中的数据写入数据寄存器中(读页操作时),控制逻辑控制在数据寄存器和存储阵列之间进行数据传输的过程中,信号R/B会被拉低,外部主控制器可以根据R/B的高低来判断正在进行的写或读操作是否已经完成。
第三章NandFlash控制器的总体结构
3.1NandFlash控制器的总体架构
一般说来,NandFlash控制器具有如下结构。
图3-1NandFlash控制器的总体架构
经过简化,可以发现,NandFlash控制器可以分为如下三个部分:
接口模块、主控逻辑模块、ECC模块。
图3-2简化后NandFlash控制器的总体架构
3.2NandFlash控制器的接口模块设计
接口模块将来自总线上主设备发出的符合AMBAAHB总线协议的信息流转换成控制器可以接受的格式并发给控制器,或者把来自控制器的数据转换成符合系统总线要求的格式并发送给主设备,我们着重讨论控制器的接口模块的设计思想。
3.2.1AMBAAHB总线介绍
由ARM公司开发的AMBA(AdvancedMicrocontrollerBusArchitecture)片上总线结构,由于其本身的高性能以及该总线协议的完全开放性,已经成为了SOC设计中使用相当广泛的总线标准。
在AMBA规范中定义了四种总线:
先进系统总线ASB、先进高性能总线AHB、先进外围设备总线APB、先进可扩展接口AXI。
AMBA总线2.0规范于1999年出台,该规范引入的先进高性能总线(AHB)是目前AMBA实现的主要形式。
该总线是为高性能、高时钟频率系统模块设计的总线,它能够对处理器、片上存储器、片外存储器接口以及低功耗外围设备宏单元模块进行有效的互连。
该总线具有突发传送、分离传送、单周期总线主设备移交、单时钟沿工作、以多选形式实现总线互连、宽达128位的数据总线配置等特性。
一个典型的AMBAAHB系统中包含以下几个组件:
(1)AHB主设备(master)启动读、写总线操作的芯核。
在任何时候,只能有一个总线主设备在使用总线。
(2)AHB从设备(slave)响应(非启动)读或写总线操作的芯核。
从设备信号向AHB主设备指明当前数据传输的状态(成功、失败,或等待)。
(3)AHB仲栽器(仲裁器)确定访问总线的下一个总线主设备,以保证任何时刻只有一个主设备能启动数据传输。
每个AHB系统只能有一个仲裁器。
(4)AHB译码器(decoder)译码每次传输的地址,提供传输中涉及的从设备的选择信号。
所有的AHB实现方案中需要一个集中的译码器。
AMBAAHB系统总线可以支持多达16个总线主设备和任意多个从设备。
典型的AHB系统中,常见的主设备有处理器、DSP、DMA控制器、测试接口等,从设备常见有外部存储器接口、APB桥以及内部存储器等外围设备。
我们研究的NandFlash控制器就是基于AMBAAHB总线协议设计出的,它
作为一个标准的AHBslave设备挂在AHB总线上和系统中的其他的主设备进行数
据传输。
3.2.2接口模块设计思想简介
接口模块由图3-1可知,它又包括了AHB从设备接口模块和外部DMA接口模块,AHB从设备接口模块使得控制器作为一个符合AMBA/AHB总线协议的标准的从设备模块挂在系统总线上供其他的主设备进行访问,AHB从设备接口的功能包括数据的位宽转换(把系统总线输入的32位数据转换为存储器需要的8位数据或把从控制器读出的数据拼接成32位的数据发往总线)、根据收到的AHB总线输入的控制信号,将其转换成控制器主控逻辑的输入控制信号之后发给控制器主控逻辑、同时对总线输入的各种控制信号做出适当的回应等。
外部DMA接口模块主要负责在控制器和系统中其他的模块进行DMA传输时控制器和外部DMA控制器之间的握手信号和数据的传输处理。
一般来说,接口定义如下:
D7~D0:
8位数据总线
CLE:
命令锁存使能
ALE:
地址锁存使能
RDY/nBSY:
flash空闲、,忙信号
CE:
片选使能
RE:
读使能
WE:
写使能
WP:
写保护
CLE
ALE
描述
1
0
命令周期
0
1
地址周期,分4个字节传送
0
0
数据周期
1
1
保留
Nandflash访问分为三个阶段:
命令周期、地址周期、数据周期,三个阶段串行进行。
首先,发送地址命令,CLE为高,将命令写入flash内部的命令寄存器;然后发送地址,ALE为高,将地址串行传送到内部地址寄存器;第三步,在数据总线上传送数据,在传送数据之前需要判断flash空闲、忙信号。
3.2.3控制器接口模块的设计
控制器对存储器的所有操作控制都是以符合存储器要求的8位的数据格式进
行的,而总线上主设备则是以32位的数据格式访问系统中的从设备的。
控制器的接口模块将系统中其他的主设备从AHB总线输入的控制信号和数据转换成控制器可以接受的格式并发给控制器,同时把从控制器中读出的数据转换成符合主设备要求,即符合AHB总线协议所要求的格式后发给主设备,并对总线主设备所发出的各种控制信号做出适当的回应。
接口模块为总线上的其他主设备提供了一种访问控制器的方式。
图3-2控制器与系统的连接示意图
在基于AMBA/AHB总线的系统结构中,控制器和系统的连接如图5.1所示,LEON3为系统CPU,AHBCTRL为总线控制器,图中虚线框所示的即为控制器的接口模块。
首先在AHBCTRL中为控制器分配ID和相应的寻址空间,之后控制器中的各个参数寄存器在总线上的地址便随之确定,使得系统中的CPU或其他主设备可以通过总线访问本控制器,接口模块一边以标准的AHB从设备接口和总线连接,另一边则和后面控制器的主要控制实体逻辑(包括主控逻辑和ECC两大部分)连接,系统中的其他主设备比如CPU对存储器进行各种存取操作的步骤如下:
(1)首先主设备选择访问本控制器,读出控制器的状态,以判断控制器是否处于空闲状态,只有控制器处于空闲状态时才可对存储器进行进一步的操作。
(2)当接口模块返回给主设备的状态表明控制器处于空闲状态时,主设备便可以对存储器进行读页、写页、块擦除等操作了。
首先应对控制器中的各相关寄存器进行配置(主设备从总线输入的数据为32位的,接口模块对其进行位宽转换后在控制逻辑的控制下将其写入相应寄存器中),包括各操作所需要的地址信息,器件规格选择信息、器件的时序参数信息等,这些已经在第三章中各个操作的具体控制实现中介绍。
当配置完这些寄存器后,把要进行操作的相关命令写入控制器的指令寄存器,便启动控制器对存储器进行相应的具体操作控制。
(3)以写页为例,当把写页命令写入控制器的指令寄存器后,主设备会读控制器的状态寄存器,判断到町以往buffer当中写入数据时,便通过从设备接U把准备写入存储器的数据写入接口模块中的数据缓冲寄存器组,之后接口模块对其做位宽转换后将其写入buffer,写满之后发出握手信号给主控逻辑模块,等待主控逻辑将buffer当中的数据写入存储器后发出握手信号,然后再次写入下一组数据,这样直到写慢一页数据。
对于读页操作则和写页是类似的,不再赘述。
(4)其他不需要传输数据的操作比如块擦除、读状态、读ID等则相对简单,首先判断控制器的状态寄存器处于空闲状态时,配置好各操作相关的寄存器,之后写相应的命令到控制器的指令寄存器,控制器便开始对存储器进行具体的操作控制,主设备可以通过读控制器的状态寄存器判断正在进行的操作是否完成。
3.3NandFlash控制器的主控逻辑模块设计
主控逻辑模块是NandFlash控制器的一个重要组成部分,它包括了用作数据缓存的Buffer模块、一些保证控制器正常工作所必需配置的参数寄存器。
对于存储器的绝大多数操作都是由主控逻辑逻辑负责控制实现,主控逻辑精确的产生各种输出到存储器的控制信号,并在ECC模块的配合下,在写页和读页操作的过程中进行数据的可靠性检测。
一般说来,它由一个深度为0x210的buffer和主状态机模块Fsm—MNvcs2组成。
其中buffer为一个RAM,写页时主状态机模块先把由控制器的AHB从设备接口模块写入的数据暂存到buffer中,当buffer存满数据时,主状态机模块控制把这512个字节的数据作为一块数据顺序的写进存储器,然后发出握手信号给接口模块等待其再次写数据到buffer中,这样重复4次便写入一页共2048个字节的数据。
如果存储器件的规格为小页的类型,即每页大小为512字节则这个过程只有一次。
在读页操作时,整个过程和写页时是类似的。
主状态机模块则负责控制实现对存储器进行所有的存取操作时控制信号的产生以及数据流的控制。
在网上用综合工具SynplifyPro8.6.2将设计的HDL代码综合后,所截取的主控逻辑模块的整体接口如图3-3。
图3-3主控逻辑模块的接口示意图
其主要接口的含义如下:
图3-4控制器主控逻辑模块的接口说明
主控逻辑模块Fsm—MNvcs2是控制器的核心模块,绝大多数控制器的功能实
现包括读页、写页、块擦除、读状态等操作都是通过该模块否则控制完成,它的实现比较复杂,主要是通过设计相互嵌套的有限状态机,由大状态机调用小状态
机,大小状态机相互配合完成每一个对于存储器的存取操作。
图3-5主控逻辑模块功能示意图
主控逻辑模块的功能示意如图3.4所示,每个灰色结点代表一种功能实现,也代表了一个状态序列,系统处于start状态时,通过控制器的AHB从设备接口模
块写入指令到控制器的指令寄存器(寄存器的分配和相对应的指令编码前面已经介绍),启动主状态机进入某个状态序列完成对存储器的一种操作,而在某状态序列中的每个状态则通过调用一个叫做toggle控制逻辑的小状态机完成对存储器的每一个具体操作,比如写一个命令、地址到存储器中。
3.4NandFlash控制器的ECC模块
ECC模块由ECC生成模块、错误地址定位模块和ECC主控逻辑模块三个子模块。
ECC生成模块在写页操作或读页操作过程中以每512个字节为一个数据包生成一组ECC校验码,错误地址定位模块则是在读页操作过程中对读出的数据进行错误的检测和错误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 NandFlash 控制器 ECC 校验 原理 验证