OneNAND Flash的操作性能与应用研究

时间:2022-10-20 02:12:28

OneNAND Flash的操作性能与应用研究

[摘要] 与NOR Flash和NAND Flash比较,新器件OneNAND Flash体系结构具有存储容量大、快速读取、快速编程和上电自启动等综合优点。分析和探讨了OneNAND Flash的读数、编程和擦除等操作时序,提供若干OneNAND Flash的应用参考方案。

[关键词] OneNAND Flash 体系结构 操作时序 应用方案

OneNAND Flash是当今最富有创新概念的可编程、可擦除的半导体存储芯片[1]。这是三星电子运用十多年积累的NAND Flash技术,新近推出的一种集成有NAND存储内核、NOR接口逻辑和SRAM缓冲区的新型半导体存储芯片。它综合了NOR Flash高速读取、上电能够自启动、NAND Flash快速编程和高密度存储的诸多优点,是一种超高集成度的熔合式存储器(Fusion Memory)。目前在新一代3G移动电话、数码相机、便携式游戏机和MP4播放器等消费类电子产品中,OneNAND Flash被作为统一存储数据和代码的大容量存储器使用,有效地提高了产品的工作性能,降低了成本和功耗。本文以KFM2G16Q2M―DBE[2]为例,介绍OneNAND Flash存储芯片的体系结构,外部接口信号配置,分析和探讨它的读数、编程和擦除等操作时序,提供若干OneNAND Flash的应用参考方案。

1 内部结构与接口信号配置

KFM2G16Q2M―DBE存储芯片的集成位密度是2Gb(128M×16),芯片数据字长16位,采用1.8V供电。内部结构由三个逻辑模块组成,第一个是NAND Flash 模块,由2048个存储块组成(Block0~Block2047)。每个存储块由64个存储页面(Page0~Page63)组成。每个存储页面由主存储区(Main)和备用存储区(Spare)组成。Main区域由4个扇区(Sector0~Sector3)组成,每个扇区容量是256字(512字节)。Spare区域也是由4个扇区组成,每个扇区容量是8字(16字节)。即每个存储页面的容量是1KW(Main)+32W(Spare)。

第二个是RAM缓冲区,由三个部分组成,其逻辑结构与Flash页面结构相同。即:①BootRAM存储区,容量是512W+16W,地址范围是0~1FFH和8000H~800FH;②RAM0存储区,容量是1KW+32W,地址范围是200H~5FFH和8010H~802FH;③RAM1存储区,容量是1KW+32W,地址范围是600H~9FFH和8030H~804FH。

第三个是寄存器模块,地址范围是F000H~FFFFH,目前开发使用地址寄存器、命令寄存器、状态寄存器和配置寄存器等32个寄存器。地址寄存器用于寻址Flash块、页面和扇区,选择RAM0或者RAM1。CPU把操作命令写入命令寄存器后,芯片自动执行内部操作。状态寄存器自动记录芯片的实时状态,供CPU查询芯片操作是否成功完成等。

在芯片内部Flash数据传送到RAM0(1),叫做数据装入(Load)。RAM0(1)数据传送到Flash,叫做数据编程(Program)。CPU通过向地址寄存器和命令寄存器写入Flash地址信息和操作命令,控制芯片内部的数据装入、数据编程和存储块擦除等操作。装入RAM0(1)的数据由CPU读取。编程数据由CPU写入RAM0(1)后,再自动编程到Flash页面。CPU只能读取BootRAM数据,不能对其写入数据。CPU可以读写RAM0和RAM1存储区。OneNAND Flash的这种操作特点,称之为基于寄存器的接口操作(Register Based Interface)。

芯片的接口信号配置有:同步时钟信号CLK,频率是54MHz、66MHz或者83MHz;16位地址数据复合总线AD15~AD0,分时输入地址A15~A0和收发数据D15~D0;地址选通控制信号/AVD,输入低有效;中断输出信号INT,高电平指示芯片内部操作已经完成;忙/就绪输出信号RDY,高电平指示CPU可以迸发读取RAM0(1)数据。硬件复位信号/RP,输入低电平,芯片立即终止任何操作过程;读数据控制信号/OE,输入低有效;写控制信号/WE,输入低有效;芯片使能控制/CE,输入低有效;芯片内部结构和接口信号配置如图1,芯片总线操作功能如表1。

2 OneNAND Flash的存取操作

2.1 数据装入操作(Load)

在芯片内部,把某个Flash页面数据传送到RAM0(1)缓冲区,叫做数据装入。分为单页面和多页面数据装入。

2.1.1 单页面数据装入

单个Flash页面数据装入的操作步骤是:①初始化Flash地址寄存器,设置块、页和扇区地址。②选择RAM0或者RAM1缓冲区。③执行数据装入命令。④查询数据装入是否完成。⑤查询状态寄存器,检测数据装入是否成功。⑥如果数据装入成功,由CPU读取RAM缓冲区数据。单个页面装入的数据量可以是1~4扇区。单个Flash页面数据装入的操作时序图(最后两个周期)如图2。在图2中,AA表示Flash地址寄存器,LMA表示Flash页面地址参数,CA表示命令寄存器,LCD表示装入命令,SA表示状态寄存器,“就绪”是查询Flash页面数据装入RAM缓冲区是否成功完成。

2.1.2 Cache数据装入

Cache数据装入是指在预置两个Flash页面地址后,一次可以传送两个Flash页面数据。因此需要使用RAM0和RAM1交替装入两个Flash页面数据。Cache装入命令由First Cache命令和Finish Cache命令组成。First Cache命令(0EH)把第1页面数据装入RAM0(1),同时把第2页面数据传送到页面缓冲区(Page Buffer)。Finish Cache命令(0CH)把页面缓冲区数据装入RAM1(0)。通过再写入第3、第4等Flash页面地址,配合CPU交替读取RAM0和RAM1数据,可以装入更多的Flash页面数据。Cache数据装入原理如图3所示。

2.1.3 Flash块数据装入

与Cache数据装入比较,Flash块(Block)数据装入操作,只要设置好Flash首页面地址和页面数后,执行块数据装入命令,配合CPU交替读取RAM0和RAM1操作,一次可以读出3~64个Flash页面数据,数据传输量大,速度快。块数据装入操作必须遵守的约束是:①数据必须从RAM0开始装入,然后与RAM1交替装入;②所有页面同属于一个Flash块,页面数3~64;③只能装入和读出Flash页面的Main存储区数据。

2.1.4 CPU读写RAM0(1)缓冲区

CPU通过寻址芯片内部的RAM0(1)缓冲区,对其进行读写操作。读写RAM0(1)缓冲区分为异步读写方式和同步读写方式。在异步读写方式下,芯片不需要输入CLK时钟信号,CPU输出某个RAM缓冲区的地址,就读出或者写入一个字单元。在同步读写方式下,芯片需要输入CLK时钟信号,在配置好线性迸发存取长度后,CPU输出RAM缓冲区的地址后,在延迟BRWL时间(迸发读写延迟,3~7个时钟周期,与CLK频率成正比)后,可以读出或者写入4、8、16、32或1024个字单元。如果采用握手控制方式,通过查询RDY输出状态,判断芯片输出的迸发数据是否可读。4字线性迸发读RAM0(1)缓冲区数据的时序如图4。

2.2 页面编程操作

CPU把数据写入RAM0(1)缓冲区后,再自动传送到指定的Flash页面中,叫做Flash页面数据编程。编程分为单页面编程、双页面编程、多页面编程和页面备份编程等操作。页面编程必须遵守的约束是:在一个Flash存储块内部,页面编程的顺序是从页面0到页面63,不支持随机页面编程。在编程期间,芯片拒收CPU的任何命令和禁止芯片复位。

2.2.1单页面编程

单页面编程的单位是1~4扇区。页面编程步骤是:①设置Flash块、页面和扇区地址;②选择RAM0或者RAM1;③CPU把数据写入RAM0或者RAM1;④执行编程命令,开始编程;⑤查询编程是否成功完成。如果页面编程失败,该存储块必须打上无效存储块标记,另选一个有效存储块编程。单页面编程时序(最后两个周期)如图5。在图5中,AA表示Flash地址寄存器,PMA表示Flash页面地址参数,BA表示RAM0(1)缓冲区,BD表示编程数据,CA表示命令寄存器,PCD表示编程命令,SA表示状态寄存器,“就绪”是查询Flash页面数据编程是否成功完成。

2.2.2双页面编程

芯片中NAND Flash由2048个存储块(Block0 ~ Block2047)组成。在双页面编程时,一个页面来自偶地址块Block2j(j=0,1,2 …),另一个页面来自奇地址块Block2j+1,两个页面地址必须相同。RAM0数据编程到Block2j块中页面,RAM1数据编程到Block2j+1块中页面。双页面编程操作的步骤是:①设置Block2j块地址和页面地址;②设置RAM0编程Block2j块中页面;③CPU把编程数据写入RAM0和RAM1;④执行双页面编程命令;⑤查询双页面编程是否成功完成。

以上操作步骤说明,双页面编程只要确定偶地址块及其页面地址后,奇地址块及其页面地址也就随之而定,反之则不然。另外,如果编程数据少于页面容量,页面中剩下的所有单元必须写入全1数据。

2.2.3多页面编程

多页面编程也叫做Cache编程。其功能是至少执行三次双页面编程操作。可以完成对偶地址存储块和奇地址存储块中各3个页面的数据编程,因此编程效率更高。Cache编程的原理是,CPU把4KB编程数据分别写入RAM0和RAM1后,执行Cache编程命令,RAM0和RAM1数据同时分别传送到两个页面缓冲区中,与此同时中断标志置1,指示CPU再把新的4KB编程数据分别写入RAM0和RAM1,其后再执行Cache编程命令或者执行结束Cache编程命令,完成多页面编程操作。Cache编程操作原理如图6。

2.2.4页面备份编程

芯片的擦除操作是以存储块为单位。因此,当存储块中有部分页面数据需要修改时,必须擦除去整个存储块数据后,重新进行页面数据编程才能完成修改。为了保护存储块中其他的页面数据,必须把这些页面数据拷贝到另一个空白的存储块中,这种数据拷贝叫做页面备份编程操作。页面备份编程操作完全是在芯片内部进行,无需借助外部存储器,因此省时间和速度快。页面备份操作的步骤是:①设置Flash源与目页面地址;②选择RAM0或者RAM1;③执行备份编程命令,把源页面数据装入RAM0(1),覆盖先前数据,然后自动编程到目标页面;④查询页面备份编程操作是否成功完成。

2.2.5可修改数据的备份编程

数据可以修改的页面备份编程操作分三步进行:①执行数据装入命令,把Flash源页面数据装入RAM0(1)中;②由CPU完成对RAM0(1)数据的修改;③执行页面编程命令,把RAM0(1)数据写入目标Flash页面。

2.3 芯片擦除操作

Flash以存储块为单位擦除操作。存储块被擦除前应处于开锁状态,处于锁定状态的存储块无法擦除。可以擦除单个存储块,也支持一次最多擦除64个存储块的多块擦除操作。

2.3.1单存储块擦除

每次擦除一个存储块。擦除步骤是:①设置存储块地址;②执行块擦除命令;③查询块擦除是否成功完成。在块擦除期间,禁止对芯片复位操作。除了擦除暂停命令外,芯片拒收CPU写入的任何命令。单个存储块擦除操作时序如图7。在图7中,AA表示Flash地址寄存器,EMA表示Flash存储块地址参数,CA表示命令寄存器,ECD表示存储块擦除命令,SA表示状态寄存器,“就绪”是查询Flash存储块擦除操作是否成功完成。

2.3.2多存储块擦除

多个存储块擦除操作,一次可以擦除2~64个存储块。多块擦除操作的步骤是:①逐个输入要擦除的存储块地址;②执行多块擦除命令,启动擦除过程;③再逐个输入块地址,查询每个存储块是否擦除成功。在多块擦除期间,如果遇到某个存储块擦除失败的情况,也不会中止擦除过程,直到完成所有存储块的擦除操作。在多块擦除操作中,除非遇到最后一个存储块被锁定的情况,会导致擦除操作失败。否则会自动跳过锁定块,完成其他未锁定存储块的擦除操作。

2.4 存储块的写保护

芯片中的每一个存储块都可以设置成写保护状态,以便禁止对存储块进行编程和擦除操作。芯片上电时,内部自动产生冷复位(Cold reset),所有存储块自动进入写保护状态。当芯片的/RP引脚输入低电平时,产生硬件复位操作,所有存储块也自动进入写保护状态。芯片设计了开锁(Unlock)、锁定(Lock)和锁紧(Lock tight)三种软件命令,分别用于对每个存储块的开锁、锁定或者锁紧操作。处于开锁状态的存储块接受数据编程或者擦除操作。处于锁紧状态的存储块,使用开锁命令无法打开,只能对芯片硬件复位或者断电后重新启动,才能使存储块从锁紧状态转换到锁定状态,再使用开锁命令打开。芯片还设计了同时解锁所有存储块的命令,以便在芯片上电后,控制所有存储块一次性开锁。查询写保护状态寄存器,可以知道任何一个存储块当前是处于开锁、锁定或者锁紧状态。

