一种对闪存进行数据编程的方法和装置的制作方法

文档序号:6754354阅读:177来源:国知局
专利名称:一种对闪存进行数据编程的方法和装置的制作方法
技术领域
本发明涉及存储器技术领域,特别是涉及一种对闪存进行数据编程的方法和装置。
背景技术
闪存(Flash)是一种用于存储数据的存储装置,其具有即使停止电源供应也保持 数据未受到擦除的特性(非易失性)。由于此原因,所以闪存已被用作诸如移动电话、PDA 及MP3播放器之类的电子产品的数据存储装置,并且具有应用越来越广泛的趋势。一般来说,Flash可以分为NOR型Flash及NAND型Flash。它们的共同之处在于 数据通过编程操作存储(写入数据),且通过擦除操作擦除。二者都是是电压控制型器件, NAND型Flash的擦和写均是基于隧道效应,电流穿过浮置栅极与硅基层之间的绝缘层,对 浮置栅极进行充电(写数据)或放电(擦除数据)。而NOR型Flash擦除数据仍是基于隧 道效应(电流从浮置栅极到硅基层),但在写入数据时则是采用热电子注入方式(电流从浮 置栅极到源极)。一般的,如果执行编程操作,则Flash存储单元(cell)的阈值电压升高;相反,如 果进行擦除操作,则该Flash存储单元的阈值电压降低。例如,在NAND类型的Flash中,如 果执行编程操作,则存储单元的阈值电压增加至高于0V。如果执行擦除操作,则存储单元的 阈值电压降低至低于0V。参见图1,简单描述现有的对Flash进行编程操作的过程。步骤101、数据输入步骤;步骤102、对当前字节进行数据验证;步骤103、如果该字节需要编程,则对其进行编程,然后返回步骤102 ;步骤104、如果该字节验证通过,即所存储的数据与所需写入的数据相同,不需要 编程操作了,则结束对该字节的编程操作,进入下一字节的编程过程。针对每个所需编程的字节,重复完成上述的步骤102到104,就可以实现对Flash 的编程操作了。但是在实际应用中,上述编程操作过程存在一些问题和缺陷。具体的,在编程过 程中,当对一个字节编程完成之后需要对其编程结果进行验证,如果验证不通过的话,还需 要对该字节重新进行编程操作。由于在这个过程中,编程操作和验证操作对控制Flash的 cell的栅极和漏极所加的电压是不同的,当对单字节操作(一个字节位对应一个cell)时, 不停的切换控制栅极和漏极电压将极大的影响编程速度。例如,对于NOR型Flash而言,在编程操作时,栅极和漏极所加的电压分别大约是 9. OV和4. 2V,而在验证操作时,栅极和漏极所加的电压分别是5. 5V和1. 0V。栅极电压和 漏极电压分别由电压泵产生,电压在大幅度切换的时候,需要充放电的时间。由于现有技术 中的电压切换次数较多,充放电时间加起来就比较可观,严重影响编程速度。总之,目前需要本领域技术人员迫切解决的一个技术问题就是如何能够提出一种改进型的编程操作方法,可以提高现有的Flash编程速度。

发明内容
本发明所要解决的技术问题是提供一种对闪存Flash进行数据编程的方法和装 置,其可以基于Flash的一个整页进行数据编程,减少控制栅极和漏极的电压的切换次数, 从而可以提高现有的Flash编程速度。为了解决上述技术问题,本发明实施例公开了一种对闪存进行数据编程的方法, 包括以下步骤步骤a、数据输入步骤;步骤b、验证整个当前页,获取其中需要进行编程的字节,并记录至相应的缓冲存 储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程,进入下一 页;步骤C、依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程;如果对 当前页中所需编程的字节均已编程,则返回步骤b;否则,继续执行步骤c,对下一字节进行 操作。优选的,对于步骤b,还可以包括当所输入的数据均已编程完毕时,则无需进入 下一页,结束整个编程操作。优选的,通过以下步骤验证整个当前页从该页的起始地址开始以字节为单位,比 较需要向该字节写入的数据和该字节已存储的数据;将比较结果写入与该字节地址相对应 的缓冲存储器的相应位置;重复上述步骤,直至验证完整个当前页。优选的,当进行操作的当前字节的地址为当前页的最后一个地址时,判定为对当 前页中所需编程的字节均已编程。优选的,步骤c可以进一步包括读取缓冲存储器所存储的比较结果;如果需要编 程,则对相应的字节进行编程后执行下一步骤;否则,直接执行下一步骤;判断当前字节是 否为当前页的最后一个地址,如果是,则返回步骤b,否则,返回读取缓冲存储器所存储的下 一个比较结果。优选的,在步骤b中,当对于当前页的验证属于编程后验证时,仅验证进行了编程 操作的字节。依据本发明的另一实施例,还公开了一种对闪存进行数据编程的装置,包括以下 部件数据输入单元;验证单元,用于验证整个当前页,获取其中需要进行编程的字节,并记录至相应的 缓冲存储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程操作, 进入下一页;编程单元,用于依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程; 当对当前页中所需编程的字节均已编程时,则触发验证单元;否则,继续对下一字节进行操 作。优选的,所述验证单元可以进一步包括 比较模块,用于从该页的起始地址开始以字节为单位,比较需要向该字节写入的数据和该字节已存储的数据;记录模块,用于将比较结果写入与该字节地址相对应的缓冲存储器的相应位置;调度模块,用于重复调用上述模块,直至验证完整个当前页。优选的,所述编程单元可以进一步包括读取模块,用于读取缓冲存储器所存储的比较结果;编程模块,用于当需要编程时,则对相应的字节进行编程后触发第一跳转模块;否则,直接触发第一跳转模块;第一跳转模块,用于判断当前字节是否为当前页的最后一个地址,如果是,则触发验证单元,否则,通知读取模块读取缓冲存储器所存储的下一个比较结果。优选的,所述验证单元还可以包括第二跳转模块,当数据输入单元所输入的数据均已编程完毕时,则无需进入下一页,结束整个编程操作。与现有技术相比,本发明具有以下优点一般的,Flash可以分为多个块(block),每个块(block)又可以分为多个扇区(sector),每个扇区(sector)又可以分为多个页(page),每个页(page)可以包括多个字 节。本发明将编程操作过程中的数据验证步骤和数据写入步骤针对一个整页进行,从而可 以在对一个整页的字节中所存储的数据进行验证后再进行数据写入,并在对一个整页的字 节进行数据写入之后再进行整页的数据验证,所以可以大大降低加载栅极和漏极上不同电 压的切换次数,节约了栅极和漏极电压泵的充放电时间,进而提高了 Flash的编程速度。而对于Flash而言,页是Flash进行编程操作的逻辑最小单位,一般的,每次数据编程操作都会占用至少一个页,所以本发明在提高编程速度的基础上,同时也不会影响编 程结果。


