-
Die
Erfindung betrifft ein Programmierverfahren und ein Programmierwiederaufnahmeverfahren für ein nichtflüchtiges
Speicherbauelement.
-
Aus
dem Stand der Technik sind flüchtige und
nichtflüchtige
Speicherbauelemente bekannt. Flüchtige
Speicherbauelemente speichern Daten so lange wie das Bauelement
mit Energie versorgt wird. Wird die Energie jedoch abgeschaltet,
dann sind die Daten verloren. Im Gegensatz dazu bleiben die Daten
in einem nichtflüchtigen
Speicher auch gespeichert, wenn das Bauelement abgeschaltet wird.
Beispiele für
herkömmliche
nichtflüchtige
Speicherbauelemente umfassen maskierte Nurlesespeicher (maskierte
ROM bzw. MROM), programmierbare ROM (PROM), lösch- und programmierbare ROM (EPROM)
und elektrisch lösch-
und programmierbare ROM (EEPROM).
-
Die
meisten nichtflüchtigen
Halbleiterspeicherbauelemente können
neu programmiert werden, um andere Daten zu speichern. Die Vorgänge zum
Löschen
von Daten aus den und zum anschließenden Schreiben oder Programmieren
von neuen Daten in die nichtflüchtigen
Speicherbauelemente sind z. B. bei MROM-, PROM- und EPROM-Bauelementen
jedoch relativ aufwändig.
Als Konsequenz sind Benutzer von Computern oder anderen elektronischen
Geräten,
welche diese Arten von nichtflüchtigen
Speicherbauelementen enthalten, meist nicht in der Lage, die Speicherbauelemente
neu zu programmieren, um andere Daten zu speichern. Andererseits können als
EEPROM ausgeführte
nichtflüchtige Speicherbauelemente
elektrisch gelöscht
und programmiert werden. Daher werden EEPROM häufig zum Speichern von Systemprogrammiercode
und in Zusatzspeicherbauelementapplikationen verwendet, in welchen
kontinuierliches oder häufiges
Neuprogrammieren des nichtflüchtigen
Speicherbauelements erforderlich ist. Flash-EEPROM, welche nachfolgend
auch einfach als Flashspeicherbauelemente bezeichnet werden, können verglichen
mit anderen herkömmlichen
EEPROM-Bauelementen
eine hohe Integrationsdichte aufweisen. Daher werden Flashspeicherbauelemente
häufig
als Zusatzspeicherbauelemente hoher Kapazität verwendet. Flashspeicherbauelemente
vom NAND-Typ weisen dabei im Allgemeinen eine höhere Integrationsdichte als
Flashspeicherbauelemente vom NOR-Typ auf.
-
1 zeigt
eine Feldstruktur bzw. ein Speicherzellenfeld 100 eines
herkömmlichen
Flashspeicherbauelements vom NAND-Typ. Das Speicherzellenfeld 100 wird
verwendet, um Informationen bzw. Daten zu speichern, und ist in
einen Hauptbereich oder ein Hauptfeld 10 und einen Ersatzbereich oder
ein Ersatzfeld 20 unterteilt. Während für das Speicherzellenfeld 100 in 1 nur
ein Speicherblock gezeigt ist, weist es im Allgemeinen eine Mehrzahl
von Speicherblöcken
auf. Informationen, welche das Hauptfeld 10 betreffen,
und andere allgemeine Informationen, welche das Flashspeicherbauelement betreffen,
werden im Ersatzfeld 20 gespeichert. Diese Informationen
können
beispielsweise Fehlerkorrekturcodes, Bauelementcodes, Markierungscodes, Seiteninformationen
usw. umfassen. Das Hauptfeld 10 und das Ersatzfeld 20 des
Spei cherzellenfelds 100 umfassen eine Mehrzahl von Zellenketten 1,
denen je eine Bitleitung BL0, BLn, SBL0, SBLx zugeordnet ist. Diese
Zellenketten können
auch als NAND-Ketten bezeichnet werden.
-
Zusätzlich kann
das Flashspeicherbauelement eine in
1 nicht
dargestellte Seitenpufferschaltung umfassen, welche zum Programmieren von
Daten in das Speicherzellenfeld
100 oder zum Lesen von
Daten aus dem Speicherzellenfeld
100 verwendet werden kann.
Typischerweise werden die Speicherzellen eines Flashspeicherbauelements vom
NAND-Typ durch Fowler-Nordheim-Tunnelströme gelöscht oder programmiert. Verfahren
zum Löschen
und Programmieren von EEPROM-Bauelementen
vom NAND-Typ sind beispielsweise in den Patentschriften
US 5.473.563 und
US 5.696.717 beschrieben,
auf deren Offenbarungen hiermit Bezug genommen wird.
-
Um
Daten im Hauptfeld 10 zu speichern, wird ein Datenladebefehl
an das Flashspeicherbauelement angelegt und dann werden Adresseninformationen
und die zu speichernden Daten dem Bauelement zur Verfügung gestellt.
Allgemein werden die in das Flashspeicherbauelement zu speichernden
oder zu programmierenden Daten in Einheiten von Bytes oder Worten
in der Reihenfolge an die Seitenpufferschaltung übertragen, in welcher die Daten
gespeichert werden sollen. Die in der Seitenpufferschaltung gespeicherten
Daten können
in Reaktion auf einen Programmierbefehl in das Speicherzellenfeld
programmiert werden, d. h. in Speicherzellen einer ausgewählten Seite.
-
Nachdem
die Speicherzellen der ausgewählten
Seite programmiert sind, wird ein Verifizierungsvorgang ausgeführt, um
zu ermitteln, ob die Speicherzellen der ausgewählten Seite korrekt programmiert
sind oder nicht. Zeigt der Verifizierungsvorgang an, dass die Speicherzellen
der ausgewählten
Seite korrekt programmiert sind, dann wird eine Information be züglich des
Verifizierungsvorgangs in einen spezifischen Bereich des Bauelements
programmiert, z. B. in das Ersatzfeld. Diese das Ergebnis des Verifizierungsvorgangs
anzeigende Information wird als Seiteninformation oder Bestätigungsmarkierung bezeichnet.
Die Seiteninformation jeder von mehreren Seiten, die mit einer jeweiligen
Wortleitung WL0 bis WLm korrespondieren, kann in einer spezifischen Kette
des Ersatzfeldes 20 gespeichert werden. Beispielhaft können im
nichtflüchtigen
Speicherbauelement 100 gemäß 1 die Seiteninformationen
zu den Wortleitungen WL0 bis WLm in der Kette gespeichert werden,
welche die gestrichelt eingekreisten Zellen M0', M1' ...
Mn' umfasst. Daher
kann im Ausführungsbeispiel
gemäß 1 die
Seiteninformation, welche mit der ersten Seite WL0 korrespondiert,
in der Speicherzelle M0' einer
Kette gespeichert werden, die mit einer Ersatzbitleitung SBL0 verbunden ist,
die Seiteninformation, welche mit der zweiten Seite WL1 korrespondiert,
kann in der Speicherzelle M1' der
Kette gespeichert werden, die mit der Ersatzbitleitung SBL0 verbunden
ist, und die Seiteninformation, welche mit der letzten Seite WLm
korrespondiert, kann in der Speicherzelle Mm' der Kette gespeichert werden, die mit
der Ersatzbitleitung SBL0 verbunden ist.
-
Wie
oben ausgeführt,
können
mit herkömmlichen
Programmierverfahren zwei Datenprogrammiervorgänge ausgeführt werden, um eine Seite von Daten
zu speichern. Der erste Vorgang ist der normale Programmiervorgang,
welcher verwendet wird, um die Daten in der Speicherzelle des Hauptfeldes 10 zu speichern.
Der zweite Vorgang ist der Programmiervorgang, welcher ausgeführt wird,
um die Seiteninformation oder die Bestätigungsmarkierung im Ersatzfeld 20 zu
speichern, wobei diese Seiteninformation oder Bestätigungsmarkierung
anzeigt, ob die Speicherzellen im Hauptfeld 10 korrekt
programmiert sind oder nicht. Mit dieser Programmierstruktur ist
die Zeitspanne, welche erforderlich ist, um eine Seite von Daten
zu speichern, etwa doppelt so lang wie die Zeitspanne, welche erforderlich
ist, um die Information im Hauptfeld zu speichern.
-
Daher
sind, wenn das Speicherzellenfeld beispielsweise 32 Seiten oder
Wortleitungen umfasst, insgesamt 64 Programmiervorgänge erforderlich,
um 32 Seiten von Daten im Speicherzellenfeld zu speichern. Daher
kann das oben beschriebene Programmierverfahren die Betriebsgeschwindigkeit des
Flashspeicherbauelements begrenzen. Um den Betrieb des Bauelements
zu beschleunigen, können mehrere
Bestätigungsmarkierungen
gleichzeitig programmiert werden.
-
Während der
Programmierung kann die Energieversorgung für das Flashspeicherbauelement unerwartet
unterbrochen werden. Wird die Energie wieder angelegt, dann kann
ein Bestätigungsvorgang ausgeführt werden,
um zu bestimmen, ob das oder die vorherigen Programmierverfahren
normal ausgeführt
worden sind. Dies kann durch Überprüfen des
in die Zelle des Ersatzfelds programmierten Wertes ausgeführt werden,
welche die Bestätigungsmarkierung
umfasst, die mit einer vorher programmierten Seite des Hauptfelds
korrespondiert. Wie oben jedoch ausgeführt, wird die Bestätigungsmarkierung nach
der Programmierung der Benutzerdaten in das Hauptfeld des Bauelements
pro grammiert. Als Konsequenz sind, wenn die Energie nach der Programmierung
der Benutzerdaten in die Speicherzellen des Hauptfelds, jedoch vor
der Programmierung der Bestätigungsmarkierung
unterbrochen wird, die in das Hauptfeld programmierten Daten eventuell
verloren, d. h. sie müssen
neu programmiert werden, selbst wenn die Speicherzellen des Hauptfelds
korrekt programmiert worden sind. Dieser Datenverlust kann sich
in Situationen verstärken,
in welchen eine Mehrzahl von Bestätigungsmarkierungen gleichzeitig
programmiert wird.
-
Die
Offenlegungsschrift
US
2003/0189860 A1 offenbart ein Programmierverfahren für ein nichtflüchtiges
Speicherbauelement, bei dem Daten seitenweise in einen normalen
Speicherzellenbereich programmiert und im gleichen Seitenprogrammiervorgang
begleitende Information, wie logische Adressdaten und eine Schreibabschlussmarkierung, in
einen redundanten Speicherzellenbereich geschrieben wird.
-
Es
ist Aufgabe der Erfindung, ein Programmierverfahren und ein Programmierwiederaufnahmeverfahren
für ein
nichtflüchtiges
Speicherbauelement anzugeben, welche die oben beschriebenen Unzulänglichkeiten
des Standes der Technik zumindest teilweise vermeiden können.
-
Die
Erfindung löst
diese Aufgabe durch ein Programmierverfahren für ein nichtflüchtiges Speicherbauelement
mit den Merkmalen des Patentanspruchs 1 und durch ein Programmierwiederaufnahmeverfahren
für ein
nichtflüchtiges
Speicherbauelement mit den Merkmalen des Patentanspruchs 11.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den abhängigen Ansprüchen angegeben.
-
Vorteilhafte,
nachfolgend beschriebene Ausführungsformen
der Erfindung sowie das zu deren besserem Verständnis oben erläuterte,
herkömmliche
Ausführungsbeispiel
sind in den Zeichnungen dargestellt. Es zeigen:
-
1 ein
Blockdiagramm einer herkömmlichen
Speicherzellenfeldstruktur eines nichtflüchtigen Speicherbauelements,
-
2 ein
Blockdiagramm einer Speicherzellenfeldstruktur eines nichtflüchtigen
Speicherbauelements gemäß der Erfindung,
-
3 ein
Kennliniendiagramm zur Darstellung einer Schwellwertspannungsverteilung
für Speicherzellen
eines nichtflüchtigen
Speicherbauelements nach Art von 2,
-
4 eine
Tabelle zur Darstellung eines Entscheidungsbaums gemäß der Erfindung
zum Bestimmen, ob in Speicherzellen eines nichtflüchtigen Speicherbauelements
nach Art von 2 gespeicherte Daten korrekt
programmiert sind,
-
5 ein
Flussdiagramm zur Darstellung eines Programmierverfahrens für ein nichtflüchtiges Speicherbauelement
gemäß der Erfindung
und
-
6 ein
Flussdiagramm zur Darstellung eines Verfahrens zur Analyse einer
Schwellwertspannungsverteilung in Speicherzellen eines nichtflüchtigen
Speicherbauelements gemäß der Erfindung.
-
In
den Zeichnungen bezeichnen gleiche Bezugszeichen Elemente bzw. Komponenten,
welche gleiche oder analoge Funktionen ausführen. In Ausgestaltung der
Erfindung werden Verfahren zur Verfügung gestellt, die gleichzeitig
Daten und Informationen, welche die Daten betreffen, wie eine Bestätigungsmarkierung,
in ein nichtflüchtiges
Speicherbauelement programmieren. Diese Verfahren können verwendet
werden, um Daten in ein Hauptfeld und ein Ersatzfeld eines nichtflüchtigen
Speicherbauelements zu programmieren, wie z. B. in ein Flashspeicherbauelement.
In weiterer Ausgestaltung der Erfindung kann, wenn ein Programmiervorgang
unterbrochen wird, beispielsweise durch eine Unterbrechung der Energieversorgung,
die Schwellwertspannungsverteilung in Speicherzellen, in welchen
Daten und Bestätigungsmarkierungen
gespeichert sind, als Teil eines Wiederherstellungs- bzw. Erholprozesses analysiert
werden. Basierend auf dieser Analyse kann eine Bestimmung durchgeführt werden,
ob die korrespondierenden Speicherzellen normal bzw. korrekt programmiert
sind. Zeigt die Analyse an, dass die korrespondierenden Speicherzellen
normal programmiert sind, dann wird der Programmiervorgang startend
mit der nächsten
Speicherzelle ausgeführt. Zeigt
die Analyse anderseits an, dass die korrespondierenden Speicherzellen
nicht normal programmiert sind, dann werden die abnormal programmierten Speicherzellen
erneut programmiert, wenn der Vorgang fortgesetzt wird.
-
2 zeigt
schematisch die Speicherzellenfeldstruktur eines nichtflüchtigen
Speicherbauelements in Form eines Flashspeicherbauelements vom NAND-Typ
gemäß Ausführungsformen
der Erfindung. Die Erfin dung kann jedoch auch in anderen Halbleiterspeicherbauelementen
wie z. B. MROM-, PROM- und FRAM-Bauelementen sowie Flashspeicherbauelementen
vom NOR-Typ angewendet werden.
-
Das
nichtflüchtige
Speicherbauelement von 2 umfasst ein Speicherzellenfeld 100 zum
Speichern von Daten, das in einen Hauptbereich 10 und einen
Ersatzbereich 20 aufgeteilt ist. Der Hauptbereich 10 und
der Ersatzbereich 20 können
identische Speicherzellenstrukturen aufweisen. Benutzerdaten können in
den Hauptbereich 10 des Speicherzellenfelds 100 in
Einheiten von Seiten 11, 12, 13, ...
programmiert werden. Zusätzliche
Informationen, welche mit jeder dieser Seiten 11, 12, 13,
... korrespondieren, können
in den Ersatzbereich 20 programmiert werden. Die zusätzlichen
Informationen umfassen beispielsweise Bestätigungsmarkierungen CM0, CM1,
CM2, ..., welche anzeigen, ob die Daten korrekt in die korrespondierenden
Seiten des Hauptbereich 10 programmiert sind oder nicht.
Die Größe der Bestätigungsmarkierungen
CM0, CM1, CM2, ... kann ein fester Wert sein oder kann entwurfsabhängig gesteuert
werden. Die Struktur des Speicherzellenfelds 100 gemäß 2 kann
identisch oder sehr ähnlich zu
der Struktur des in 1 dargestellten Speicherbauelements
ausgeführt
sein. Entsprechend ist das Speicherzellenfeld gemäß 2 mit
den gleichen Bezugszeichen wie das Speicherzellenfeld gemäß 1 dargestellt
und die Beschreibung der verschiedenen Komponenten des Speicherzellenfelds
wird nicht wiederholt.
-
In
Ausgestaltung der Erfindung werden Verfahren zum Verifizieren zur
Verfügung
gestellt, ob ein Datenprogrammiervorgang korrekt ausgeführt worden
ist. Gemäß diesen
Verfahren können
der Ersatzbereich 20 und der Hauptbereich 10 gleichzeitig
programmiert werden. Der Begriff „gleichzeitig” bedeutet hierbei,
dass der Ersatzbereich 20 und der Hauptbereich 10 als
Teil des gleichen Programmiervorgangs programmiert werden, unabhängig davon,
ob die individuellen Zellen exakt zum gleichen Zeitpunkt programmiert
werden. Dies unterscheidet sich vom oben beschriebenen herkömmlichen
Programmierverfahren eines Flashspeicherbauelements, in welchem der
Hauptbereich 10 und der Ersatzbereich 20 sequentiell
programmiert werden. Daraus resultiert, dass die Programmierdauer
im Vergleich zu bestimmten herkömmlichen
Programmierverfahren nahezu auf die Hälfte verkürzt werden kann. Des Weiteren
können,
wie nachfolgend detaillierter beschrieben wird, die Programmierverfahren
gemäß Ausführungsformen
der Erfindung den Datenverlust reduzieren und/oder minimieren, welcher
auftreten kann, wenn während
eines Datenprogrammiervorgangs die Energieversorgung kurzzeitig
unterbrochen wird.
-
Insbesondere
werden in erfindungsgemäßen Ausführungsformen,
wenn die Energieversorgung zum Bauelement während eines Programmiervorgangs
unterbrochen wird, nach der Wiederherstellung der Energieversorgung
eine oder mehr Bestätigungsmarkierungen
untersucht, um zu bestimmen, an welchem Punkt des Programmiervorgangs
fortgesetzt werden soll. Wie oben für die herkömmlichen Programmierverfahren
ausgeführt
ist, werden, wenn der Ersatzbereich 20 zum Zeitpunkt der
Unterbrechung der Energieversorgung noch nicht programmiert ist,
die korrespondierenden Daten im Hauptbereich 10 als verloren
betrachtet, unabhängig
davon, ob die Daten erfolgreich in den Hauptbereich 10 programmiert
worden sind oder nicht. Im Gegensatz dazu werden bei Ausführungsformen
der Erfindung die Daten gleichzeitig in den Hauptbereich 10 und den
Ersatzbereich 20 programmiert und es kann eine Analyse
durchgeführt
werden, um zu bestimmen, ob die in den Hauptbereich 10 programmierten
Daten zuverlässig
bzw. korrekt programmiert worden sind oder nicht. Ein erfindungsgemäßes Verfahren
zur Bestimmung, ob die Daten zuverlässig in den Hauptbereich 10 programmiert
worden sind, wird nachfolgend beschrieben.
-
Wird
nach einer Unterbrechung die Energieversorgung während eines Programmiervorgangs wiederhergestellt,
dann werden die Daten im Flashspeicherbauelement abgetastet, bis
ein nicht leerer Dateneintrag, z. B. ein Wert „FFh” oder ein logischer Wert „1”, detektiert
wird, wie aus 2 ersichtlich ist, d. h. bis
die Daten detektiert werden, welche als letztes programmiert worden
sind. Es können
die gespeicherten Benutzerdaten im Hauptbereich 10 und/oder die
gespeicherten Informationen im Ersatzbereich 20 abgetastet
werden, um den nicht leeren Eintrag zu detektieren. Dann wird die
Bestätigungsmarkierung, die
mit den die detektierten Daten enthaltenden Speicherzellen korrespondiert,
in 2 z. B. die Bestätigungsmarkierung CM2, gemeinsam
mit der Schwellwertspannung der Speicherzellen analysiert, z. B. der
Schwellwertspannung der Speicherzellen, die mit dem Bezugszeichen 13 in 2 korrespondieren, um
zu bestimmen, ob die Speicherzellen 13 korrekt programmiert
worden sind oder nicht. Die oben beschriebene Datenabtastung kann
sequentiell über die
Speicherzellen hinweg ausgeführt
werden oder eine Mehrzahl von Speicherzellen kann gleichzeitig abgetastet
werden, beispielsweise durch Anwendung einer verdrahteten ODER-Verknüpfungstechnik.
-
Im
Allgemeinen ist ein Schichtaufbau eines nichtflüchtigen Speicherbauelements
von einer Isolationsschicht bedeckt. Zusätzlich kann das Bauelement
ein floatendes Gate, welches zwischen einer Source und einer Drain
angeordnet ist, sowie ein Steuergate umfassen, welches mit einer
Wortleitung verbunden ist. Ladungsträger, d. h. Elektronen, werden
während
des Vorgangs der Datenprogrammierung in eine Zelle des Speicherbauelements
durch die Isolationsschicht hindurch in das floatende Gate injiziert.
Mit der Akkumulation der Elektronen im floatenden Gate wird die
effektive Schwellwertspannung des Zellentransistors erhöht, um eine
Schwellwertspannungsverteilung von links nach rechts zu bewegen.
-
Wird
eine Lesespannung Vread, welche in 3 mit einer
Spannung Vver1 korrespondiert, von z. B. 0 V an das Steuergate und
die Drain des Zellentransistors angelegt, dann bleibt die programmierte Zelle
nichtleitend und zeigt einen logischen Zustand „0” an, d. h. die Zelle entspricht
einer Aus- bzw. OFF-Zelle. Nach Abschluss eines Programmiervorgangs
wird die Schwellwertspannung jedoch in einen Bereich verschoben,
welcher in 3 mit „B” bezeichnet und einem Bereich „A” in 3 entgegengesetzt
ist, welcher an den Spannungspegel von 0 Volt angrenzt. Daraus resultiert,
dass es, wenn die oben beschriebene Datenlesestruktur benutzt wird, schwierig
sein kann, korrekt zu bestimmen, ob die korrespondierende Speicherzelle
fehlerfrei programmiert ist, nachdem die Energieversorgung wiederhergestellt
ist. In weiterer Ausgestaltung der Erfindung kann die Lesespannung
als erste Programmierverifizierungsspannung Vver1 verwendet werden
und eine Spannung von beispielsweise 1,2 Volt, welche ungefähr mit dem
minimalen Wert des Bereichs „B” korrespondiert,
kann als zweite Programmierverifizierspannung Vver2 verwendet werden,
um die Zuverlässigkeit
der in die Speicherzelle programmierten Daten zu bestimmen. Wie
hier ausgeführt,
können ähnliche
oder identische Verfahren verwendet werden, um die Zuverlässigkeit
der Programmiervorgänge
zu ermitteln, die durchgeführt
wurden, um die Benutzerdaten und/oder die Bestätigungsmarkierungen zu programmieren.
-
Werden
durch den Abtastvorgang eine leere Seite bzw. leere Daten detektiert,
dann kann spezifisch die erste Programmierverifizierspannung Vver1 an
das Gate eines Zellentransistors angelegt werden, der eine Bestätigungsmarkierung
speichert, und eine Bestimmung durchgeführt werden, ob der Zellentransistor
in einem nicht leitenden Zustand bleibt. Bleibt der Zellentransistor
im nichtleitenden Zustand, dann wird die Bestätigungsmarkierung als programmiert
beurteilt. Dies zeigt an, dass die Schwellwertspannung Vcon des
Zellentransistors, der die Bestätigungsmarkierung
speichert, im Bereich „A” oder im Bereich „B” aus 3 liegt.
-
Danach
wird spezifisch die zweite Programmierverifizierspannung Vver2 an
den Zellentransistor angelegt und eine zweite Bestimmung durchgeführt, ob
der Zellentransistor im nichtleitenden Zustand bleibt. Bleibt der
Zellentransistor im nichtleitenden Zustand, dann wird angezeigt,
dass die Bestätigungsmarkierung
nicht nur programmiert ist, sondern zuverlässig programmiert ist. In diesem
Fall, liegt die Schwellwertspannung Vcon des Zellentransistors, der
die Bestätigungsmarkierung
speichert, im Bereich „B”, welcher,
wie aus 3 ersichtlich ist, einem Spannungsbereich
entspricht, der über
der zweiten Programmierverifizierspannung Vver2 liegt. Wird die
Bestätigungsmarkierung
als zuverlässig programmiert
beurteilt, dann kann die Zuverlässigkeit der
Benutzerdaten ermittelt werden.
-
Um
zu bestimmen, ob die Benutzerdaten zuverlässig programmiert sind, kann
die erste Programmierverifizierspannung Vver1 an die Gates der Zellentransistoren
angelegt werden, in welchen die Benutzerdaten gespeichert sind,
und eine Bestimmung durchgeführt
werden, ob die korrespondierenden Zellentransistoren leitend oder
nichtleitend sind. Ist ein korrespondierender Zellentransistor leitend,
dann zeigt dies an, dass die Zelle nicht programmiert ist, sondern
in einem gelöschten
Zustand gehalten wird, d. h. einen Datenwert „1” aufweist. Ist der korrespondierende
Zellentransistor jedoch nichtleitend, dann wird der Zellentransistor
als programmiert beurteilt, d. h. programmiert als Wert „0”. Wird
die korrespondierende Zelle als programmiert bestimmt, dann liegt eine
Schwellwertspannung Vuser des Zellentransistors entweder im Bereich „A” oder im
Bereich „B” aus 3,
in Abhängigkeit
davon, ob die korrespondierende Programmierung normal abgeschlossen
wurde.
-
Wird
die Zelle mit den Benutzerdaten als programmiert beurteilt, dann
kann eine zweite Bestimmung durchgeführt werden, ob der Programmiervorgang
normal abgeschlossen wurde oder nicht. Um dies zu errei chen, kann
die zweite Programmierverifizierspannung Vver2 an den Zellentransistor
angelegt und eine Bestimmung durchgeführt werden, ob der korrespondierende
Zellentransistor im nichtleitenden Zustand bleibt. Bleibt der korrespondierende Zellentransistor
im nichtleitenden Zustand, dann werden die Benutzerdaten als zuverlässig programmiert beurteilt.
In diesem Fall liegt die Schwellwertspannung Vuser des Zellentransistors,
welcher die Benutzerdaten speichert, im Bereich „B” aus 3, der einem
Spannungsbereich entspricht, welcher über der zweiten Programmierverifizierspannung
Vver2 liegt.
-
Wie
aus 4 ersichtlich ist, sind die Bestätigungsmarkierung
und die Benutzerdaten als zuverlässig
programmiert bestimmt, wenn die Schwellwertspannung Vcon des Transistors,
der die Bestätigungsmarkierung
speichert, und die Schwellwertspannung Vuser des Transistors, der
die Benutzerdaten speichert, im Bereich „B” aus 3 liegen,
der einem Bereich entspricht, in welchem der Spannungspegel höher als
die zweite Programmierverifizierspannung Vver2 ist. Das Bestimmungsschema der
Zuverlässigkeit
der Programmiervorgänge
kann Datenverluste reduzieren, die auftreten können, wenn eine Unterbrechung
der Energieversorgung auftritt. Zusätzlich kann gemäß der Erfindung
die Zuverlässigkeit
der Programmierung in Bezug auf die Bestätigungsmarkierung und die Benutzerdaten
beurteilt werden, so dass die Datenzuverlässigkeit weiter verbessert
wird.
-
5 zeigt
ein Flussdiagramm eines Programmierverfahrens für ein nichtflüchtiges
Speicherbauelement gemäß Ausführungsformen
der Erfindung. Wie aus 5 ersichtlich ist, kann das
Programmierverfahren des nichtflüchtigen
Speicherbauelements im Schritt 1000 mit der gleichzeitigen
Programmierung von Benutzerdaten und der zu diesen Benutzerdaten
gehörigen
Bestätigungsmarkierung beginnen.
Wie oben ausgeführt,
können
die Benutzerdaten in Einheiten von Seiten in einen Hauptbereich
eines Speicherzellenfelds programmiert werden. Die Bestäti gungsmarkierung
kann in einen Ersatzbereich des Speicherzellenfelds programmiert und
als Anzeige benutzt werden, ob die korrespondierenden Seiten des
Hauptbereichs des Speicherzellenfelds zuverlässig programmiert sind.
-
Dann
wird im Schritt 1100 eine Bestimmung durchgeführt, ob
während
der Programmierung die Energieversorgung unterbrochen war. War dies
der Fall, dann werden nach der Wiederherstellung der Energieversorgung
im Schritt 1200 die im Speicherzellenfeld gespeicherten
Daten abgetastet. Wie aus dem Schritt 1300 aus 5 ersichtlich
ist, wird diese Datenabtastung durchgeführt, um Speicherzellen zu detektieren,
welche Daten enthalten, d. h. Speicherzellen, die nicht leer sind.
Die Vorgänge
in den Schritten 1200 und 1300 aus 5 können so
lange wiederholt werden, bis eine Speicherzelle mit programmierten
Daten detektiert wird. Werden im Schritt 1300 Speicherzellen
mit programmierten Daten detektiert, dann wird im Schritt 1400 die
Schwellwertspannungsverteilung der Speicherzellen, die eine Bestätigungsmarkierung
speichern, und der Speicherzellen analysiert, die Benutzerdaten
derjenigen Seite speichern, zu welcher die detektierten Daten gehören.
-
Basierend
auf der Analyse im Schritt 1400 wird im Schritt 1500 eine
Bestimmung durchgeführt, ob
die Benutzerdaten in diesen Speicherzellen korrekt und zuverlässig programmiert
sind. Zeigt das Ergebnis des Schrittes 1500 an, dass der
Programmiervorgang, welcher die Benutzerdaten in die korrespondierende
Seite programmiert hat, zuverlässig ausgeführt wurde,
d. h. die Daten gültig
sind, dann wird der Vorgang im Schritt 1600 mit der Programmierung
der nächsten
Seite von zu programmierenden Daten fortgesetzt. Zeigt das Ergebnis
des Schrittes 1500 jedoch an, dass der Programmiervorgang nicht
zuverlässig
ausgeführt
wurde, dann wird der Vorgang im Schritt 1700 mit der erneuten
Programmierung der Daten der korrespondierenden Seite fortgesetzt.
-
6 zeigt
ein Flussdiagramm zur Darstellung eines Verfahrens zur Bestimmung,
ob Daten zuverlässig
programmiert sind, gemäß Ausführungsformen
der Erfindung. Das Verfahren gemäß 6 kann
beispielsweise benutzt werden, um den Vorgang gemäß Schritt 1400 aus 5 auszuführen.
-
Wie
aus 6 ersichtlich ist, kann der Vorgang im Schritt 1410 mit
mehreren Teilschritten beginnen, welche benutzt werden, um die Zuverlässigkeit
der Bestätigungsmarkierung
zu ermitteln. Speziell kann im Schritt 1412 die Schwellwertspannung Vcon
der Zelle ermittelt werden, welche die Bestätigungsmarkierung enthält, um zu
bestimmen, ob die Schwellwertspannung Vcon höher als die erste Programmierverifizierspannung
Vver1 ist. Ist die Schwellwertspannung Vcon kleiner als die erste
Programmierverifizierspannung Vver1, dann wird die Seite, die mit
der Bestätigungsmarkierung
korrespondiert, im Schritt 1450 als gelöschte Seite beurteilt, d. h.
als eine Seite, welche nicht programmiert ist, wonach der Vorgang
beendet ist. Ist die Schwellwertspannung Vcon stattdessen höher als
die erste Programmierverifizierspannung Vver1, dann wird die mit der
Bestätigungsmarkierung
korrespondierende Seite im Schritt 1414 als programmierte
Seite beurteilt.
-
Wird
im Schritt 1414 die korrespondierende Seite als programmiert
beurteilt, dann kann als nächstes
im Schritt 1416 die Schwellwertspannung Vcon mit der höheren zweiten
Programmierverifizierspannung Vver2 verglichen werden. Ist die Schwellwertspannung
Vcon höher
als die zweite Programmierverifizierspannung Vver2, dann wird die
Bestätigungsmarkierung
als zuverlässig
programmiert beurteilt. Ist die Schwellwertspannung Vcon kleiner als
die zweite Programmierverifizierspannung Vver2, dann wird im Schritt 1440 die
korrespondierende Seite als nicht zuverlässig programmiert beurteilt.
-
Wird
die Bestätigungsmarkierung
im Schritt 1416 als zuverlässig programmiert beurteilt,
dann wird im Schritt 1420 die Zuverlässigkeit der in die korrespondierende
Seite programmierten Benutzerdaten ermittelt. Um die Beschreibung
dieses Schrittes zu vereinfachen, wird der Vorgang der Bestimmung der
Zuverlässigkeit
von programmierten Benutzerdaten im Schritt 1420 in Bezug
auf eine einzelne Speicherzelle beschrieben. Es versteht sich, dass
der beschriebene Vorgang für
einige oder alle Zellen der Seite wiederholt werden kann.
-
Zuerst
wird im Schritt 1422 die Schwellwertspannung Vuser der
Zelle ermittelt, um zu bestimmen, ob die Schwellwertspannung Vuser
höher als die
erste Programmierverifizierspannung Vver1 ist. Ist die Schwellwertspannung
Vuser kleiner als die erste Programmierverifizierspannung Vver1,
dann wird die korrespondierende Zelle im Schritt 1460 als gelöschte Zelle
beurteilt, d. h. als eine Zelle mit einem Datenwert „1”, wonach
der Vorgang abgeschlossen ist. Ist die Schwellwertspannung Vuser
höher als
die erste Programmierverifizierspannung Vver1, dann wird die korrespondierende
Zelle im Schritt 1424 als programmierte Zelle beurteilt,
d. h. als eine Zelle mit einem Datenwert „0”.
-
Wird
die korrespondierende Zelle als programmiert beurteilt, dann wird
im Schritt 1426 eine Bestimmung durchgeführt, ob
die Schwellwertspannung Vuser höher
als die zweite Programmierverifizierspannung Vver2 ist. Ist dies
der Fall, dann wird die Zelle im Schritt 1430 als zuverlässig programmiert
beurteilt. Ist die Schwellwertspannung Vuser stattdessen kleiner
als die zweite Programmierverifizierspannung Vver2, dann wird im
Schritt 1440 bestimmt, dass die korrespondierende Zelle
nicht zuverlässig
programmiert ist.
-
Es
können
folgende Modifikationen der beschriebenen Programmierverfahren vorgenommen werden,
ohne den Schutzbereich der Erfindung zu verlassen. So kann die Bestimmung
der Zuverlässigkeit
der programmierten Daten beispielsweise auch allein durch einen
Vergleich mit der zweiten Programmierverifizierspannung Vver2 durchgeführt werden.
-
Die
oben beschriebenen Schritte, in welchen die Zuverlässigkeit
der Programmierung der Zellen beurteilt wird, können individuell in jeder Zelle
oder in mehreren Zellen gemeinsam, beispielsweise durch Verwendung
einer verdrahteten ODER-Verknüpfungstechnik,
ausgeführt
werden. Wird irgendeine der Mehrzahl von Zellen, welche zu einer
Seite gehören,
als nicht zuverlässig
programmiert beurteilt, dann wird die korrespondierende Seite neu
programmiert.
-
Wie
oben ausgeführt,
werden Verfahren zur Programmierung von nichtflüchtigen Speicherbauelementen
zur Verfügung
gestellt, in welchen eine Mehrzahl von Daten- und Programmierbestätigungsinformationen
gleichzeitig programmiert werden. Wird der Programmiervorgang durch
eine Unterbrechung der Energieversorgung oder dergleichen unterbrochen,
dann kann basierend auf einer Schwellwertspannungsverteilung der
Speicherzellen, welche die Benutzerdaten speichern, und der Speicherzellen,
welche die Programmierbestätigungsinformation speichern,
z. B. eine Bestätigungsmarkierung,
der Grad bestimmt werden, bis zu dem der Programmiervorgang abgeschlossen
wurde. Basierend auf dem Ergebnis dieser Bestimmung können die
nicht korrekt programmierten Daten identifiziert und neu programmiert
werden. Durch die gleichzeitige Programmierung der Bestätigungsmarkierung
mit den Benutzerdaten kann die Gesamtprogrammierdauer der erfindungsgemäßen Programmierverfahren
verglichen mit derjenigen der herkömmlichen Programmierverfahren
verkürzt
werden. Zusätzlich
kann der Datenverlust verglichen mit herkömmlichen Verfahren reduziert
werden, wenn die Energieversorgung nach einer Unterbrechung während eines
Programmiervorgangs wieder zur Verfügung gestellt wird.