另外,芯片中的BootRAM也受到写保护。当芯片上电时,受内部产生的冷复位触发,自动将存储于存储块0页面0中,容量为1KB的启动代码装入BootRAM,此后BootRAM处于锁定状态,CPU可以读取,但不能改写。

2.5 芯片的复位操作

芯片具有冷(Cold)、温(Warm)和热(Hot)复位三种操作。冷复位就是芯片上电复位(Power On Reset)。暖复位就是/RP引脚输入低电平的硬件复位。热复位是软件复位。软件复位命令分为“Flash内核复位命令”和“芯片复位命令”两种。它们的区别是,前者复位不影响寄存器阵列,而后者复位要初始化寄存器阵列,两种软件命令都不影响BootRAM和RAM0(1)。

2.6 OTP块的操作

芯片中有两个是一次性可编程存储块(One Time Progr- ammable Block),一个是独立于Flash阵列的OTP块,另一个是Flash阵列中的Block0存储块。OTP块可以读出、一次性编程和锁定操作,但不能被擦除。OTP块不能与其他存储块配对进行双页面编程操作。OTP块保证是合格有效的存储块。OTP块不是使用块地址访问,而是使用专用的命令访问。通过任何一种复位操作可以退出OTP块操作。独立OTP块划分成两个部分,页面0~页面49供用户使用,页面50~页面63由厂家在芯片出厂前完成编程。Block0存储块内部64个页面全部供用户使用。

读取OTP块内部页面数据的操作步骤是:①执行OTP块访问命令(65H);②设置OTP块页面和扇区地址;③选择RAM0(1);④执行数据装入命令;⑤CPU读取RAM0(1)数据;⑥执行任何一种复位命令,退出OTP块操作。

OTP块内部任何单元都只能编程一次,而且无法擦除。OTP块的编程操作步骤是:①执行OTP块访问命令(65H);②设置OTP块页面和扇区地址;③选择RAM0(1);④CPU把编程数据写入RAM0(1);⑤执行编程命令;⑥执行任何一种复位命令,退出OTP块操作。

OTP块的锁定操作是通过编程独立OTP块内部页面0中备用扇区0的第8字单元实现的。如果该字单元写入数据0FCH,则锁定独立OTP块。如果该字单元写入数据0F3H,则锁定Block0存储块。如果该字单元写入数据0F0H,则同时锁定两个OTP块。两个OTP块之间的锁定约束是:如果先锁定独立OTP块,那么Block0存储块不能锁定;如果先锁定Block0存储块,独立OTP块可以任何时候锁定。OTP存储块或Block0存储块锁定后,必须执行上电复位命令,退出OTP块操作。

2.7上电自启动

芯片具有的最好特性之一,就是可以作为启动设备使用。芯片内置有启动装载器(Boot Loader)。芯片上电时,启动装载器把事先存储在Flash中的启动程序传送到BootRAM,CPU就象读取SRAM或者NOR Flash一样读取BootRAM中的指令并执行之。如果启动程序容量不超过1KB,那么BootRAM正好存储。如果启动程序容量大于1KB而小于3KB,那么1KB传送到BootRAM,剩下部分使用装入命令传送到RAM0或者RAM1,CPU执行完BootRAM指令后,再执行RAM0或者RAM1指令。如果启动程序容量大于3KB,那么1KB传送到BootRAM,剩下部分使用双缓冲方式,通过两个数据缓冲区(RAM0和RAM1)传送到系统的DRAM中,CPU读取和执行DRAM中的指令,速度更快。

2.8 自动检纠错

芯片内置有ECC(Error Correction Code)检纠错逻辑,可以检测出Flash页面数据中发生的两个位错误和纠正一个位错误。在Flash页面编程时,ECC逻辑自动为每个主扇区产生24位ECC代码,为每个备用扇区产生10位ECC代码,分别存储在备用扇区的相应字单元中。在装入Flash页面数据时,ECC逻辑又会产生新的ECC代码,但没有存储到备用扇区,通过自动比较读和写过程中产生的两种ECC代码,就能够检测出Flash页面中发生错误的数据字和数据位,并且记录在相应的状态寄存器中。状态寄存器记录三种错误类型,分别是:无错误;1位可纠正的错误;2位无法纠正的错误。如果需要,CPU可以查询状态寄存器,确定读取Flash页面数据是否发生错误。

