报价
HOME
报价
正文内容
nand flash的初始化程序 NOR Flash 和 NAND Flash 的区别
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

NOR Flash 和 NAND Flash 的区别

参考于《ARM嵌入式系统开发典型模块》一书,仅用于笔记学习,如果侵删

Flash Memory是一种非易失性的存储器。

Flash 按照结构可以分为 nor flash 和 nand flash两大类,两者的读取速率差不多。

NOR flash的特点就是芯片内执行,这样应用程序可以直接在 flash 内存内运行,不必再把代码读到系统 RAM 中。nor flash 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。

鉴于NOR Flash擦写速度慢,成本高等特性,NOR Flash主要应用于小容量、内容更新少的场景,例如PC主板BIOS、路由器系统存储等。

NAND FLASH写入性能好,大容量下成本低。目前,绝大部分手机和平板等移动设备中所使用的eMMC内部的Flash Memory都属于NAND FLASH。PC中的固态硬盘中也是使用NAND FLASH。

NAND flash 结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用nand flash 的困难在于flash 的管理和需要的特殊接口。

总结nor flash 和 nand flash的差别在以下的几个方面

1、容量和成本

nor flash 的容量大小为1MB~32MB ,而nand flash 的为16MB~512MB。nand flash 的单元尺寸几乎是nor flash 的一半,由于生产的过程更为简单,因此价格也是相对低。

2、性能差别

(1)nor flash 的读速度比 nand flash稍快一些

(2)nor flash 的写入速度比 nand flash 慢了很多

(3)nand flash 的4ms擦除速度远比nor flash 的5s 快

(4)nand flash 的擦除单元更小,相应的擦除电路也久更小

3、接口差别

nor flash 的接口和RAM一样,而 nand flash 是使用I/O口来串行地存取数据。

3.1 NOR Flash根据与CPU端接口的不同,可以分为Parallel NOR Flash和SPI NOR FLASH两类。

NAND FLASH 需要通过专门的NFI(NAND FLASH Interface)与Host端进行通信,如下图所示:

4、易用性

使用nor flash 的相对简单,可以非常直接地使用基于 nor flash 地内存,可以像其他存储器那样连接,还可以直接在上面运行代码

而使用 nand flash 的话就复杂了,需要I/O接口,必须先写入驱动程序,才可以继续执行其他的操作。

5、耐用性

在nand flash内存中的每个块的最大擦除写次数是100万次,而nor flash 的擦写次数是10万次。

NAND FLASH根据每个存储单元内存储比特个数的不同,可以分为SLC(Single-LevelCell)、MLC(MulTI-LevelCell)和TLC(Triple-LevelCell)三类。其中,在一个存储单元中,SLC可以存储1个比特,MLC可以存储2个比特,TLC则可以存储3个比特。每一个存储单元内部通过不同的电压等级来表示其所存储的信息。在SLC中,存储单元的电压被分为两个等级,分别表示0和1两个状态,即1个比特;在MLC中,存储单元的电压则被分为4个等级,分别表示00011011四个状态,即2个比特位;同理,在TLC中,存储单元的电压被分为8个等级,存储3个比特信息。

NAND FLASH的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。

6、坏块处理

nand flash 器件中的坏处是随机分布的

nand flash 器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。

7、位交换

所有flash器件都受位交换现象的困扰。在某些情况下(很少见,nand flash发生的次数要比nor flash多),一个比特位会发生反转或被报告反转了。

一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。

这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。

8、主要用途

nor flash常用于保存代码和关键数据。nand flash 用于保存数据。

9、软件支持

当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。

在NOR器件上运行代码不需要任何的软件支持,

在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),

NAND和NOR器件在进行写入和擦除操作时都需要MTD。

使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。

驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。

基于存储器映射的Flash高速低功耗驱动实现

李 杰,任勇峰,李辉景

(中北大学 电子测试技术国家重点实验室,山西 太原030051)

摘 要: 针对高速大容量Flash芯片控制中面临的高速可靠性不高与动态功耗大的问题,研究了一种将复杂状态机操作映射到内嵌RAM上运行的方法。通过对内嵌RAM读地址的切换,实现了等延时的状态跳变与输出控制。同时采用加强时钟管理、分割组合逻辑来避免信号不必要的翻转,极大地提高了时序运行的可靠性并降低了其动态功耗。实践表明,该方法实现的Flash控制时序比传统的状态机在资源消耗和功耗方面均能降低50%以上,为复杂时序逻辑的实现提供了一个新思路。

