大白菜园 https://passport2.21ic.com/?787411 [收藏] [复制] [RSS]

日志

Flash研究笔记之二–Flash结构与使用

已有 1285 次阅读2011-11-21 15:32 |个人分类:存储器|系统分类:ARM| Flash, 存储器

原创文章,欢迎转载。转载请注明:作者:李述铜 网址:http://lishutong.me




          在这篇笔记中,我们主要关注一下Flash存储器的基本存储结构。特别是其最小存储存储单元,也就是存储1位的结构是如何实现的。了解这点会有助于我们理解Flash的工作原理。需要说明的是,其中的一些内容是早前参考网上的资料整理得到的,原文链接已无从查找。



        一、Flash工作原理



        1 数据存储原理



          Flash存储器通常使用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理相同,也是主要利用电场的效应来控制源极与漏极之间的通断。在栅极与硅衬底之间增加了一个浮置栅极。浮置栅极可以存储电荷,利用电荷存储来存储记忆



          这个三端器件可表示1BIT的数据,向浮栅中注入电荷表示写入了'0',没有注入电荷表示'1'注入了电荷的晶体管总是导通状态,而没有注入电荷的则只有在控制栅极施加了相应电压后才导通。所谓的编程,也就是向其注入电荷,而擦除即为释放原注入的电荷。



          当存储“1”时,一次注入的电荷可长时间(10年以上)保持,如果制造缺陷或某些原因使其破坏、热能等会使其电荷衰减,影响数据的存储。这也决定了Flash存储器是非易性的,可用于通用的数据存储。



        wps_clip_image-25792



          如果要读取数据,则晶体管的源极接地而漏极接位线,在无偏置电压的情况下,检测晶体管的导通状态就可以获得存储单元中的数据。如果位线上的电平为低, 说明晶体管处于导通状态,读取的数据为0;如果位线上为高电平,则说明晶体管处于截止状态,读取的数据为1。控制栅极在读取数据的过程中施加的电压较小或根本不施加电压,不足以改变浮置栅极中原有的电荷量,所以读取操作不会改变FLASH中原有的数据。



        2 数据写入/擦除过程



          数据写入也即向浮栅注入电荷的过程,写入数据有两种技术,热电子注入(hot electron
injection)和F-N隧道效应(Fowler Nordheim
tunneling)。前一种是通过源极给浮栅充电,适用于NorFlash,后一种是通过硅基层给浮栅充电,适用于NandFlash。



          数据擦除,即通过相反的方式,加上相应的电压,释放浮栅中的电荷



        wps_clip_image-855



        wps_clip_image-6489



        3  操作特点-将1变0或者将0变1



          在对Flash的操作中,我们通常会提供到两个动词“擦除”和“编程”。通常意义上,“擦除”是将整个芯片或芯片内的某个存储块内的数据还原到初始状态;而编程则是将我们需要存储的数据写入到存储器的过程



          根据前面的介绍以及我的理解,进行Flash数据编程操作时,是向特定的存储结构注入电荷的过程;而擦除则是释放电荷的过程。假设我们要向0x00地址处编程数据0x53,转换成二进制即为01010011。在实际进行编程操作时,仅仅进行电荷注入的操作,即将1变成0,所以只会对0x00地址单元对应的8个Flash存储位结构中的第3位、第4位、第7位、第8位注入电荷,其它位则不受影响。也即编程操作仅仅将将1变成0,而不会将0变成1。演示效果如下面的表格所示:







































                                原值

                                1

                                1

                                1

                                1

                                1

                                1

                                1

                                1

                                电荷

                                注入

                                无

                                注入

                                无

                                注入

                                注入

                                无

                                无

                                结果

                                0

                                1

                                0

                                1

                                0

                                0

                                1

                                1


          而擦除操作则不同,擦除操作是仅仅释放原注入的电荷,即将将0变成1而不能将1变成0。



          从本质上来说,编程和擦除没有什么区别,只是最后的结果互逆而已。一个将1变成0,一个将0变成1,工作原理其实是类似的。但目前的通用做法是将Flash内容为全1的状态称作是空片,而将1变成0的过程称之为“编程”。当然,也有个别的厂商会设定Flash内容为全0的状态称作是空片,而将0变成1的过程称之为“编程”。两种做法都是可以的,就看制造的工艺和提供的操作接口如何。这里我们就不去考虑那些个别的情况了,以通用的做法为准。



        二、Flash分类与特征



        1 Flash分类



          现在的Flash种类有很多种,比如NandFlash、NorFlash、DINOR、AND等,这里只介绍Nand、NorFlash两种比较通用的类型。




  •                 Nor Flash:特点容量小、写入速度慢、随机存储速度快;通常用于存储可执行代码,并行接口类型(SRAM接口)可直接执行代码。所有位在Flash使用期间完全良好;支持并行和串行接口。比如一种比较常见的做法是,当应用程序代码体积较大时,为MCU外扩一块NorFlash存储额外的代码,MCU可直接通过SRAM接口读取代码并执行。容量多在M级以内,并且容量越大越贵;

  •                 Nand Flash:特点写入、擦除速度快,可提供极高的存储密度、随机访问速度慢,常用于存储大批量的数据。读之前需要进行较长时间的初始化操作,并且出厂时就存在坏位,需要使用ECC、坏块管理等处理。通常使用复用的地址、数据线。应用NAND的困难在于flash的管理和需要特殊的系统接口,无法直接运行程序,只能存储数据;只能借助软件从NAND FLASH 载入SDRAM中运行。由于可存储的数据容量较大(通常128M,上GBit的容量),可用U盘的数据存储。


          下表是两种类型Flash的比较,很好的比较两种存储器的不同之处:



        wps_clip_image-1970



        1.3 Nor/Nand Flash比较



        1.3.1 性能比较



          擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s。与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。




  •                 写数据和擦除数据:Nand比Nor更快。NAND由于支持整块擦写操作,速度比 NOR要快得多,两者相差近千倍;

  •                 数据读取:Nor比Nand更多,且Nor型可随机访问。NAND要先向芯片发送地址信息,地址信息包括块号、块内页号和页内字节号等部分,每进行一次数据访问需要经过三次寻址;而NOR操作则是以字或字节为单位进行直接读取,速度更快。随机访问一大好处是支持CPU直接通过外部总线从Nor中取指并执行,速度很快。


        1.3.2 接口差别




  •                 NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节,从而可简化产品的设计;

  •                 NAND器件使用复杂的、复用的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。


        1.3.3 容量和成本



          NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash用在8~128MB的产品当中,NOR主要应用在代码存储介质中,NAND适合于数据存储



        1.3.4 可靠性和耐用性



          采用flash介质时一个需要重点考虑的问题是可靠性。



          在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。



        2. 位交换



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



        3. 坏块处理



          NAND FLASH相邻单元之间较易发生位翻转而导致坏块出现,而且是随机分布的,如果想在生产过程中消除坏块会导致成品率太低、性价比很差,所以在出厂前要在高温、高压条件下检测生产过程中产生的坏块,写入坏块标记,防止使用时向坏块写入数据;但在使用过程中还难免产生新的坏块,所以在使用的时候要配合 EDC/ECC(错误探测/错误更正)和BBM(坏块管理)等软件措施来保障数据的可靠性。坏块管理软件能够发现并更换一个读写失败的区块,将数据复制到一个有效的区块。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)