DE60225005T2 - Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür - Google Patents
Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür Download PDFInfo
- Publication number
- DE60225005T2 DE60225005T2 DE60225005T DE60225005T DE60225005T2 DE 60225005 T2 DE60225005 T2 DE 60225005T2 DE 60225005 T DE60225005 T DE 60225005T DE 60225005 T DE60225005 T DE 60225005T DE 60225005 T2 DE60225005 T2 DE 60225005T2
- Authority
- DE
- Germany
- Prior art keywords
- programming
- cell
- voltage
- memory
- group
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- 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
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- 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
-
- 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
- G11C16/12—Programming voltage switching circuits
-
- 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/3468—Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
- G11C16/3481—Circuits 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
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
Description
- Die vorliegende Erfindung betrifft allgemein nichtflüchtige Halbleiterspeicher wie beispielsweise elektrisch löschbare und programmierbare Nur-Lese-Speicher (EEPROM) und Flash-EEPROM und betrifft spezieller Schaltungen und Verfahren zum Programmieren der Speicherzustände dieser.
- Halbleiterspeicher, die nichtflüchtig Ladung speichern können, insbesondere in Form von EEPROM- und Flash-EEPROM-Speichern, sind in jüngerer Zeit zum Speicher der Wahl in Mobil- und Handgeräten geworden, insbesondere für Datenanwendungen und Consumer-Elektronik-Produkte. Im Gegensatz zu einem RAM (Direktzugriffsspeicher), der auch einen Halbleiterspeicher darstellt, ist ein Flash-Speicher nichtflüchtig, indem die in diesem gespeicherten Daten selbst dann erhalten bleiben, nachdem die Stromversorgung abgeschaltet ist. Trotz der höheren Kosten werden Flash-Speicher zunehmend für Massenspeicheranwendungen genutzt. Herkömmliche Massenspeicher, die auf einem sich drehenden magnetischen Medium basieren, beispielsweise Festplatten und Disketten, sind im Umfeld von Mobil- und Handgeräten ungeeignet. Dies ist der Fall, weil Plattenlaufwerke tendenziell voluminös sind, anfällig für mechanische Ausfälle sind und eine hohe Reaktionszeit sowie einen hohen Energiebedarf haben. Diese unerwünschten Attribute machen einen auf Platten basierenden Speicher in den meisten mobilen und tragbaren Anwendungen unpraktisch. Flash-Speicher andererseits sind im Umfeld von mobilen und tragbaren Anwendungen wegen ihrer kleinen Größe, geringen Leistungsaufnahme, hohen Geschwindigkeit und hohen Zuverlässigkeit ideal geeignet.
- EEPROMs und elektrisch programmierbare Nur-Lese-Speicher (EPROMs) stellen nichtflüchtige Speicher dar, die gelöscht werden können und in deren Speicherzellen neue Daten geschrieben oder "programmiert" werden können.
- Ein EPROM nutzt ein schwebendes (nicht angeschlossenes) leitfähiges Gate, ein so genanntes Floating-Gate, in einer Feldeffekttransistor-Struktur, das über einem Kanalbereich in einem Halbleitersubstrat zwischen Source- und Drain-Gebieten angeordnet ist. Ein Steuergate wird dann über dem Floating-Gate bereitgestellt. Die Schwellspannungscharakteristik des Transistors wird durch die Menge an Ladung gesteuert, die auf dem Floating-Gate gehalten wird. Das bedeutet, für einen gegebenen Ladungswert auf dem Floating-Gate muss eine entsprechende Spannung (Schwellspannung) an das Steuergate angelegt werden, bevor der Transistor "anschaltet", um eine Leitung zwischen dessen Source- und Drain-Gebiet zu ermöglichen.
- Das Floating-Gate kann Ladung in einem bestimmten Bereich halten, und daher kann eine EPROM-Speicherzelle auf einen beliebigen Schwellspannungspegel in einem Schwellspannungsfenster programmiert werden. Die Größe des Schwellspannungsfensters wird durch den minimalen und den maximalen Schwellspannungspegel des Bauelements begrenzt, welcher wiederum dem Bereich der Ladungen entspricht, der auf dem Floating-Gate programmiert werden kann. Das Schwellspannungsfenster hängt im Allgemeinen von den Charakteristika, den Betriebsbedingungen und der Verlaufshistorie des Speicherbauelements ab. Jeder eindeutig auflösbare Schwellspannungspegel in dem Fenster kann prinzipiell zum Festlegen eines definierten Speicherzustands der Zelle genutzt werden.
- Für EPROM-Speicher wird der als Speicherzelle dienende Transistor typischerweise auf einen programmierten Zustand programmiert, indem Elektronen aus dem Kanalbereich des Substrats heraus durch ein dünnes Gate-Dielektrikum hindurch und auf das Floating-Gate beschleunigt werden. Der Speicher kann als Block gelöscht werden, indem die Ladung auf dem Floating-Gate durch ultraviolette Bestrahlung entfernt wird.
-
1A stellt schematisch einen nichtflüchtigen Speicher in Form einer EEPROM-Zelle mit einem Floating-Gate zum Speichern von Ladung dar. Ein elektrisch löschbarer und programmierbarer Nur-Lese-Speicher (EEPROM) weist eine ähnliche Struktur wie ein EPROM auf, bietet zusätzlich aber einen Mechanismus zum elektrischen Hinzufügen und Entfernen von Ladung von dessen Floating-Gate beim Anlegen geeigneter Spannungen, ohne dass eine Belichtung mit UV-Strahlung erforderlich ist. - Ein Array aus solchen EEPROM-Zellen wird als "Flash"-EEPROM-Array bezeichnet, wenn ein gesamtes Zellen-Array oder eine beträchtliche Gruppe von Zellen des Arrays zusammen elektrisch gelöscht werden kann (d. h. blitzartig). Wenn die Gruppe von Zellen gelöscht ist, kann sie danach erneut programmiert werden.
-
1B stellt schematisch einen nichtflüchtigen Speicher in Form einer NROM-Zelle mit einer dielektrischen Schicht zur Ladungsspeicherung dar. Anstatt Ladung auf einem Floating-Gate zu speichern, weist diese eine dielektrische Schicht zum Speichern von Ladung auf. Zum Beispiel offenbaren dieUS-Patente Nr. 5,768,192 und6,011,725 eine nichtflüchtige Speicherzelle mit einem einfangenden Dielektrikum, das in Zwischenlage zwischen zwei Siliciumdioxid-Schichten angeordnet ist. - ZELLEN- UND ARRAY-STRUKTUR
-
1C stellt schematisch eine Flash-EEPROM-Zelle mit sowohl einem Auswahlgate als auch einem Control- oder Steuergate dar. Speicherbauelemente mit einer solchen Zellenstruktur sind inUS-Patent Nr. 5,313,421 beschrieben. Die Speicherzelle10 weist einen "gespaltenen Kanal"12 zwischen Source-14 und Drain-16 Diffusionsgebieten auf. Eine Zelle wird effektiv mit zwei Transistoren T1 und T2 in Reihe gebildet. T1 dient als Speichertransistor, wobei er ein Floating-Gate20 und ein Control-Gate30 aufweist. Das Control-Gate wird auch als Steuergate30 bezeichnet. Das Floating-Gate kann eine wählbare Menge an Ladung speichern. Die Stromstärke, die durch den Abschnitt des Kanals von T1 fließen kann, hängt von der Spannung an dem Steuergate30 und von der Menge an Ladung, die auf dem dazwischen liegenden Floating-Gate20 vorhanden ist, ab. T2 dient als Auswahltransistor, indem er ein Auswahlgate40 aufweist. Wenn T2 durch eine Spannung an dem Auswahlgate40 angeschaltet ist, ermöglicht er, dass der in dem Abschnitt des Kanals von T1 vorhandene Strom zwischen Source und Drain fließen kann. -
1D stellt schematisch eine weitere Flash-EEPROM-Zelle mit zwei Floating-Gates und unabhängigen Auswahl- und Steuergates dar. Speicherbauelemente, die eine solche Zellenstruktur aufweisen, sind in der gleichzeitig anhängigen US-Patentanmeldung Nr. 09/343,493, eingereicht am 30. Juni 1999 und alsUS 6,103,573 erteilt, beschrieben. Die Speicherzelle10' ähnelt derjenigen aus1C , außer dass sie effektiv drei in Reihe geschaltete Transistoren aufweist. Zwischen einem Paar Speichertransistoren, T1-links und T1-rechts, befindet sich ein Auswahltransistor T2. Die Speichertransistoren weisen Floating-Gates20' und20'' und Steuergates30' bzw.30'' auf. Der Auswahltransistor T2 wird durch ein Auswahlgate40' gesteuert. Zu einem bestimmten Zeitpunkt wird jeweils nur auf einen der beiden Speichertransistoren zugegriffen, zum Lesen oder Programmieren. Wenn auf die Speichereinheit T1-links zugegriffen wird, wird sowohl der T2 als auch der T1-rechts angeschaltet, sodass der in dem Abschnitt des Kanals von T1-links vorhandene Strom zwischen Source und Drain fließen kann. Analog werden, wenn auf die Speichereinheit T1-rechts zugegriffen wird, der T2 und der T1-links angeschaltet. Eine Löschung erfolgt dadurch, dass sich ein Abschnitt des Auswahlgate-Polysiliciums nahe dem Floating-Gate befindet und eine beträchtliche positive Spannung (z. B. 20 V) an das Auswahlgate angelegt wird, sodass die in dem Floating-Gate gespeicherten Elektronen zu dem Auswahlgate-Polysilicium tunneln können. -
2 stellt ein schematisches Blockdiagramm eines adressierbaren Arrays aus Speicherzellen in Zeilen und Spalten zusammen mit Decodern dar. Ein zweidimensionales Array100 ist aus Speicherzellen gebildet, wobei die Speicherzellen jeder Zeile über ihre Source- und Drain-Elektroden in Reihe geschaltet sind. Jede Speicherzelle50 weist eine Source-Elektrode54 , eine Drain-Elektrode56 und ein Steuergate60 sowie ein Auswahlgate70 auf. Die Auswahlgates der Zellen in einer Zeile sind mit einer Wortleitung110 verbunden. Die Source- und Drain-Elektroden der Zellen in einer Spalte sind mit Bitleitungen124 bzw.126 verbunden. Außerdem sind die Steuergates der Zellen in einer Spalte durch eine Steuerleitung130 verbunden. - Wenn die Zelle
50 zum Programmieren oder Lesen adressiert wird, müssen jeweils geeignete Programmier- oder Lesespannungen (VS, VD, VSTG, VSLG) an Source54 und Drain56 der Zelle, an das Steuergate60 und an das Auswahlgate70 angelegt werden. Ein Wortleitungsdecoder112 verbindet selektiv eine ausgewählte Wortleitung mit einer Auswahlspannung VSLG. Ein Bitleitungsdecoder122 verbindet selektiv das Bitleitungspaar124 ,126 in einer adressierten Spalte mit einer Source-Spannung VS bzw. einer Drain-Spannung VD. Analog verbindet ein Steuerleitungsdecoder132 die Steuerleitung130 in der adressierten Spalte selektiv mit einer Steuer- oder Control-Gate-Spannung VSTG. - Somit wird eine spezielle Zelle des zweidimensionalen Arrays aus Flash-EEPROM-Zellen zum Programmieren oder Lesen durch Auswahl oder Decodierung in der Spaltenrichtung eines Paares von Bitleitungen und einer Steuerleitung und in der Zeilenrichtung einer Wortleitung adressiert. Um das Leistungsverhalten zu verbessern, ermöglichen die Spaltendecoder
122 und132 , eine Gruppe von Spalten auszuwählen und daher auf eine entsprechende Gruppe oder einen Block von Zellen parallel zuzugreifen, indem auf die Zeile von Zellen Block für Block zugegriffen wird. - Früher hatten viele Flash-EEPROM-Bauelemente eine Wortleitung, die sämtliche Steuergates der Zellen entlang einer jeweiligen Zeile verband. Somit hatte die Wortleitung grundsätzlich zwei Funktionen auszuführen: die Zeilenauswahl und das Anlegen einer Steuergate-Spannung an sämtliche Zellen in der Zeile zum Lesen oder Programmieren. Es ist oft schwierig, diese beiden Funktionen in optimaler Weise mit einer einzigen Spannung auszuführen. Wenn die Spannung zur Auswahl einer Zeile ausreicht, kann sie zum Programmieren höher als gewollt sein. Bei einer Zelle jedoch, die ein unabhängiges Steuergate und Auswahlgate aufweist, braucht die Wortleitung, die an die Auswahlgates der Zellen in einer Zeile angeschlossen ist, nur die Auswahlfunktion auszuführen, während die Steuerleitung die Funktion des Anlegens einer optimalen, unabhängigen Steuergate-Spannung an einzelne Zellen in einer Spalte ausführt.
- ZELLEN-CHARAKTERISTIKA
- Bei der üblichen EEPROM-Zelle mit zwei Zuständen wird zumindest ein Stromstärke-Kipppunktwert festgelegt, um so das Leitungsfenster in zwei Bereiche zu unterteilen. Wenn eine Zelle gelesen wird, indem vorgegebene feste Spannungen angelegt werden, wird deren Source/Drain-Strom durch Vergleich mit dem Kipppunktwert (oder der Referenzstromstärke IREF) auf einen Speicherzustand aufgelöst. Wenn die gelesene Stromstärke größer als diejenige des Kipppunktwertes oder IREF ist, wird für die Zelle ein bestimmter logischer Zustand festgestellt (z. B. ein Zustand "Null"), während, wenn die Stromstärke geringer als der Kipppunktwert ist, für die Zelle der andere logische Zustand festgestellt wird (z. B. ein Zustand "Eins"). Somit speichert eine solche Zelle mit zwei Zuständen ein Bit an digitalen Daten. Eine Referenzstromquelle, die extern programmierbar sein kann, wird oft als Teil eines Speichersystems bereitgestellt, um die Stromstärke des Kipppunktwertes zu erzeugen.
- Um die Speicherkapazität zu erhöhen, werden im Zuge der Fortschritte in der Halbleitertechnologie EEPROM-Bauelemente mit immer höherer Dichte hergestellt. Eine andere Methode zum Erhöhen der Speicherkapazität besteht darin, in jeder Speicherzelle mehr als zwei Zustände zu speichern.
- Für eine Mehrzustands- oder Mehrpegel-EEPROM-Speicherzelle wird das Leitungsfenster in mehr als zwei Bereiche unterteilt, durch mehr als einen Kipppunkt, sodass jede Zelle mehr als ein Bit Daten speichern kann. Die Informationen, die ein gegebenes EEPROM-Array speichern kann, steigen also mit der Anzahl der Zustände, die in jeder Zelle gespeichert werden können. EEPROMs oder Flash-EEPROMs mit Mehrzustands- oder Mehrpegel-Speicherzellen sind in
US-Patent Nr. 5,172,338 beschrieben. - In der Praxis wird der Speicherzustand einer Zelle üblicherweise gelesen, indem die Leitungsstromstärke zwischen der Source- und der Drain-Elektrode der Zelle ermittelt wird, wenn eine Referenzspannung an das Steuergate angelegt ist. Somit kann für jede gegebene Ladung auf dem Floating-Gate einer Zelle eine entsprechende Leitungsstromstärke in Bezug auf eine feste Steuergate-Referenzspannung erkannt werden. Analog definiert der Bereich an Ladung, die auf das Floating-Gate programmiert werden kann, ein entsprechendes Schwellspannungsfenster oder ein entsprechendes Leitungsstromfenster.
- Alternativ ist es, anstatt den Leitungsstrom in einem unterteilten Stromstärkefenster zu ermitteln, möglich, die Schwellspannung an dem Steuergate zu bestimmen, welche bewirkt, dass der Leitungsstrom gerade eben "einsetzt" oder eine feste Referenzstromstärke übersteigt. Somit erfolgt die Ermittlung anhand einer Schwellspannung in einem unterteilten Schwellspannungsfenster.
-
3 stellt die Beziehung zwischen der Source-Drain-Stromstärke-ID und der Steuergate-Spannung VSTG für vier unterschiedliche Ladungen Q1–Q4 dar, die das Floating-Gate wahlweise zu einem bestimmten Zeitpunkt speichern kann. Die vier durchgezogenen Kurven für ID in Abhängigkeit von VSTG stellen vier mögliche Ladungswerte dar, die auf einem Floating-Gate einer Speicherzelle programmiert werden können, wobei sie jeweils vier möglichen Speicherzuständen entsprechen. Beispielsweise kann das Schwellspannungsfenster einer Population von Zellen von 0,5 V bis 3,5 V reichen. Es können sechs Speicherzustände abgegrenzt werden, indem das Schwellspannungsfenster in fünf Bereiche mit einem Intervall von jeweils 0,5 V unterteilt wird. Wenn zum Beispiel eine Referenzstromstärke IREF von 2 μA genutzt wird, wie gezeigt, dann kann die mit Q1 programmierte Zelle als in einem Speicherzustand "1" befindlich betrachtet werden, da deren Kurve IREF im Bereich des Schwellspannungsfensters schneidet, das durch VSTG = 0,5 V und 1,0 V begrenzt ist. Analog befindet sich Q4 in einem Speicherzustand "5". - Wie anhand der vorstehenden Beschreibung zu ersehen ist, wird das Schwellspannungsfenster einer Speicherzelle umso feiner unterteilt, für je mehr Zustände die Speicherzelle ausgelegt ist. Dadurch wird eine höhere Genauigkeit bei Programmier- und Lesevorgängen erforderlich sein, um die geforderte Auflösung erreichen zu können.
-
US-Patent Nr. 4,357,685 offenbart ein Verfahren zum Programmieren eines EPROM mit 2 Zuständen, bei welchem, wenn eine Zelle auf einen gegebenen Zustand programmiert wird, diese aufeinanderfolgenden Programmierspannungsimpulsen ausgesetzt wird, wobei jedes Mal eine inkrementelle Ladung auf dem Floating-Gate ergänzt wird. Zwischen den Impulsen wird die Zelle zurückgelesen oder verifiziert, um deren Source-Drain- Stromstärke in Bezug auf den Kipppunktwert zu bestimmen. Die Programmierung wird gestoppt, wenn verifiziert worden ist, dass der Stromstärkezustand den gewünschten Zustand erreicht hat. Die genutzte Programmierimpulsfolge kann eine zunehmende Periode oder Amplitude aufweisen. - Bei Programmierschaltungen gemäß dem Stand der Technik werden einfach Programmierimpulse angelegt, um das Schwellspannungsfenster von dem gelöschten oder Grundzustand aus zu durchschreiten, bis der Soll-Zustand erreicht ist. Praktisch wäre es, um eine adäquate Auflösung zu ermöglichen, erforderlich, dass für jeden unterteilten oder begrenzten Bereich zumindest ungefähr fünf Programmierschritte durchlaufen werden. Das Leistungsverhalten ist für Speicherzellen mit 2 Zuständen akzeptabel. Für Mehrzustands-Zellen jedoch erhöht sich die Anzahl der erforderlichen Schritte mit der Anzahl der Unterteilungen, und daher muss die Genauigkeit oder Auflösung der Programmierung erhöht werden. Zum Beispiel können für Zellen mit 16 Zuständen im Mittel zumindest 40 Programmierimpulse zum Programmieren auf einen Soll-Zustand erforderlich sein.
- Die
US 6,014,330 offenbart ein System, bei welchem Speicherzellen durch aufeinanderfolgendes Anlegen von Programmierimpulsen auf eine Mehrzahl von Speicherzuständen programmiert werden. Die Oberbegriffe der unabhängigen Ansprüche basieren auf dem Offenbarungsgehalt des DokumentsUS 5,910,915 . - Dementsprechend besteht eine allgemeine Aufgabe der vorliegenden Erfindung darin, ein Speicherbauelement mit hoher Dichte und hoher Leistungsfähigkeit und dennoch zu geringen Kosten zur Verfügung zu stellen.
- Insbesondere besteht eine allgemeine Aufgabe der vorliegenden Erfindung darin, einen Flash-EEPROM mit hoher Leistungsfähigkeit zur Verfügung zu stellen, der im Wesentlichen mehr als zwei Speicherzustände unterstützen kann.
- Eine weitere allgemeine Aufgabe der vorliegenden Erfindung besteht darin, Flash-EEPROM-Halbleiterchips zur Verfügung zu stellen, die in Computersystemen Magnetplatten-Speichereinrichtungen ersetzen können.
- Aufgabe der vorliegenden Erfindung ist es, verbesserte Programmierschaltungen und -verfahren für Flash-EEPROM-Bauelemente zur Verfügung zu stellen.
- Weiterhin ist es Aufgabe der Erfindung, Programmierschaltungen zur Verfügung zu stellen, die einfacher und leichter hergestellt werden können und die eine bessere Genauigkeit und Zuverlässigkeit über eine längere Nutzungsdauer hin aufweisen.
- Diese und weitere Aufgaben werden gelöst durch Verbesserungen an Programmierschaltungen und -verfahren für nichtflüchtige Bauelemente mit Floating-Gate. Verschiedene Aspekte der vorliegenden Erfindung helfen das Leistungsverhalten zu verbessern, wobei gleichzeitig die erforderliche genaue Programmierauflösung erreicht wird.
- Entsprechend einem Aspekt der vorliegenden Erfindung wird ein Verfahren zum Programmieren einer Gruppe von Speicherzellen wie in Anspruch 1 beansprucht zur Verfügung gestellt.
- Entsprechend einem weiteren Aspekt der vorliegenden Erfindung wird ein nichtflüchtiger Speicher wie in Anspruch 16 beansprucht zur Verfügung gestellt.
- Ein Merkmal einer bevorzugten Ausführungsform der vorliegenden Erfindung besteht darin, Programmierimpulse zu nutzen, deren Stärke für die zu programmierenden Daten (Soll-Zustand) optimiert sind, sodass die Zelle innerhalb des ersten Schritts oder der ersten wenigen Schritte so nah wie möglich an den Soll-Zustand heran programmiert wird, ohne diesen zu überschreiten. Ein zweites Merkmal besteht darin, die Programmierung über eine Reihe von Betriebsphasen zu iterieren, wobei bei jeder Phase die Programmierwellenform zunehmend feinere Programmierschritte erzeugt. Ein weiteres Merkmal besteht darin, die ersten beiden Merkmale in einem Programmiervorgang zu realisieren, der auf eine Gruppe von Zellen parallel angewendet werden kann. Auf diese Weise können gleichzeitig sowohl eine hohe Auflösung als auch eine schnelle Konvergenz auf den Soll-Zustand hin erreicht werden, wobei die parallele Funktionsweise das Leistungsverhalten weiter verbessert.
- Die Verbesserung umfasst eine Programmierschaltung und ein Programmierverfahren, die auf eine Gruppe von Speicherzellen parallel angewendet werden können. Die an jede der Zellen parallel angelegten Programmierimpulse sind für die in dieser Zelle zu speichernden Daten optimiert. Auf diese Weise wird jede der Zellen mit einem Minimum an Programmierimpulsen auf ihren Soll-Zustand programmiert. In der bevorzugten Ausführungsform wird dies durch Bereitstellen eines Programmierspannungsbusses erreicht, der eine Mehrzahl von Spannungspegeln bereitstellt, und dadurch, dass die Programmierschaltung für jede Zelle in der Gruppe von dem Spannungsbus einen optimalen Spannungspegel auswählen kann, der zum Programmieren der jeweiligen Zelle auf ihren Soll-Zustand geeignet ist.
- Die Programmierimpulse können über eine Mehrzahl von Programmierbetriebsphasen angelegt werden, mit einer zunehmend feineren Programmierauflösung. Bei der bevorzugten Ausführungsform wird während jeder Phase eine Programmierspannung in Form einer Treppen-Wellenform an jede der Zellen parallel angelegt. Eine Zelle in der Gruppe wird aus der weiteren Programmierung ausgeschlossen, wenn diese soweit programmiert worden ist, dass sie einen vorbestimmten Pegel überschritten hat, der geringfügig zu dem Soll-Pegel versetzt ist, welcher dem Soll-Zustand entspricht. Der Versatz ist derart vorgesehen, dass ein Programmierimpuls, der eine Zelle über den vorbestimmten Pegel hinaus programmiert, den Soll-Pegel nicht um mehr als einen vorgegebenen Toleranzwert übersteigt. Die vorgegebene Toleranz wird implizit durch die Größe der Programmierschritte festgelegt. Während der letzten Phase ist der vorgegebene Pegel gleich dem Soll-Pegel, wobei der Versatz Null beträgt. Auf diese Weise ist eine schnelle Konvergenz auf den Soll-Zustand hin möglich, wobei gleichzeitig eine hohe Auflösung erreicht wird.
- Die verbesserten Programmierschaltungen und -verfahren ermöglichen es, den Bereich der Leitungszustände oder Schwellspannungen der Zelle fein zu unterteilen, um eine höhere Speicherdichte zu unterstützen. Bei der bevorzugten Ausführungsform kann eine Flash-EEPROM-Zelle mit 16 unterschiedlichen Zuständen mit ungefähr 10–20 Programmierschritten programmiert werden. Wenn die verbesserten Merkmale der datenabhängigen Programmierspannungen und der Mehrphasenprogrammierung in einem stark parallelen Betrieb implementiert werden, ist ein Flash-EEPROM mit hoher Dichte und hohem Leistungsverhalten und dennoch geringen Kosten möglich.
- Weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden anhand der folgenden Beschreibung ihrer bevorzugten Ausführungsformen verständlich werden, wobei die Beschreibung im Zusammenhang mit den beigefügten Zeichnungen gelesen werden sollte.
-
1A stellt schematisch einen nichtflüchtigen Speicher in Form einer EEPROM-Zelle dar; -
1B stellt schematisch einen nichtflüchtigen Speicher in Form einer NROM-Zelle dar; -
1C stellt schematisch eine Flash-EEPROM-Zelle mit sowohl einem Auswahlgate als auch einem Control- oder Steuergate dar; -
1D stellt schematisch eine weitere Flash-EEPROM-Zelle mit zwei Floating-Gates und einem unabhängigen Auswahl- und Steuergate dar; -
2 stellt ein schematisches Blockdiagramm eines adressierbaren Arrays aus Speicherzellen in Zeilen und Spalten mit Decodern dar; -
3 stellt die Beziehung zwischen dem Source-Drain-Strom I(t) und der Steuergate-Spannung VSTG für vier unterschiedliche Ladungen Q1–Q2 dar, die das Floating-Gate zu einem bestimmten Zeitpunkt speichern kann; -
4 stellt ein Blockdiagramm dar, das ein Programmiersystem zum parallelen Programmieren einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht; -
5 zeigt detaillierter den Mehrphasen-Programmierspannungsgenerator und den Zellen-ProgrammierController der Mehrphasen-Programmierschaltung aus4 ; die -
6(a) –6(e) stellen Taktungsdiagramme für den Abtast- und Haltebetrieb des Mehrphasen-Programmierspannungsgenerators aus5 dar; die -
7(a) –7(i) stellen Taktungsdiagramme für die Funktionsweise ersten Phase des Mehrphasen-Programmierspannungsgenerators dar, der in5 gezeigt ist; die -
8(a) –8(j) stellen Taktungsdiagramme für die Funktionsweise der zweiten Phase des in5 gezeigten Mehrphasen-Programmierspannungsgenerators dar; -
9 stellt ein Ablaufdiagramm der mehrphasigen, parallelen Programmierung einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung dar. -
4 stellt ein Blockdiagramm dar, das ein Programmiersystem zum parallelen Programmieren einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht. Das Programmiersystem200 umfasst einen Satz von Mehrphasen-Programmierschaltungen210 , ...,210' zum Bereitstellen optimierter einzelner Programmierspannungen VSTG(1), ..., VSTG(k) für die Steuergates60 , ...,60' einer Gruppe aus k Speicherzellen50 , ...,50' . Bei einer bevorzugten Ausführungsform wird ein Block in einer Größe von k = 4096 Zellen parallel programmiert. - Die Mehrphasen-Programmierschaltung
210 stellt im Wesentlichen eine Reihe von Programmierspannungsimpulsen an dem Steuergate der Zelle50 bereit. Wenn die Zelle50 auf einen Soll-Zustand S1 programmiert werden soll, werden die zugeführten Spannungsimpulse derart optimiert, dass die Zelle exakt und schnell auf S1 programmiert wird. Bei einer bevorzugten Ausführungsform ist das Schwellspannungsfenster jeder Zelle50 derart unterteilt, dass einer von sechzehn Zuständen bestimmt wird. Zum Beispiel wäre bei einer Zelle, bei welcher ein Schwellspannungsfenster von 0,5 bis 3,5 V reicht, eine Unterteilung in Intervalle von ungefähr 0,2 V erforderlich, um 16 Zustände abzugrenzen. Dies ist ungefähr eine Größenordnung mehr als die Auflösung, die bei einer Unterteilung in 2 Zustände genutzt wird. - Ein Mehrspannungsbus
220 wird von einer Spannungsversorgung222 getrieben, um eine Mehrzahl von optimalen Startspannungen V0 zum Programmieren und Lesen der unterteilten Zustände bereitzustellen. Allgemein ist die Optimierung der Startspannungen umso feiner, je mehr Spannungen zur Verfügung stehen. Bei der bevorzugten Ausführungsform wird der Mehrspannungsbus Spannungen bereitstellen, die ungefähr gleich jeder der unterteilten Schwellspannungen sind. Beim vorliegenden Beispiel umfasst der Bus16 Spannungsleitungen, wobei die Spannungen 0,4; 0,6; 0,8; 1,0; 1,2; 1,4; 1,6; 1,8; 2,0; 2,2; 2,4; 2,6; 2,8; 3,0; 3,2 und 3,4 V betragen. - Wenn die Zelle
50 auf einen Soll-Zustand S1 programmiert werden soll, werden die Daten in einem Daten-Latch232 gespeichert. Ein Spannungswähler230 , der auf die Soll-Zustandsdaten D(S1) (die mehrere Bits ausmachen können) in dem Daten-Latch232 anspricht, wählt eine der Spannungen der Busleitung V0(S1) aus, die für die Programmierung der Zelle auf den Soll-Zustand S1 optimiert ist. - Wie bereits beschrieben, erfolgt die Programmierung durch abwechselndes Anlegen eines Programmierimpulses an die Zelle, gefolgt von einem Zurücklesen, um den resultierenden Speicherzustand der Zelle festzustellen. Während der Verifizierungs-(Zurücklese-)Vorgänge wird die Spannung V0(S1) an das Steuergate
60 der Zelle angelegt. Während der Programmierung bildet die Spannung V0(S1) die Basis zum Aufbau einer Programmierspannung mit einem vorgegebenen Wellenformprofil. In Abhängigkeit von der gewünschten Programmierrate kann das Wellenformprofil ein flaches Profil bis zu ansteigenden Profilen darstellen, die zu einer erhöhten Programmierrate führen. Bei einer bevorzugten Ausführungsform stellt das vorbestimmte Wellenformprofil eine treppenförmige Wellenform dar. - Während eines Verifizierungsvorgangs aktiviert ein Signal VERIFIZIERUNG einen Pfad
234 , damit V0(S1) von dem Spannungswähler230 an dem Steuergate60 der Zelle50 bereitgestellt wird. Der resultierende Source-Drain-Strom wird von einem Leseverstärker240 mit einem Referenzstrom verglichen. Vor dem Beginn der Programmierung befindet sich die Zelle50 in einem gelöschten Zustand, in welchem der Source-Drain-Strom größer als der Referenzstrom ist. Im Zuge der fortschreitenden Programmierung der Zelle50 sammeln sich Ladungen auf dem Floating-Gate, wodurch der Feldeffekt von V0(S1) des Steuergates auf den Kanal vermindert wird, sodass der Source-Drain-Strom abnimmt, bis er während der Verifizierung unter den Referenzstrom, IREF, abgefallen ist. An diesem Punkt ist die Zelle auf einen gewünschten Pegel programmiert, und das Ereignis wird dadurch signalisiert, dass ein Ausgangssignal DURCH* von dem Leseverstärker240 auf LOW (niedrigen Pegel) kommt. - Während eines Programmierungsvorgangs nutzt ein Mehrphasen-Programmierspannungsgenerator
250 V0(S1), um die Basis zum Erzeugen verschiedener Wellenformen zu bilden, die an dem Steuergate60 der Zelle bereitgestellt werden sollen. Der Mehrphasen-Programmierspannungsgenerator250 erzeugt in unterschiedlichen Betriebsphasen unterschiedliche Wellenformen und wird durch einen Zellenprogrammier-Controller260 gesteuert, welcher auf den Zustand der lokalen Zellen50 wie auch auf die Zustände sämtlicher Zellen in der Gruppe aus k Zellen anspricht. - Der Zellenprogrammier-Controller
260 spricht außerdem auf das von dem Leseverstärker240 ausgegebene Signal an. Wie bereits beschrieben kommt, wenn die Zelle auf einen gewünschten Pegel programmiert ist, das Ausgangssignal DURCH* des Leseverstärkers auf LOW, was wiederum bewirkt, dass der Controller260 ein Signal PGM1* ausgibt, um eine Programmiersperrschaltung280 zu aktivieren. Wenn die Programmiersperrschaltung280 aktiviert ist, sperrt sie die Zelle50 grundsätzlich für die weitere Programmierung, durch Anlegen geeigneter Spannungen an Drain und die Steuergates. - Zum parallelen Programmieren von k Zellen kommt ein Satz von Mehrphasen-Programmierschaltungen
210 , ...,210' zur Anwendung, jeweils eine Programmierschaltung für jede Zelle. Ein Parallel-Programmier-Controller290 , der auf den Status PGM1*, ..., PGMk* jeder der k Mehrphasen-Programmierschaltungszellen anspricht, koordiniert die Programmiervorgänge für den Satz von Programmierschaltungen. Wie später noch detaillierter beschrieben wird, beginnt eine neue Phase, nachdem sämtliche k Zellen auf ihre jeweils gewünschten Pegel programmiert worden sind, was gleichbedeutend damit ist, dass jede Zelle mit der Referenzstromstärke ihres Leseverstärkers einsetzt. Infolgedessen sind PGM1 bis PGMk* alle LOW geworden, d. h. auf niedrigen Pegel gekommen. -
5 zeigt detaillierter den Mehrphasen-Programmierspannungsgenerator250 sowie den Zellenprogrammier-Controller260 der Mehrphasen-Programmierschaltung210 aus4 . Die Funktionsweise der verschiedenen Komponenten lässt sich am besten in Verbindung mit den in den6 –8 gezeigten Taktungsdiagrammen beschreiben. - Grundsätzlich wird der Mehrphasen-Programmierspannungsgenerator
250 in einer Anfangsphase des Betriebs, die dadurch festgelegt ist, dass ein Steuersignal ABTASTUNG einen hohen Impuls aufweist, die optimierte Spannung V0(S1) in einer Abtast-und-Halte-Schaltung300 abtasten und speichern. Die Abtast-und-Halte-Schaltung300 weist einen Ausgangsknoten307 auf, an welchem Spannungen von anderen Quellen (beispielsweise330 ,350 , die noch beschrieben werden) aufsummiert werden, sodass sich eine resultierende Spannung, Vletzte, bildet. Diese Spannung, Vletzte, treibt dann einen Sourcefolger310 , um die Programmierspannung VSTG(1) an dem Steuergate der Zelle50 bereitzustellen. - Die Abtast-und-Halte-Schaltung
300 umfasst einen Eingang, der durch zwei in Reihe geschaltete Transistoren302 ,304 torgesteuert wird, mit einem gemeinsamen Knoten303 zwischen diesen und mit dem Ausgangsknoten307 . Der gemeinsame Knoten303 kann auf eine Spannung VHALTEN gelegt werden, die durch einen weiteren Transistor308 . - Bei der bevorzugten Ausführungsform werden die anderen Quellen für Spannungen, die an dem Ausgangsknoten
307 aufsummiert werden, um Vletzte zu ergeben, durch einen Wellenformgenerator320 für eine erste Phase mit einem zugehörigen Wechselspannungskoppler330 sowie einen Wellenformgenerator340 für eine zweite Phase mit einem zugehörigen Wechselspannungskoppler350 erzeugt. - Die
6(a) –6(e) stellen Taktungsdiagramme für den Abtast-und-Halte-Betrieb des Mehrphasen-Programmierspannungsgenerators aus5 dar. Im Betrieb sorgt der Parallelprogrammier-Controller290 (siehe4 ) für das Signal ABTASTUNG, das die beiden in Reihe geschalteten Transistoren302 und304 anschaltet, damit die Eingangsspannung V0(S1) an einem Kondensator C1 des Wechselspannungskopplers330 anliegen kann. Im Abtast-und-Halte-Betrieb tragen die Wellenformgeneratoren320 und340 nicht zu Vletzte bei, da deren Pfade durch die Ansteuersignale G1 bzw. G2 (6(c) ) blockiert sind. Somit nimmt die Spannung Vletzte an dem Ausgangsknoten307 anfangs den Wert von V0(S1) an (6(e) ). Danach werden die beiden in Reihe geschalteten Transistoren abgeschaltet, indem ABTASTUNG auf LOW kommt (6(a) ), und der gemeinsame Knoten303 kann die Spannung VHALTEN annehmen, nachdem ein Signal HALTEN (6(b) ) an dem Gate des Transistors308 angelegt ist. Mit dieser Vorspannungsaufhebungsanordnung wird ein Lecken von Vletzte zurück über den Transistor304 um mehrere Größenordnungen reduziert und die Genauigkeit der an dem Knoten307 gespeicherten abgetasteten Spannung wird sichergestellt. - Der in
5 gezeigte Zellenprogrammier-Controller260 umfasst ein S/R-(Set/Reset-)Latch262 . Wenn die Zelle50 derart programmiert ist, dass deren Leitungsstrom unterhalb eines Referenzstromwertes liegt, gibt der Leseverstärker das Signal DURCH* aus, das von HIGH auf LOW übergeht. Dieses wird genutzt, um das S/R-Latch262 derart zu setzen, dass sich ein gelatchtes Ausgangssignal PGM1* von HIGH auf LOW ändert, wodurch wiederum die Programmiersperrschaltung280 aktiviert wird. - Die
7(a) –7(i) stellen Taktungsdiagramme für die Funktionsweise der ersten Phase des in5 gezeigten Mehrphasen-Programmierspannungsgenerators dar. Bei der bevorzugten Ausführungsform wird vor der Programmierung ein Verifizierungsvorgang ausgeführt. Ein RESET-Signal setzt den S/R-Latch262 zurück, sodass das gelatchte Ausgangssignal PGM1* HIGH ist. Ein Verifizierungsvorgang wird immer dann aktiviert, wenn das Signal VERIFIZIERUNG auf HIGH kommt. Im Gegensatz dazu kann ein Programmiervorgang stattfinden, wenn das Signal VERIFIZIERUNG LOW ist. Wenn die Zelle50 richtig gelöscht ist, wird das Ausgangssignal DURCH* des Leseverstärkers240 HIGH sein, wodurch eine Programmierung stattfinden kann, weil dieses nicht die Programmiersperrschaltung280 aktivieren wird (siehe auch4 ). - Während der ersten Phase des Programmiervorgangs wird der erste Wellenformgenerator
320 durch ein Steuersignal Φ1 (7(e) ) von dem Parallelprogrammier-Controller290 aktiviert. Er erzeugt dann V1(t) (7(h) ) in Form eines oder mehrerer treppenförmiger Impulse, wenn das Durchlass-Gatesignal G1 dies gestattet. Der Anfangsanstieg des ersten Impulses ist vorzugsweise abgeschrägt, um den ansonsten steilen Anstieg moderater zu gestalten, wodurch etwaige unerwünschte Spannungen in der Speicherzelle gemildert werden. Mit jedem nachfolgenden Impuls der Wellenform wird der programmierte Pegel der Zelle zu einem Soll-Pegel hin angehoben, welcher als ein bevorzugter Pegel festgelegt ist, der den Soll-Zustand für die Zelle bestimmt. Wegen der diskreten Natur der Programmierschritte werden die programmierten Pegel, die einen gegebenen Speicherzustand repräsentieren sollen statistisch verteilt sein. Bei der vorliegenden Ausführungsform wird eine Zelle als auf einen gegebenen Speicherzustand programmiert betrachtet, wenn der programmierte Schwellspannungspegel in den diesem Zustand zugeordneten Bereich von Programmierpegeln fällt. Der Bereich von Programmierpegeln wird am unteren Ende durch den Soll-Pegel und am oberen Ende durch den diesem Zustand zugeordneten vorgegebenen Toleranzwert begrenzt. - Um ein Überschreiten des Bereichs von Programmierpegeln zu vermeiden, nutzt die Programmierschaltung einen vorbestimmten Pegel knapp vor dem Bereich, um zu ermitteln, wann die Programmierung während jeder Phase abzubrechen ist. Dieser vorbestimmte Pegel ist geringfügig zu dem Soll-Pegel versetzt, sodass, wenn ein Programmierimpuls den programmierten Pegel an dem vorbestimmten Pegel vorbei verschiebt, dieser den Soll-Pegel nicht um mehr als die zugeordnete vorbestimmte Toleranz überschreiten wird. Mit anderen Worten ist, sobald der vorbestimmte Pegel überschritten ist, die Zelle auf einen Pegel programmiert, der das obere Ende des Programmierpegelbereichs für diesen Zustand nicht übersteigt. In diesem Fall werden die Programmierimpulse der momentanen Phase nicht länger angelegt. Somit gibt es im Hinblick auf die Anstiegsrate der treppenförmigen Wellenform und den vorbestimmten Pegel der ersten Phase folgende Überlegungen: Der Soll-Pegel wird mit aufeinanderfolgenden Impulsen so schnell wie möglich angenähert, aber kein einzelner Impuls wird bewirken, dass die Schwellspannung der Speicherzelle den für die erste Phase vorbestimmten Pegel als auch die zugehörige vorbestimmte Toleranzgrenze jenseits des Soll-Pegels überschreitet.
- V1(t) wird an einem Knoten
333 dadurch zugelassen, dass das Steuersignal PGM1* HIGH ist, und wird über den Wechselspannungskoppler330 zu dem Ausgangsknoten307 addiert. (Man vergleiche die7(d) ,7(h) ). Somit beträgt die Spannung an dem Ausgangsknoten307 Vletzte = V0(S1) + b1V1(t) (wobei b1 ein Kopplungsverhältnis nahe Eins ist), und sie passiert den Sourcefolger310 , um als Spannung an das Steuergate der Zelle50 angelegt zu werden. (Man vergleiche7(i) ). Mit dem Anlegen der Programmierimpulse nacheinander wird die Zelle50 schließlich auf den für die erste Phase vorbestimmten Pegel programmiert. An dieser Stelle kommt das Signal DURCH* (7(c) ) auf LOW und bewirkt wiederum, dass das Signal PGM1* auf LOW kommt (7(d) ), welches seiner seits die Programmiersperrschaltung280 aktiviert, um die Zelle50 für eine weitere Programmierung zu sperren. Gleichzeitig damit, dass PGM1* LOW wird, wird bewirkt, dass G1 auf LOW kommt (7(f) ), wodurch der Wechselspannungskoppler330 von dem ersten Wellenformgenerator320 abgeschnitten wird, wodurch V1 bei der Amplitude der Wellenform zum Zeitpunkt des Abschaltens eingefroren wird. Wenn T1f der Zeitpunkt ist, zu dem PGM1* auf LOW kommt, dann ist V1 = V1(T1f), sodass Vletzte(T1f) = V0(S1) + b1V1(T1f) ist. - In der Zwischenzeit wird die Programmierung für die anderen Zellen in dem Block fortgesetzt, wobei immer mehr Zellen ihren zugehörigen vorbestimmten Pegel für die erste Phase erreichen und aus dem parallelen Programmiervorgang herausfallen. Wenn die jeweilige Zelle herausfällt, bleibt durch die dieser jeweils zugehörige Vletzte die entsprechende zum Zeitpunkt der Sperrung der Programmierung an das Steuergate angelegte Spannung erhalten. Schließlich sind sämtliche Zellen in dem Block auf die entsprechenden vorgegebenen Pegel programmiert, und dieses Ereignis wird signalisiert, indem PGM1* bis PGMk* alle auf LOW gekommen sind. Dadurch wird der Parallelprogrammier-Controller
290 veranlasst, die nächste Phase einzuleiten. - Die
8(a) –8(j) stellen Taktungsdiagramme für die Funktionsweise der zweiten Phase des in5 gezeigten Mehrphasen-Programmierspannungsgenerators dar. Die zweite Phase gleicht der ersten Phase insofern, als sie mit einem Verifizieren beginnt, das vor dem Programmieren erfolgt, außer dass der erste Wellenformgenerator dadurch deaktiviert ist, dass das Steuersignal Φ1 LOW ist (8(e) ). Stattdessen wird der zweite Wellenformgenerator340 durch ein Steuersignal Φ2 (8(f) ) von dem Parallelprogrammier-Controller290 aktiviert und erzeugt V2(t) in Form eines oder mehrerer treppenförmiger Impulse (8(i) ). Durch jeden aufeinanderfolgenden Impuls der Wellenform wird der programmierte Pegel der Zelle zu einem für die zweite Phase vorbestimmten Pegel hin verschoben, der zu dem Soll-Pegel versetzt ist. Die Anstiegsrate der Treppenwellenform und der für die zweite Phase vorbestimmte Pegel sind derart gewählt, dass der Soll-Pegel mit aufeinanderfolgenden Impulsen so schnell wie möglich angenähert wird, aber kein einzelner Impuls bewirken wird, dass die Schwellspannung der Speicherzelle den für die zweite Phase vorbestimmten Pegel als auch die zugehörige vorbestimmte Toleranzgrenze jenseits des Soll-Pegels überschreitet. Allgemein werden die Anstiegsrate der Treppenwellenform und der vorbestimmte Pegel viel feiner sein als diejenigen der ersten Phase. - V2(t) wird an einem Knoten
335 dadurch zugelassen, dass ein Rücksetz-Steuersignal PGM1* HIGH ist ((8(d) ) (wobei sämtliche S/R-Latches zu Beginn der zweiten Phase zurückgesetzt worden sind (8(a) )) und wird über den Wechselspannungskoppler350 zu dem Knoten333 addiert. Somit beträgt die Spannung an dem Ausgangsknoten307 Vletzte = V0(S1) + b1V1(T1f) + b2[V2(t) – V2i], wobei b2 ein weiteres Kopplungsverhältnis ist und V2i der Wert von V2 ist, wenn G1 auf LOW kommt und einen vorgegebenen Versatz darstellt (z. B. 0,4 V), der vor dem Ende der ersten Phase anliegt. Vletzte passiert den Sourcefolger310 , um als Spannung an dem Steuergate der Zelle50 angelegt zu werden. (Man vergleiche8(j) ). Während die Programmierimpulse nacheinander angelegt werden, wird die Zelle50 schließlich auf den für die momentane Phase vorbestimmten Pegel programmiert. An dieser Stelle kommt das Signal DURCH* (8(c) ) auf LOW und bewirkt seinerseits, dass das Signal PGM1* LOW wird (8(d) ), was wiederum bewirkt, dass die Programmiersperrschaltung280 aktiviert wird, um die Zelle50 für die weitere Programmierung zu sperren. Gleichzeitig damit, dass PGM1* auf LOW kommt, wird bewirkt, dass G2 LOW wird (8(g) ), wodurch der Wechselspannungskoppler350 durch das deaktivierende Steuersignal G2 von dem zweiten Wellenformgenerator340 abgeschnitten wird, wodurch V2 bei der Amplitude der Wellenform zum Zeitpunkt des Abschaltens eingefroren wird. Wenn T2f der Zeitpunkt ist, zudem PGM1* LOW wird, dann ist V2 = V2(T2f), sodass Vletzte(T2f) = V0(S1) + b1V1(T1f) + b2[V2(T2f) – V2i] ist. - Analog wird die parallele Programmierung für die anderen Zellen in dem Block fortgesetzt, während immer mehr Zellen ihre Soll-Zustände erreichen und aus dem parallelen Programmiervorgang herausfallen und bei jeder für deren Vletzte die zum Zeitpunkt der Sperrung der Programmierung an dem Steuergate anliegende Spannung erhalten bleibt. Schließlich sind sämtliche Zellen in dem Block auf den vorbestimmten Pegel programmiert, und dieses Ereignis wird dadurch signalisiert, dass PGM1* bis PGMk* alle auf LOW gekommen sind. Dies wird den Parallelprogrammier-Controller
290 veranlassen, die nächste Phase einzuleiten. - Eine analoge Gestaltung kommt bei höheren Phasen zur Anwendung, wobei ein Wellenformgenerator eine Spannung erzeugt, die zu dem Pegel der am Ende der vorhergehenden Phase eingefrorenen Vletzte hinzuaddiert wird. In der letzten Phase ist der vorgegebene Pegel gleich dem Soll-Pegel, der dem Soll-Zustand entspricht.
- Bei einer weiteren Ausführungsform wird Vletzte von einem einzigen Mehrphasen-Wellenformgenerator erzeugt.
- Die Implementierung einer mehrphasigen Programmierung ermöglicht unterschiedliche Anstiegsraten für die Treppenwellenform während der unterschiedlichen Phasen. Der Soll-Zustand, der programmiert werden soll, wird durch eine Hierarchie von Programmierschritten angenähert, wobei die erste Phase die gröbste darstellt, in welcher der Soll-Zustand mit den wenigsten Schritten angenähert wird, ohne dass dieser überschritten wird, worauf die nächste Phase mit einer Reihe feinerer Schritte folgt, mit denen der Soll-Zustand wiederum mit den wenigsten Schritten weiter angenähert wird, ohne dass er überschritten wird, und so weiter. Auf diese Weise werden eine Reihe von ansteigenden Programmierimpulsen an das Steuergate
60 der Zelle50 angelegt, wobei die Anstiegsrate während jeder Phase im Hinblick auf eine schnelle Konvergenz zu dem Soll-Zustand hin optimiert ist. - Wie vorstehend beschrieben, wird für jede Phase bis kurz vor der Endphase ein Pegel kurz vor dem Soll-Zustand als Soll genutzt, sodass ein Überschreiten desselben in einem Programmierschritt für diese Phase nicht zu einem Überschreiten des eigentlichen Soll-Zustands führen wird. In der Endphase stellt der eigentliche Soll-Zustand das Soll dar. Bei der bevorzugten Ausführungsform wird der von der Phase abhängige Pegel implementiert, indem ein vorgegebener Spannungswert, der während des Verifizierungsvorgangs an ein Steuergate angelegt ist, VSTG, nach unten verschoben wird. Dies wird dazu führen, dass der Leseverstärker
240 (siehe4 ) auslöst, bevor der eigentliche Soll-Zustand erreicht ist. Die Spannungsquelle222 (siehe4 ), die auf den Zustand der Phase anspricht, passt die Spannungen auf dem Mehrspannungsbus220 dementsprechend an. - Bei einer alternativen Ausführungsform erfolgt die von der Phase abhängige Verifizierung durch Anpassen der Referenzstromstärke IREF, die von dem in
4 gezeigten Leseverstärker240 genutzt wird, auf inkrementell niedrigere Werte. - Bei einer noch weiteren Ausführungsform erfolgt die von der Phase abhängige Verifizierung durch eine Kombination aus Verschieben einer während des Verifizierungsvorgangs an das Steuergate angelegten Spannung um einen vorgegebenen Wert nach unten und Anpassen der von dem Leseverstärker genutzten Referenzstromstärke.
- Es ist festgestellt worden, dass eine Reihe von Ausführungsformen ermöglichen, dass eine Programmierung auf einen Soll-Zustand für eine in 16 Zustände unterteilte Zelle innerhalb von ungefähr 10–20 Schritten konvergiert. Zum Beispiel besteht eine bevorzugte Ausführungsform aus einem zweiphasigen Programmiervorgang, wobei die erste Phase eine erste ansteigende Wellenform aufweist, auf welche eine zweite Phase mit einer zweiten, sanfter ansteigenden Wellenform folgt. Eine weitere Ausführungsform besteht aus einem dreiphasigen Vorgang, bei dem die erste Phase einen einzigen Impuls darstellt, auf welchen zwei Serien von Treppenwellenformen folgen. Verschiedene Kombinationen sind möglich und werden erfindungsgemäß in Betracht gezogen.
- Ein Vorteil des beschriebenen Programmiersystems
200 besteht darin, dass wenngleich eine große Gruppe von Zellen parallel programmiert wird, die Zellen alle denselben Leitungsbus220 gemeinsam nutzen können, um datenabhängige Programmierspannungen zu realisieren. Analog können die phasenabhängigen Wellenformgeneratoren wie etwa320 ,340 , ... von sämtlichen Zellen in der Gruppe gemeinsam genutzt werden. -
9 stellt ein Ablaufdiagramm für die mehrphasige parallele Programmierung einer Gruppe von Speicherzellen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung dar. - Schritt
400 : BEGINNE INITIALISATION, setze Phase = 0, Phaseletzte = 2 (als Beispiel). - Schritt
410 : BEGINNE DATENABHÄNGIGE SPANNUNG ZU ERHALTEN. - Schritt
412 : bearbeite den Zellenblock mit i = 1 bis k parallel. - Schritt
414 : Speichere D(Si), den Soll-Zustand der i-ten Zelle, in dem Latch. - Schritt
416 : Nutze D(Si), um eine Anfangsspannung V0(D(Si)) auszuwählen, die für die Programmierung der i-ten Zelle auf D(Si) optimiert ist. - Schritt
418 : Speichere V0(D(Si)) zur Verwendung als Basislinienspannung für die Steuergate-Spannung, d. h. Vletzte(i) = V0(D(Si)). - Schritt
420 : BEGINNE NEUE PHASE DER PARALLELEN PROGRAMMIERUNG. - Schritt
422 : Phase = Phase + 1. - Schritt
430 : BEGINNE BLOCKPROGRAMMIERUNG, für i = 1 bis k parallel. - Schritt
432 : Setze Steuergate-Spannung auf eine phasenabhängige Wellenform in Bezug auf die Basislinie Vletzte(i). - Schritt
434 : Fahre mit paralleler Programmierung des Zellenblocks fort. - Schritt
436 : Verifiziere, um festzustellen, ob die i-te Zelle auf einen für den Soll-Zustand vorgegebenen Pegel programmiert worden ist. Der Pegel ist phasenabhängig und liegt ausreichend knapp vor dem Soll-Zustand, sodass bei einem Programmierschritt, bei dem der Pegel überschritten wird, nicht der Soll-Zustand überschritten wird. Wenn der Pegel überschritten ist, fahre mit Schritt440 fort, wenn nicht, gehe zu Schritt438 über. - Schritt
438 : Lege einen Programmierimpuls VSTG(i) an die i-te Zelle an. Kehre zu Schritt436 zurück. - Schritt
440 : Sperre die i-te Zelle für die weitere Programmierung während der momentanen Phase. - Schritt
442 : Speichere die momentane Programmierspannung, d. h. Vletzte(i) = VSTG(i) als eine Basislinienspannung für die nächste Phase. - Schritt
450 : Sind sämtliche Zellen über den für die momentane Phase geltenden Pegel hinaus programmiert? Ist dies der Fall, fahre mit Schritt460 fort. Ansonsten kehre zu Schritt434 zurück, um die Programmierung der verbleibenden Zellen in dem Block fortzusetzen, bis die letzte den Pegel für die momentane Phase überschritten hat. Wenn bei der Programmierung eine vorgegebene maximal zulässige Anzahl von Impulsen überschritten worden ist, wird eine vorgegebene Ausnahmebehandlung eingeleitet, und bei dieser setzt typischerweise eine Fehlerbehandlungsroutine ein. - Schritt
460 : Ist Phase = Phaseletzte? Wenn nicht, fahre mit Schritt420 fort, um die nächste Phase zu beginnen. Ansonsten fahre mit Schritt470 fort. - Schritt
470 : FERTIG. Die Programmierung des Zellenblocks für i = 1 bis k ist abgeschlossen. - Die Ausführungsformen der vorliegenden Erfindung wurden unter Bezugnahme auf nichtflüchtige Halbleiterspeicher diskutiert, die ein Ladung speicherndes Floating-Gate oder eine Ladung speichernde dielektrische Schicht enthalten. Die verschiedenen Aspekte der vorliegenden Erfindung können jedoch auch auf eine beliebige Art von nichtflüchtigem Speicher angewandt werden, bei dem eine exakte Programmierung durch das Anlegen von zustandsabhängigen, optimal gesteuerten Programmierspannungsimpulsen ausgeführt werden kann. Zum Beispiel kann diese Methode auf Speicherbauelemente mit mehreren Dielektrika, beispielsweise Metall-Nitrid-Oxid-Silicium-(MNOS-)- oder Polysilicium-Nitrid-Oxid-Silicium-(SONGS-)Bauelemente angewandt werden. In ähnlicher Weise ist sie auf MROM-Bauelemente anwendbar.
- Wenngleich die Ausführungsformen der vorliegenden Erfindung, die beschrieben worden sind, bevorzugte Realisierungen darstellen, werden Fachleute auf dem Gebiet verstehen, dass auch Varianten zu diesen möglich sein können. Daher beansprucht die Erfindung Schutz mit dem vollständigen Schutzumfang der anhängenden Ansprüche.
Claims (18)
- Verfahren zum Programmieren einer Gruppe von Speicherzellen (
50 ) in einem Array von Speicherzellen, die in Zeilen und Spalten angeordnet sind, wobei sich die Gruppe von Speicherzellen (50 ) entlang einer Zeile erstreckt, wobei jede Zelle (50 ) ein Auswahlgate (70 ) und ein Steuergate (60 ) zum Anlegen einer Programmierspannung zum Programmieren eines Ladungsspeichers auf einen Soll-Ladungspegel entsprechend einem Soll-Speicherzustand aus einer Mehrzahl von Speicherzuständen für diese aufweist, wobei eine Mehrzahl von Spannungspegeln zum Programmieren einer Speicherzelle (50 ) auf einen jeweiligen der mehreren Speicherzustände bereitgestellt wird; dadurch gekennzeichnet, dass jede Speicherzelle (50 ) der Gruppe mit einer separaten Bitleitung (56 ) verbunden ist, und dass das Verfahren folgende Schritte umfasst: Auswählen der Gruppe von Speicherzellen (50 ) durch Auswählen einer gemeinsamen Wortleitung (110 ), die mit dem Auswahlgate (70 ) jeder Zelle in der Gruppe von Speicherzellen (50 ) gekoppelt ist; Auswählen eines der mehreren Spannungspegel für jede Speicherzelle (50 ) der Gruppe, wobei der ausgewählte Spannungspegel eine Funktion des Soll-Speicherzustands der Speicherzelle ist, und Generieren einer Programmierspannung als Funktion der ausgewählten Spannung für jede Speicherzelle; und paralleles Programmieren der Speicherzellen (50 ) der Gruppe, wobei jede Speicherzelle (50 ) der Gruppe ihre Programmierspannung aufweist, die unabhängig an deren Steuergate (60 ) angelegt wird. - Verfahren nach Anspruch 1, welches folgenden Schritt umfasst: Generieren einer Programmierspannungswellenform für jede Zelle (
50 ) der Gruppe, wobei jede Programmierspannungswellenform eine Anfangsamplitude aufweist, die eine Funktion des für die jeweilige Zelle (50 ) ausgewählten Spannungspegels ist. - Verfahren nach Anspruch 2, wobei die Programmierspannungswellenform eine Serie von Spannungsimpulsen umfasst.
- Verfahren nach Anspruch 3, wobei durch Anlegen eines anfänglichen Spannungsimpulses der Serie von Spannungsimpulsen jede Zelle (
50 ) im Wesentlichen zu ihrem Soll-Speicherzustand hin programmiert wird, diesen aber nicht überschreitet. - Verfahren nach Anspruch 3 oder Anspruch 4, wobei die Serie von Spannungsimpulsen eine Amplitude aufweist, die sich im Zeitverlauf erhöht.
- Verfahren nach einem der Ansprüche 3 bis 5, welches folgende Schritte umfasst: (a) paralleles Programmieren der Gruppe von Speicherzellen (
50 ) durch Anlegen eines Impulses aus der Serie von Spannungsimpulsen der Programmierspannungswellenform, die jeder Zelle (50 ) zugeordnet ist, an jede Zelle (50 ); (b) paralleles Verifizieren der Gruppe von Speicherzellen (50 ) durch Feststellen, ob jede Zelle (50 ) auf einen vorbestimmten Pegel programmiert worden ist, der dem Soll-Zustand für jede Speicherzelle (50 ) zugeordnet ist; und (c) Sperren einer Zelle (50 ) aus der Gruppe für die weitere Programmierung, wenn diese Zelle (50 ) auf ihren vorgegebenen Pegel programmiert worden ist; und (d) Wiederholen von (a), (b) und (c), bis sämtliche Zellen (50 ) in der Gruppe auf ihre jeweils vorgegebenen Pegel programmiert sind. - Verfahren nach Anspruch 6, wobei der Wiederholungsschritt auch dann endet, wenn er über mehr als eine vorgegebene Anzahl von Malen iteriert worden ist.
- Verfahren nach Anspruch 6, wobei der wiederholte Durchlauf von (a)–(d) bis zur Beendigung eine Programmierphase darstellt, wobei das Verfahren eine oder mehr zusätzliche Programmierphasen umfasst, jeweils mit diesen zugeordneten Serien von Spannungsimpulsen und vorgegebenen Pegeln.
- Verfahren nach Anspruch 8, wobei bei jeder nachfolgenden Phase eine Serie von Spannungsimpulsen verwendet wird, die einen feineren Programmierungsschritt als in der vorhergehenden Phase ergeben.
- Verfahren nach Anspruch 8, wobei bei jeder nachfolgenden Phase vorgegebene Pegel angewandt werden, die den Soll-Zuständen näher liegen.
- Verfahren nach Anspruch 8, wobei bei einer vorgegebenen letzten Phase vorgegebene Pegel angewandt werden, mit denen jede Zelle der Gruppe auf ihren jeweiligen Soll-Zustand programmiert wird.
- Verfahren nach einem der Ansprüche 8 bis 11, wobei jede Zelle (
50 ) nicht mehr als zwanzig Programmierimpulse erhält. - Verfahren nach einem der vorhergehenden Ansprüche, wobei jede Zelle (
50 ) einen von zwei Speicherzuständen speichert. - Verfahren nach einem der Ansprüche 1 bis 12, wobei jede Zelle (
50 ) mehr als zwei Speicherzustände speichert. - Verfahren nach einem der Ansprüche 1 bis 12, wobei jede Zelle (
50 ) einen von sechzehn Speicherzuständen speichert. - Nichtflüchtiger Speicher, umfassend: ein Array aus Speicherzellen (
50 ), die in Zeilen und Spalten angeordnet sind, wobei jede Speicherzelle (50 ) ein Auswahlgate (70 ) und ein Steuergate (60 ) aufweist, zum Anlegen einer Programmierspannung zum Programmieren eines Ladungsspeichers auf einen zugehörigen Soll-Ladungspegel, der einem Soll-Speicherzustand aus einer Mehrzahl von Speicherzuständen für diese entspricht; einen Leistungsbus (220 ) zum Zuführen einer Mehrzahl von Spannungen zum Programmieren einer Speicherzelle (50 ) in dem Array auf einen jeweiligen der mehreren Speicherzustände; und ein System zum Programmieren einer Gruppe von Speicherzellen (50 ) in dem Array, dadurch gekennzeichnet, dass die Gruppe von Speicherzellen (50 ) durch eine gemeinsame Wortleitung (110 ) ausgewählt werden kann, die mit dem Auswahlgate (70 ) jeder Zelle in der Gruppe von Speicherzellen (50 ) gekoppelt ist; das Programmiersystem (200 ) dafür ausgelegt ist, die Gruppe von Speicherzellen (50 ), die sich entlang einer Zeile des Speicherzellenarrays erstrecken, parallel zu programmieren, und wobei es jeder Zelle (50 ) in der Gruppe zugeordnet eine Programmier- und Leseschaltung (210 ) aufweist, wobei jede Schaltung ferner einen Spannungsselektor (230 ) umfasst, der eine der mehreren Spannungen von dem Leistungsbus auswählt, um eine Programmierspannung in Funktion der ausgewählten Spannung an das Steuergate (60 ) der zugehörigen Speicherzelle (50 ) in der Gruppe anzulegen, wobei die ausgewählte Spannung eine Funktion des Soll-Zustands der zugehörigen Speicherzelle (50 ) ist, und zwar in solcher Weise, dass die ausgewählte Spannung optimal für die Programmierschaltung ist, um die Programmierspannung zum Programmieren des Speicherzustands auf seinen Soll-Speicherzustand zu erzeugen; und dass jede Speicherzelle (50 ) der Gruppe mit einer separaten Bitleitung (56 ) verbunden ist. - Nichtflüchtiger Speicher nach Anspruch 16, wobei die Programmierschaltung umfasst: einen ersten Programmierspannungswellenform-Generator (
320 ), welcher derart gekoppelt ist, dass er die ausgewählte Spannung erhält, um eine erste Programmierspannungswellenform mit einer Anfangsamplitude zu erzeugen, die eine Funktion der ausgewählten Spannung ist; einen Leseverstärker (240 ) zum Bestimmen des programmierten Zustands der Speicherzelle; und eine Programmiersperrschaltung (280 ), die auf den Leseverstärker anspricht, indem sie eine weitere Programmierung der Zelle (50 ) immer dann sperrt, wenn der programmierte Zustand der Speicherzelle (50 ) einen ersten vorgegebenen Pegel überschritten hat. - Nichtflüchtiger Speicher nach Anspruch 17, umfassend: ein Speicherelement zum Speichern der letzten Programmierspannung, welche bewirkt, dass der programmierte Zustand der zugehörigen Zelle (
50 ) den ersten vorgegebenen Pegel überschreitet; einen zweiten Programmierspannungswellenform-Generator (340 ), der auf die gespeicherte letzte Programmierspannung anspricht, indem er eine zweite Programmierspannung generiert; und einen Controller (290 ) zum Aktivieren des zweiten Programmierspannungswellenform-Generators, nachdem sämtliche Speicherzellen in der Gruppe den ersten vorgegebenen Pegel überschritten haben.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US793370 | 1985-10-31 | ||
US09/793,370 US6738289B2 (en) | 2001-02-26 | 2001-02-26 | Non-volatile memory with improved programming and method therefor |
PCT/US2002/005265 WO2002069346A2 (en) | 2001-02-26 | 2002-02-22 | Non-volatile memory with improved programming and method therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60225005D1 DE60225005D1 (de) | 2008-03-27 |
DE60225005T2 true DE60225005T2 (de) | 2009-02-12 |
Family
ID=25159763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60225005T Expired - Fee Related DE60225005T2 (de) | 2001-02-26 | 2002-02-22 | Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür |
Country Status (10)
Country | Link |
---|---|
US (5) | US6738289B2 (de) |
EP (2) | EP1393323B1 (de) |
JP (1) | JP2004519804A (de) |
KR (1) | KR20030014207A (de) |
CN (1) | CN1460268A (de) |
AT (1) | ATE386327T1 (de) |
AU (1) | AU2002242219A1 (de) |
DE (1) | DE60225005T2 (de) |
TW (1) | TW556194B (de) |
WO (1) | WO2002069346A2 (de) |
Families Citing this family (217)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6222762B1 (en) * | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US6738289B2 (en) * | 2001-02-26 | 2004-05-18 | Sandisk Corporation | Non-volatile memory with improved programming and method therefor |
US6894343B2 (en) | 2001-05-18 | 2005-05-17 | Sandisk Corporation | Floating gate memory cells utilizing substrate trenches to scale down their size |
US6936887B2 (en) | 2001-05-18 | 2005-08-30 | Sandisk Corporation | Non-volatile memory cells utilizing substrate trenches |
US6762092B2 (en) * | 2001-08-08 | 2004-07-13 | Sandisk Corporation | Scalable self-aligned dual floating gate memory cell array and methods of forming the array |
KR100432884B1 (ko) * | 2001-08-28 | 2004-05-22 | 삼성전자주식회사 | 공유된 행 선택 구조를 갖는 불 휘발성 반도체 메모리 장치 |
US6897522B2 (en) | 2001-10-31 | 2005-05-24 | Sandisk Corporation | Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements |
US6925007B2 (en) * | 2001-10-31 | 2005-08-02 | Sandisk Corporation | Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements |
KR20030060139A (ko) * | 2002-01-07 | 2003-07-16 | 삼성전자주식회사 | 스플리트 게이트형 비휘발성 메모리 소자 및 그 제조방법 |
JP4192510B2 (ja) * | 2002-06-14 | 2008-12-10 | 日本電気株式会社 | 半導体装置 |
US6894930B2 (en) | 2002-06-19 | 2005-05-17 | Sandisk Corporation | Deep wordline trench to shield cross coupling between adjacent cells for scaled NAND |
US6917544B2 (en) | 2002-07-10 | 2005-07-12 | Saifun Semiconductors Ltd. | Multiple use memory chip |
US6864106B1 (en) * | 2002-08-12 | 2005-03-08 | Advanced Micro Devices, Inc. | Method and system for detecting tunnel oxide encroachment on a memory device |
US7443757B2 (en) | 2002-09-24 | 2008-10-28 | Sandisk Corporation | Non-volatile memory and method with reduced bit line crosstalk errors |
US6983428B2 (en) * | 2002-09-24 | 2006-01-03 | Sandisk Corporation | Highly compact non-volatile memory and method thereof |
US7327619B2 (en) * | 2002-09-24 | 2008-02-05 | Sandisk Corporation | Reference sense amplifier for non-volatile memory |
US7196931B2 (en) | 2002-09-24 | 2007-03-27 | Sandisk Corporation | Non-volatile memory and method with reduced source line bias errors |
KR100615975B1 (ko) | 2002-09-24 | 2006-08-28 | 쌘디스크 코포레이션 | 비휘발성 메모리 및 그 감지 방법 |
US7046568B2 (en) | 2002-09-24 | 2006-05-16 | Sandisk Corporation | Memory sensing circuit and method for low voltage operation |
US7324393B2 (en) | 2002-09-24 | 2008-01-29 | Sandisk Corporation | Method for compensated sensing in non-volatile memory |
US6987693B2 (en) * | 2002-09-24 | 2006-01-17 | Sandisk Corporation | Non-volatile memory and method with reduced neighboring field errors |
US7136304B2 (en) * | 2002-10-29 | 2006-11-14 | Saifun Semiconductor Ltd | Method, system and circuit for programming a non-volatile memory array |
US7031192B1 (en) * | 2002-11-08 | 2006-04-18 | Halo Lsi, Inc. | Non-volatile semiconductor memory and driving method |
JP4205938B2 (ja) * | 2002-12-05 | 2009-01-07 | シャープ株式会社 | 不揮発性メモリ装置 |
JP4667719B2 (ja) * | 2003-01-17 | 2011-04-13 | スパンション エルエルシー | 不揮発性多値半導体メモリ |
US6944063B2 (en) | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
US7178004B2 (en) | 2003-01-31 | 2007-02-13 | Yan Polansky | Memory array programming circuit and a method for using the circuit |
US6856551B2 (en) * | 2003-02-06 | 2005-02-15 | Sandisk Corporation | System and method for programming cells in non-volatile integrated memory devices |
US7630237B2 (en) * | 2003-02-06 | 2009-12-08 | Sandisk Corporation | System and method for programming cells in non-volatile integrated memory devices |
US6839281B2 (en) * | 2003-04-14 | 2005-01-04 | Jian Chen | Read and erase verify methods and circuits suitable for low voltage non-volatile memories |
US6950348B2 (en) | 2003-06-20 | 2005-09-27 | Sandisk Corporation | Source controlled operation of non-volatile memories |
US6956770B2 (en) | 2003-09-17 | 2005-10-18 | Sandisk Corporation | Non-volatile memory and method with bit line compensation dependent on neighboring operating modes |
US7064980B2 (en) | 2003-09-17 | 2006-06-20 | Sandisk Corporation | Non-volatile memory and method with bit line coupled compensation |
US7177199B2 (en) * | 2003-10-20 | 2007-02-13 | Sandisk Corporation | Behavior based programming of non-volatile memory |
US7057931B2 (en) * | 2003-11-07 | 2006-06-06 | Sandisk Corporation | Flash memory programming using gate induced junction leakage current |
US20050251617A1 (en) * | 2004-05-07 | 2005-11-10 | Sinclair Alan W | Hybrid non-volatile memory system |
US6888758B1 (en) * | 2004-01-21 | 2005-05-03 | Sandisk Corporation | Programming non-volatile memory |
US7372730B2 (en) * | 2004-01-26 | 2008-05-13 | Sandisk Corporation | Method of reading NAND memory to compensate for coupling between storage elements |
US7139198B2 (en) * | 2004-01-27 | 2006-11-21 | Sandisk Corporation | Efficient verification for coarse/fine programming of non-volatile memory |
US7002843B2 (en) * | 2004-01-27 | 2006-02-21 | Sandisk Corporation | Variable current sinking for coarse/fine programming of non-volatile memory |
US7068539B2 (en) * | 2004-01-27 | 2006-06-27 | Sandisk Corporation | Charge packet metering for coarse/fine programming of non-volatile memory |
US7020026B2 (en) * | 2004-05-05 | 2006-03-28 | Sandisk Corporation | Bitline governed approach for program control of non-volatile memory |
US7023733B2 (en) * | 2004-05-05 | 2006-04-04 | Sandisk Corporation | Boosting to control programming of non-volatile memory |
US7490283B2 (en) | 2004-05-13 | 2009-02-10 | Sandisk Corporation | Pipelined data relocation and improved chip architectures |
US7307884B2 (en) | 2004-06-15 | 2007-12-11 | Sandisk Corporation | Concurrent programming of non-volatile memory |
US7638850B2 (en) | 2004-10-14 | 2009-12-29 | Saifun Semiconductors Ltd. | Non-volatile memory structure and method of fabrication |
US7092290B2 (en) * | 2004-11-16 | 2006-08-15 | Sandisk Corporation | High speed programming system with reduced over programming |
US7173859B2 (en) * | 2004-11-16 | 2007-02-06 | Sandisk Corporation | Faster programming of higher level states in multi-level cell flash memory |
US7242618B2 (en) * | 2004-12-09 | 2007-07-10 | Saifun Semiconductors Ltd. | Method for reading non-volatile memory cells |
US7120051B2 (en) * | 2004-12-14 | 2006-10-10 | Sandisk Corporation | Pipelined programming of non-volatile memories using early data |
US7158421B2 (en) * | 2005-04-01 | 2007-01-02 | Sandisk Corporation | Use of data latches in multi-phase programming of non-volatile memories |
US7420847B2 (en) * | 2004-12-14 | 2008-09-02 | Sandisk Corporation | Multi-state memory having data recovery after program fail |
US7849381B2 (en) * | 2004-12-21 | 2010-12-07 | Sandisk Corporation | Method for copying data in reprogrammable non-volatile memory |
US7130210B2 (en) * | 2005-01-13 | 2006-10-31 | Spansion Llc | Multi-level ONO flash program algorithm for threshold width control |
US7251160B2 (en) * | 2005-03-16 | 2007-07-31 | Sandisk Corporation | Non-volatile memory and method with power-saving read and program-verify operations |
US8053812B2 (en) | 2005-03-17 | 2011-11-08 | Spansion Israel Ltd | Contact in planar NROM technology |
US7447078B2 (en) | 2005-04-01 | 2008-11-04 | Sandisk Corporation | Method for non-volatile memory with background data latch caching during read operations |
US7206230B2 (en) * | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
TWI410974B (zh) * | 2005-04-01 | 2013-10-01 | Sandisk Technologies Inc | 於編程失敗後具有資料回復之複數狀態記憶體 |
US7463521B2 (en) * | 2005-04-01 | 2008-12-09 | Sandisk Corporation | Method for non-volatile memory with managed execution of cached data |
JP4907896B2 (ja) * | 2005-04-12 | 2012-04-04 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US7339834B2 (en) * | 2005-06-03 | 2008-03-04 | Sandisk Corporation | Starting program voltage shift with cycling of non-volatile memory |
US7656710B1 (en) | 2005-07-14 | 2010-02-02 | Sau Ching Wong | Adaptive operations for nonvolatile memories |
US7786512B2 (en) | 2005-07-18 | 2010-08-31 | Saifun Semiconductors Ltd. | Dense non-volatile memory array and method of fabrication |
US7668017B2 (en) | 2005-08-17 | 2010-02-23 | Saifun Semiconductors Ltd. | Method of erasing non-volatile memory cells |
US7342833B2 (en) * | 2005-08-23 | 2008-03-11 | Freescale Semiconductor, Inc. | Nonvolatile memory cell programming |
US8116142B2 (en) * | 2005-09-06 | 2012-02-14 | Infineon Technologies Ag | Method and circuit for erasing a non-volatile memory cell |
US7286406B2 (en) * | 2005-10-14 | 2007-10-23 | Sandisk Corporation | Method for controlled programming of non-volatile memory exhibiting bit line coupling |
US7206235B1 (en) | 2005-10-14 | 2007-04-17 | Sandisk Corporation | Apparatus for controlled programming of non-volatile memory exhibiting bit line coupling |
US20070087503A1 (en) * | 2005-10-17 | 2007-04-19 | Saifun Semiconductors, Ltd. | Improving NROM device characteristics using adjusted gate work function |
US7366022B2 (en) * | 2005-10-27 | 2008-04-29 | Sandisk Corporation | Apparatus for programming of multi-state non-volatile memory using smart verify |
US7301817B2 (en) * | 2005-10-27 | 2007-11-27 | Sandisk Corporation | Method for programming of multi-state non-volatile memory using smart verify |
KR101357076B1 (ko) | 2005-12-28 | 2014-02-11 | 샌디스크 테크놀로지스, 인코포레이티드 | 비휘발성 메모리에서 보상된 감지를 위한 기준 감지 증폭기및 방법 |
US7349264B2 (en) * | 2005-12-28 | 2008-03-25 | Sandisk Corporation | Alternate sensing techniques for non-volatile memories |
US7616481B2 (en) * | 2005-12-28 | 2009-11-10 | Sandisk Corporation | Memories with alternate sensing techniques |
US7310255B2 (en) * | 2005-12-29 | 2007-12-18 | Sandisk Corporation | Non-volatile memory with improved program-verify operations |
US7224614B1 (en) * | 2005-12-29 | 2007-05-29 | Sandisk Corporation | Methods for improved program-verify operations in non-volatile memories |
US7808818B2 (en) | 2006-01-12 | 2010-10-05 | Saifun Semiconductors Ltd. | Secondary injection for NROM |
US7760554B2 (en) | 2006-02-21 | 2010-07-20 | Saifun Semiconductors Ltd. | NROM non-volatile memory and mode of operation |
US8253452B2 (en) | 2006-02-21 | 2012-08-28 | Spansion Israel Ltd | Circuit and method for powering up an integrated circuit and an integrated circuit utilizing same |
US7692961B2 (en) | 2006-02-21 | 2010-04-06 | Saifun Semiconductors Ltd. | Method, circuit and device for disturb-control of programming nonvolatile memory cells by hot-hole injection (HHI) and by channel hot-electron (CHE) injection |
US7701779B2 (en) | 2006-04-27 | 2010-04-20 | Sajfun Semiconductors Ltd. | Method for programming a reference cell |
WO2007132456A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Memory device with adaptive capacity |
WO2007132457A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
CN103258572B (zh) | 2006-05-12 | 2016-12-07 | 苹果公司 | 存储设备中的失真估计和消除 |
WO2007132452A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies | Reducing programming error in memory devices |
US7639542B2 (en) * | 2006-05-15 | 2009-12-29 | Apple Inc. | Maintenance operations for multi-level data storage cells |
DE602006011451D1 (de) | 2006-06-21 | 2010-02-11 | Hynix Semiconductor Inc | Verfahren und Vorrichtung zum elektrischen Programmieren von Halbleiterspeicherzellen |
US7486561B2 (en) | 2006-06-22 | 2009-02-03 | Sandisk Corporation | Method for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages |
US7489549B2 (en) * | 2006-06-22 | 2009-02-10 | Sandisk Corporation | System for non-real time reprogramming of non-volatile memory to achieve tighter distribution of threshold voltages |
US7483305B2 (en) * | 2006-08-28 | 2009-01-27 | Micron Technology, Inc. | Method, apparatus and system relating to automatic cell threshold voltage measurement |
WO2008024688A2 (en) * | 2006-08-25 | 2008-02-28 | Micron Technology, Inc. | Method, apparatus and system relating to automatic cell threshold voltage measurement |
US8060806B2 (en) | 2006-08-27 | 2011-11-15 | Anobit Technologies Ltd. | Estimation of non-linear distortion in memory devices |
US7599223B2 (en) * | 2006-09-12 | 2009-10-06 | Sandisk Corporation | Non-volatile memory with linear estimation of initial programming voltage |
US7453731B2 (en) * | 2006-09-12 | 2008-11-18 | Sandisk Corporation | Method for non-volatile memory with linear estimation of initial programming voltage |
US7606077B2 (en) * | 2006-09-12 | 2009-10-20 | Sandisk Corporation | Non-volatile memory with reduced erase/write cycling during trimming of initial programming voltage |
US7606091B2 (en) * | 2006-09-12 | 2009-10-20 | Sandisk Corporation | Method for non-volatile memory with reduced erase/write cycling during trimming of initial programming voltage |
US7696044B2 (en) * | 2006-09-19 | 2010-04-13 | Sandisk Corporation | Method of making an array of non-volatile memory cells with floating gates formed of spacers in substrate trenches |
US7646054B2 (en) * | 2006-09-19 | 2010-01-12 | Sandisk Corporation | Array of non-volatile memory cells with floating gates formed of spacers in substrate trenches |
US7450426B2 (en) * | 2006-10-10 | 2008-11-11 | Sandisk Corporation | Systems utilizing variable program voltage increment values in non-volatile memory program operations |
US7474561B2 (en) * | 2006-10-10 | 2009-01-06 | Sandisk Corporation | Variable program voltage increment values in non-volatile memory program operations |
CN101601094B (zh) | 2006-10-30 | 2013-03-27 | 苹果公司 | 使用多个门限读取存储单元的方法 |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7924648B2 (en) | 2006-11-28 | 2011-04-12 | Anobit Technologies Ltd. | Memory power and performance management |
US8151163B2 (en) | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
KR100836762B1 (ko) * | 2006-12-11 | 2008-06-10 | 삼성전자주식회사 | 멀티 비트 플래시 메모리 장치 및 그것의 프로그램 방법 |
US7900102B2 (en) | 2006-12-17 | 2011-03-01 | Anobit Technologies Ltd. | High-speed programming of memory devices |
US7800161B2 (en) * | 2006-12-21 | 2010-09-21 | Sandisk Corporation | Flash NAND memory cell array with charge storage elements positioned in trenches |
US7642160B2 (en) * | 2006-12-21 | 2010-01-05 | Sandisk Corporation | Method of forming a flash NAND memory cell array with charge storage elements positioned in trenches |
US7570520B2 (en) * | 2006-12-27 | 2009-08-04 | Sandisk Corporation | Non-volatile storage system with initial programming voltage based on trial |
US7551482B2 (en) * | 2006-12-27 | 2009-06-23 | Sandisk Corporation | Method for programming with initial programming voltage based on trial |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
US7751240B2 (en) | 2007-01-24 | 2010-07-06 | Anobit Technologies Ltd. | Memory device with negative thresholds |
KR101163162B1 (ko) * | 2007-02-20 | 2012-07-06 | 샌디스크 테크놀로지스, 인코포레이티드 | 비휘발성 저장소자를 위한 가변 프로그램 |
US7616500B2 (en) * | 2007-02-20 | 2009-11-10 | Sandisk Corporation | Non-volatile storage apparatus with multiple pass write sequence |
CN101715595A (zh) | 2007-03-12 | 2010-05-26 | 爱诺彼得技术有限责任公司 | 存储器单元读取阈的自适应估计 |
US7745285B2 (en) | 2007-03-30 | 2010-06-29 | Sandisk Corporation | Methods of forming and operating NAND memory with side-tunneling |
US7643348B2 (en) * | 2007-04-10 | 2010-01-05 | Sandisk Corporation | Predictive programming in non-volatile memory |
US8001320B2 (en) | 2007-04-22 | 2011-08-16 | Anobit Technologies Ltd. | Command interface for memory devices |
US8234545B2 (en) | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US7936599B2 (en) * | 2007-06-15 | 2011-05-03 | Micron Technology, Inc. | Coarse and fine programming in a solid state memory |
US7508715B2 (en) * | 2007-07-03 | 2009-03-24 | Sandisk Corporation | Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing |
US7599224B2 (en) * | 2007-07-03 | 2009-10-06 | Sandisk Corporation | Systems for coarse/fine program verification in non-volatile memory using different reference levels for improved sensing |
US7925936B1 (en) | 2007-07-13 | 2011-04-12 | Anobit Technologies Ltd. | Memory device with non-uniform programming levels |
US8259497B2 (en) | 2007-08-06 | 2012-09-04 | Apple Inc. | Programming schemes for multi-level analog memory cells |
US7660151B2 (en) * | 2007-09-17 | 2010-02-09 | Qimonda Ag | Method for programming an integrated circuit, method for programming a plurality of cells, integrated circuit, cell arrangement |
US8174905B2 (en) | 2007-09-19 | 2012-05-08 | Anobit Technologies Ltd. | Programming orders for reducing distortion in arrays of multi-level analog memory cells |
US7773413B2 (en) | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
WO2009050703A2 (en) | 2007-10-19 | 2009-04-23 | Anobit Technologies | Data storage in analog memory cell arrays having erase failures |
US8068360B2 (en) | 2007-10-19 | 2011-11-29 | Anobit Technologies Ltd. | Reading analog memory cells using built-in multi-threshold commands |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
KR101301773B1 (ko) * | 2007-10-25 | 2013-09-02 | 삼성전자주식회사 | 멀티 비트 프로그래밍 장치 및 방법 |
WO2009063450A2 (en) | 2007-11-13 | 2009-05-22 | Anobit Technologies | Optimized selection of memory units in multi-unit memory devices |
US8225181B2 (en) | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
US7688638B2 (en) * | 2007-12-07 | 2010-03-30 | Sandisk Corporation | Faster programming of multi-level non-volatile storage through reduced verify operations |
US8209588B2 (en) | 2007-12-12 | 2012-06-26 | Anobit Technologies Ltd. | Efficient interference cancellation in analog memory cell arrays |
US8456905B2 (en) | 2007-12-16 | 2013-06-04 | Apple Inc. | Efficient data storage in multi-plane memory devices |
US8085586B2 (en) | 2007-12-27 | 2011-12-27 | Anobit Technologies Ltd. | Wear level estimation in analog memory cells |
US8156398B2 (en) | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US7924587B2 (en) | 2008-02-21 | 2011-04-12 | Anobit Technologies Ltd. | Programming of analog memory cells using a single programming pulse per state transition |
US7864573B2 (en) | 2008-02-24 | 2011-01-04 | Anobit Technologies Ltd. | Programming analog memory cells for reduced variance after retention |
US8230300B2 (en) | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
US8059457B2 (en) | 2008-03-18 | 2011-11-15 | Anobit Technologies Ltd. | Memory device with multiple-accuracy read commands |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US7813172B2 (en) | 2008-06-12 | 2010-10-12 | Sandisk Corporation | Nonvolatile memory with correlated multiple pass programming |
US7796435B2 (en) * | 2008-06-12 | 2010-09-14 | Sandisk Corporation | Method for correlated multiple pass programming in nonvolatile memory |
US7800945B2 (en) * | 2008-06-12 | 2010-09-21 | Sandisk Corporation | Method for index programming and reduced verify in nonvolatile memory |
JP5395167B2 (ja) * | 2008-06-12 | 2014-01-22 | サンディスク テクノロジィース インコーポレイテッド | 相関複数パスプログラミングのための不揮発性メモリおよび方法 |
US7826271B2 (en) * | 2008-06-12 | 2010-11-02 | Sandisk Corporation | Nonvolatile memory with index programming and reduced verify |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
US7995388B1 (en) | 2008-08-05 | 2011-08-09 | Anobit Technologies Ltd. | Data storage using modified voltages |
US7715235B2 (en) * | 2008-08-25 | 2010-05-11 | Sandisk Corporation | Non-volatile memory and method for ramp-down programming |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
US8949684B1 (en) | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
US8000135B1 (en) | 2008-09-14 | 2011-08-16 | Anobit Technologies Ltd. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8482978B1 (en) | 2008-09-14 | 2013-07-09 | Apple Inc. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8261159B1 (en) | 2008-10-30 | 2012-09-04 | Apple, Inc. | Data scrambling schemes for memory devices |
US9159452B2 (en) * | 2008-11-14 | 2015-10-13 | Micron Technology, Inc. | Automatic word line leakage measurement circuitry |
US8208304B2 (en) | 2008-11-16 | 2012-06-26 | Anobit Technologies Ltd. | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N |
US7821840B2 (en) * | 2008-11-24 | 2010-10-26 | Spansion Llc | Multi-phase programming of multi-level memory |
US8397131B1 (en) | 2008-12-31 | 2013-03-12 | Apple Inc. | Efficient readout schemes for analog memory cell devices |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
US20110002169A1 (en) | 2009-07-06 | 2011-01-06 | Yan Li | Bad Column Management with Bit Information in Non-Volatile Memory Systems |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8305812B2 (en) * | 2009-08-26 | 2012-11-06 | Densbits Technologies Ltd. | Flash memory module and method for programming a page of flash memory cells |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US8725935B2 (en) | 2009-12-18 | 2014-05-13 | Sandisk Technologies Inc. | Balanced performance for on-chip folding of non-volatile memories |
US8468294B2 (en) * | 2009-12-18 | 2013-06-18 | Sandisk Technologies Inc. | Non-volatile memory with multi-gear control using on-chip folding of data |
US20110153912A1 (en) * | 2009-12-18 | 2011-06-23 | Sergey Anatolievich Gorobets | Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8572311B1 (en) | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US8694853B1 (en) | 2010-05-04 | 2014-04-08 | Apple Inc. | Read commands for reading interfering memory cells |
US8416624B2 (en) | 2010-05-21 | 2013-04-09 | SanDisk Technologies, Inc. | Erase and programming techniques to reduce the widening of state distributions in non-volatile memories |
US8572423B1 (en) | 2010-06-22 | 2013-10-29 | Apple Inc. | Reducing peak current in memory systems |
US8595591B1 (en) | 2010-07-11 | 2013-11-26 | Apple Inc. | Interference-aware assignment of programming levels in analog memory cells |
US9104580B1 (en) | 2010-07-27 | 2015-08-11 | Apple Inc. | Cache memory for hybrid disk drives |
US8767459B1 (en) | 2010-07-31 | 2014-07-01 | Apple Inc. | Data storage in analog memory cells across word lines using a non-integer number of bits per cell |
US8856475B1 (en) | 2010-08-01 | 2014-10-07 | Apple Inc. | Efficient selection of memory blocks for compaction |
US8694854B1 (en) | 2010-08-17 | 2014-04-08 | Apple Inc. | Read threshold setting based on soft readout statistics |
US9021181B1 (en) | 2010-09-27 | 2015-04-28 | Apple Inc. | Memory management for unifying memory cell conditions by using maximum time intervals |
US8472280B2 (en) | 2010-12-21 | 2013-06-25 | Sandisk Technologies Inc. | Alternate page by page programming scheme |
US8588007B2 (en) | 2011-02-28 | 2013-11-19 | Micron Technology, Inc. | Leakage measurement systems |
US9342446B2 (en) | 2011-03-29 | 2016-05-17 | SanDisk Technologies, Inc. | Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache |
US8634264B2 (en) | 2011-10-26 | 2014-01-21 | Micron Technology, Inc. | Apparatuses, integrated circuits, and methods for measuring leakage current |
US8792285B2 (en) * | 2011-12-02 | 2014-07-29 | Macronix International Co., Ltd. | Page buffer circuit |
TWI497501B (zh) * | 2011-12-30 | 2015-08-21 | Macronix Int Co Ltd | 頁面緩衝器電路 |
US8842471B2 (en) * | 2012-01-06 | 2014-09-23 | Sandisk Technologies Inc. | Charge cycling by equalizing and regulating the source, well, and bit line levels during write operations for NAND flash memory: program to verify transition |
CN103310839B (zh) * | 2012-03-15 | 2016-01-20 | 旺宏电子股份有限公司 | 缩短擦除操作的方法与装置 |
US8797802B2 (en) * | 2012-03-15 | 2014-08-05 | Macronix International Co., Ltd. | Method and apparatus for shortened erase operation |
US8681548B2 (en) | 2012-05-03 | 2014-03-25 | Sandisk Technologies Inc. | Column redundancy circuitry for non-volatile memory |
CN102682845B (zh) * | 2012-05-09 | 2018-10-16 | 上海华虹宏力半导体制造有限公司 | Eeprom存储单元以及eeprom存储器 |
US8897080B2 (en) | 2012-09-28 | 2014-11-25 | Sandisk Technologies Inc. | Variable rate serial to parallel shift register |
US9076506B2 (en) | 2012-09-28 | 2015-07-07 | Sandisk Technologies Inc. | Variable rate parallel to serial shift register |
US9490035B2 (en) | 2012-09-28 | 2016-11-08 | SanDisk Technologies, Inc. | Centralized variable rate serializer and deserializer for bad column management |
CN102915071A (zh) * | 2012-10-23 | 2013-02-06 | 南京航空航天大学 | 面向混合信号处理的低电压低功耗开关电流采样保持电路 |
US8971128B2 (en) | 2013-01-31 | 2015-03-03 | Sandisk Technologies Inc. | Adaptive initial program voltage for non-volatile memory |
US9349469B2 (en) | 2014-10-02 | 2016-05-24 | Macronix International Co., Ltd. | Program verify with multiple sensing |
US9887009B2 (en) | 2014-10-14 | 2018-02-06 | Macronix International Co., Ltd. | Memory page buffer with simultaneous multiple bit programming capability |
US9934872B2 (en) | 2014-10-30 | 2018-04-03 | Sandisk Technologies Llc | Erase stress and delta erase loop count methods for various fail modes in non-volatile memory |
US9224502B1 (en) | 2015-01-14 | 2015-12-29 | Sandisk Technologies Inc. | Techniques for detection and treating memory hole to local interconnect marginality defects |
US10032524B2 (en) | 2015-02-09 | 2018-07-24 | Sandisk Technologies Llc | Techniques for determining local interconnect defects |
JP5909294B1 (ja) * | 2015-03-11 | 2016-04-26 | 力晶科技股▲ふん▼有限公司 | 不揮発性記憶装置のための書き込み回路及び方法、並びに不揮発性記憶装置 |
US9564219B2 (en) | 2015-04-08 | 2017-02-07 | Sandisk Technologies Llc | Current based detection and recording of memory hole-interconnect spacing defects |
US9269446B1 (en) | 2015-04-08 | 2016-02-23 | Sandisk Technologies Inc. | Methods to improve programming of slow cells |
CN108877856B (zh) | 2017-05-10 | 2021-02-19 | 慧荣科技股份有限公司 | 储存装置、记录方法以及预载方法 |
TWI646551B (zh) * | 2017-05-10 | 2019-01-01 | 慧榮科技股份有限公司 | 儲存裝置、記錄方法以及預載方法 |
US10748622B2 (en) | 2019-01-21 | 2020-08-18 | Sandisk Technologies Llc | State adaptive predictive programming |
US11556416B2 (en) | 2021-05-05 | 2023-01-17 | Apple Inc. | Controlling memory readout reliability and throughput by adjusting distance between read thresholds |
US11847342B2 (en) | 2021-07-28 | 2023-12-19 | Apple Inc. | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IT1224062B (it) * | 1979-09-28 | 1990-09-26 | Ates Componenti Elettron | Metodo di programmazione per una memoria a semiconduttore non volatile elettricamente alterabile |
US4628487A (en) | 1984-08-14 | 1986-12-09 | Texas Instruments Incorporated | Dual slope, feedback controlled, EEPROM programming |
US4945393A (en) * | 1988-06-21 | 1990-07-31 | At&T Bell Laboratories | Floating gate memory circuit and apparatus |
US5172338B1 (en) * | 1989-04-13 | 1997-07-08 | Sandisk Corp | Multi-state eeprom read and write circuits and techniques |
DE69034191T2 (de) * | 1989-04-13 | 2005-11-24 | Sandisk Corp., Sunnyvale | EEPROM-System mit aus mehreren Chips bestehender Blocklöschung |
US5163021A (en) * | 1989-04-13 | 1992-11-10 | Sundisk Corporation | Multi-state EEprom read and write circuits and techniques |
JP3448051B2 (ja) * | 1990-03-31 | 2003-09-16 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US5239505A (en) * | 1990-12-28 | 1993-08-24 | Intel Corporation | Floating gate non-volatile memory with blocks and memory refresh |
US5220531A (en) | 1991-01-02 | 1993-06-15 | Information Storage Devices, Inc. | Source follower storage cell and improved method and apparatus for iterative write for integrated circuit analog signal recording and playback |
US6002614A (en) * | 1991-02-08 | 1999-12-14 | Btg International Inc. | Memory apparatus including programmable non-volatile multi-bit memory cell, and apparatus and method for demarcating memory states of the cell |
US5218569A (en) * | 1991-02-08 | 1993-06-08 | Banks Gerald J | Electrically alterable non-volatile memory with n-bits per memory cell |
US5602789A (en) * | 1991-03-12 | 1997-02-11 | Kabushiki Kaisha Toshiba | Electrically erasable and programmable non-volatile and multi-level memory systemn with write-verify controller |
US6222762B1 (en) * | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5313421A (en) * | 1992-01-14 | 1994-05-17 | Sundisk Corporation | EEPROM with split gate source side injection |
US5267218A (en) * | 1992-03-31 | 1993-11-30 | Intel Corporation | Nonvolatile memory card with a single power supply input |
US5910912A (en) * | 1992-10-30 | 1999-06-08 | International Business Machines Corporation | Flash EEPROM with dual-sidewall gate |
US5623436A (en) | 1993-06-17 | 1997-04-22 | Information Storage Devices | Method and apparatus for adjustment and control of an iterative method of recording analog signals with on-chip trimming techniques |
US5555204A (en) | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
US5422842A (en) | 1993-07-08 | 1995-06-06 | Sundisk Corporation | Method and circuit for simultaneously programming and verifying the programming of selected EEPROM cells |
JP3462894B2 (ja) | 1993-08-27 | 2003-11-05 | 株式会社東芝 | 不揮発性半導体メモリ及びそのデータプログラム方法 |
JP3737525B2 (ja) | 1994-03-11 | 2006-01-18 | 株式会社東芝 | 半導体記憶装置 |
US5629890A (en) | 1994-09-14 | 1997-05-13 | Information Storage Devices, Inc. | Integrated circuit system for analog signal storing and recovery incorporating read while writing voltage program method |
US5694356A (en) * | 1994-11-02 | 1997-12-02 | Invoice Technology, Inc. | High resolution analog storage EPROM and flash EPROM |
JPH08263361A (ja) * | 1995-03-23 | 1996-10-11 | Mitsubishi Electric Corp | フラッシュメモリカード |
US5557567A (en) | 1995-04-06 | 1996-09-17 | National Semiconductor Corp. | Method for programming an AMG EPROM or flash memory when cells of the array are formed to store multiple bits of data |
KR0185611B1 (ko) | 1995-12-11 | 1999-04-15 | 김광호 | 불휘발성 반도체 메모리장치의 고전압 레벨 최적화 회로 및 그 방법 |
US5729489A (en) | 1995-12-14 | 1998-03-17 | Intel Corporation | Programming flash memory using predictive learning methods |
US5677869A (en) | 1995-12-14 | 1997-10-14 | Intel Corporation | Programming flash memory using strict ordering of states |
JPH09180473A (ja) | 1995-12-27 | 1997-07-11 | Nec Corp | 不揮発性半導体メモリ装置 |
KR100223868B1 (ko) * | 1996-07-12 | 1999-10-15 | 구본준 | 비휘발성 메모리를 프로그램하는 방법 |
US5768192A (en) | 1996-07-23 | 1998-06-16 | Saifun Semiconductors, Ltd. | Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping |
US6134148A (en) | 1997-09-30 | 2000-10-17 | Hitachi, Ltd. | Semiconductor integrated circuit and data processing system |
JP3517081B2 (ja) * | 1997-05-22 | 2004-04-05 | 株式会社東芝 | 多値不揮発性半導体記憶装置 |
US6768165B1 (en) | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
US6046934A (en) | 1999-01-12 | 2000-04-04 | Macronix International Co., Ltd. | Method and device for multi-level programming of a memory cell |
US5926409A (en) | 1997-09-05 | 1999-07-20 | Information Storage Devices, Inc. | Method and apparatus for an adaptive ramp amplitude controller in nonvolatile memory application |
KR100327421B1 (ko) * | 1997-12-31 | 2002-07-27 | 주식회사 하이닉스반도체 | 비휘발성 메모리 소자의 프로그램 시스템 및 그의 프로그램 방법 |
US6040993A (en) | 1998-02-23 | 2000-03-21 | Macronix International Co., Ltd. | Method for programming an analog/multi-level flash EEPROM |
JP2000040382A (ja) | 1998-07-23 | 2000-02-08 | Sony Corp | 不揮発性半導体記憶装置およびそのデータ書き込み方法 |
IT1303204B1 (it) * | 1998-11-27 | 2000-10-30 | St Microelectronics Srl | Metodo di programmazione di celle di memoria non volatile ad elevataprecisione, con velocita' di programmazione ottimizzata. |
US6567302B2 (en) * | 1998-12-29 | 2003-05-20 | Micron Technology, Inc. | Method and apparatus for programming multi-state cells in a memory device |
US6103573A (en) * | 1999-06-30 | 2000-08-15 | Sandisk Corporation | Processing techniques for making a dual floating gate EEPROM cell array |
US6301161B1 (en) * | 2000-04-25 | 2001-10-09 | Winbond Electronics Corporation | Programming flash memory analog storage using coarse-and-fine sequence |
US6928001B2 (en) * | 2000-12-07 | 2005-08-09 | Saifun Semiconductors Ltd. | Programming and erasing methods for a non-volatile memory cell |
US6738289B2 (en) * | 2001-02-26 | 2004-05-18 | Sandisk Corporation | Non-volatile memory with improved programming and method therefor |
US6621742B1 (en) * | 2002-04-29 | 2003-09-16 | Fujitsu Limited | System for programming a flash memory device |
-
2001
- 2001-02-26 US US09/793,370 patent/US6738289B2/en not_active Expired - Lifetime
-
2002
- 2002-02-22 DE DE60225005T patent/DE60225005T2/de not_active Expired - Fee Related
- 2002-02-22 KR KR1020027014398A patent/KR20030014207A/ko not_active Application Discontinuation
- 2002-02-22 EP EP02707842A patent/EP1393323B1/de not_active Expired - Lifetime
- 2002-02-22 WO PCT/US2002/005265 patent/WO2002069346A2/en active IP Right Grant
- 2002-02-22 AU AU2002242219A patent/AU2002242219A1/en not_active Abandoned
- 2002-02-22 AT AT02707842T patent/ATE386327T1/de not_active IP Right Cessation
- 2002-02-22 EP EP07018561A patent/EP1978526A1/de active Pending
- 2002-02-22 JP JP2002568378A patent/JP2004519804A/ja active Pending
- 2002-02-22 CN CN02800792A patent/CN1460268A/zh active Pending
- 2002-02-25 TW TW091103312A patent/TW556194B/zh not_active IP Right Cessation
-
2004
- 2004-03-19 US US10/804,770 patent/US20040174744A1/en not_active Abandoned
-
2005
- 2005-05-09 US US11/126,044 patent/US7139465B2/en not_active Expired - Lifetime
-
2006
- 2006-09-11 US US11/530,818 patent/US20070002633A1/en not_active Abandoned
- 2006-11-21 US US11/562,286 patent/US20070091681A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20070002633A1 (en) | 2007-01-04 |
KR20030014207A (ko) | 2003-02-15 |
EP1978526A1 (de) | 2008-10-08 |
WO2002069346A2 (en) | 2002-09-06 |
US7139465B2 (en) | 2006-11-21 |
EP1393323A2 (de) | 2004-03-03 |
AU2002242219A1 (en) | 2002-09-12 |
DE60225005D1 (de) | 2008-03-27 |
JP2004519804A (ja) | 2004-07-02 |
US20040174744A1 (en) | 2004-09-09 |
US20050213361A1 (en) | 2005-09-29 |
US20070091681A1 (en) | 2007-04-26 |
WO2002069346A3 (en) | 2003-02-13 |
CN1460268A (zh) | 2003-12-03 |
US6738289B2 (en) | 2004-05-18 |
EP1393323B1 (de) | 2008-02-13 |
TW556194B (en) | 2003-10-01 |
ATE386327T1 (de) | 2008-03-15 |
US20020118574A1 (en) | 2002-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60225005T2 (de) | Nichtflüchtiger speicher mit verbessertem programmieren und verfahren dafür | |
DE102005037287B3 (de) | Nicht-flüchtiger Halbleiterspeicher und Verfahren zum Bestimmen einer Lesespannung zum Auslesen von Daten aus derartigen Speichern | |
DE60220590T2 (de) | Verfahren zur Reduzierung von Kopplungseffekten zwischen multi-level Speicherelementen eines nicht flüchtigen Speichers | |
DE102004033443B4 (de) | Flashspeicherbauelement mit Mehrpegelzelle | |
DE60216010T2 (de) | Verfahren und Schaltung zum Auslesen von Doppelbit-Speicherzellen unter Verwendung einer Vielzahl von Doppelbit-Referenz-Speicherzellen, die beidseitig gelesen werden | |
DE3925153C2 (de) | ||
DE60315532T2 (de) | Verfahren zur Reudzierung der Programmier- und Lese-Störungen eines nicht-flüchtigen Speichers | |
DE4119394C2 (de) | Nichtflüchtige Halbleiterspeichereinrichtung und Datenlöschungsverfahren hierfür | |
DE60212661T2 (de) | Hintergrund-ausführung einer operation mit speicherzellen | |
DE60214023T2 (de) | Selektiver betrieb eines nichtflüchtigen mehrzustandsspeichersystems in einem binärmodus | |
DE112005002818B4 (de) | Diodenarrayarchitektur zum Adressieren von Widerstandspeicherarrays im Nanomaßstab | |
DE19983565B4 (de) | Interner Auffrisch-Modus für eine Flash-Speicherzellenmatrix | |
DE102005030661B4 (de) | Nichtflüchtiges Halbleiterspeicherbauelement und Verfahren zum Betreiben und Herstellen eines nichtflüchtigen Halbleiterspeicherbauelementes | |
DE112005001325T5 (de) | Lösch-Algorithmus für einen Multilevel-Bit-Flash-Speicher | |
EP0936629B1 (de) | EEPROM und Verfahren zur Ansteuerung eines EEPROM | |
DE60303511T2 (de) | Verfahren zum löschen eines flash-speichers unter verwendung eines prä-lösch verfahrensschritts | |
DE112005000866T5 (de) | Verfahren und Systeme zur Erreichung einer hohen Schreibleistung in Multibit-Speichervorrichtungen | |
DE102008003637B4 (de) | Integrierter Schaltkreis, Verfahren zum Programmieren einer Speicherzellen-Anordnung eines Integrierten Schaltkreises, und Speichermodul | |
DE4014117A1 (de) | Elektrisch loeschbarer programmierbarer festwertspeicher mit nand-zellenbloecken | |
DE102008007685B4 (de) | Integrierte Schaltung und Verfahren zum Betreiben einer integrierten Schaltung | |
DE102007006279A1 (de) | Nichtflüchtiges Halbleiterspeicherelement und Verfahren zum Betreiben eines nichtflüchtigen Halbleiterspeicherelements | |
DE4040492A1 (de) | Automatische loeschoptimierschaltung fuer einen elektrisch loesch- und programmierbaren halbleiterspeicher und automatisches loeschoptimierungsverfahren | |
EP1571674B1 (de) | Verfahren zum Betreiben einer elektrischen beschreib- und löschbaren Speicherzelle und eine Speichereinrichtung zum elektrischen Speichern | |
DE102020116188A1 (de) | Verbesserung der sourceseitigen vorladung und verstärkung für das programmieren in umgekehrter reihenfolge | |
DE102005031892B4 (de) | Verfahren zum Programmieren von Multi-Bit-Charge-Trapping-Speicherzellenanordnungen und Speicherbauelement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |