CN111863101B - 一种非易失性存储器的编程方法和装置 - Google Patents
一种非易失性存储器的编程方法和装置 Download PDFInfo
- Publication number
- CN111863101B CN111863101B CN201910357583.6A CN201910357583A CN111863101B CN 111863101 B CN111863101 B CN 111863101B CN 201910357583 A CN201910357583 A CN 201910357583A CN 111863101 B CN111863101 B CN 111863101B
- Authority
- CN
- China
- Prior art keywords
- programming
- verification
- programming voltage
- voltage step
- memory cell
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Read Only Memory (AREA)
Abstract
本发明提供一种非易失性存储器的编程方法和装置,非易失性存储器的编程方法包括:接收编程指令,根据编程指令中的地址信息获取存储区域内存储的存储单元的第一编程电压档位;验证需要编程的存储单元是否达到编程需求;如果验证未通过,则根据第一编程电压档位产生第一编程电压,对存储单元进行编程操作,并将验证次数加1,得到新的验证次数;若新的验证次数达到第一验证次数,则根据第一验证次数得到第二编程电压档位,第二编程电压档位是存储单元下次编程时使用的编程电压档位。通过验证次数调整编程电压,可以使存储单元的阈值电压提高到编程验证电压之上,缩短存储单元的编程时间,提高非易失性存储器的编程效率。
Description
技术领域
本发明涉及数据存储领域,特别是涉及一种非易失性存储器的编程方法和装置。
背景技术
非易失性存储器是指断电以后,存储器内的信息仍然可以保存的存储芯片,非易失性存储器由浮栅晶体管构成,对存储器中的每个存储单元而言浮栅晶体管中的浮栅层中存储的电荷量决定了存储单元的阈值电压,而存储单元的阈值电压决定了存储单元中存储的数据是0,还是1。
现有技术中,对非易失性存储器的编程方法如图1所示,接收编程指令后,首先使用编程验证电压对非易失性存储器中的待编程单元进行编程验证,验证存储单元的阈值电压是否符合要求,如果验证通过,则说明需要写入该存储单元中的数据与该存储单元中存储的数据一致,结束整个编程操作;如果编程验证没有通过,则使用编程电压对非易失性存储器中的待编程单元进行编程,当编程结束后,验证次数加1,然后判断验证次数是否达到出厂时设定的最大验证次数,如果达到最大验证次数,则结束整个编程操作,否则,进入编程验证状态,重复编程操作,直至编程验证通过,结束编程。
在非易失性存储器的编程过程中,需要编程的存储单元的阈值电压需保持在编程验证电压之上。但是,当非易失性存储器使用比较久后,随着编程次数的增加,对非易失性存储器内各存储单元的擦写操作次数增加,存储单元的阈值电压会越来越低,逐渐接近甚至低于编程验证电压,导致不易通过编程验证,从而使编程时间越来越长,有些存储单元甚至无法进行编程,编程效率低。
发明内容
本发明提供了一种非易失性存储器的编程方法和装置,以解决现有技术中非易失性存储器的编程性能随编程次数的增加而逐渐下降后造成编程时间长,编程效率低的问题。
为了解决上述问题,本发明实施例的第一方面,提供了一种非易失性存储器的编程方法,包括:
接收编程指令,所述编程指令中包含需要对所述非易失性存储器内的存储单元进行编程的地址信息;
根据所述地址信息,获取与所述存储单元对应的第一编程电压档位;
对所述存储单元进行验证;
若验证未通过,则根据所述第一编程电压档位,获取与所述第一编程电压档位匹配的第一编程电压,使用所述第一编程电压,对所述存储单元进行编程操作,并将验证次数加1获得新的验证次数;
确定所述新的验证次数是否等于第一验证次数;
若确定所述新的验证次数等于所述第一验证次数,则根据所述新的验证次数,确定第二编程电压档位,所述第二编程电压档位是下次对所述存储单元进行编程操作时使用的编程电压档位,所述第一验证次数为最大验证次数。
优选地,所述方法还包括:
若确定所述新的验证次数小于所述第一验证次数,则重复执行所述对所述存储单元进行验证的操作;
若验证通过,则根据所述新的验证次数,确定第二编程电压档位。
优选地,所述根据所述新的验证次数,确定第二编程电压档位,包括:
若所述新的验证次数小于等于第二验证次数,则根据所述新的验证次数与预设值的比值P,确定第二编程电压档位,所述P为正整数,所述第二编程电压档位为所述第一编程电压档位与所述P之和。
优选的,所述根据所述新的验证次数,确定第二编程电压档位,包括:
若所述新的验证次数大于第二验证次数且小于所述第一验证次数,则将所述第一编程电压档位加1获得第二编程电压档位,所述第二验证次数小于第一验证次数。
优选的,在所述接收编程指令之前,还包括:
在所述非易失性存储器内设置存储区域,所述存储区域用于存储所述非易失性存储器中的存储单元的第一编程电压档位。
优选的,在所述根据所述新的验证次数,确定第二编程电压档位之后,还包括:
将所述第二编程电压档位作为第一编程电压档位存储在所述存储区域。
本发明实施例的第二方面,提供了一种非易失性存储器的编程装置,包括:
接收模块,用于接收编程指令,所述编程指令中包含需要对所述非易失性存储器内的存储单元进行编程的地址信息;
获取模块,用于根据所述地址信息,获取与所述存储单元对应的第一编程电压档位;
验证模块,用于对所述存储单元进行验证;
编程模块,用于若验证未通过,则根据所述第一编程电压档位,获取与所述第一编程电压档位匹配的第一编程电压,使用所述第一编程电压,对所述存储单元进行编程操作,并将验证次数加1获得新的验证次数;
第一验证次数确定模块,用于确定所述新的验证次数是否等于第一验证次数;
第一电压档位确定模块,用于若确定所述新的验证次数等于所述第一验证次数,则根据所述新的验证次数,确定第二编程电压档位,所述第二编程电压档位是下次对所述存储单元进行编程操作时使用的编程电压档位,所述第一验证次数为最大验证次数。
优选的,所述装置还包括:
第二验证次数确定模块,用于若确定所述新的验证次数小于所述第一验证次数,则重复执行所述对所述存储单元进行验证的操作;
第二电压档位确定模块,用于若验证通过,则根据所述新的验证次数,确定第二编程电压档位。
优选的,所述第二验证次数确定模块包括:
第一验证次数确定单元,用于若所述新的验证次数小于等于第二验证次数,则根据所述新的验证次数与预设值的比值P,确定第二编程电压档位,所述P为正整数,所述第二编程电压档位为所述第一编程电压档位与所述P 之和。
优选的,所述第二验证次数确定模块包括:
第二验证次数确定单元,用于若所述新的验证次数大于第二验证次数且小于所述第一验证次数,则将所述第一编程电压档位加1获得第二编程电压档位,所述第二验证次数小于第一验证次数。
优选的,所述装置还包括:
设置模块,用于在所述非易失性存储器内设置存储区域,所述存储区域用于存储所述非易失性存储器中的存储单元的第一编程电压档位。
优选的,所述装置还包括:
存储模块,用于将所述第二编程电压档位作为第一编程电压档位存储在所述存储区域。
与现有技术相比,本发明具有以下优点:
本发明实施例提供的非易失性存储器的编程方法和装置,根据非易失性存储器中存储单元在编程过程中的编程验证次数,调整存储单元的编程电压,可以使需要编程的存储单元的阈值电压提高到编程验证电压之上,缩短存储单元的编程时间,提高非易失性存储器的编程效率。
附图说明
图1为现有技术中非易失性存储器的编程方法的步骤流程图;
图2为现有技术中非易失性存储器系统的结构框图;
图3为本发明实施例所提供的产生编程电压的电路图;
图4为本发明实施例所提供的一种非易失性存储器的编程方法流程图;
图5为本发明实施例所提供的另一种非易失性存储器的编程方法流程图;
图6为本发明实施例所提供的一种非易失性存储器的编程装置的结构示意图;
图7为本发明实施例所提供的另一种非易失性存储器的编程装置的结构示意图;
图8为本发明优选实施例提供的第二验证次数确定模块的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
为了更方便的介绍本发明实施例,在此首先针对现有技术中非易失性存储器的编程方法的步骤流程进行说明,图1为现有技术中非易失性存储器的编程方法的步骤流程图。参照图1,图1为现有技术中非易失性存储器的编程方法的步骤流程图。接收编程指令后,首先使用编程验证电压对非易失性存储器中的待编程单元进行编程验证,验证存储单元的阈值电压是否符合要求,如果验证通过,则说明待编程数据和待编程的存储单元中存储的数据一致,结束整个编程操作;如果编程验证没有通过,则使用编程电压对非易失性存储器中的待编程单元进行编程,当编程结束后,验证次数加1,然后判断验证次数是否达到出厂时设定的最大验证次数,如果达到最大验证次数,则结束整个编程操作,否则,进入编程验证状态,重复编程操作,直至编程验证通过,结束编程。
其次,对本发明的应用场景进行介绍,本发明主要应用于非易失性存储器的编程中。参照图2,图2为现有技术中非易失性存储器系统的结构框图,非易失性存储系统主要包括控制器CPU,用于控制整个系统的运行存储器控制器,用于执行数据在非易失性存储器的存储和检索,以及用于存储数据的非易失性存储器。
图3为本发明实施例所提供的产生编程电压的电路图,参照图3,图3 采用运算放大器进行电压的放大,图中301为放大电路的输入电压,表示参考电压301,参考电压由编程电压档位控制产生。302为放大电路的输出电压,表示存储单元的编程电压。图中pump为电荷泵电路,用于增加运算放大器的输出电压,得到符合需求的编程电压。
实施例一:
图4为本发明实施例所提供的一种非易失性存储器的编程方法流程图;参考图4,本实施例中非易失性存储器的编程方法,包括:
步骤S401、接收编程指令,编程指令中包含需要对非易失性存储器内的存储单元进行编程的地址信息。
其中,该编程指令是由控制器CPU发送的指令信息,该编程指令中包含对需要编程的非易失性存储器中的某个具体的存储单元的地址信息,以及需要写入该存储单元中的数据信息等。
示例的,在接收到编程指令后,解析该编程指令,获取该编程指令中的地址信息和数据信息,该地址信息指示存储单元在该非易失性存储器中具体位置,数据信息表示需要写入该存储单元中的数据。
步骤S402、根据地址信息,获取与存储单元对应的第一编程电压档位。
其中,第一编程电压档位为一具体的参数,每个档位参数对应一个具体的电压值。
示例的,在编程操作之前,预先在非易失性存储器中设置一个存储区域,用于存储该非易失性存储器中的每个存储单元的第一编程电压档位。
具体的,在获取得到存储单元的地址信息后,根据该地址信息,读取该存储区域内存储的与该存储单元对应的第一编程电压档位。
步骤S403、对存储单元进行验证。
其中,该验证操作是验证存储单元中存储的数据是否与需要写入该存储单元中的数据信息一致。
示例的,可以验证存储单元的阈值电压是否达到需要编程到的阈值电压范围。当进行编程验证操作时,在该存储单元的控制栅极上施加验证电压,在该存储单元的漏极施加一定的电压,判断该存储单元的导通状态,以判断该存储单元的阈值电压是否达到需要编程的阈值电压,以验证该存储单元中存储的数据是否与需要写入该存储单元中的数据一致。具体的验证方法可参考现有技术中对非易失性存储器中存储单元的验证方法,本实施例对此不做约束。
在本实施例中,在读取到该存储单元的第一编程电压档位后,首先验证该存储单元中存储的数据是否与需要写入该存储单元中的数据一致。
步骤S404、若验证未通过,则根据第一编程电压档位,获取与第一编程电压档位匹配的第一编程电压,使用第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。
其中,第一编程电压是对该存储单元进行编程操作时的编程电压值,第一编程电压是与第一编程电压档位对应的编程电压值。验证次数指的是在本次编程过程中,对该存储单元执行验证的次数,在本次编程开始时,该验证次数为零。编程操作是指对存储单元进行编程,如果该非易失性存储器为 Nand Flash存储器则采用F-N隧穿的编程方式对存储单元进行编程操作,如果该非易失性存储器为Nor Flash存储器则采用热电子注入的方式对存储单单元进行编程。
示例的,参照图3和图4,若验证未通过,则根据获取得到第一编程电压档位控制产生参考电压301,通过放大电路放大后产生第一编程电压302。使用该第一编程电压,对该存储单元进行编程操作。编程完成后,验证次数加1,得到新的验证次数。
步骤S405、确定新的验证次数是否等于第一验证次数。
其中,第一验证次数是指在本次编程过程中,对该存储单元执行验证操作的最大次数。
示例的,在每次编程过程中,会对存储单元执行多次编程操作,对应的每次编程操作后都会对该存储单元进行验证。在验证后,对验证次数加1,得到新的验证次数,判断新的验证次数是否达到第一验证次数,当新的验证次数未达到第一编程验证次数时,重复对编程单元施加第一编程电压,重复执行编程操作。
步骤S406、若确定新的验证次数等于第一验证次数,则根据新的验证次数,确定第二编程电压档位,第二编程电压档位是下次对存储单元进行编程操作时使用的编程电压档位,第一验证次数为最大验证次数。
示例的,当新的验证次数等于第一验证次数时,根据新的验证次数,确定第二编程电压档位,此时新的验证次数等于第一验证次数。该第二编程电压档位用于在该存储单元的下次编程时产生相应的编程电压值,该第二编程电压档位,即该存储单元下次编程时使用的第一编程电压档位。
本实施例提供的用于非易失性存储器的编程方法,通过接收编程指令,编程指令中包含需要对非易失性存储器内的存储单元进行编程的地址信息,根据地址信息,获取与存储单元对应的第一编程电压档位,对存储单元进行验证,若验证未通过,则根据第一编程电压档位,获取与第一编程电压档位匹配的第一编程电压,使用第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数,在确定新的验证次数等于第一验证次数的情况下,根据新的验证次数,确定第二编程电压档位,第二编程电压档位是下次对存储单元进行编程操作时使用的编程电压档位,第一验证次数为最大验证次数。对非易失性存储器中的存储单元进行编程时,当验证次数达到最大验证次数时,结束编程操作,并重新确定该存储单元的编程电压档位,当下次对该存储单元进行编程时,使用与新的编程电压档位对应的编程电压对该存储单元进行编程,在存储单元性能下降时,通过增加编程电压,提高存储单元的阈值电压,降低了存储单元的编程时间,提高了编程效率。从而解决了现有技术中非易失性存储器的编程性能随编程次数的增加而逐渐下降后造成编程时间长,编程效率低的问题。
图5为本发明实施例所提供的另一种非易失性存储器的编程方法流程图;参考图5,本实施例中非易失性存储器的编程方法,包括:
步骤S501、在非易失性存储器内设置存储区域,存储区域用于存储非易失性存储器中的存储单元的第一编程电压档位。
其中,存储区域可以是该非易失性存储器中任意的一个存储区域。该存储区域用于存储该非易失性存储区域中的每个存储单元的第一编程电压档位。
示例的,在接收到编程指令之前,设置一个存储区域,设置需要进行编程的存储单元的第一编程电压档位,将第一编程电压档位存储在该存储区域内。
通过设置存储区域存储需要编程的存储单元的第一编程电压档位,可以方便调整存储单元的第一编程电压档位。
步骤S502、接收编程指令,编程指令中包含需要对非易失性存储器内的存储单元进行编程的地址信息。
其中,该编程指令是由控制器CPU发送的指令信息,该编程指令中包含对需要编程的非易失性存储器中的某个具体的存储单元的地址信息,以及需要写入该存储单元中的数据信息等。
示例的,在接收到编程指令后,解析该编程指令,获取该编程指令中的地址信息和数据信息,该地址信息指示存储单元在该非易失性存储器中具体位置。
步骤S503、根据地址信息,获取与存储单元对应的第一编程电压档位。
其中,第一编程电压档位为一具体的参数,每个档位参数对应一个具体的电压值。
示例的,在获取得到存储单元的地址信息后,根据该地址信息,读取该存储区域内存储的该存储单元的第一编程电压档位。
步骤S504、对存储单元进行验证。
其中,该验证操作是验证存储单元中存储的数据是否与需要写入该存储单元中的数据一致。
示例的,可以验证存储单元的阈值电压是否达到需要编程到的阈值电压范围。当进行编程验证操作时,在该存储单元的控制栅极上施加验证电压,在该存储单元的漏极施加一定的电压,判断该存储单元的导通状态,以判断该存储单元的阈值电压是否达到需要编程的阈值电压,以验证该存储单元中存储的数据是否与需要写入该存储单元中的数据一致。具体的验证方法可参考现有技术中对非易失性存储器中存储单元的验证方法,本实施例对此不做约束。
步骤S505、判断验证是否通过。
在本实施例中,在读取到该存储单元的第一编程电压档位后,首先验证该存储单元中存储的数据是否与需要写入该存储单元中的数据一致。若验证通过,则执行步骤S509,若验证未通过,则执行步骤S506。
步骤S506、若验证未通过,则根据第一编程电压档位,获取与第一编程电压档位匹配的第一编程电压,使用第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。
其中,第一编程电压是对该存储单元进行编程操作时的编程电压值,第一编程电压是与第一编程电压档位对应的编程电压值。验证次数指的是在本次编程过程中,对该存储单元执行验证的次数,在本次编程开始时,该验证次数为零。
步骤S507、确定新的验证次数是否小于第一验证次数。
其中,第一验证次数是指在本次编程过程中,对该存储单元执行验证操作的最大次数。
示例的,在每次编程中,会对存储单元执行多次编程操作,对应的每次编程操作后都会对该存储单元进行验证。在验证后,对验证次数加1后,得到新的验证次数,若新的验证次数等于第一验证次数,则执行步骤S508。
若新的验证次数小于第一验证次数,则返回执行步骤S504。
步骤S508、若确定新的验证次数等于第一验证次数,则根据新的验证次数,确定第二编程电压档位,第二编程电压档位是下次对存储单元进行编程操作时使用的编程电压档位,第一验证次数为最大验证次数。
示例的,当新的验证次数等于第一验证次数时,根据新的验证次数,确定第二编程电压档位,此时新的验证次数等于第一验证次数。该第二编程电压档位用于在该存储单元的下次编程时产生相应的编程电压值,该第二编程电压档位,即该存储单元在下次编程过程中使用的第一编程电压档位。
步骤S509、若验证通过,则根据新的验证次数,确定第二编程电压档位。
示例的,当新的验证次数小于第一验证次数时,对存储单元进行验证,并判断验证是否通过,若验证通过,则根据新的验证次数,确定第二编程电压档位。该第二编程电压档位用于在该存储单元的下次编程时产生相应的编程电压值。该第二编程电压档位,即该存储单元在下次编程时使用的第一编程电压档位。
具体的,可以通过以下方式根据新的验证次数,确定第二编程电压档位。
方式一,若新的验证次数小于等于第二验证次数,则根据新的验证次数与预设值的比值P,确定第二编程电压档位,P为正整数,第二编程电压档位为第一编程电压档位与P之和。
其中,第二验证次数为小于第一验证次数的整数值,预设值为预先设置的正整数值。
示例的,预先设置第一编程电压档位为1,第一验证次数为32,第二验证次数为16,预设值为4,则当新的验证次数为8时,该第二编程验证电压档位为第一编程电压档位加新的验证次数与预设值的比值,即第一编程电压档位=1+8/4=3,其中,预设值可以根据编程经验预先设定。
本实施例中,当新的验证次数小于第二验证次数时,表示此时非易失性存储器中的该存储单元在编程过程中,执行编程操作和验证的次数较少,该存储单元的性能较好,此时根据新的验证次数与预设值的比较确定第二编程电压档位,可以更加及时的调整第二编程电压的档位。
方式二,若新的验证次数大于第二验证次数且小于第一验证次数,则将第一编程电压档位加1获得第二编程电压档位,第二验证次数小于第一验证次数。
示例的,当第一编程电压档位为2,第一验证次数为32,第二验证次数为16,当新的验证次数为17时,17>16,第二编电压档位为第一编程电压档位加1,即第二编程电压档位=2+1=3。
本实施例中,当新的验证次数大于第二验证次数且小于第一验证次数时,表示此时非易失性存储器中的该存储单元在编程过程中,执行编程操作和验证的次数较多,该存储单元的性能较差,在每次在验证次数大于第二验证次数时增加第一编程电压的档位,可以更加及时的调整第二编程电压的档位。
步骤S510、将第二编程电压档位作为第一编程电压档位存储在存储区域。
示例的,在得到第二编程电压档位后,将第二编程电压档位作为新的第一编程电压档位存储在存储区域内,供该存储单元在下次编程过程中读取使用。
本实施例提供的用于非易失性存储器的编程方法,编程操作前,在非易失性存储器中设置一个特定的存储区域,并为每个需要编程的存储单元设置第一编程电压档位,将第一编程电压档位存储在存储区域内,当接收到编程指令后,根据编程指令中的地址信息读取存储区域内存储的第一编程电压档位,对存储单元进行验证,如果验证未通过,则根据第一编程电压档位获取第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。如果验证通过,则根据新的验证次数,确定第二编程电压档位,将该第二编程电压档位存储在存储区域,用于该存储单元下次编程过程中,读取该编程电压档位,使用该编程电压进行编程操作。在存储单元的每次编程过程中,根据验证次数调整编程电压档位,作为该存储单元下次编程时的电压档位,在该存储单元的下次编程中使用改变后的编程电压,随着存储单元性能的下降,不断的调整存储单元的编程电压,以提高存储单元的阈值电压,可以缩短存储单元的编程时间,提高非易失性存储器的编程效率。
图6为本发明实施例提供的一种非易失性存储器的编程装置的结构示意图,参见图6,图6所示的编程装置包括:接收模块601、获取模块602、验证模块603、编程模块604、第一验证次数确定模块605、第一电压档位确定模块606。
接收模块601,用于接收编程指令,编程指令中包含需要对非易失性存储器内的存储单元进行编程的地址信息。
其中,该编程指令是由控制器CPU发送的指令信息,该编程指令中包含对需要编程的非易失性存储器中的某个具体的存储单元的地址信息,以及需要写入该存储单元中的数据信息等。
示例的,在接收到编程指令后,解析该编程指令,获取该编程指令中的地址信息和数据信息,该地址信息指示存储单元在该非易失性存储器中具体位置,数据信息表示需要写入该存储单元中的数据。
获取模块602,用于根据地址信息,获取与存储单元对应的第一编程电压档位。
其中,第一编程电压档位为一具体的参数,每个档位参数对应一个具体的电压值。
示例的,在编程操作之前,预先在非易失性存储器中设置一个存储区域,用于存储该非易失性存储器中的每个存储单元的第一编程电压档位。
具体的,在获取得到存储单元的地址信息后,根据该地址信息,读取该存储区域内存储的与该存储单元对应的第一编程电压档位。
验证模块603,用于对存储单元进行验证。
其中,该验证操作是验证存储单元中存储的数据是否与需要写入该存储单元中的数据信息一致。
示例的,可以验证存储单元的阈值电压是否达到需要编程到的阈值电压范围。当进行编程验证操作时,在该存储单元的控制栅极上施加验证电压,在该存储单元的漏极施加一定的电压,判断该存储单元的导通状态,以判断该存储单元的阈值电压是否达到需要编程的阈值电压,以验证该存储单元中存储的数据是否与需要写入该存储单元中的数据一致。具体的验证方法可参考现有技术中对非易失性存储器中存储单元的验证方法,本实施例对此不做约束。
编程模块604,用于若验证未通过,则根据第一编程电压档位,获取与第一编程电压档位匹配的第一编程电压,使用第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。
其中,第一编程电压是对该存储单元进行编程操作时的编程电压值,第一编程电压是与第一编程电压档位对应的编程电压值。验证次数指的是在本次编程过程中,对该存储单元执行验证的次数,在本次编程开始时,该验证次数为零。编程操作是指对存储单元进行编程,如果该非易失性存储器为 Nand Flash存储器则采用F-N隧穿的编程方式对存储单元进行编程操作,如果该非易失性存储器为Nor Flash存储器则采用热电子注入的方式对存储单单元进行编程。
示例的,参照图3,若验证未通过,则根据获取得到第一编程电压档位控制产生参考电压301,通过放大电路放大后产生第一编程电压302。使用该第一编程电压,对该存储单元进行编程操作。编程完成后,验证次数加1,得到新的验证次数。
第一验证次数确定模块605,用于确定新的验证次数是否等于第一验证次数。
其中,第一验证次数是指在本次编程过程中,对该存储单元执行验证操作的最大次数。
示例的,在每次编程过程中,会对存储单元执行多次编程操作,对应的每次编程操作后都会对该存储单元进行验证。在验证后,对验证次数加1,得到新的验证次数,判断新的验证次数是否达到第一验证次数,当新的验证次数未达到第一编程验证次数时,重复对编程单元施加第一编程电压,重复执行编程操作。
第一电压档位确定模块606,用于若确定新的验证次数等于第一验证次数,则根据新的验证次数,确定第二编程电压档位,第二编程电压档位是下次对存储单元进行编程操作时使用的编程电压档位,第一验证次数为最大验证次数。
示例的,当新的验证次数等于第一验证次数时,根据新的验证次数,确定第二编程电压档位,此时新的验证次数等于第一验证次数。该第二编程电压档位用于在该存储单元的下次编程时产生相应的编程电压值,该第二编程电压档位,即该存储单元下次编程时使用的第一编程电压档位。
本实施例提供的用于非易失性存储器的编程装置,通过接收模块S601 接收编程指令,编程指令中包含需要对非易失性存储器内的存储单元进行编程的地址信息。获取模块S602根据地址信息,获取与存储单元对应的第一编程电压档位。验证模块S603对存储单元进行验证。编程模块S604用于若验证未通过,则根据第一编程电压档位,获取与第一编程电压档位匹配的第一编程电压,使用第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。第一验证次数确定模块S605在确定新的验证次数等于第一验证次数的情况下,根据新的验证次数,确定第二编程电压档位,第二编程电压档位是下次对存储单元进行编程操作时使用的编程电压档位,第一验证次数为最大验证次数。对非易失性存储器中的存储单元进行编程时,当验证次数达到最大验证次数时,结束编程操作,并重新确定该存储单元的编程电压档位,当下次对该存储单元进行编程时,使用与新的编程电压档位对应的编程电压对该存储单元进行编程,在存储单元性能下降时,通过增加编程电压,提高存储单元的阈值电压,降低了存储单元的编程时间,提高了编程效率。从而解决了现有技术中非易失性存储器的编程性能随编程次数的增加而逐渐下降后造成编程时间长,编程效率低的问题。
图7为本发明实施例提供的另一种非易失性存储器的编程装置的结构示意图,参加图7,本实施例提供的编程装置包括设置模块701、接收模块702、获取模块703、验证模块704、编程模块705、第一验证次数确定模块706、第一电压档位确定模块707、第二验证次数确定模块708、第二电压档位确定模块709、存储模块710。
设置模块701,用于在非易失性存储器内设置存储区域,存储区域用于存储非易失性存储器中的存储单元的第一编程电压档位。
其中,存储区域可以是该非易失性存储器中任意的一个存储区域。该存储区域用于存储该非易失性存储区域中的每个存储单元的第一编程电压档位。
示例的,在接收到编程指令之前,设置一个存储区域,设置需要进行编程的存储单元的第一编程电压档位,将第一编程电压档位存储在该存储区域内。
通过设置存储区域存储需要编程的存储单元的第一编程电压档位,可以方便调整存储单元的第一编程电压档位。
接收模块702,用于接收编程指令,编程指令中包含需要对非易失性存储器内的存储单元进行编程的地址信息。
其中,该编程指令是由控制器CPU发送的指令信息,该编程指令中包含对需要编程的非易失性存储器中的某个具体的存储单元的地址信息,以及需要写入该存储单元中的数据信息等。
示例的,在接收到编程指令后,解析该编程指令,获取该编程指令中的地址信息和数据信息,该地址信息指示存储单元在该非易失性存储器中具体位置。
获取模块703,用于根据地址信息,获取与存储单元对应的第一编程电压档位。
其中,第一编程电压档位为一具体的参数,每个档位参数对应一个具体的电压值。
示例的,在获取得到存储单元的地址信息后,根据该地址信息,读取该存储区域内存储的该存储单元的第一编程电压档位。
验证模块704,用于对存储单元进行验证。
其中,该验证操作是验证存储单元中存储的数据是否与需要写入该存储单元中的数据一致。
示例的,可以验证存储单元的阈值电压是否达到需要编程到的阈值电压范围。当进行编程验证操作时,在该存储单元的控制栅极上施加验证电压,在该存储单元的漏极施加一定的电压,判断该存储单元的导通状态,以判断该存储单元的阈值电压是否达到需要编程的阈值电压,以验证该存储单元中存储的数据是否与需要写入该存储单元中的数据一致。具体的验证方法可参考现有技术中对非易失性存储器中存储单元的验证方法,本实施例对此不做约束。
编程模块705,用于若验证未通过,则根据第一编程电压档位,获取与第一编程电压档位匹配的第一编程电压,使用第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。
第一验证次数确定模块706,用于确定新的验证次数是否等于第一验证次数。
其中,第一验证次数是指在本次编程过程中,对该存储单元执行验证操作的最大次数。
示例的,在每次编程中,会对存储单元执行多次编程操作,对应的每次编程操作后都会对该存储单元进行验证。在验证后,对验证次数加1后,得到新的验证次数。
第一电压档位确定模块707,用于若确定新的验证次数等于第一验证次数,则根据新的验证次数,确定第二编程电压档位,第二编程电压档位是下次对存储单元进行编程操作时使用的编程电压档位,第一验证次数为最大验证次数。
示例的,当新的验证次数等于第一验证次数时,根据新的验证次数,确定第二编程电压档位,此时新的验证次数等于第一验证次数。该第二编程电压档位用于在该存储单元的下次编程时产生相应的编程电压值,该第二编程电压档位,即该存储单元在下次编程过程中使用的第一编程电压档位。
第二验证次数确定模块708,用于若确定新的验证次数小于第一验证次数,则重复执行对存储单元进行验证的操作。
其中,第一验证次数是指在本次编程过程中,对该存储单元执行验证操作的最大次数。
示例的,在每次编程中,会对存储单元执行多次编程操作,对应的每次编程操作后都会对该存储单元进行验证。在验证后,对验证次数加1后,得到新的验证次数。
第二电压档位确定模块709,用于若验证通过,则根据新的验证次数,确定第二编程电压档位。
示例的,当新的验证次数小于第一验证次数时,对存储单元进行验证,并判断验证是否通过,若验证通过,则根据新的验证次数,确定第二编程电压档位。该第二编程电压档位用于在该存储单元的下次编程时产生相应的编程电压值。该第二编程电压档位,即该存储单元在下次编程时使用的第一编程电压档位。
存储模块710,用于将第二编程电压档位作为第一编程电压档位存储在存储区域。
示例的,在得到第二编程电压档位后,将第二编程电压档位作为新的第一编程电压档位存储在存储区域内,供该存储单元在下次编程过程中读取使用。
参照图8,在本发明的一个优选的实施例中,在图7的基础上,第二验证次数确定模块708还可以包括:第一验证次数确定单元7081,第二验证次数确定单元7082。
第一验证次数确定单元7081,用于若新的验证次数小于等于第二验证次数,则根据新的验证次数与预设值的比值P,确定第二编程电压档位,P为正整数,第二编程电压档位为第一编程电压档位与P之和。
其中,第二验证次数为小于第一验证次数的整数值,预设值为预先设置的正整数值。
示例的,预先设置第一编程电压档位为1,第一验证次数为32,第二验证次数为16,预设值为4,则当新的验证次数为8时,该第二编程验证电压档位为第一编程电压档位加新的验证次数与预设值的比值,即第一编程电压档位=1+8/4=3,其中,预设值可以根据编程经验预先设定。
第二验证次数确定单元7082,用于若新的验证次数大于第二验证次数且小于第一验证次数,则将第一编程电压档位加1获得第二编程电压档位,第二验证次数小于第一验证次数。
示例的,当第一编程电压档位为2,第一验证次数为32,第二验证次数为16,当新的验证次数为17时,17>16,第二编电压档位为第一编程电压档位加1,即第二编程电压档位=2+1=3。
本实施例提供的用于非易失性存储器的编程装置,编程操作前,在非易失性存储器中设置一个特定的存储区域,并为每个需要编程的存储单元设置第一编程电压档位,将第一编程电压档位存储在存储区域内,当接收到编程指令后,根据编程指令中的地址信息读取存储区域内存储的第一编程电压档位,对存储单元进行验证,如果验证未通过,则根据第一编程电压档位获取第一编程电压,对存储单元进行编程操作,并将验证次数加1获得新的验证次数。如果验证通过,则根据新的验证次数,确定第二编程电压档位,将该第二编程电压档位存储在存储区域,用于该存储单元下次编程过程中,读取该编程电压档位,使用该编程电压进行编程操作。在存储单元的每次编程过程中,根据验证次数调整编程电压档位,作为该存储单元下次编程时的电压档位,在该存储单元的下次编程中使用改变后的编程电压,随着存储单元性能的下降,不断的调整存储单元的编程电压,以提高存储单元的阈值电压,可以缩短存储单元的编程时间,提高非易失性存储器的编程效率。
以上对本发明所提供的一种非易失性存储器的编程方法和装置行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种非易失性存储器的编程方法,其特征在于,包括:
在所述非易失性存储器内设置存储区域,所述存储区域用于存储所述非易失性存储器中的存储单元的第一编程电压档位;
接收编程指令,所述编程指令中包含需要对所述非易失性存储器内的存储单元进行编程的地址信息;
根据所述地址信息,获取与所述存储单元对应的第一编程电压档位;
对所述存储单元进行验证;
若验证未通过,则根据所述第一编程电压档位,获取与所述第一编程电压档位匹配的第一编程电压,使用所述第一编程电压,对所述存储单元进行编程操作,并将验证次数加1获得新的验证次数;
确定所述新的验证次数是否等于第一验证次数;
若确定所述新的验证次数等于所述第一验证次数,则根据所述新的验证次数,确定第二编程电压档位,所述第二编程电压档位是下次对所述存储单元进行编程操作时使用的编程电压档位,所述第一验证次数为最大验证次数;
将所述第二编程电压档位作为第一编程电压档位存储在所述存储区域。
2.根据权利要求1所述的编程方法,其特征在于,还包括:
若确定所述新的验证次数小于所述第一验证次数,则重复执行所述对所述存储单元进行验证的操作;
若验证通过,则根据所述新的验证次数,确定第二编程电压档位。
3.根据权利要求2所述的编程方法,其特征在于,所述根据所述新的验证次数,确定第二编程电压档位,包括:
若所述新的验证次数小于等于第二验证次数,则根据所述新的验证次数与预设值的比值P,确定第二编程电压档位,所述P为正整数,所述第二编程电压档位为所述第一编程电压档位与所述P之和。
4.根据权利要求2所述的编程方法,其特征在于,所述根据所述新的验证次数,确定第二编程电压档位,包括:
若所述新的验证次数大于第二验证次数且小于所述第一验证次数,则将所述第一编程电压档位加1获得第二编程电压档位,所述第二验证次数小于第一验证次数。
5.一种非易失性存储器的编程装置,其特征在于,包括:
设置模块,用于在所述非易失性存储器内设置存储区域,所述存储区域用于存储所述非易失性存储器中的存储单元的第一编程电压档位;
接收模块,用于接收编程指令,所述编程指令中包含需要对所述非易失性存储器内的存储单元进行编程的地址信息;
获取模块,用于根据所述地址信息,获取与所述存储单元对应的第一编程电压档位;
验证模块,用于对所述存储单元进行验证;
编程模块,用于若验证未通过,则根据所述第一编程电压档位,获取与所述第一编程电压档位匹配的第一编程电压,使用所述第一编程电压,对所述存储单元进行编程操作,并将验证次数加1获得新的验证次数;
第一验证次数确定模块,用于确定所述新的验证次数是否等于第一验证次数;
第一电压档位确定模块,用于若确定所述新的验证次数等于所述第一验证次数,则根据所述新的验证次数,确定第二编程电压档位,所述第二编程电压档位是下次对所述存储单元进行编程操作时使用的编程电压档位,所述第一验证次数为最大验证次数;
存储模块,用于将所述第二编程电压档位作为第一编程电压档位存储在所述存储区域。
6.根据权利要求5所述的非易失性存储器的编程装置,其特征在于,还包括:
第二验证次数确定模块,用于若确定所述新的验证次数小于所述第一验证次数,则重复执行所述对所述存储单元进行验证的操作;
第二电压档位确定模块,用于若验证通过,则根据所述新的验证次数,确定第二编程电压档位。
7.根据权利要求6所述的非易失性存储器的编程装置,其特征在于,所述第二验证次数确定模块包括:
第一验证次数确定单元,用于若所述新的验证次数小于等于第二验证次数,则根据所述新的验证次数与预设值的比值P,确定第二编程电压档位,所述P为正整数,所述第二编程电压档位为所述第一编程电压档位与所述P之和。
8.根据权利要求6所述的非易失性存储器的编程装置,其特征在于,所述第二验证次数确定模块包括:
第二验证次数确定单元,用于若所述新的验证次数大于第二验证次数且小于所述第一验证次数,则将所述第一编程电压档位加1获得第二编程电压档位,所述第二验证次数小于第一验证次数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910357583.6A CN111863101B (zh) | 2019-04-29 | 2019-04-29 | 一种非易失性存储器的编程方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910357583.6A CN111863101B (zh) | 2019-04-29 | 2019-04-29 | 一种非易失性存储器的编程方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111863101A CN111863101A (zh) | 2020-10-30 |
CN111863101B true CN111863101B (zh) | 2022-08-30 |
Family
ID=72965433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910357583.6A Active CN111863101B (zh) | 2019-04-29 | 2019-04-29 | 一种非易失性存储器的编程方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111863101B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060030171A (ko) * | 2004-10-05 | 2006-04-10 | 주식회사 하이닉스반도체 | 플래쉬 메모리 장치 및 그 구동 방법 |
CN101752000A (zh) * | 2008-10-21 | 2010-06-23 | 力晶半导体股份有限公司 | 非易失性半导体存储装置及其写入方法 |
CN101794618A (zh) * | 2009-02-04 | 2010-08-04 | 海力士半导体有限公司 | 非易失性存储器件及其操作方法 |
CN108573728A (zh) * | 2017-03-07 | 2018-09-25 | 东芝存储器株式会社 | 半导体存储装置及存储器系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011018397A (ja) * | 2009-07-09 | 2011-01-27 | Toshiba Corp | Nand型フラッシュメモリ |
KR20140088386A (ko) * | 2013-01-02 | 2014-07-10 | 에스케이하이닉스 주식회사 | 반도체 장치 및 이의 동작 방법 |
KR102175039B1 (ko) * | 2013-06-25 | 2020-11-05 | 삼성전자주식회사 | 불휘발성 메모리 장치의 데이터 기입 방법 |
KR102396053B1 (ko) * | 2015-04-20 | 2022-05-10 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그것의 동작 방법 |
-
2019
- 2019-04-29 CN CN201910357583.6A patent/CN111863101B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060030171A (ko) * | 2004-10-05 | 2006-04-10 | 주식회사 하이닉스반도체 | 플래쉬 메모리 장치 및 그 구동 방법 |
CN101752000A (zh) * | 2008-10-21 | 2010-06-23 | 力晶半导体股份有限公司 | 非易失性半导体存储装置及其写入方法 |
CN101794618A (zh) * | 2009-02-04 | 2010-08-04 | 海力士半导体有限公司 | 非易失性存储器件及其操作方法 |
CN108573728A (zh) * | 2017-03-07 | 2018-09-25 | 东芝存储器株式会社 | 半导体存储装置及存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111863101A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9466379B2 (en) | Semiconductor device and operating method thereof | |
US20060268620A1 (en) | Program method of flash memory device | |
JP5905547B1 (ja) | 半導体記憶装置 | |
CN101800077B (zh) | 一种对闪存进行数据编程的方法和装置 | |
US20170025183A1 (en) | Semiconductor memory device and operating method thereof | |
KR20130139598A (ko) | 반도체 메모리 장치 및 이의 동작 방법 | |
KR20100056860A (ko) | 비휘발성 메모리 소자의 프로그램 방법 | |
US20100124121A1 (en) | Method of erasing flash memory device | |
US7804722B2 (en) | Voltage supply circuit and flash memory device including the same, and method of supplying operating voltage | |
WO2010134141A1 (ja) | 半導体記憶装置 | |
US20240203497A1 (en) | Control method and controller of 3d nand flash | |
JP2012027969A (ja) | 不揮発性半導体記憶装置 | |
US20140281678A1 (en) | Memory controller and memory system | |
CN111863101B (zh) | 一种非易失性存储器的编程方法和装置 | |
KR20140028739A (ko) | 반도체 메모리 장치 및 그의 동작방법 | |
JP4919775B2 (ja) | 不揮発性半導体記憶装置 | |
US8767474B2 (en) | Nonvolatile memory device and method for controlling the same | |
CN111863093B (zh) | 一种非易失性存储器的擦除方法和装置 | |
KR20110001098A (ko) | 불휘발성 메모리 소자의 프로그램 방법 | |
KR101029654B1 (ko) | 불휘발성 메모리 소자의 동작 방법 | |
KR100861378B1 (ko) | 플래시 메모리소자의 프로그램 방법 | |
US20230027384A1 (en) | Non-volatile memory and programming method thereof | |
US20090031080A1 (en) | Flash memory device and program method thereof | |
JP2010129154A (ja) | 不揮発性半導体記憶装置 | |
CN113628659B (zh) | 一种擦除方法、装置及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 101, Floor 1-5, Building 8, Yard 9, Fenghao East Road, Haidian District, Beijing 100094 Patentee after: Zhaoyi Innovation Technology Group Co.,Ltd. Patentee after: HEFEI GEYI INTEGRATED CIRCUIT Co.,Ltd. Address before: 100083 12 Floors, Block A, Tiangong Building, Science and Technology University, 30 College Road, Haidian District, Beijing Patentee before: GIGADEVICE SEMICONDUCTOR(BEIJING) Inc. Patentee before: HEFEI GEYI INTEGRATED CIRCUIT Co.,Ltd. |
|
CP03 | Change of name, title or address |