0 引言

在FPGA对Flash控制操作中,有限状态机(Finite State Machine,FSM)与多进程描述方式相比有着层次分明、结构清晰、易于修改和移植的明显优势而被广泛应用。传统状态机在描述实现寄存器存储状态信息、组合逻辑产生下一个状态和输出值时,大量使用了FPGA的布线、查找表、寄存器等宝贵资源[1]。

为了实现FPGA的可编程性,在其内部使用了大量的可编程逻辑开关。由于可编程逻辑开关的电阻较金属线大得多,而且引入了大量的寄生电容,从而增加了电路功耗,降低了电路速度[2](研究表明,总动态功耗中62%来自于可编程布线资源)。而且大量组合逻辑容易受到布局布线延迟,在查找表的输出端产生“毛刺”,当系统时钟频率、操作密度大幅提高时,极易引起时序逻辑错误[3]。为此,研究了一种基于存储器映射的有限状态机逻辑实现方法,对FPGA资源进行选择性使用,从而达到降低FPGA功耗、提高运行可靠性的目的。

1 NAND Flash芯片接口及底层驱动实现

NAND Flash芯片是通过异步高性能I/O与主控芯片通信的,8位复用总线传输操作指令、操作地址以及数据,多个控制信号来区分总线接口状态以及获取芯片工作状态,如图1。

NAND Flash芯片控制器主要完成初始化、无效块检测、块擦除、页编程和页读取共5个基本操作模式。其中初始化操作与无效块校验是在系统上电后需要率先完成的操作,随后控制器将进入到空闲状态,并根据输入的相应控制信号完成剩下的块擦除、页编程和页读取操作。各个操作模式都是状态转移实现一定时序的输出与接收,并且用状态机容易实现。以块擦除为例,其中输入信号有Erase_en、Earse_do和R/B 3个信号,输出信号有CLE、ALE、WE、RE 4个信号,状态转移如图2所示。

2 基于存储器映射的有限状态机设计

2.1 基于优化资源配置的低功耗、高可靠设计思路

目前主流的FPGA芯片内部除含有查找表、触发器、布线资源等基本逻辑资源外,还集成了块RAM、分部式RAM、时钟管理等多种丰富的资源。FPGA的可编程特性主要靠布线结构中的可编程开关连接可编程逻辑块实现。

不同类型资源所消耗的动态功耗在FPGA总功耗中所占比例不同。其中总动态功耗的62%来自于布线资源,19%来自于时钟网络,而可编程逻辑块只占动态功耗的19%[4]。

根据FPGA中各种资源性能、功耗不同的现象,提出了一种新的设计思路,即在满足系统性能的前提下,对FPGA资源进行优化选择性使用,尽可能使用相对较低功耗的资源完成设计任务。将有限状态机映射到FPGA内部RAM中执行,不仅可以减少布线资源的使用,从而降低FPGA的动态功耗,而且能够消除高速状态下切换布线延迟产生的错误或者无效状态[5]。

2.2 基于存储器映射的有限状态机设计方法

状态机组合逻辑都可以抽象为一定输入编码与一定输出编码的对应,即当前状态与输入信号共同决定次态的编码[6]。为了能在块RAM中执行有限状态机,需要将状态机的编码及状态转移等信息映射到块RAM中。具体方法为:块RAM中每个存储单元内容分为状态机的状态编码信息与状态机的输出信息两部分。由状态机的当前编码信息和状态机的输入信息一起构成下一个状态编码信息的存储地址。

如果采用[D2:D0]表示Flash块擦除状态机的8个操作状态、[D4:D3]表示分3次发送的操作块地址信息、[D5]表示所用的两个操作命令,则操作状态编码、地址编码、命令编码即可唯一确定该状态机当前所处的状态(具体编码方式如图3所示)。其中次态的高4位是状态机向下一状态转化时的输出值,用于对Flash芯片的控制;当前态的高3位是状态机的输入控制信号。采用这种编码方式容易将图2所示的有限状态机表示为当前态与次态对应的真值表见表1。

将表1中当前态作为RAM的存储地址,次态作为RAM中存储的数据,即可以将图2所示的有限状态机映射到存储器上执行,如图4所示。状态机进行转化时,下一状态的编码信息存储地址由当前状态的编码信息和状态机的输入信息共同决定。同样,Flash操作中其他的操作模式均可以按这种方式编码并映射为用存储器执行的有限状态机。

