CN111951857B - Programming method and control device of nonvolatile memory - Google Patents

Programming method and control device of nonvolatile memory Download PDF

Info

Publication number
CN111951857B
CN111951857B CN201910402157.XA CN201910402157A CN111951857B CN 111951857 B CN111951857 B CN 111951857B CN 201910402157 A CN201910402157 A CN 201910402157A CN 111951857 B CN111951857 B CN 111951857B
Authority
CN
China
Prior art keywords
programming
data
programmed
address
current
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
Application number
CN201910402157.XA
Other languages
Chinese (zh)
Other versions
CN111951857A (en
Inventor
苏如伟
薛子恒
潘荣华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhaoyi Innovation Technology Group Co ltd
Original Assignee
Zhaoyi Innovation Technology Group Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhaoyi Innovation Technology Group Co ltd filed Critical Zhaoyi Innovation Technology Group Co ltd
Priority to CN201910402157.XA priority Critical patent/CN111951857B/en
Publication of CN111951857A publication Critical patent/CN111951857A/en
Application granted granted Critical
Publication of CN111951857B publication Critical patent/CN111951857B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3481Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Read Only Memory (AREA)

Abstract

The invention discloses a programming method and a control device of a nonvolatile memory. The method comprises the following steps: acquiring data to be programmed of a target programming quantity; performing programming verification on data to be programmed; if the programming fails, selecting a corresponding programming mode according to the programming times to program. By using the method, the programming efficiency of the nonvolatile memory can be improved.

Description

Programming method and control device of nonvolatile memory
Technical Field
The embodiment of the invention relates to the technical field of time sequence circuits, in particular to a programming method and a control device of a nonvolatile memory.
Background
With the rapid development of sequential circuit technology, nonvolatile memories have been widely used. The nonvolatile memory can perform operations such as reading, erasing and programming of data for many times, and the data stored in the nonvolatile memory cannot be lost after power failure.
The programming process of the existing nonvolatile memory is as follows: program verify, program verify … … until programming is successful. The maximum number of programming bits per programming pulse during programming is fixed, such as 1byte or 2 bytes.
The problems with this are: if the number of bits of one-time programming is small, the programming efficiency of the nonvolatile memory is low, and the programming time is influenced; if the number of bits programmed at a time is large, the voltage pump in the bit line direction may not be able to supply current sufficiently, and many cycles are required to program successfully, and the programming efficiency is low.
Disclosure of Invention
The embodiment of the invention provides a programming method and a control device of a nonvolatile memory, which are used for improving the programming efficiency of the nonvolatile memory.
In a first aspect, an embodiment of the present invention provides a method for programming a nonvolatile memory, including:
acquiring data to be programmed of a target programming quantity;
performing programming verification on data to be programmed;
if the programming fails, selecting a corresponding programming mode according to the programming times to program.
Optionally, selecting a corresponding programming mode according to the programming times to program, including:
if the current first programming is the first programming, selecting a preset number of first programming data from the data to be programmed;
programming the first time to-be-programmed data for a first time period;
programming the data to be programmed for a second duration;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Optionally, selecting a corresponding programming mode according to the programming times to program, including:
if the current programming is not the first programming, programming the data to be programmed for a third time length;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Optionally, acquiring the target programming quantity of data to be programmed includes:
and reading the target programming quantity of data to be programmed from the programming data according to the programming address of each programming data.
Optionally, the method further comprises:
if programming is successful, acquiring a current programming address corresponding to the data to be programmed;
and if the current programming address is not the ending programming address, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the ending programming address is programmed.
In a second aspect, an embodiment of the present invention provides a control device configured in a nonvolatile memory, including:
the acquisition module is used for acquiring the data to be programmed of the target programming quantity;
the verification module is used for performing programming verification on the data to be programmed;
and the programming module is used for selecting a corresponding programming mode according to the programming times to program when programming fails.
Optionally, the programming module is specifically configured to:
when programming fails, judging whether the current programming is the first programming or not;
if the current first programming is the first programming, selecting a preset number of first programming data from the data to be programmed;
programming the first time to-be-programmed data for a first time period;
programming the data to be programmed for a second duration;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Optionally, the programming module is specifically configured to:
when programming fails, judging whether the current programming is the first programming or not;
if the current programming is not the first programming, programming the data to be programmed for a third time length;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Optionally, the acquiring module is specifically configured to:
and reading the target programming quantity of data to be programmed from the programming data according to the programming address of each programming data.
Optionally, the control device further includes:
the rereading module is used for acquiring a current programming address corresponding to the data to be programmed if programming is successful;
and if the current programming address is not the ending programming address, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the ending programming address is programmed.
The embodiment of the invention provides a programming method and a control device of a nonvolatile memory, which can carry out programming verification on target programming quantity of data to be programmed by utilizing the technical scheme, and after programming fails, a corresponding programming mode is selected according to programming times to carry out programming, so that the technical problem of low programming efficiency caused by fixed maximum programming bit number corresponding to each programming pulse in the programming process is avoided, and the programming efficiency is improved.
Drawings
FIG. 1a is a schematic flow chart of a programming method of a nonvolatile memory according to an embodiment of the invention;
FIG. 1b shows a typical MOSFET structure;
FIG. 2a is a schematic flow chart of a programming method of a nonvolatile memory according to a second embodiment of the invention;
FIG. 2b is a schematic diagram illustrating a programming mode according to a second embodiment of the present invention;
fig. 3 is a schematic structural diagram of a control device according to a third embodiment of the present invention.
Detailed Description
The invention is described in further detail below with reference to the drawings and examples. It is to be understood that the specific embodiments described herein are merely illustrative of the invention and are not limiting thereof. It should be further noted that, for convenience of description, only some, but not all of the structures related to the present invention are shown in the drawings.
Before discussing exemplary embodiments in more detail, it should be mentioned that some exemplary embodiments are described as processes or methods depicted as flowcharts. Although a flowchart depicts operations (or steps) as a sequential process, many of the operations can be performed in parallel, concurrently, or at the same time. Furthermore, the order of the operations may be rearranged. The process may be terminated when its operations are completed, but may have additional steps not included in the figures. The processes may correspond to methods, functions, procedures, subroutines, and the like.
Example 1
Fig. 1a is a flow chart of a method for programming a nonvolatile memory according to an embodiment of the present invention, where the method may be applied to a case of improving the programming efficiency of the nonvolatile memory, and the method may be performed by a control device, where the control device may be implemented by software and/or hardware and is generally configured on the nonvolatile memory, and in this embodiment, the nonvolatile memory includes but is not limited to: nor Flash or Nand Flash, and the like.
Both Nor Flash and Nand Flash use floating gate field effect transistors (Floating Gate FET) as the basic memory cells to store data. The Flash technology adopts a special floating gate field effect transistor as a storage unit. The structure of the field effect transistor is greatly different from that of a common field effect transistor. It has two gates, one of which is led out by a wire, called a 'select gate', like a normal field tube gate; the other is surrounded by silicon dioxide and is not connected to any part, and the grid which is not connected to any part is called a floating gate.
Normally, if the floating gate is not charged, the field effect transistor is in a non-conductive state, and if the drain level of the field effect transistor is high, data 1 is indicated. During programming, the drain electrode and the selection gate of the field effect transistor are both applied with higher programming voltage, and the source electrode is grounded. Thus, a large amount of electrons flow from the source electrode to the drain electrode to form a considerable current, a large amount of hot electrons are generated, electrons are captured from the silicon dioxide layer of the substrate, due to the large density of the electrons, some electrons reach the silicon dioxide layer between the substrate and the floating gate, at the moment, due to the fact that the high voltage is applied to the selection gate, the electrons reach the floating gate through the silicon dioxide layer under the action of an electric field, and electron clusters are formed on the floating gate. The electron clusters on the floating gate remain on the floating gate even in the event of power failure, so that information can be preserved for a long period of time. Since the floating gate is negative, the select gate is positive, and the source is grounded in the memory circuit, which corresponds to the field effect transistor being turned on, and the drain level is low, i.e., data 0 is written. During erasing, a higher programming voltage is applied to the source, the select gate is grounded, and the drain is open.
The Nand Flash is used for explaining a scene by taking the Nand Flash as an example, and is composed of a storage unit array, a word line selection unit, a bit line selection unit, a voltage pump and a control unit of the whole Nand Flash chip, wherein the storage unit array comprises storage units, and the storage unit array is formed by arranging word lines and bit lines of each storage unit. Specifically, the memory cells are first connected by word lines and bit lines to form pages, and then formed into blocks, and finally formed into a Nand Flash memory cell array. The operation on Nand Flash includes three parts: an erase operation, a program (write operation), and a read operation, wherein the erase operation is performed in units of blocks and the program and read operations are performed in units of pages.
In Nand Flash, a memory cell can be considered a Metal-Oxide-Semiconductor Field-Effect Transistor (MOSFET). Fig. 1b shows a typical MOSFET structure comprising a gate 10, a source 11, a drain 12, a P-type silicon semiconductor substrate 13, and a tunnel oxide layer 14. The connection between them is: the P-type silicon semiconductor substrate 13 diffuses out of two N-type regions, a tunneling oxide layer 14 is covered above the P-type silicon semiconductor substrate 13, finally two holes are made above the N-type regions by etching, and three electrodes are respectively made on the insulating layer and in the two holes by metallization: the gate 10, the source 11 and the drain 12 correspond to two N-type regions respectively, the gate 10 is a word line of the memory cell, and the drain 12 is a bit line of the memory cell. Further, gate 10 in turn includes control gate 101, inter-polysilicon dielectric 102 (Inter Poly Dielectric, IPD), floating gate 103, and floating gate 103 stores charge. In a memory cell, if the set voltage (e.g., read voltage) of control gate 101 is greater than the stored charge threshold voltage in floating gate 103, then it indicates that the memory cell is in a conductive state, at which time the memory cell state is 1; if the set voltage (e.g., read voltage) of control gate 101 is less than the stored charge threshold voltage in floating gate 103, then it indicates that the memory cell is in a non-conductive state, at which time the memory cell state is 0.
In Nand Flash, both erase and program operations to Nand Flash are accomplished by applying corresponding voltages to an erase block or program page to change the threshold voltage of memory cell floating gate 203. A change in the threshold voltage of the memory cell floating gate 203 can affect a change in the state of the memory cell.
In the existing programming operation method, the programming pulse applied by the one-time programming process is fixed. The maximum programming bit number corresponding to the one-time programming pulse is also fixed, and if the one-time programming bit number is unreasonably selected, the programming efficiency is affected. The programming method of the nonvolatile memory provided by the embodiment effectively improves the programming efficiency of the nonvolatile memory during programming.
The programming method of the nonvolatile memory in this embodiment may be executed by the control unit, that is, the control device of the present invention, to store the data to be programmed to the address corresponding to the memory cell array.
As shown in fig. 1a, a programming method of a nonvolatile memory according to an embodiment of the present invention includes the following steps:
s101, acquiring data to be programmed of target programming quantity.
In this embodiment, the target programming number may be understood as the maximum programming bit number corresponding to the programming pulse at each programming. The data to be programmed may be understood as data to be programmed corresponding to one-time programming pulses of the nonvolatile memory.
When the nonvolatile memory is programmed, the step may first acquire data to be programmed, where the number of the data to be programmed is a target programming number, so that the control unit of the nonvolatile memory may program the data. The number of the data to be programmed obtained in each step is the target programming number, and after the data to be programmed are successfully programmed, the next data to be programmed are obtained.
The specific manner of acquiring the data to be programmed in this step is not limited here, as long as the data to be programmed can be obtained. Illustratively, this step may read the data to be programmed from a sequential device in the non-volatile memory. A sequential device may be understood as a volatile device, i.e. when powered down, the data in the sequential device is lost. The timing device may store programming data of the nonvolatile memory to be programmed, and it is understood that the programming data of the timing device may be written by a developer. When the nonvolatile memory programs the programming data, the target programming quantity of the data to be programmed can be read from the time sequence device for one-time programming, and after the read data to be programmed are successfully programmed, the next data to be programmed can be obtained from the programming data continuously until the programming data are successfully programmed.
It should be noted that this step does not limit the location of the acquired data to be programmed in the programming data. The time sequence device can store programming data in bit sequence, and then the step can sequentially acquire the data to be programmed from the programming data according to the sequence of programming addresses until the maximum programming address is acquired; or the step may not limit the acquisition sequence, as long as the programming data are ensured to be successfully written.
S102, performing programming verification on data to be programmed.
In the present embodiment, program verification may be understood as an operation of verifying data stored in a memory cell of a nonvolatile memory. The memory cells referred to in the program verify may be used to store data currently involved in the verify, such as data to be programmed.
After the target programming number of data to be programmed is obtained, the step may first perform program verification on the data to be programmed to verify whether the data to be programmed is already stored in the memory cells of the current nonvolatile memory.
In general, common operations performed by nonvolatile memory are: an erase operation, a program operation, and a read operation. Illustratively, the erase operation may be understood as an operation of changing the state of a memory cell in the nonvolatile memory from "0" to "1"; the program operation may be understood as an operation of changing the state of a memory cell in the nonvolatile memory from "1" to "0"; the read operation may be understood as a read operation of a memory cell state in a non-volatile memory, the various operations described above typically being implemented by applying different voltages to the non-volatile memory. Therefore, this step can perform program verification through the state of the memory cell.
Specific means of program verification are not limited herein, and those skilled in the art may select a corresponding means of program verification according to actual circumstances.
For example, the data to be verified may be read from a storage unit of the nonvolatile memory, where the storage unit may be understood as a location where the data to be programmed is to be stored in the nonvolatile memory, where the data stored in the storage unit is not lost when the power is turned off, that is, has a nonvolatile characteristic. After the data to be verified is read, the data to be verified and the data to be programmed can be compared to determine whether programming is successful. The determining means is not limited, and if the data bit of 0 in the data to be verified corresponds to the data bit of 0 in the data to be programmed, the programming can be considered as successful.
S103, if programming fails, selecting a corresponding programming mode according to the programming times to program.
In this embodiment, a program failure may be understood as not being successfully written when programming the data to be programmed. Such as may be determined by comparing data to be verified and data to be programmed stored in the non-volatile memory storage unit. If the data bit of 0 in the data to be verified does not correspond to the data bit of 0 in the data to be programmed, the programming can be considered as failed.
The number of programming may be understood as the number of times the data to be programmed is programmed. The program mode can be understood as a program strategy set for the number of programming times. Different programming times may correspond to different programming modes. The maximum number of programming bits corresponding to different programming modes may be different.
After the data to be programmed is subjected to programming verification, the programming result can be judged in the step. If programming fails, the data to be programmed needs to be programmed. When the data to be programmed is programmed, the corresponding programming mode can be selected for programming based on the programming times corresponding to the data to be programmed, so that the technical problem of low programming efficiency caused by fixed maximum programming bit number during each programming is avoided. Different programming modes release the data to be programmed in different ways.
For example, when the data to be programmed is first programmed, a certain amount of data can be selected from the data to be programmed to program, so that electrons are driven onto the floating gate, and when the subsequent programming is ensured, the voltage pump in the bit line direction can provide current with enough intensity, thereby improving the programming efficiency and shortening the overall programming time. When the data to be programmed is not first programmed, the voltage pump indicating the current bit line direction can provide current with enough intensity, so that all the data to be programmed can be directly released for programming.
According to the programming method of the nonvolatile memory, which is provided by the embodiment of the invention, by utilizing the method, the programming verification can be carried out on the data to be programmed of the target programming quantity, after programming fails, the corresponding programming mode is selected according to the programming times to carry out programming, so that the technical problem of low programming efficiency caused by the fact that the maximum programming bit number corresponding to each programming pulse is fixed in the programming process is avoided, and the programming efficiency is improved.
Example two
Fig. 2a is a schematic flow chart of a programming method of a nonvolatile memory according to a second embodiment of the present invention, where the second embodiment is optimized based on the above embodiments. In this embodiment, the corresponding programming mode is selected according to the programming times to program, and the optimizing includes:
if the current first programming is the first programming, selecting a preset number of first programming data from the data to be programmed;
programming the first time to-be-programmed data for a first time period;
programming the data to be programmed for a second duration;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Further, the present embodiment selects a corresponding programming mode according to the programming times to program, including:
if the current programming is not the first programming, programming the data to be programmed for a third time length;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Further, the present embodiment will acquire the target programming number of data to be programmed, and the optimizing includes:
and reading the target programming quantity of data to be programmed from the programming data according to the programming address of each programming data.
Further, the present embodiment further preferably includes: if programming is successful, acquiring a current programming address corresponding to the data to be programmed;
and if the current programming address is not the ending programming address, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the ending programming address is programmed.
The details of this embodiment are not described in detail in the first embodiment, and are not described here.
As shown in fig. 2a, a programming method of a nonvolatile memory according to a second embodiment of the present invention includes the following steps:
s201, reading the data to be programmed of the target programming quantity from the programming data according to the programming address of each programming data.
In this embodiment, the program data may be understood as all data to be programmed stored in the sequential device. The program address may be understood as an address where each program data is stored in the sequential device.
When the target programming quantity of the data to be programmed is obtained, the data to be programmed can be read from the programming data according to the programming address of each programming data. The storage location of the program data is not limited, and may be stored in a sequential device of nonvolatile memory. When the data to be programmed is read, the data to be programmed of the target programming quantity can be read by adopting an addressing method.
For example, if the target programming number is M bits, this step may sequentially read M bits of data from the programming data according to the order of the programming addresses as the data to be programmed.
S202, performing programming verification on data to be programmed.
After the data to be programmed is read, the data to be programmed can be firstly subjected to programming verification to verify whether the data to be programmed is stored in the corresponding storage unit of the nonvolatile memory.
S203, judging whether programming fails, if yes, executing S204; if not, S211 is executed.
When the data to be programmed is directly subjected to programming verification, if the data to be programmed is determined not to be stored in the nonvolatile memory, the programming can be considered as failed. The step can program the data to be programmed, and correspondingly, S204 is executed; otherwise, the success of programming may be described, and accordingly, S211 may be performed.
S204, whether the programming is the first time currently, if yes, S205 is executed; if not, S209 is performed.
In this embodiment, the first programming may be understood as that the data to be programmed in the current programming operation is not programmed.
After the programming fails, the step may first determine whether the current data to be programmed is first programmed, so as to select a corresponding programming mode for programming based on the programming times. It is not limited here how to determine whether the current programming is the first programming, for example, the number of times of programming may be recorded each time the data to be programmed is programmed, so that it is determined whether the data to be programmed is the first programming based on the number of times of programming.
If the current is the first programming, a programming mode corresponding to the first programming may be executed, that is, S205 may be executed; if the first programming is not currently performed, a programming operation corresponding to the non-first programming may be performed, i.e., S209 may be performed.
S205, selecting a preset number of first programming data from the data to be programmed
In this embodiment, the first program data may be understood as a portion of program data selected from the data to be programmed when the data to be programmed is first programmed. The preset number is not limited and may be determined by one skilled in the art according to the actual verification situation.
When the first programming is judged, the step can firstly select the preset number of first programming data from the data to be programmed to program so as to make electrons strike the floating gate.
The specific means for selecting the first programming data is not limited herein, for example, the first programming data may be selected according to the programming address corresponding to each data in the data to be programmed.
S206, programming the first time to-be-programmed data for a first time period.
After the first programming data is obtained, the first programming data can be programmed for a first time length, wherein the first time length is adjustable data, and a person skilled in the art can select a proper first time length and the number of the first programming data according to the programming success rates corresponding to different time lengths.
S207, programming the data to be programmed for a second time period.
After the first time period, the data to be programmed can be released completely, and the second time period is programmed. At this time, the voltage pump in the bit line direction has enough intensity to supply current, thereby improving the programming efficiency.
S208, judging whether programming is finished, if yes, executing S202; if not, S208 is performed.
This step may verify whether the current programming is ended or not, and the specific means of verifying the end of programming may not be limited here. Such as whether programming has ended or not can be characterized by time. If the first time period plus the second time period has elapsed, then the current programming may be considered to be over.
By way of example, programming the first program data for 1us and programming the data to be programmed for 3us, the programming can be considered to be ended after 4 us.
If the programming is finished, the data to be programmed may be program-verified to verify whether the data to be programmed fails, i.e., S202 may be performed. The means for performing programming verification on the data to be programmed at this time can refer to a specific means for performing programming verification after the data to be programmed is obtained, and will not be described herein. If the programming is not finished, it may be continued to monitor whether the programming is finished, i.e., S208 may be performed.
After the program verification is performed, corresponding operations can be continuously performed based on the verification result. For example, if programming fails, the corresponding programming mode is selected to program according to the programming times.
S209, programming the data to be programmed for a third time period.
If the current is not the first programming, i.e. the current is not the first programming, the data to be programmed can be directly released in this step, i.e. the data to be programmed is programmed for a third duration. The third time period can be adjusted, and in actual programming, a person skilled in the art can select the third time period according to the programming success rate corresponding to different time periods. In addition, the first time period and the second time period are selected similarly.
S210, judging whether programming is finished, if yes, executing S202; if not, S210 is performed.
After the third duration of programming the data to be programmed is performed, this step may determine whether the programming is ended. The specific means of judging the end of programming, as determined by the programming time, is not limited herein.
For example, if the third time period is currently elapsed, programming may be considered to be ended.
If the programming is finished, the data to be programmed can be continuously subjected to programming verification to determine whether the programming fails or not, that is, S202 is executed; if the programming is not finished, it may be continuously monitored whether the programming is finished, i.e., S210 may be performed.
S211, acquiring a current programming address corresponding to the data to be programmed.
In this embodiment, the specific content and the acquiring means of the current programming address may not be limited, and if the data to be programmed is sequentially selected from the programming data according to the sequence of the programming addresses in this embodiment, the current programming address may be understood as the corresponding maximum programming address in the addresses to be programmed.
When it is determined that programming has not failed, that is, programming is successful, the current programming address corresponding to the data to be programmed can be obtained in this step, so that subsequent operations can be determined conveniently.
S212, judging whether the current programming address is not an ending programming address, if so, executing S213; if not, S214 is performed.
In this embodiment, the ending programming address may understand the maximum programming address corresponding to the programming data.
After the current programming address is obtained, the current programming address and the ending programming address can be compared in this step, and whether the current programming address is not the ending programming address is determined. The method for acquiring the ending programming address is not limited, for example, after the timing device stores the programming data, the control unit of the nonvolatile memory may read the maximum programming address corresponding to each programming data stored in the timing device as the ending programming address.
If the current programming address is not the ending programming address, it may be indicated that all programming data is not written successfully at present, and S213 may be performed; if the current programming address is equal to the ending programming address, it may be indicated that the programming data has been written successfully, and S214 may be performed.
S213, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the programming is finished to the programming address.
In this embodiment, the next data to be programmed can be understood as new data to be programmed which is read again from the program data. The programming operation of the next data to be programmed can be referred to as the related operation of the data to be programmed.
If the current programming address is not the ending programming address, then the step may read the next data to be programmed from the programming data according to the current programming address. The specific way of reading the next data to be programmed can be referred to the technical means adopted for reading the data to be programmed. In this step, the data which is not yet read is read from the programming data as the next data to be programmed. It can be understood that the next data to be programmed and the data to be programmed can be read to carry the programming address corresponding to each data.
For example, if the data are sequentially read according to the sequence of the programming addresses, the address increment is performed this time, and the next data to be programmed of the target programming quantity is read from the next programming address of the current programming address.
After the next data to be programmed is read, the next data to be programmed can be continuously subjected to programming verification, and the means for programming verification can refer to the means for programming verification of the data to be programmed, which is not described herein.
After the program verification is finished, it may be continued to determine whether the programming has failed, i.e., S203 may be continued to be executed. It should be noted that the difference between the current cycle execution and the operation of the data to be programmed is that the data to be operated is different and the data storage location is different.
S214, ending.
If the current programming address is the ending programming address, it may be indicated that the current programming data has been written successfully, then the programming operation may be ended.
For ease of understanding, the following describes an example of a programming method of the nonvolatile memory provided in the present embodiment:
in order to solve the problem that if the number of bits of one-time programming is less, the programming efficiency is low due to the fact that the maximum programming bit number corresponding to each programming pulse is fixed; if the number of bits per program is large, the ability of pump in the BL direction to supply current may not be sufficient, and many cycles are required to program successfully or to reach the maximum number of programming times, and the programming efficiency is also low. The embodiment provides a new programming method, and fig. 2b shows a schematic diagram of a programming mode provided by the second embodiment of the present invention. As shown in fig. 2b, the programming method of the nonvolatile memory provided in this embodiment mainly includes the following programming steps: program verify-on program mode 1 program verify-on program mode 2 … … until programming is successful. In fig. 2b, the abscissa indicates time T and the ordinate indicates voltage V.
Wherein, programming mode 1: the method comprises the steps of firstly releasing part of bits to be programmed from acquired data to be programmed to program for a certain time, namely a first time length T1, then releasing all the bits to be programmed, namely releasing the data to be programmed to program for a duration time T2, namely a second time length, and ending programming. The T1 and T2 time can be adjusted. In programming mode 1, the programmed number of bits to be programmed for the first released portion is noted as N, N < M, where M is the maximum programmable amount for one time programming, i.e., the target programmed number.
Programming mode 2: and releasing all bits to be programmed for programming, namely releasing the data to be programmed for programming, and continuing programming for a time T3. The T3 time is adjustable. In programming mode 2, the number of programs is M.
Therefore, in this embodiment, the maximum programming bit number corresponding to each programming pulse is not fixed, part of bits are released for programming for a period of time, so that a large number of electrons are already applied to the floating gate, and then when all bits to be programmed are released for programming, the pump in the BL direction will have enough intensity to supply current, thereby greatly improving the programming efficiency and shortening the overall programming time.
The specific implementation steps can be as follows:
step 1: program data to be programmed is stored in the sequential device.
Step 2: and reading the data to be programmed from the time sequence device, and performing programming verification. If the verification fails, executing a programming operation; if the verification is successful, judging whether the current programming address is the last programming address, namely ending the programming address, and if the current programming address is not the last programming address, the address increment acquires the next data to be programmed. If the current is the last programming address, the operation is ended.
Wherein the programming operation includes: if the current programming is the first programming, starting a programming mode 1, wherein the duration time is T1+T2; if not first programmed, programming mode 2 is started for a duration of T3.
Specifically, if the program operation is executed, that is, the verification fails, whether the first programming is performed is judged, if yes, a programming pulse is generated, a programming mode 1 is started, and the programming is ended after the time T1+T2 passes. Program verification then continues to verify whether the program was successful. If the programming is not the first programming, a programming pulse is generated, programming mode 2 is started, the duration time T3 is prolonged, and the programming is ended. Program verification then continues to verify whether the program was successful.
According to the programming method of the nonvolatile memory, when the data to be programmed is programmed for the first time, part of the data to be programmed is released firstly, electrons are made to be driven onto the floating gate, then all the data to be programmed are released for programming, and at the moment, the voltage pump in the bit line direction has enough intensity to provide current, so that the programming efficiency is improved, and the overall programming time is shortened.
Example III
Fig. 3 is a schematic structural diagram of a control device according to a third embodiment of the present invention, where the control device may be adapted to enhance the programming efficiency of a nonvolatile memory, and the control device may be implemented by software and/or hardware and is generally configured on the nonvolatile memory.
As shown in fig. 3, the control device includes: an acquisition module 31, a verification module 32 and a programming module 33;
the acquiring module 31 is configured to acquire data to be programmed of a target programming number;
a verification module 32, configured to perform program verification on data to be programmed;
and the programming module 33 is configured to select a corresponding programming mode according to the programming times to program when the programming fails.
In this embodiment, the control device first acquires the data to be programmed of the target programming number through the acquisition module 31; then program verification is carried out on the data to be programmed through the verification module 32; finally, when programming fails, the programming module 33 selects the corresponding programming mode according to the programming times to program.
The embodiment provides a control device, which can carry out programming verification on target programming quantity of data to be programmed, after programming fails, a corresponding programming mode is selected according to programming times to carry out programming, so that the technical problem of low programming efficiency caused by fixed maximum programming bit number corresponding to each programming pulse in the programming process is avoided, and the programming efficiency is improved.
Further, the programming module 33 is specifically configured to:
when programming fails, judging whether the current programming is the first programming or not;
if the current first programming is the first programming, selecting a preset number of first programming data from the data to be programmed;
programming the first time to-be-programmed data for a first time period;
programming the data to be programmed for a second duration;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Further, the programming module 33 is specifically configured to:
when programming fails, judging whether the current programming is the first programming or not;
if the current programming is not the first programming, programming the data to be programmed for a third time length;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
Further, the obtaining module 31 is specifically configured to:
and reading the target programming quantity of data to be programmed from the programming data according to the programming address of each programming data.
Further, the control device further includes:
the rereading module is used for acquiring a current programming address corresponding to the data to be programmed if programming is successful;
and if the current programming address is not the ending programming address, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the ending programming address is programmed.
The control device can execute the programming method of the nonvolatile memory provided by any embodiment of the invention, and has the corresponding functional modules and beneficial effects of the execution method.
Note that the above is only a preferred embodiment of the present invention and the technical principle applied. It will be understood by those skilled in the art that the present invention is not limited to the particular embodiments described herein, but is capable of various obvious changes, rearrangements and substitutions as will now become apparent to those skilled in the art without departing from the scope of the invention. Therefore, while the invention has been described in connection with the above embodiments, the invention is not limited to the embodiments, but may be embodied in many other equivalent forms without departing from the spirit or scope of the invention, which is set forth in the following claims.

Claims (6)

1. A method of programming a non-volatile memory, comprising:
acquiring data to be programmed of a target programming quantity;
performing programming verification on data to be programmed;
if programming fails, selecting a corresponding programming mode according to the programming times to program;
the selecting a corresponding programming mode according to the programming times to program, including:
if the current first programming is the first programming, selecting a preset number of first programming data from the data to be programmed;
programming the first time to-be-programmed data for a first time period;
programming the data to be programmed for a second duration;
after programming is finished, returning to the operation of programming verification on the data to be programmed;
the selecting a corresponding programming mode according to the programming times to program, further comprises:
if the current programming is not the first programming, programming the data to be programmed for a third time length;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
2. The method of claim 1, wherein obtaining a target programming amount of data to be programmed comprises:
and reading the target programming quantity of data to be programmed from the programming data according to the programming address of each programming data.
3. The method as recited in claim 2, further comprising:
if programming is successful, acquiring a current programming address corresponding to the data to be programmed;
and if the current programming address is not the ending programming address, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the ending programming address is programmed.
4. A control device, which is disposed in a nonvolatile memory, comprising:
the acquisition module is used for acquiring the data to be programmed of the target programming quantity;
the verification module is used for performing programming verification on the data to be programmed;
the programming module is used for selecting a corresponding programming mode according to the programming times to program when programming fails;
the programming module is specifically configured to:
when programming fails, judging whether the current programming is the first programming or not;
if the current first programming is the first programming, selecting a preset number of first programming data from the data to be programmed;
programming the first time to-be-programmed data for a first time period;
programming the data to be programmed for a second duration;
after programming is finished, returning to the operation of programming verification on the data to be programmed;
the programming module is specifically further configured to:
if the current programming is not the first programming, programming the data to be programmed for a third time length;
after programming is finished, returning to the operation of programming verification on the data to be programmed.
5. The control device according to claim 4, wherein the acquisition module is specifically configured to:
and reading the target programming quantity of data to be programmed from the programming data according to the programming address of each programming data.
6. The control device according to claim 4, characterized by further comprising:
the rereading module is used for acquiring a current programming address corresponding to the data to be programmed if programming is successful;
and if the current programming address is not the ending programming address, reading the next data to be programmed from the programming data according to the current programming address, and continuing the programming verification operation until the ending programming address is programmed.
CN201910402157.XA 2019-05-15 2019-05-15 Programming method and control device of nonvolatile memory Active CN111951857B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910402157.XA CN111951857B (en) 2019-05-15 2019-05-15 Programming method and control device of nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910402157.XA CN111951857B (en) 2019-05-15 2019-05-15 Programming method and control device of nonvolatile memory

Publications (2)

Publication Number Publication Date
CN111951857A CN111951857A (en) 2020-11-17
CN111951857B true CN111951857B (en) 2023-06-09

Family

ID=73336917

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910402157.XA Active CN111951857B (en) 2019-05-15 2019-05-15 Programming method and control device of nonvolatile memory

Country Status (1)

Country Link
CN (1) CN111951857B (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101405813A (en) * 2006-06-22 2009-04-08 桑迪士克股份有限公司 Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
CN106205721A (en) * 2016-07-06 2016-12-07 北京兆易创新科技股份有限公司 A kind of programmed method of memory element
CN106229006A (en) * 2016-07-07 2016-12-14 北京兆易创新科技股份有限公司 A kind of programmed method of memory element
CN107045892A (en) * 2015-11-26 2017-08-15 三星电子株式会社 Nonvolatile memory and the storage device including nonvolatile memory
CN109087676A (en) * 2017-06-14 2018-12-25 北京京存技术有限公司 A kind of programmed method and device of nonvolatile memory

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7239557B2 (en) * 2005-06-17 2007-07-03 Micron Technology, Inc. Program method with optimized voltage level for flash memory
US7307887B2 (en) * 2005-12-29 2007-12-11 Sandisk Corporation Continued verification in non-volatile memory write operations
US8259497B2 (en) * 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8045384B2 (en) * 2009-06-22 2011-10-25 Sandisk Technologies Inc. Reduced programming pulse width for enhanced channel boosting in non-volatile storage
US7916533B2 (en) * 2009-06-24 2011-03-29 Sandisk Corporation Forecasting program disturb in memory by detecting natural threshold voltage distribution
KR102025263B1 (en) * 2012-10-05 2019-09-25 삼성전자주식회사 Memory system and read reclaim method thereof
US9478288B1 (en) * 2015-04-16 2016-10-25 Macronix International Co., Ltd. Method for programming memory device and associated memory device
CN106951186B (en) * 2017-03-07 2020-02-07 合肥兆芯电子有限公司 Data programming method, memory storage device and memory control circuit unit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101405813A (en) * 2006-06-22 2009-04-08 桑迪士克股份有限公司 Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages
CN107045892A (en) * 2015-11-26 2017-08-15 三星电子株式会社 Nonvolatile memory and the storage device including nonvolatile memory
CN106205721A (en) * 2016-07-06 2016-12-07 北京兆易创新科技股份有限公司 A kind of programmed method of memory element
CN106229006A (en) * 2016-07-07 2016-12-14 北京兆易创新科技股份有限公司 A kind of programmed method of memory element
CN109087676A (en) * 2017-06-14 2018-12-25 北京京存技术有限公司 A kind of programmed method and device of nonvolatile memory

Also Published As

Publication number Publication date
CN111951857A (en) 2020-11-17

Similar Documents

Publication Publication Date Title
US6975538B2 (en) Memory block erasing in a flash memory device
TWI286758B (en) A system and method for erase voltage control during multiple sector erase of a flash memory device
TWI305918B (en) Non-volatile memory device and program method with optimized voltage level for the non-volatile memory device
CN108520766A (en) Semiconductor storage
JP5598686B2 (en) Memory erasing method and apparatus
JP2004022112A (en) Non-volatile semiconductor memory device
JP2007035214A (en) Nonvolatile semiconductor storage device
TWI527035B (en) Semiconductor memory device and control method of the same
KR101026385B1 (en) Operation method of charge trapping type flash memory device
KR20120016233A (en) Multiple level program verify in a memory device
US9183070B2 (en) Resting blocks of memory cells in response to the blocks being deemed to fail
JP2005527061A (en) Method for erasing flash memory using a pre-erase step
US20050006698A1 (en) Semiconductor device
CN101923899A (en) Method and device for erasing nonvolatile memory
JP2003173690A (en) Semiconductor memory and its driving method
US20140269101A1 (en) Programming a memory cell to a voltage to indicate a data value and after a relaxation time programming the memory cell to a second voltage to indicate the data value
JPH05182479A (en) Nonolatile semiconductor memory writing and erasing en bloc electrically
CN111951870B (en) Programming method and control device of nonvolatile memory
CN106558342B (en) Nonvolatile semiconductor memory device and erasing method thereof
JP2004171686A (en) Nonvolatile semiconductor memory device, and data erasing method therefor
US7277329B2 (en) Erase method to reduce erase time and to prevent over-erase
CN111951857B (en) Programming method and control device of nonvolatile memory
JP4445299B2 (en) Nonvolatile memory evaluation method
KR100898653B1 (en) Flash memory device and method of programming the same
JP5636490B2 (en) Nonvolatile memory device with program current clamp and associated method

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
CB02 Change of applicant information

Address after: Room 101, Floor 1-5, Building 8, Yard 9, Fenghao East Road, Haidian District, Beijing 100094

Applicant after: Zhaoyi Innovation Technology Group Co.,Ltd.

Address before: 100083 12 Floors, Block A, Tiangong Building, Science and Technology University, 30 College Road, Haidian District, Beijing

Applicant before: GIGADEVICE SEMICONDUCTOR(BEIJING) Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant