关键词:闪存;K9K2GXXU0M;大容量 Flash
闪存(FLASH MEMORY闪烁存储器)是一种可以进行电擦写,并在掉电后信息不丢失的存储器,同时该存储器还具有不挥发、功耗低、擦写速度快等特点,因而可广泛应用于外部存储领域,如个人计算机和MP3、数码照相机等。但随着闪存应用的逐渐广泛,对闪存芯片容量的要求也越来越高,原来32M、64M的单片容量已经不能再满足人们的要求了。而 K9K2GXXX0M的出现则恰好弥补了这一不足。K9K2GXXX0M是三星公司开发的目前单片容量最大的闪存芯片,它的单片容量高达256M,同时还提供有8M额外容量。该闪存芯片是通过与非单元结构来增大容量的。芯片容量的提高并没有削弱K9K2GXXX0M的功能,它可以在400μs内完成一页2112个字节的编程操作,还可以在2ms内完成128k 字节的擦除操作,同时数据区内的数据能以50ns/byte的速度读出。
K9K2GXXU0M大容量闪存芯片的I/O口既可以作为地址的输入端,也可以作为数据的输入/输出端,同时还可以作为指令的输入端。芯片上的写控制器能自动控制所有编程和擦除操作,包括提供必要的重复脉冲、内部确认和数据空间等。
1 K9K2GXXU0M的性能参数
K9K2GXXU0M的主要特点如下:
●采用3.3V电源;
●芯片内部的存储单元阵列为(256M+8.192M)bit×8bit,数据寄存器和缓冲存储器均为(2k+64)bit×8bit;
●具有指令/地址/数据复用的I/O口;
●在电源转换过程中,其编程和擦除指令均可暂停;
●由于采用可靠的CMOS移动门技术,使得芯片最大可实现100kB编程/擦除循环,该技术可以保证数据保存10年而不丢失。
表1所列是K9K2GXXU0M闪存芯片的编程和擦除特性参数。表中的tCBSY的最长时间取决于内部编程完成和数据存入之间的间隔。
表1 K9K2GXXU0M的编程和擦除特性
参 数 | 符 号 | 最 短 | 典 型 | 最 长 | 单 位 | |
编程时间 | tPROG | 300 | 700 | μs | ||
缓存编程的虚拟忙时间 | tCBSY | 3 | 700 | μs | ||
在同一页中的局部编程循环 | 主列 | NOP | 4 | 周期 | ||
空列 | 4 | 周期 | ||||
块擦除时间 | tBERS | 2 | 3 | ms |
2 K9K2GXXU0M的管脚说明
K9K2GXXU0M有48个引脚,其引脚排列如图1所示。具体功能如下:
I/O0~I/O7:数据输入输出口,I/O口常用于指令和地址的输入以及数据的输入/输出,其中数据在读的过程中输入。当芯片没有被选中或不能输出时,I/O口处于高阻态。
CLE:指令锁存端,用于激活指令到指令寄存器的路径,并在WE上升沿且CLE为高电平时将指令锁存。
ALE:地址锁存端?用于激活地址到内部地址寄存器的路径,并在WE上升沿且ALE为高电平时,地址锁存。
CE:片选端?用于控制设备的选择。当设备忙时?CE为高电平而被忽略,此时设备不能回到备用状态。
RE:读使能端,用于控制数据的连续输出,并将数据送到I/O总线。只有在RE的下降沿时,输出数据才有效,同时,它还可以对内部数据地址进行累加。
WE:写使能控制端,用于控制I/O口的指令写入,同时,通过该端口可以在WE脉冲的上升沿将指令、地址和数据进行锁存。
WP:写保护端,通过WP端可在电源变换中进行写保护。当WP为低电平时,其内部高电平发生器将复位。
图3 编程操作时序图
R/ B:就绪/忙输出,R/ B的输出能够显示设备的操作状态。R/ B处于低电平时,表示有编程、擦除或随机读操作正在进行。操作完成后,R/ B会自动返回高电平。由于该端是漏极开路输出,所以即使当芯片没有被选中或输出被禁止时,它也不会处于高阻态。
PRE:通电读操作,用于控制通电时的自动读操作,PRE端接到VCC可实现通电自动读操作。
● VCC:芯片电源端。
● VSS:芯片接地端。
● NC:悬空。
3 K9K2GXXU0M的坏块
闪存同其它固体存储器一样都会产生坏块。坏块是包含一位或多位无效位的块。在K9K2GXXU0M中坏块并不影响正常部分的工作,这是因为在K9K2GXXU0M中,各块之间是隔离的。坏块均可以通过地址的布置系统找到,而在K9K2GXXU0M中地址为00h的第一块一定应当是正常的。坏块在大多数情况下也是可擦写的,并且一旦被擦掉就不可能恢复。因此,系统必须能根据坏块信息来识别坏块,并通过流程图建立坏块信息表,以防止坏块信息被擦除。
在闪存的使用中,可能会产生新的坏块,从而使正常工作出现一些错误。在擦除和编程操作后,如果出现读失败,应当进行块置换。块置换是由容量为一页的缓冲器来执行的,可以通过发现一个可擦的空块和重新对当前数据对象进行编程来复制块中的剩余部分。为了提高存储空间的使用效率,当由单个字节错误而引起的读或确认错误时,应由ECC收回而不要进行任何块置换。
4 K9K2GXXU0M的工作状态
4.1 按页读操作
K9K2GXXU0M的默认状态为读状态。读操作是以通过4个地址周期将00h地址写到指令寄存器为开始指令,一旦该指令被锁存,就不能在下页中写入读操作了。
当地址变化时,随机读操作可以将选定页中的2112字节数据在25μs内存入数据寄存器中。系统可以通过分析R/ B脚的输出来判断数据转移是否完成。而存入数据寄存器的数据可以很快地被读出,如一页的数据通过连续的RE脉冲可以在50ns内读出。
可以通过写入随机数据输出指令来从一页中随机地输出数据。数据地址可以从将要输出的数据地址中通过随机输出指令自动找到下一个地址。随机数据输出操作可以多次使用。图2给出了读操作的时序图。
4.2 页编程
K9K2GXXU0M的编程是按页进行的,但它在单页编程周期中支持多个部分页编程,而部分页的连续字节数为2112。写入页编程确认指令(10h)即可开始编程操作,但写入指令(10h)前还必须输入连续数据。
连续装载数据在写入连续数据输入指令(80h)后,将开始4个周期的地址输入和数据装载,而字却不同于编程的数据,它不需要装载。芯片支持在页中随机输入数据,并可根据随机数据输入指令(85h)自动变换地址。随机数据输入也可以多次使用。图3为其编程操作时序图。
4.3 缓存编程
缓存编程是页编程的一种,可以由2112字节的数据寄存器执行,并只在一个块中有效。因为K9K2GXXU0M有一页缓存,所以当数据寄存器被编入记忆单元中时它便可以执行连续数据输入。缓存编程只有在未完成的编程周期结束且数据寄存器从缓存中传数后才能开始。通过R/ B脚可以判断内部编程是否完成。如果系统只用R/ B来监控程序的进程,那么,最后一页目标程序的次序则必须由当前页编程指令来安排。如果由缓存编程指令来安排,状态位必须在最后一个程序执行完和下一个操作开始前确定。图4为缓存编程操作时序图。
图4 缓存编程时序图
4.4 存储单元复录
该功能可以快速有效地改写一页中的数据而不需要访问外部存储器。因为消耗在连续访问和重新装载上的时间被缩短,因而系统的执行能力会提高。尤其当块的一部分被升级而剩下的部分需要复制到新的块中去时,它的优势就明显显示出来了。该操作是一个连续执行的读指令,但不用连续地到目的地址访问和复制程序。一个原始页地址指令为“35h"的读操作,就可以把整个2112字节的数据转移到内部数据缓冲器中。当芯片返回就绪状态时,带有目的地址循环的页复制数据输入指令就会写入。而该操作中的错误程序会由“通过/失败”状态给出。但是,如果该操作的运行时间过长,将会由于数据丢失而引起位操作错误,从而导致外部错误“检查/纠正”设备检查失效。由于这个原因,该操作应使用两位错误纠正。图5给出了存储单元复录操作的时序图。
4.5 块擦除
K9K2GXXU0M的擦除操作是以块为基础进行的。块地址装载将从一个块擦除指令开始,并在两个循环内完成。实际上,当地址线A12~A17悬空时,只有地址线A18~A28可用。装入擦除确认指令和块地址即可开始擦除。该操作必须按此顺序进行,以免存储器中的内容受到外部噪声的影响而出现擦除错误。图6为块擦除操作的时序图。
4.6 读状态
K9K2GXXU0M内的状态寄存器可以确认编程和擦除操作是否成功完成。在写入指令(70h)到指令寄存器后,读循环会把状态寄存器的内容在CE或RE的下降沿输出到I/O。而在新的指令到达前,指令寄存器将保持读状态,因此如果状态寄存器在一个随机读循环中处于读状态,那么在读循环开始前应给出一个读指令。
图5和图6
5 结束语
由于闪存具有非易失性、可电擦写、掉电后数据不丢失等特点,所以得到越来越广泛的应用。同时随着闪存使用的广泛,对它容量的要求也越来越高。而K9K2GXXU0M的出现则填补了大容量闪存芯片的空白。K9K2GXXU0M除具有容量大的优点外,也可以在400μs内完成一页2112byte的编程操作,并可在2ms内完成128k byte的擦除操作,因此K9K2GXXU0M是目前外部存储的领域的一种非常好的存储芯片。