图1是现有技术进行Flash编程操作的步骤流程图;图2是本发明一种对Flash进行数据编程的方法实施例1的步骤流程图;图3是本发明一种对Flash进行数据编程的方法实施例2的步骤流程图;图4是本发明一种对Flash进行数据编程的装置实施例的结构框图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。本发明的核心思想之一在于改变了现有技术针对单个字节进行验证、编程等重复操作的模式,而采用了针对整个页进行验证、编程等重复操作的模式,使得在验证操作或 者编程操作时,可以针对批量的字节进行,从而可以减少加载栅极和漏极上不同电压的切 换次数,节约了切换所需的充放电时间,提高了 Flash的编程速度。参照图2,示出了一种对闪存进行数据编程的方法实施例1,其特征在于,包括步骤201、数据输入步骤;更具体地讲,所接收的数据(即所需写入的数据)可以 被存储于闪存的页缓冲器中,以便后续编程步骤所获取;步骤202、验证整个当前页,获取其中需要进行编程的字节,并记录至相应的缓冲存储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程操作,进入 下一页; 当然,需要说明的是,当所输入的数据均已编程完毕时,则无需进入下一页的验证 和编程过程,直接结束整个编程操作即可。步骤203、依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程;步骤204、如果对当前页中所需编程的字节均已编程,则返回步骤202。否则,继续 执行步骤203,对当前页中的下一字节进行操作。如果是对当前页按照从起始地址到末尾地 址的方式对各个字节进行操作的,则当进行操作的当前字节的地址为当前页的最后一个地 址时,就可以知悉对当前页中所需编程的字节均已编程。返回步骤202后,重新验证当前页,以检验编程是否正确,如果存在编程不正确的 字节,则仍然需要对其进行再次编程,直至全部正确为止,即在当前页中没有需要进行编程 的字节了,然后进入对下一页的验证和编程过程。对于NOR型Flash和NAND型Flash而言,针对二者的数据编程操作过程基本相同, 只是施加到存储器单元上的操作电压具有不同电平而已,本发明实施例中就不再分别进行 说明了。图2所示出的编程实施例可以应用在用户写入数据的各种情况下,当然,由于在 Flash操作中,一般都是在擦除操作之后才进行编程操作的,S卩,本实施例可以在存储于存 储器单元中的数据被全部擦除的情况下执行编程操作。对此,属于本领域技术人员所应熟 知的,本发明不再详述。在步骤202的验证步骤中,一种情况是,首次对该页进行验证,以确定该页中有哪 些字节需要被编程;另一种情况是,对经过编程的页进行验证,以检查其是否被正确编程。 在两种情况下,都可以对该页的所有字节进行逐个比较,以确定需要被编程写入数据的字 节,并记录结果。在本发明的一个优选实施例中,在对经过编程的页进行验证时,也可以仅仅验证 本次编程写入操作所涉及的字节即可,因为其他字节在之前的验证步骤中已经被验证通 过,可以省略。当然,由于在编程写入过程中可能影响相邻cell,导致其数据状态发生变 化,为了避免这种情况,则可以验证当前页的全部字节。公知的是,一个字节位就对应一个 cell,一般的,一个字节有8位,则一个字节就对应8个cell。验证步骤的基本原理是,把一个编程验证条件下的读电压加到cell的栅极上,然 后把漏极上的电流转换为电压,并同参考电压进行比较,依据比较结果,判定该cell中所 存储的数据是“1”还是“0”;然后再与当前字节所需编程写入的数据(即步骤101所接收的 数据)进行比较,如果一致,则说明该字节不需要编程写入了,否则就说明需要编程写入。 例如,先执行擦除操作,则当前页中的所有字节的cell都应该为“1”,如果所需编程写入的 数据恰好为“1”,则就无需对当前字节进行编程了,而当所需编程写入的数据为“0”时,则 需要记录该cell的比较结果——“不一致”。步骤203就是对这些比较结果为“不一致”的 cell进行编程。优选的,在步骤202中,可以通过以下更为细化的步骤验证整个当前页从该页的 起始地址开始以字节为单位,比较需要向该字节写入的数据和该字节已存储的数据;将比 较结果写入与该字节地址相对应的缓冲存储器的相应位置;重复上述步骤,直至验证完整个当前页。即在缓冲存储器中详细记录每个字节中每个cell的比较结果,然后在编程步骤 中,对比较结果为“不一致”的cell进行编程。优选的,编程步骤可以细化为以下的几个子步骤读取缓冲存储器所存储的比较 结果;如果需要编程,则对相应的字节进行编程后执行步骤204 ;否则,直接执行步骤204。 步骤204中用于判定所有字节均已编程的条件可以为判断当前字节是否为当前页的最后 一个地址,如果是,则判定为均已编程。如果在步骤204中,当前字节不是当前页的最后一 个地址,则返回步骤203继续执行,读取缓冲存储器所存储的下一个比较结果。参照图3,示出了本发明一种对闪存进行数据编程的实施例2,具体可以包括步骤301、从一页的起始地址开始以 字节为单位进行验证,比较该字节所存储的数 据和所需写入的数据是否一致;将结果写入该字节地址对应的缓冲存储器中;当然,一般 不会一个字节对应一个缓冲存储器,可以将该字节的比较结果存储至缓冲存储器中与该字 节地址相对应的位置上。步骤302、验证完当前字节后,增加字节地址,对下一地址的字节进行验证,直到验 证完整个页。具体的,可以通过判断当前验证的字节是不是该页的最后一个字节,如果是, 则执行下一步骤,否则,增加字节地址,继续进行验证。步骤303、根据验证结果确认是否将要进行编程操作,如果需要的话则执行步骤 304,否则结束针对本页的编程操作。即查看缓冲存储器中所存储的比较结果中是否存在 “否”的情况(即所需写入的数据和原存储的数据不一致),如果有,则说明需要对当前页中 的一些字节进行编程。步骤304、从缓冲存储器中读出一个比较结果,根据比较结果判断是否要对该字节 进行编程,如果需要的话则执行步骤305,否则执行步骤306。简单的,存储全部的比较结 果,依次读取即可,这样可以减少对字节地址的计算。当然,也可以直接记录“不一致”的比 较结果和相应字节的地址,而不用记录“一致”的比较结果,即仅仅记录需要进行编程的字 节地址。步骤305、根据所接收的数据(需要向该字节写入的数据)向对应地址的字节进行 编程操作。步骤306、判断当前操作的字节是否为该页的最后一个字节(如,其地址是该页的 最后一个地址),如果是,则返回执行步骤301,对编程完的当前页再次进行验证,以确保数 据编程写入准确完成。如果不是该页的最后一个字节,则返回执行步骤304,继续读取下一 个比较结果。步骤306中所述的当前操作,在执行编程写入时,为编程写入操作;在不执行编程 写入时,为读取比较结果的操作。参照图4,示出了本发明一种对闪存进行数据编程的装置实施例,具体可以包括以 下部件数据输入单元401;验证单元402,用于验证整个当前页,获取其中需要进行编程的字节,并记录至相 应的缓冲存储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程 操作,进入对下一页的验证编程操作;编程单元403,用于依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程;当对当前页中所需编程的字节均已编程时,则触发验证单元402;否则,继续对下一字 节进行操作。 在一个优选实施例中,所述验证单元402可以进一步包括以下子模块比较模块4021,用于从该页的起始地址开始以字节为单位,比较需要向该字节写 入的数据和该字节已存储的数据;记录模块4022,用于将比较结果写入与该字节地址相对应的缓冲存储器的相应位 置;调度模块4023,用于重复调用上述模块,直至验证完整个当前页。在一个优选实施例中,所述编程单元403可以进一步包括以下子模块读取模块4031,用于读取缓冲存储器所存储的比较结果;编程模块4032,用于当需要编程时,则对相应的字节进行编程后触发第一跳转模 块4033 ;否则,直接触发第一跳转模块4033 ;第一跳转模块4033,用于判断当前字节是否为当前页的最后一个地址,如果是,则 触发验证单元402,否则,通知读取模块4031读取缓冲存储器所存储的下一个比较结果。优选的,图4所示实施例中,所述验证单元402还可以包括第二跳转模块4024,当数据输入单元401所输入的数据均已编程完毕时,如果验 证单元402确定在当前页中没有需要进行编程的字节,则无需进入下一页,结束整个编程 操作即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与 其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例 而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部 分说明即可。需要说明的是,本发明的装置实施例可以采用硬件电路的方式设置在Flash闪存 中而实现,也可以作为外部器件单独存在,例如,针对需要采用专用工具进行编程写入的情 况。以上对本发明所提供的一种对Flash闪存进行数据编程的方法和装置,进行了详 细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说 明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据 本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不 应理解为对本发明的限制。
权利要求
一种对闪存进行数据编程的方法,其特征在于,包括步骤a、数据输入步骤;步骤b、验证整个当前页,获取其中需要进行编程的字节,并记录至相应的缓冲存储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程,进入下一页;步骤c、依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程;如果对当前页中所需编程的字节均已编程,则返回步骤b;否则,继续执行步骤c,对下一字节进行操作。
2.如权利要求1所述的方法,其特征在于,对于步骤b,还包括当所输入的数据均已编程完毕时,则无需进入下一页,结束整个编程操作。
3.如权利要求1所述的方法,其特征在于,通过以下步骤验证整个当前页从该页的起始地址开始以字节为单位,比较需要向该字节写入的数据和该字节已存储的数据;将比较结果写入与该字节地址相对应的缓冲存储器的相应位置; 重复上述步骤,直至验证完整个当前页。
4.如权利要求3所述的方法,其特征在于,当进行操作的当前字节的地址为当前页的 最后一个地址时,判定为对当前页中所需编程的字节均已编程。
5.如权利要求3所述的方法,其特征在于,步骤c进一步包括 读取缓冲存储器所存储的比较结果;如果需要编程,则对相应的字节进行编程后执行下一步骤;否则,直接执行下一步骤; 判断当前字节是否为当前页的最后一个地址,如果是,则返回步骤b,否则,返回读取缓 冲存储器所存储的下一个比较结果。
6.如权利要求3所述的方法,其特征在于,在步骤b中,当对于当前页的验证属于编程 后验证时,仅验证进行了编程操作的字节。
7.一种对闪存进行数据编程的装置,其特征在于,包括 数据输入单元;验证单元,用于验证整个当前页,获取其中需要进行编程的字节,并记录至相应的缓冲 存储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程操作,进入 下一页;编程单元,用于依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程;当对 当前页中所需编程的字节均已编程时,则触发验证单元;否则,继续对下一字节进行操作。
8.如权利要求7所述的装置,其特征在于,所述验证单元进一步包括比较模块,用于从该页的起始地址开始以字节为单位,比较需要向该字节写入的数据 和该字节已存储的数据;记录模块,用于将比较结果写入与该字节地址相对应的缓冲存储器的相应位置; 调度模块,用于重复调用上述模块,直至验证完整个当前页。
9.如权利要求7或8所述的装置,其特征在于,所述编程单元进一步包括 读取模块,用于读取缓冲存储器所存储的比较结果;编程模块,用于当需要编程时,则对相应的字节进行编程后触发第一跳转模块;否则, 直接触发第一跳转模块;第一跳转模块,用于判断当前字节是否为当前页的最后一个地址,如果是,则触发验证 单元,否则,通知读取模块读取缓冲存储器所存储的下一个比较结果。
10.如权利要求8所述的装置,其特征在于,所述验证单元还包括 第二跳转模块,当数据输入单元所输入的数据均已编程完毕时,则无需进入下一页,结 束整个编程操作。
全文摘要
本发明公开了一种对闪存进行数据编程的方法,包括步骤a、数据输入步骤;步骤b、验证整个当前页,获取其中需要进行编程的字节,并记录至相应的缓冲存储器;如果在当前页中没有需要进行编程的字节,则结束对当前页的数据编程,进入下一页;步骤c、依据所述缓冲存储器所记录的信息,依次对相应的字节进行编程;如果对当前页中所需编程的字节均已编程,则返回步骤b;否则,继续执行步骤c,对下一字节进行操作。本发明将编程操作过程中的数据验证步骤和数据写入步骤针对一个整页进行,可以大大降低加载栅极和漏极上不同电压的切换次数,节约了栅极和漏极电压泵的充放电时间,进而提高了Flash的编程速度。
文档编号G11C16/10GK101800077SQ20091007769
公开日2010年8月11日 申请日期2009年2月11日 优先权日2009年2月11日
发明者潘荣华 申请人:北京芯技佳易微电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1