2.9 无效存储块的管理

新出厂的芯片或者在芯片的使用寿命期间,都可能存在和产生无效的存储块(Invalid Block)。无效块也就是坏块(Bad Block),是指存储块内部存在着一个或者几个可靠性无法得到保证的位单元。坏块不会影响有效块的性能,因为存储块之间是互相绝缘的。芯片中的Block0和OTP这两个存储块保证是有效的,否则是废品。芯片出厂前,在每个存储块的页面0或者页面1的备用扇区0的首字单元中,存储着该存储块有效性的信息,有效存储块的信息是FFFFH,否则就是坏块。在使用中有必要创建一个坏块记录表,用来登记坏块的地址,以供查询。

3 实际应用方案

OneNAND Flash以存储容量大、读数与编程快速、功耗低、价格低廉、上电自启动和自动纠错等综合优点,目前正逐步取代以往使用的NOR Flash和NAND Flash,被广泛应用在各种消费类电子产品中,实现了使用一块OneNAND Flash芯片同时存储程序和数据,有效降低了电子产品的功耗,显著提高了电子产品的性能。

3.1 在3G移动电话中的应用

新一代的3G移动电话要求配置更大容量的存储器,以便能够以更高的带宽下载和处理大容量的多媒体信息。以往移动电话的组成方案如图8所示,其中使用NOR Flash+NAND Flash组合,分别存储程序和数据。使用OneNAND Flash统一存储程序和数据的3G移动电话的最新解决方案如图9,本系统有效减少了Flash芯片的使用品种,显著降低了系统的成本和功耗,3G移动电话的成本效益得到显著提高。

3.2 在硬盘式MP3播放器中的应用

当前硬盘式MP3播放器的组成结构如图10,其中容量512Mb DRAM的待机功耗是200微安,容量16Mb NOR Flash的待机功耗是10微安,总待机功耗是210微安。使用One NAND Flash的MP3播放器结构如图11,其中容量512Mb OneNAND Flash的待机功耗也只是10微安,而DRAM的配置容量被显著减小到64Mb,待机功耗减少到90微安,从而系统总待机功耗降低到100微安。由此可见,使用OneNAND Flash的电子产品,系统功耗得到明显降低,因此电池的供电时间和使用寿命都会得到显著的增加。

4 结语

目前三星电子推出的OneNAND Flash系列产品非常丰富。本系列产品还有KFN4G16Q2M[3]和KFK8G16Q2M[4]。这两种芯片的数据字长都是16位,芯片存储密度分别是4Gb和8Gb。4Gb芯片内部集成两个2Gb模块,而且只配置一条片选输入/CS,它是通过对配置寄存器进行设置,来选择内部的某一个2Gb模块,进行各种存取和擦除操作。8Gb芯片内部集成四个2Gb模块,配置两条片选输入/CS1和/CS2,再配合对配置寄存器的设置,来选择内部的某一个2Gb模块,进行各种存取和擦除操作。高密度、高速度、低功耗、高性价比的OneNAND Flash系列存储芯片,满足了新一代3G移动设备需要配置大容量存储器,以便能够下载和存储大容量的多媒体信息以及高带宽传输多媒体信息的要求。

参考文献

[1] Samsung Electronics Co., LTD. OneNAND Product overview [EB/OL]. [2008-3-26].

[2] Samsung Electronics Co., LTD. KFM2G16Q2M-DEBX [EB/OL]. [2008-3- 26].http//www.省略/products/fusionmemory/oneNAND.htlm.

[3] Samsung Electronics Co., LTD. KFN4G16Q2M-DEBX [EB/OL]. [2008- 3-26].http//www.省略/products/fusionmemory/oneNAND.htlm.

[4] Samsung Electronics Co., LTD. KFK8G16Q2M-DEBX [EB/OL]. [2008- 3-26].http//www.省略/products/fusionmemory/oneNAND.htlm.

上一篇:哈大电气化铁路牵引供电系统电压损失与电力系... 下一篇:建立学科馆员制度 推进高校图书馆建设

文档上传者
热门推荐 更多>