实现有限状态机到存储映射所需要的存储空间最大为:

M=2i×(O+S)

其中i表示状态机输入的位数,O表示状态机输出的位数,S是状态编码的位数。

当然,当有限状态机越来越复杂时,其所需的存储空间容量越来越大,也可以适当地根据实际情况通过逻辑控制对地址控制进行修正来减小存储空间需求。

3 NAND Flash控制中的低功耗优化设计

FPGA的功耗主要包含静态功耗和动态功耗两部分。静态功耗主要取决于所选FPGA的型号;动态功耗是所有电容性节点充放电产生的组合功耗和电路转换过程中的短路电流形成的功耗[7]。降低FPGA动态功耗的思路为:在保证满足设计要求的情况下,通过降低内部信号的翻转率来降低功耗。其手段包括对时钟进行管理与增加防火墙寄存器。

3.1 基于时钟管理模块的低功耗优化

在FPGA内部时钟信号不断翻转,由时钟信号派生出的信号通常运行在主时钟频率的较小分量[8](通常为12%~15%)。所以在所有高耗能信号中,时钟是主要矛盾。通常情况下,一个状态机会在某个时间段内保持同一个状态不变,但其时钟始终处于翻转状态。因此,关闭闲置模块程序的时钟可以降低时钟资源产生的功耗[9]。在Flash操作中,当FPGA处于擦除模式时,初始化操作、无效块校验、页编程和页读取模式均处于闲置状态。图4中时钟管理模块负责对FPGA内部各模块的时钟进行管理,只有该模块处于工作状态时时钟信号才会翻转。在设计中增加时钟管理模块非常简单,可以在硬件描述语言中添加,也可以通过综合工具自动添加。

3.2 增加防火墙寄存器的低功耗优化

在FPGA程序设计中大量组合逻辑很容易受到布局布线延迟在查找表的输出端产生“毛刺”。“毛刺”在后续组合逻辑电路的传播中,可能导致多米诺骨牌效应,致使系统变得不稳定,而且增加了调试难度,消耗了大量的能量。研究表明,由“毛刺”在大量组合逻辑中的传递引起的动态功耗占总动态功耗的10%。用FPGA实现大多数电路功能时,FPGA内部大部分的基本逻辑单元中的触发器(Flip-Flop,FF)没有使用,将这些未用的FF添加到信号传输路径上被称作增加防火墙寄存器[10](如图5)。通过在程序中添加防火墙寄存器来分割组合逻辑,把每个逻辑功能限制在相邻的逻辑单元中,从而缩短布线长度和减小负载电容,将“毛刺”波的传递限制在最小范围,达到降低功耗的目的。

4 仿真实验结果及分析

为了比较分析传统状态实现方法与基于RAM映射的有限状态机设计以及低功耗优化方法的性能差别,对设计完成FPGA内部资源消耗情况、功耗评估以及理论最高工作频率3方面进行测试。

整个试验以Xilinx公司的Spartan-6系列FPGA XC6SLX150为目标器件,选用ISE13.1版本的综合工具,并利用ISE中自带的XPower进行功耗分析。XPower从布局和布线(.ncd)文档中获得FPGA设计信息,从Vcd文档中获得设计中所需的时钟、开关活动等信息,该文件可在布局和布线时在Pwr文档中得出功耗报告。仿真结果如表2。

从表中可以看出,基于RAM映射的有限状态机设计仅仅增加一个片内Block RAM资源的使用就使内部其他资源占用率下降到传统方式的1/3,总功耗也能下降到原来的50%以下,并且最大工作频率有明显提高。对基于RAM映射的有限状态机进行低功耗优化后仅仅增加了小部分闲置FFs资源的使用,使FPGA总功耗进一步下降到传统状态机设计的43.1%,而且最大工作频率提高了65.6%。

5 结论

文章针对Flash控制应用中实现复杂状态机的设计时存在高速可靠性与动态功耗的问题进行研究,提出了一种优化FPGA内部资源使用方法,利用FPGA内部存储资源构成有限状态机的设计并进行了低功耗优化。其将传统方式下的状态机电路结构中不断变化的状态机寄存器信息转化成RAM中的固定模块,减少了使用功耗较高的布线资源。不仅有效降低了FPGA动态功耗,而且能够消除高速状态下切换布线延迟产生的错误或者无效状态,特别适合大规模的复杂状态机结构,使得各个状态机切换具有等间隔的时间延迟。增加时钟管理模块关闭闲置模块的运行以及添加防火墙寄存器限制“毛刺”传播,进一步降低了FPGA的动态功耗,提高了系统可靠性。该方法很容易迁移到其他FPGA应用设计中,有较高的实用价值。

参考文献

[1] 马寅,安军社,王连国.基于Scrubbing的空间SRAM型FPGA抗单粒子翻转系统设计[J].空间科学学报,2012,32(2):270-276.

[2] SHANG L,KAVIANI A,BALHALA K.Dynamic power consumption in Vinex-I1 FPGA family[C].Proceedings of the 2002 ACM/SIGDA tenth international symposium on Field-programmable gate arrays.2002:157-164.

[3] CROMAR S,LEE J,CHEN D M.FPGA-targeted high-level binding algorithm for power and area reduction with glitch-estimation[C].Proc of the 46th Annual Design Automation Conference.New York:ACM Press,2009:838-843.

[4] 李列文.FPGA低功耗设计相关技术研究[D].长沙:中南大学信息科学与工程学院,2014.

[5] 吴强,张逸中.FPGA位流解析及电路还原方法[J].计算机工程,2013,39(5):714-726.

[6] 储成群.存储测试系统若干关键技术研究[D].太原:中北大学仪器与电子学院,2015.

[7] 李宏钧,胡小龙.流水线的FPGA低功耗设计[J].计算机系统应用,2011(8):234-237.

[8] WANG Q,GUPTA S,ANDERSON J.Clock power reduction for Virtex-5 FPGAs[C].Proceedings of the ACM/SIGDA international symposium on Field programmable gate arrys.2009:13-22.

[9] 何艳霞,何永泰.FPGA低功耗的设计研究[J].楚雄师范学院学报,2012(6):22-25.

[10] 黄娟,杨海钢,谭宜涛,等.防火墙寄存器技术的FPGA低功耗布线算法研究[J].计算机应用研究,2011(8):2954-2957.

相关问答

NAND Flash 和Nor Flash到底有什么区别?

[最佳回答]1、存储架构不同NORFlash架构提供足够的地址线来映射整个存储器范围。这提供了随机访问和短读取时间的优势,这使其成为代码执行的理想选择。另一个优点是100%...

flash初始化 原理?

[最佳回答]3.Flash初始化的具体步骤包括擦除、编程和验证等环节。首先,Flash擦除会将Flash内的数据全部清空,以确保初始状态的干净;然后,系统会根据需要将程序或数据...

bib文件是什么意思

nboot是从NANDflash读image到内存并执行,eboot是从以太网(用tftp)下载image到内存并执行。将nboot.nb0烧到第0块,将eboot.nb0烧到第2块。启动时nbo....

flash 应用 程序初始化 错误?

[最佳回答]出现这种情况是运行程序不兼容造成的,这种情况你强制重启一下,基本就可以解决了,这是卡死程序不兼容造成的,通过重启解决

求Teclast NANDFlash U盘量产修复具体 步骤 ,谢谢?

[最佳回答]你好,下载IS916-BO量产工具。插上U盘,解压后,点击EXE应用程序,在量产设置项中输入PID和VID,开始量产就可以了。

nand flash 详解?

[最佳回答]Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand-flash存储器具有容量较大,改写速...

nandflash 是什么?

[最佳回答]这个应该是手机/相机/PDA上的说明。。。NandFlash是一种存储介质。相当于电脑的硬盘。是用来存储东西的。电脑上可存储的东西,在这里也都能存储。而1GGG8GG...

nand flash 芯片 程序 会加密么?

[最佳回答]会加密的,原理:NandFlash控制器通过将NandFlash芯片的内设命令写到其特殊功能寄存器中,从而实现对Nandflash芯片读、检验和编程控制的。特殊功能寄存...

安装abode flash player时提示 flash 应用 程序初始化 错误-ZOL问答

这个flash现在很多机器都不能安装了,不支持的说。有用(0)回复相关问题我新买的vivoplayA5,微信图片不能正常上传。各种办法都尝试了,都不行,传不上去的...

连接时出错,(.ARM.exidx+0x0): undefined reference to `__...

因为现在可用的内存只有4K@nandflash中的代码在复位后会移到内部ram中,此ram只有4Kblmain@调用C程序中的main函数halt_loop:b...

 优乐团购  易烊千玺百科 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部