-
HINTERGRUND
DER ERFINDUNG Bereich der Erfindung
-
Die vorliegenden Erfindung bezieht
sich auf das Gebiet von nicht-flüchtigen
Halbleiterspeichern und genauer gesagt auf Prozesse zum Aufheben bzw.
Aussetzen einer automatischen Löschsequenz einer
Flashspeicher-Einrichtung.
-
Beschreibung der relevanten
Technik
-
Eine Flashspeicher-Einrichtung basiert
auf einem Speicherarray von Floating-Gatter-Transistoren, die in vielen aktuellen
Architekturen in einer Mehrzahl von Blöcken von Speicherzellen organisiert sind,
um Block für
Block Programmierung und Löschen
des Arrays von Zellen zu unterstützen.
Siehe US-Patent Nr. 5.414.664; mit dem Titel FLASH EPROM WITH BLOCK
ERASE FLAGS FOR OVER-ERASE PROTECTION; mit den Erfindern Lin et
al. Bei einer typischen Flashspeicherzelle entspricht eine logische "1" einem gelöschten Zustand, in dem weniger
Elektronen in dem Floating-Gatter der Zelle gespeichert sind, und
daher hat die gelöschte
Zelle einen niedrigen Schwellwert. Wenn eine Lesespannung an das
Steuergatter der Zelle, die gelöscht
wurde, angelegt wird, dann ist die Zelle leitfähig. Andererseits entspricht
eine logische "0" einem programmierten
Zustand, in dem das Floating-Gatter mehr Elektronen darin gespeichert
hat. In dem programmierten Zustand hat die Zelle einen hohen Schwellwert,
so daß beim
Anlegen eines Lesepotentials an die Wort-Leitung die Zelle nicht
leitfähig
ist. (Natürlich
können
die logischen Werte des programmierten und des gelöschten Zustandes
zugewiesen werden, wie es am besten für eine gegebene Implementierung
paßt).
Flashspeicherzellen sind durch die Tatsache charakterisiert, daß eine einzelne
Speicherzelle nicht aus der logischen 0 oder dem programmierten
Zustand Bit für
Bit in die logische 1 oder den gelöschten Zustand umgeschrieben
werden kann. Somit muß,
um eine Zelle in einen gewünschten
Zustand zu versetzen, der gesamte Block zuerst gelöscht werden
und danach müssen
diejenigen Zellen, die die logische 0 in sich gespeichert haben
sollen, individuell programmiert werden.
-
Der Löschvorgang wird typischerweise
durch einen internen Zustandsautomaten auf der Einrichtung automatisch
gesteuert. Dieser Vorgang benötigt eine
relativ lange Zeit. Zum Beispiel bestehen Löschvorgänge nach dem Stand der Technik
aus einer Anzahl von Schritten einschließlich der Vorprogrammierung
und der Überprüfung bzw.
Verifizierung der Vorprogrammierung aller Bytes in dem Block und
des Löschens
des gesamten Blocks gefolgt von der Überprüfung der Löschung aller Bytes in dem Block.
-
Es kann vorkommen, daß ein Benutzer
während
eines Löschvorgangs
Daten zu lesen wünscht, die
in einem anderen Block als demjenigen, der gelöscht wird, gespeichert sind.
Um ein Lesen durchzuführen,
ist es wünschenswert,
den im Gang befindlichen Löschvorgang
auszusetzen, zu ermöglichen, daß der Lesezugriff
fortgesetzt wird und danach den Löschvorgang wieder aufzunehmen,
nachdem der Lesezugriff abgeschlossen ist.
-
Ein Aussetzprozeß des Löschens nach dem Stand der Technik
ist in dem U.S. Patent Nr. 5.355.464 nach dem Stand der Technik
mit dem Titel CIRCUITRY AND METHOD FOR SUSPENDING THE AUTOMATED
ERASURE OF A NON-VOLATILE SEMICONDUCTOR MEMORY, mit den Erfindern Fandrich
et al. beschrieben. Wie in dem Patent von Fandrich et al. beschrieben,
kann das Kommando zum Aussetzen des Löschens von einem Benutzer zu
jeder beliebigen Zeit gegeben werden. Jedoch kann der Löschvorgang
gemäß Fandrich
et al. nur an bestimmten Stellen des Löschvorgangs ausgesetzt werden
(siehe 5 von Fandrich
et al.). Zum Beispiel reagiert der Zustandsautomat während der
Präkonditionierungsphase
des Löschvorgangs
(während der
die Vorprogrammierung vorgenommen wird) auf das Kommando zum Aussetzen
des Löschens
erst nach erfolgreicher Vorprogrammierung eines aktuellen Bytes,
das gerade vorprogrammiert wird. Um ein Byte vorzuprogrammieren,
wird ein Programmimpuls auf das Byte angewandt, und danach wird
ein Überprüfungstest
ausgeführt.
Wenn die Überprüfung fehlschlägt, dann
wird ein weiterer Programmimpuls angewandt und die Überprüfung noch
einmal versucht. Diese Impuls- und Überprüfungsschleife kann sich eine
Anzahl von Zyklen lang fortsetzen, bis das Byte erfolgreich programmiert
ist oder der Algorithmus fehlschlägt. Dadurch, daß von einem
Benutzer verlangt wird zu warten, bis eine erfolgreiche Vorprogrammierung
für das
aktuelle Byte, das Gegenstand des Vorprogrammierungsvorgangs ist,
erreicht wurde, kann der Benutzer bei dem Versuch, während des
Löschprozesses
auf einen anderen Block in dem Array zuzugreifen, auf beträchtliche
Verzögerungen stoßen.
-
Bei Fandrich et al. liegt ein zweiter
Punkt, an dem der Löschvorgang
auf ein Aussetzkommando reagiert, während der Löschphase des Prozesses vor.
Bei Fandrich et al. ist die Löschphase
mit einem relativ langen Löschimpuls
verbunden (in der Größenordnung
von Millisekunden), der angewandt wird. Nach dem Löschimpuls
wird der Block Byte für
Byte einem Löschüberprüfungsprozeß unterzogen.
Gemäß Fandrich
et al. kann der Löschvorgang
nicht ausgesetzt werden, bis der gesamte Löschimpuls vorüber ist.
Dieser Ansatz ist offensichtlich ungünstig, weil es ab dem Zeitpunkt,
an dem das Kommando zum Aussetzen des Löschens gegeben wurde, bis zum
tatsächlichen
Aussetzen des Zustandsautomaten beträchtliche Zeit dauern kann,
es dem Benutzer zu ermöglichen,
einen Zugrift auf einen anderen Block vorzunehmen.
-
Die US-A-5.509.134 lehrt die Verwendung eines
Vielzweckprozessors, um als ein Arraycontroller zum Verwalten des
Flashspeicher-Array zu fungieren. Ein Programmspeicher ist vorgesehen,
um einen oder mehrere Algorithmen zu speichern, die von dem Arraycontroller
ausgeführt
werden können.
-
In Hochleistungsverarbeitungssystemen kann
die Verzögerung
beim Zugriff auf in Flashspeicher-Einrichtungen bzw. -Geräten gespeicherte
Daten kritisch sein. Daher ist es wünschenswert, den Aussetzprozeß während eines
Löschvorgangs
so weit wie möglich
zu beschleunigen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Unter einem ersten Aspekt betrachtet
sieht die vorliegende Erfindung einen Speicher aus einem integrierten
Schaltkreis vor, der beinhaltet: ein Speicherarray, wobei das Speicherarray
eine Mehrzahl von Blöcken
von Floating-Gate-Speicherzellen (Speicherzellen mit erdfreiem Gate)
enthält;
eine Blocklöschlogik,
die mit dem Speicherarray verbunden ist und dafür ausgelegt ist, einen Blocklöschvorgang auszuführen, um
ausgewählte
Blöcke
von Speicherzellen als Reaktion auf ein Blocklöschkommando zu löschen, wobei
die Blocklöschlogik
eine Vorprogrammierlogik umfaßt,
die dafür
ausgelegt ist, eine Präkonditionierungsphase
des Blocklöschvorgangs
auszuführen,
in der ein ausgewählter
Block durch Anlegen eines Programmierpotentials vorprogrammiert wird
und danach die Vorprogrammierung des Blocks überprüft wird, und eine Löschlogik,
die dafür
ausgelegt ist, eine Löschphase
des Blocklöschvorgangs auszuführen, in
der der ausgewählte
Block durch Anlegen eines Löschpotential
gelöscht
wird und danach das Löschen
des Blocks überprüft wird;
und eine Löschaussetzlogik,
die mit der Blocklöschlogik
verbunden ist und dafür
ausgelegt ist, einen Löschaussetzvorgang
auszuführen,
um den Blocklöschvorgang
als Reaktion auf ein Kommando zum Aussetzen des Löschens auszusetzen,
wobei die Löschaussetzlogik
eine Aussetzlogik umfaßt,
die dafür
ausgelegt ist, den Blocklöschvorgang
zu unterbrechen, nachdem das Kommando zum Aussetzen des Löschens während eines
Prüfpunktes
in einer Menge von Prüfpunkten
in dem Blocklöschvorgang
empfangen wurde, wobei die Menge einen ersten Prüfpunkt beinhaltet, der das
Unterbrechen während
der Präkonditionierungsphase
ermöglicht,
und einen dritten Prüfpunkt
beinhaltet, der das Unterbrechen während der Überprüfung des Löschens ermöglicht, und eine Wiederaufnahmelogik,
die dafür
ausgelegt ist, zum Blocklöschvorgang
zurückzukehren;
wobei der Speicher aus einem integrierten Schaltkreis dadurch gekennzeichnet
ist, daß:
die Menge von Prüfpunkten
in dem Blocklöschvorgang
einen zweiten Prüfpunkt
enthält,
der die Aussetzlogik in die Lage versetzt, den Blocklöschvorgang
während
des Anlegens des Löschpotentials
zu unterbrechen; die Blocklöschlogik eine
Mehrzahl von Blocklöschflags
beinhaltet, die zu löschende
Blöcke
in der Mehrzahl von Blöcken
anzeigen, und einen Löschwiederholzähler aufweist,
der eine Anzahl von Löschversuchen
angibt, die ausgeführt
wurden, wobei der von der Blocklöschlogik
ausgeführte
Blocklöschvorgang
dafür ausgelegt
ist, ausgewählte
Blöcke
von Speicherzellen, wie durch die Mehrzahl der Blocklöschflags
angezeigt, als Reaktion auf ein Blocklöschkommando zu löschen, wobei
in der Löschphase
die Blöcke
mit gesetzten Blocklöschflags
durch Anlegen eines Löschpotentials
gelöscht werden
und danach das Löschen
der Blöcke
mit gesetzten Blocklöschflags
in einer Reihenfolge bzw. Sequenz überprüft wird, und, wenn ein aktueller Block
in der Sequenz erfolgreich gelöscht
wurde, das Blocklöschflag
für den
aktuellen Block zurückgesetzt wird
und danach der Löschschritt
erneut versucht wird, wenn irgendein Flag gesetzt bleibt, nachdem die
Sequenz abgeschlossen ist; wobei die Aussetzlogik dafür ausgelegt
ist zu veranlassen, daß das Blocklöschflag
des aktuellen Blocks und aller folgender Blöcke in der Sequenz nicht zurückgesetzt
werden, wenn das Unterbrechen während
der Überprüfung des
Löschens
oder während
des Anlegens des Löschpotentials
auftritt, und wobei die Wiederaufnahmelogik dafür ausgelegt ist, zum Blocklöschvorgang zurückzukehren,
ohne den Löschwiederholzähler zurückzusetzen.
-
Die vorliegende Erfindung sieht ein
Flashspeichergerät
bzw. eine Flashspeichereinrichtung vor, das bzw. die einen Löschaussetzalgorithmus
mit mehrfachen Prüfpunkten
beinhaltet. Ein Benutzer kann ein Kommando zum Aussetzen des Löschens zu
jedem Zeitpunkt während
eines Löschvorgangs geben.
Gemäß der vorliegenden
Erfindung wird der Löschvorgang
so schnell wie möglich
ausgesetzt, indem es ermöglicht
wird, daß der
Löschvorgang
an dem ersten daraufhin auftretenden Prüfpunkt aus der Mehrzahl von
Prüfpunkten
ausgesetzt wird. Die Prüfpunkte
werden gewählt,
um die Zeitdauer zu minimieren, die ein Benutzer zwischen dem Absetzen
des Kommandos zum Aussetzen des Löschens und dem Ausführen eines
Zugriffs auf das Speicherarray während
der Aussetzung des Löschens
warten muß.
-
Die Blocklöschlogik beinhaltet eine Mehrzahl von
Blocklöschflags,
ein Flag für
jeden Block in der Mehrzahl von Blöcken. Der Blocklöschvorgang
umfaßt
das Setzen der Blocklöschflags
für die
zum Löschen
ausgewählten
Blöcke.
Wenn ein Block erfolgreich gelöscht
ist, dann wird das Blocklöschflag
für den
Block während
des Löschüberprüfungsstadiums zurückgesetzt.
Auf diese Weise werden nur Blöcke, welche
die Löschüberprüfung nicht
bestehen, einer erneuten Anwendung des Löschimpulses unterzogen. (Siehe
oben zitiertes U.S. Patent Nr. 5.414.664). Wenn des Kommando zum
Aussetzen des Löschens während der
Löschüberprüfung empfangen
wird, wird die Löschüberprüfung zwangsweise
zum Scheitern gebracht, und das Löschflag des aktuellen Blocks
wird nicht zurückgesetzt.
Die Steuerungslogik springt dann zu einem nächsten Block. Wenn das Löschflag
des nächsten
Blocks nicht gesetzt ist, dann wird er übersprungen. Wenn andererseits
das Löschflag
gesetzt ist, dann wird die Löschüberprüfung wiederum
zwangsweise zum Scheitern gebracht. Die verhindert das Zurücksetzen
des Flags und der Zustandsautomat schreitet durch die Mehrzahl der Blocklöschflags
fort, bis alle restlichen Flags abgearbeitet wurden. Wenn das Wiederaufnahmekommando
gegeben wird, wird der Löschüberprüfungsvorgang
am Anfang des ersten Bytes im ersten Block durch das Überwachen
der Blocklöschflags
für den Block
wieder aufgenommen. Andererseits wird der Löschwiederholzähler während des
Löschaussetzablaufes
weder zurückgesetzt
noch hochgezählt.
Auf diese Weise kann die Anzahl von Wiederholungen richtig beibehalten
werden, auch wenn der Löschaussetzprozeß mitten
in dem Blocklöschvorgang
ausgeführt
wird.
-
Dementsprechend wird eine Flashspeichereinrichtung
mit einer Löschaussetzlogik
vorgesehen, die in der Lage ist, den Löschvorgang so schnell wie möglich nach
dem Ausgeben des Kommando zum Aussetzen des Löschens durch den Benutzer auszusetzen.
Dies ermöglicht
einen viel effizienteren Gebrauch von Flashspeichereinrichtungen,
als es nach dem Stand der Technik möglich ist.
-
Bevorzugte Ausführungsformen der vorliegenden
Erfindung sehen einen Speicher aus einem integrierten Schaltkreis
wie einen integrierten Schaltkreis mit einem Flashspeicher vor,
der ein Speicherarray enthält,
das aus einer Mehrzahl von Blöcken von
Speicherzellen zusammengesetzt ist. Eine Blocklöschlogik ist mit dem Speicherarray
verbunden, die einen Blocklöschvorgang
ausführt,
um ausgewählte
Blöcke
von Speicherzellen als Reaktion auf ein Blocklöschkommando zu löschen. Der
Blocklöschvorgang
beinhaltet eine Präkonditionierungsphase
(auch Vorprogrammierungsphase genannt), in der ein ausgewählter Block
durch das Anlegen eines Programmierungspo tentials vorprogrammiert
und danach die Vorprogrammierung des Blocks überprüft wird. Typischerweise werden
die Vorprogrammierung und die Überprüfung der
Vorprogrammierung auf der Basis von aus mehreren Bits bestehenden
Segmenten Segment für
Segment (wie zum Beispiel Byte für Byte)
ausgeführt.
Nach der Präkonditionierungsphase
wird eine Löschphase
ausgeführt,
in der der ausgewählte
Block durch das Anlegen eines Löschpotentials
an den Block gelöscht
und danach der ausgewählte
Block getestet wird, um das Löschen
des Blocks zu überprüfen. Gemäß der vorliegenden
Erfindung ist die Löschaussetzlogik
mit der Löschlogik verbunden
und führt
einen Löschaussetzvorgang aus,
um den Blocklöschvorgang
als Reaktion auf ein Kommando zum Aussetzen des Löschens auszusetzen.
Der Löschaussetzvorgang
beinhaltet das Unterbrechen des Blocklöschvorgangs nach dem Empfang
des Kommandos zum Aussetzen des Löschens während eines Prüfpunktes, üblicherweise
des ersten, der auftritt, von einer Menge von Prüfpunkten in dem Blocklöschvorgang,
wobei ein Prüfpunkt
ein Zeitintervall in dem Vorgang ist, das zwischen Ereignissen in
dem Vorgang fallen kann oder ein oder mehrere Ereignisse in dem
Vorgang umfassen kann. Die Menge von Prüfpunkten enthält einen
ersten Prüfpunkt,
der das Unterbrechen während
der Präkonditionierungsphase
ermöglicht,
einen zweiten Prüfpunkt,
der das Unterbrechen während
des Löschimpulses
ermöglicht,
das heißt
während
des Anlegens des Löschpotentials
an den Block, und einen dritten Prüfpunkt, der das Unterbrechen
während
des Überprüfens des
Löschschrittes
ermöglicht.
Nach dem Unterbrechen des Blocklöschvorgangs
umfaßt
der Löschaussetzvorgang
das Zurückkehren
zum Blocklöschvorgang,
um das Blocklöschen
abzuschließen.
-
Wie oben erwähnt enthalten Blöcke in der Mehrzahl
von Blöcken
eine Mehrzahl von Datenbytes. Die Präkonditionierungsphase beinhaltet
vorzugsweise eine Logik, um einen ausgewählten Block Byte für Byte vorzuprogrammieren.
Diese Logik legt sequentiell ein Programmierungspotential an ein Byte
an und überprüft dann
die Vorprogrammierung des Bytes, bevor es fortfährt, das Programmierungspotential
an das nächste
Byte in dem Block anzulegen. Dieser sequentielle Prozeß wird ausgeführt, bis der
Block vorprogrammiert ist oder ein Fehler auftritt. Gemäß einer
Ausführungsform
der Erfindung liegt der erste Prüfpunkt
zwischen der Vorprogrammierung der Bytes in dem Block. Genauer gesagt
ermöglicht
der erste Prüfpunkt
gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung das Unterbrechen des Blocklöschvorgangs
nach dem Anlegen eines Programmierungspotentials an ein Byte in
dem Block und vor der Überprüfung der
Programmierung desselben Bytes. Somit ermöglicht der Algorithmus, daß der Löschvorgang
am Ende eines Vorprogrammierungsimpulses unterbrochen wird, nachdem
das Aussetzkommando abgesetzt wurde unabhängig davon, ob das Byte, das
Gegenstand des Vorprogrammierungsimpulses war, erfolgreich vorprogrammiert
wurde.
-
Gemäß einer Ausführungsform
der Erfindung liegt der zweite Prüfpunkt in dem Löschaussetzvorgang
während
des Anlegens eines Löschimpulses.
Wenn ein Aussetzkommando während
der Zeitspanne, in der ein Löschimpuls
auf Flashspeicherzellen angewandt wird, oder bevor der Löschimpuls
aktiviert wird, gegeben wird, wird der Löschvorgang sofort unterbrochen.
Im allgemeinen ist ein Löschimpuls
relativ lange und ist viel länger
als ein Vorprogrammierungsimpuls. Zum Beispiel kann ein Löschimpuls
in der Größenordnung
von 10 Millisekunden für
das Löschen
eines Blocks von Speicherzellen liegen, gegenüber der Größenordnung von 10 Mikrosekunden
für den
Vorprogrammierungsimpuls. Daher ist es für den Zustandsautomaten nützlich,
in der Lage zu sein, während
des Anlegens eines Löschpotentials
eines Löschimpulses
die Reaktionszeit zu reduzieren und die Effizienz des Aussetzalgorithmus' zu steigern.
-
Gemäß einer Ausführungsform
der Erfindung tritt der dritte Prüfpunkt während des Löschüberprüfungsstadiums auf. Wenn das
Aussetzkommando während
der Löschüberprüfung gegeben wird,
führt der
Zustandsautomat zwangsweise das Scheitern der Löschüberprüfung und das schnelle Verlassen
dieses Stadiums herbei.
-
Gemäß einer Ausführungsform
der Erfindung ist die Löschaussetzlogik
der vorliegenden Erfindung mit einer segmentierbaren Flasharchitektur basierend
auf lokalen Bitleitungen und lokalen Quelleitungen verbunden, die
miteinander an globale Bitleitungen durch Blockauswahltransistoren
angeschlossen sind. Die Kombination der eindeutigen Architektur
mit dem Löschaussetzvorgang
stellt eine effiziente Speichereinrichtung mit einem integrierten Hochgeschwindigkeitsschaltkreis
bereit, die in der Lage ist, auf ein Löschaussetz-Kommando sehr effizient
zu reagieren.
-
Andere Aspekte und Vorteile der vorliegenden
Erfindung kann man bei Betrachtung der Figuren, der detaillierten
Beschreibung und der anhängenden
Ansprüche
erkennen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein vereinfachtes Blockdiagramm einer Flashspeichereinrichtung,
die die Löschaussetzlogik
mit mehreren Prüfpunkten
der vorliegenden Erfindung beinhaltet.
-
2 ist
ein Schaltkreisdiagramm, das eine bevorzugte Speicherarchitektur
mit einem integrierten Schaltkreis zur Verwendung in dem System
nach 1 darstellt.
-
3 ist
ein Schaltkreisdiagramm, das eine andere bevorzugte Speicherarchitektur
mit einem integrierten Schaltkreis zur Verwendung in dem System
nach 1 darstellt.
-
4 ist
ein vereinfachtes Blockdiagramm einer Flashspeichereinrichtung mit
einem integrierten Schaltkreis, die die Löschaussetzlogik der vorliegenden
Erfindung beinhaltet.
-
5 ist
ein Flußdiagramm
einer Präkonditionierungsphase
eines Blocklöschvorgangs,
der die Prüfpunkte
für das
Löschaussetzen
der vorliegenden Erfindung beinhaltet.
-
6 ist
ein Flußdiagramm
einer Löschphase
eines Blocklöschvorgangs,
der die Prüfpunkte
für das
Löschaussetzen
der vorliegenden Erfindung beinhaltet.
-
7 ist
ein Flußdiagramm
eines Löschaussetzprozesses,
der in den Vorgängen
der 5 und 6 ausgeführt wird.
-
8 ist
ein Flußdiagramm,
das den Blocklöschvorgang
einschließlich
der Blocklöschflags
gemäß einer
anderen Ausführungsform
der vorliegenden Erfindung darstellt.
-
Die 9, 10 und 11A–11B sind vereinfachte Logikdiagramme
und ein Zeitdiagramm, die die zu Block 504 in 5 gehörige Löschaussetzoperation darstellen.
-
Die 12, 13, 14, 15 und 16A–16B stellen die
Logik und den Zeitablauf für
das Erzeugen des ERASE SUSPEND READY Signals während des Prüfpunktes
bei Block 601 von 6 dar.
-
Die 17 und 18 stellen die Logik für den Löschaussetzprozeß beim Prüfpunkt bei
Block 606 in 6 dar.
-
DETAILLIERTE BESCHREIBUNG
-
Eine detaillierte Beschreibung von
bevorzugten Ausführungsformen
der vorliegenden Erfindung wird unter Bezug auf die Figuren gegeben.
-
1 zeigt
die Grundstruktur eines Flashspeichers aus einem integrierten Schaltkreis,
der die vorliegende Erfindung umfaßt. Der Schaltkreis beinhaltet
ein Flashspeicherarray, generell mit 10 bezeichnet, das in eine
Mehrzahl von Blöcken
(32 Blöcke
in der Figur) unterteilt ist. Das Flashspeicherarray hat eine segmentierbare
Architektur wie die in 2 oder 3 unten gezeigte.
-
Verbunden mit dem Array 10 sind
ein Steuerschaltkreis 11 zum Lesen und Programmieren und ein
Steuerschaltkreis 12 zum Blocklöschen und Überprüfen der Löschung. Der Steuerschaltkreis 12 zum
Blocklöschen
und Überprüfen der
Löschung
enthält
eine Mehrzahl von Blocklöschflags 13 und
einen Adreßzähler 14,
um für
die Sequenz zum Überprüfen der
Löschung
durch die Speicherzellen hochzuzählen.
-
Der Chip beinhaltet eine Befehlslogik 15,
die mit den Adreß-,
Daten- und anderen Steuerleitungen wie das Ausgangsfreigabe- und
das Chip-Freigabe-Signal verbunden ist. Die Befehlslogik 15 interpretiert
Eingaben, um einen Betriebsmodus für die Steuerlogik 11 zum
Lesen und Programmieren und die Steuerlogik 12 zum Blocklöschen und Überprüfen der
Löschung
einzustellen. Die Befehlslogik 15 gemäß der vorliegenden Erfindung
umfaßt
Logik zum Erkennen und Ausführen
eines Löschaussetzprozesses
mit mehreren Prüfpunkten.
-
Die Befehlslogik 15 kann,
wie es in standardmäßigen integrierten
Flashspeicher-Schaltkreisen wie
dem Am28F020 Flashspeicher-Chip erfolgt, der von Advanced Micro
Devices, Inc. in Sunnyvale, Kalifornien hergestellt wird, mit den
zusätzlichen
Befehlen gemäß der vorliegenden
Erfindung zum Blocklöschen
und Aussetzen des Löschens
implementiert werden. Als Reaktion auf Befehle, die von der Kommandologik 15 gegeben
werden, wird eine eingebettete Blocklöschoperation von Zustandsautomaten
in der Steuerlogik 12 zum Blocklöschen und Überprüfen der Löschung ausgeführt. Der
Benutzer liefert durch eine Host-CPU oder auf andere Weise Adreß- und Datensignale
an die Kommandologik 15, um einen bevorzugten Betriebsmodus
anzugeben. Die Modi, die für
die vorliegende Erfindung relevant sind, umfassen einen Chiplösch-Modus,
bei dem alle Blöcke
in dem Array 10 zu löschen
sind, und einen Blocklösch-Modus,
bei dem ausgewählte
Blöcke
in dem Array 10 zu löschen
sind. Zu löschende
Blöcke werden
durch die Blocklöschflags 13 angegeben.
Die Chip- und Blocklösch-Modi
enthalten mehrere Prüfpunkte,
an denen das Aussetzen des Löschens
wirksam ist, wie unten genauer beschrieben.
-
Wegen der Architektur des Flashspeicherarray 10 sind
die Blöcke
innerhalb des Array für
die Löschoperation
segmentierbar. Ein Verständnis
des Arrays, wie in 2 dargestellt,
zeigt, wie die Blocklöschoperation
von der Steuerlogik ausgeführt
werden kann.
-
2 stellt
eine segmentierbare Arrayarchitektur unter Verwendung einer Drain-Source-Drain-Konfiguration
des Flashspeicherschaltkreises dar, wie in U.S. Patent Nr. 5.399.891
beschrieben, mit den Erfindern Yiu et al.
-
Der Schaltkreis enthält segmentierbare
Abschnitte (z. B. Abschnitt 77) des Arrays einschließlich einer
ersten lokalen Bitleitung 79 und einer zweiten lokalen
Bitleitung 80. Die erste und die zweite lokale Bitleitung 79, 80 sind
mittels eingegrabener Diffusionsleiterbahnen implementiert. Ebenso
enthalten ist eine lokale virtuelle Erd- bzw. Masseleitung 78,
die durch eingegrabene Diffusion implementiert ist. Eine Mehrzahl
von Floating-Gate-Transistoren mit Gates, Drains und Sources sind
mit den lokalen Bitleitungen 79, 80 und der lokalen
virtuellen Masseleitung 78 verbunden. Die Sources der Mehrzahl
von Transistoren sind mit der lokalen virtuellen Masseleitung 78 verbunden.
Die Drains einer ersten Spalte von Transistoren, 75-1 bis 75-N,
sind mit der ersten lokalen Bitleitung 79 verbunden, und
die Drains einer zweiten Spalte von Transistoren, 76-1 bis 76-N,
sind mit der zweiten lokalen Bitleitung 80 verbunden. Die
Gates der Floating-Gate-Transistoren sind mit den Wortleitungen
WL0 bis WLN verbunden.
wobei jede Wortleitung (z. B. WL1) mit dem
Gate eines Transistors (z. B. Transistor 75-2) in der ersten
lokalen Bitleitung 79 und einem Transistor (z. B. Transistor 76-2)
in der zweiten lokalen Bitleitung 80 verbunden ist. Daher können die
Transistoren 75-2 und 76-2 als eine Zwei-Transistor-Zelle
mit einer gemeinsam genutzten Sourcediffusion betrachtet werden.
-
Der Vorgang des Ladens des erdfreien Gates
(Floating-Gate) wird der Programmierungsschritt für die Speicherzelle
genannt. Dies wird Byte für
Byte durch Injektion heißer
Elektronen durch das Anlegen einer großen positiven Spannung wie
zum Beispiel 12 Volt zwischen dem Gate und der Source und
einer positiven Spannung wie zum Beispiel sechs Volt zwischen der
Drain und der Source erreicht.
-
Der Vorgang des Entladens des erdfreien Gates
wird der Löschschritt
für die
Speicherzelle genannt. Dies wird durch einen F-N (Fowler-Nordheim) Tunnelmechanismus
zwischen dem Floating-Gate und der Source (Sourcelöschen) oder
zwischen dem Floating-Gate und dem Substrat (Kanallöschen) erreicht.
Das Sourcelöschen
wird durchgeführt,
indem eine positive Vorspannung wie zum Beispiel zwölf Volt
oder sieben Volt an die Source angelegt wird, während das Gate geerdet ist
oder unter einer negativen Vorspannung wie zum Beispiel minus sieben Volt
steht. Die Kanallöschung
auf Basis eines Blocks wird durchgeführt, indem eine negative Vorspannung an
das Gate und/oder eine positive Vorspannung an das Substrat angelegt
wird. F-N-Tunneln kann ebenso für
den Programmierungsschritt verwendet werden.
-
Eine erste globale Bitleitung 83 und
eine zweite globale Bitleitung 84 sind jedem Drain-Source-Drain-Block
zugeordnet. Die erste globale Bitleitung 83 ist mit der
Source des oberen Block-Auswahltransistors 81 über einen
Metall-zu-Diffusionskontakt 57 verbunden. In ähnlicher
Weise ist die zweite globale Bitleitung 84 mit der Source
des oberen Block-Auswahltransistors 82 über einen Metall-zu-Diffusionskontakt 58 verbunden.
Die Drains der oberen Block-Auswahltransistoren 81, 82 sind mit
der ersten und zweiten lokalen Bitleitung 83 bzw. 84 verbunden.
Die Gates der oberen Block-Auswahltransistoren 81, 82 werden
durch ein oberes Block-Auswahlsignal TBSELA gesteuert.
-
Die lokale virtuelle Masseleitung 78 ist
mit einer virtuellen Masseanschluß-Metalleitung 59 über die
Leiterbahn 54A durch den unteren Block-Auswahltransistor 85 verbunden.
Die Drain des unteren Block-Auswahltransistors 85 ist mit
der lokalen virtuellen Masseleitung 78 verbunden. Die Source
des unteren Block-Auswahltransistors 85 ist mit der Leiterbahn 54A verbunden.
Das Gatter des unteren Block-Auswahltransistors 85 wird
durch ein unteres Block-Auswahlsignal BBSELA gesteuert.
In dem bevorzugten System ist die Leiterbahn 54A eine eingegrabene
Diffusionsleiterbahn, die sich bis zu einem Metall-zu-Diffusionskontakt 60A,
der für
Kontakt mit einem vertikalen virtuellen Massebus 59 aus
Metall sorgt, an einer Stelle erstreckt, die horizontal durch das
Array versetzt ist.
-
Die globalen Bitleitungen (83, 84)
erstrecken sich vertikal durch das Array bis zu den entsprechenden
Spaltenauswahltransistoren 70, 71, über die
eine ausgewählte
globale Bitleitung mit Abtast-Verstärkern und Programmierungs-Datenschaltungen
(nicht abgebildet) verbunden ist. Daher ist die Source des Spaltenauswahltransistors 70 mit
der globalen Bitleitung 83, das Gate des Spaltenauswahltransistors 70 mit
einem Spaltendekodiersignal Yn(
M_1), und die Drain des Spaltenauswahltransistors 70 mit
der Leiterbahn 90 verbunden.
-
2 stellt
zwei Unterarrays innerhalb eines größeren integrierten Schaltkreises
dar. Die Unterarrays sind generell entlang der gestrichelten Linie 50 unterteilt
und enthalten das Unterarray 51A, das im wesentlichen oberhalb
der Linie 50 liegt, und das Unterarray 51B, das
im wesentlichen unterhalb der Linie 50 liegt. Eine erste
Gruppe 52 von Zellen ist in einem Spiegelbild entlang eines
gegebenen Bitleitungspaars (z. B. Bitleitungen 91, 92)
zu einer zweiten Gruppe 53 von Zellen ausgelegt. Wenn man
entlang des Bitleitungspaars nach oben voranschreitet, sind die
Speicherunterarrays umgedreht bzw. umgeklappt, um die virtuellen
Masseleiterbahnen 54A, 54B (eingegrabene Diffusionen)
und die Metall-zu-Diffusionskontakte 55, 56, 57, 58 gemeinsam zu
nutzen. Die virtuellen Masseleiterbahnen 54A, 54B erstrecken
sich horizontal über
das Array bis zu einer vertikalen virtuellen Masseleitung 59 aus
Metall durch Metall-zu-Diffusionskontakte 60A, 60B.
Die Unterarrays wiederholen sich auf entgegengesetzten Seiten der
virtuellen Masseleitung 59 aus Metall, so daß benachbarte
Unterarrays eine virtuelle Masseleitung 59 aus Metall gemeinsam
nutzen. Die virtuelle Masseleitung 59 aus Metall ist mit
der Erdschaltung des Array und Lösch-Hochspannungsschaltung
verbunden. Somit erfordert das Unterarray-Layout zwei Kontaktstifte
bzw. -spitzen aus Metall pro Spalte von zwei Transistorzellen für die globale
Bitleitung und einen Kontaktstift aus Metall pro Unterarray für die virtuelle
Masseleitung 59.
-
Darüber hinaus können zwei
oder mehrere Unterarrays wie in 2 abgebildet
Wortleitungssignale wie dargestellt gemeinsam nutzen, da eine zusätzliche
Dekodierung durch die oberen und unteren Block-Auswahlsignale TBSELA,
TBSELB, BBSELA und BBSELB zur Verfügung gestellt wird. In einem bevorzugten
System ist jeder Block dafür
eingerichtet, vier Unterarrays in einer Spalte zu enthalten, eine Zeile
in jedem Unterarray, die gemeinsame Wortleitungstreiber mit Zeilen
in den anderen drei Unterarrays gemeinsam nutzen. Die Dekodierung
zwischen den vier Unterarrays wird unter Verwendung der oberen Block-Auswahltransistoren
als Reaktion auf TBSELA und TBSELB ausgeführt. Jedes Unterarray enthält 32 Wortleitungen
und 1 K (1.024) Bitleitungen. Somit wird mit vier Unterarrays, 32
Wortleitungen tief, und 1 K Bitleitungen breit, ein Block von 128 K
Zellen bereitgestellt. Zweiunddreißig Blöcke ergeben einen 4 Megabyte
großen
Speicher.
-
Wie man sehen kann, stellt die Architektur von 2 ein in Sektoren eingeteiltes
Flashspeicher-Array zur Verfügung.
Dies ist vorteilhaft, weil die Source und die Drain der Transistoren
in nicht ausgewählten
Unterarrays während
eines Lese-, Programmierungs- oder Löschungszyklus' von den Strömen und
Spannungen auf den Bitleitungen und virtuellen Masseleitungen isoliert
werden können.
Daher wird während
einer Leseoperation das Abtasten verbessert, weil Leckstrom von
nicht ausgewählten
Unterarrays nicht zum Strom auf den Bitleitungen beiträgt. Während der
Löschoperation
werden die hohen Spannungen der virtuellen Masseleitungen von den nicht
ausgewählten
Blöcken
durch die BBSEL-Transistoren isoliert. BBSEL wird mit hoher Spannung
getrieben, um hohe Spannung für
das Array zu übergeben,
wenn das Blocklöschflag
gesetzt ist, und mit Null Volt, wenn das Blocklöschflag zurückgesetzt ist. Dies ermöglicht eine
Blocklöschoperation.
-
3 stellt
eine alternative Architektur des Flashspeicher-Array gemäß der vorliegenden
Erfindung dar, in der zwei Spalten von Flashspeicher-Zellen eine
einzige Bitleitung aus Metall gemeinsam nutzen. 3 zeigt vier Segmente des Arrays, wobei
jedes Segment ein Spaltenpaar von Flashspeicher-Zellen in einer
Drain-Source-Drain-Konfiguration enthält.
-
Daher enthält das erste Segment 120 eine erste
Draindiffusionsleitung 121, eine Sourcediffusionsleitung 122 und
eine zweite Draindiffusionsleitung 123. Wortleitungen WL0
bis WL63 überlagern
jeweils die Floating-Gates einer Zelle in einem ersten Paar von
Spaltenpaaren und eine Zelle in dem zweiten Paar von Spaltenpaaren.
Wie in der Figur abgebildet enthält
ein erstes Paar von Spaltenpaaren Zelle 124, Zelle 125,
Zelle 126 und Zelle 127. Nicht abgebildet sind
Zellen, die mit den Wortleitungen WL2 bis WL61 verbunden sind. Das
zweite Paar von den Spaltenpaaren enthält Zelle 128, Zelle 129,
Zelle 130 und Zelle 131. Entlang derselben Spalte
des Array ist ein zweites Segment 135 dargestellt. Es hat
eine ähnliche
Architektur wie das Segment 120, außer daß es spiegelbildlich ausgelegt
ist.
-
Daher enthält, wie man erkennen kann,
der Transistor im ersten der Spaltenpaare wie die Zelle 125 eine
Drain in der Draindiffusionsleitung 121 und eine Source
in der Sourcediffusionsleitung 122. Ein Floating-Gate (erdfreies
Gate) überlagert
die Kanalregion zwischen der ersten Draindiffusionsleitung 121 und
der Sourcediffusionsleitung 122. Die Wortleitung WL1 überlagert
das Floating-Gate
der Zelle 125, um eine Flashzelle aufzubauen.
-
Das Segment 120 und das
Segment 135 nutzen eine virtuelle Array-Masse-Diffusion 136 gemeinsam.
Daher ist die Sourcediffusionsleitung 122 von Segment 120 mit
der Diffusionsleitung 136 verbunden. In ähnlicher
Weise ist die Sourcediffusionsleitung 137 von Segment 135 mit
der Sourcediffusionsleitung 136 verbunden.
-
Wie oben erwähnt nutzt jedes Spaltenpaar von
Zellen in einem gegebenen Segment (z. B. Segment 120) eine
einzige Metalleitung gemeinsam. Daher ist ein Auswahltransistor 138 für den rechten Block
und ein Auswahltransistor 139 für den linken Block enthalten.
Der Transistor 139 enthält
eine Source in der Draindiffusionsleitung 121, eine mit
einem Metallkontakt 140 verbundene Drain und ein Gate,
das mit dem Steuersignal BLTR1 auf Leitung 141 verbunden
ist. In ähnlicher Weise
enthält
der rechte Auswahltransistor 138 eine Source in der Draindiffusionsleitung 123,
eine mit einem Metallkontakt 140 verbundene Drain und ein
Gate, das mit dem Steuersignal BLTR0 auf Leitung 142 verbunden
ist. Daher sorgt die Auswahlschaltung einschließlich der Transistoren 138 und 139 für eine selektive
Verbindung der ersten Draindiffusionsleitung 121 und einer zweiten
Draindiffusionsleitung 123 mit der Metalleitung 143 durch
den Metallkontakt 140. Wie man sehen kann, enthält das Segment 135 den
linken Auswahltransistor 144 und den rechten Auswahltransistor 145,
die in ähnlicher
Weise mit einem Metallkontakt 146 verbunden sind. Der Kontakt 146 ist
an dieselbe Metalleitung 143 wie der Kontakt 140,
der mit Segment 120 verbunden ist, angeschlossen.
-
Die Segmente sind horizontal und
vertikal ausgelegt, um ein Array von Flashzellen zur Verfügung zu
stellen, das M Wortleitungen und 2N Spalten umfaßt. Das Array benötigt nur
N Bitleitungen aus Metall, von denen jede mit einem Spaltenpaar
von Flashzellen über
Auswahlschaltungen wie oben beschrieben verbunden ist.
-
Obwohl die Figur nur die vier Segmente 120, 135, 150 und 151 zeigt,
die an zwei Bitleitungen 143 und 152 aus Metall
angeschlossen sind, werden die Arrays horizontal und vertikal wie
benötigt
wiederholt, um ein Flashspeicher-Array großen Ausmaßes aufzubauen. Das Layout
des Array ist kompakt aufgrund der virtuellen Massekonfiguration,
des reduzierten Metallstiftbedarfs für das Layout und ferner durch
die Fähigkeit,
Wortleitungstreiber unter einer Mehrzahl von Zeilen in verschiedenen
Segmenten gemeinsam zu nutzen. Daher kann die Wortleitung WL63' einen Wortleitungstreiber
gemeinsam mit der Wortleitung WL63 nutzen. In einem Beispielsystem
teilen sich acht Wortleitungen einen einzigen Wortleitungstreiber.
Daher wird für
jeden Satz von acht Zellreihen nur der Stift einer Wortleitungstreiberschaltung
benötigt. Die
zusätzliche
Dekodierung, die durch die linken und rechten Auswahltransistoren
(139, 138 für
Segment 120) zur Verfügung
gestellt wird, ermöglicht
die gemeinsam genutzte Wortleitungskonfiguration. Die gemeinsam
genutzte Wortleitungskonfiguration hat den Nachteil, daß während einer
Blocklöschoperation
acht Zellreihen sämtlich
dieselbe Wortleitungsspannung empfangen, was zu einer Wortleitungsstörung in
Zellen führt,
die nicht zu löschen
gewünscht werden.
Wenn es für
ein gegebenes Array ein Problem darstellt, kann dieses Störungsproblem
eliminiert werden, indem sichergestellt wird, daß alle Blocklöschoperationen
für Segmente
dekodieren, die alle Zellreihen enthalten, die an die gemeinsam
genutzten Wortleitungstreiber angeschlossen sind. Für acht Wortleitungen,
die einen einzigen Treiber gemeinsam nutzen, erfordert dies eine
minimale Blocklöschung
von acht Reihen.
-
4 ist
ein vereinfachtes Diagramm eines integrierten Flashspeicherschaltkreises,
der die Löschaussetzlogik
der vorliegenden Erfindung enthält.
Der integrierte Schaltkreis beinhaltet ein Flashspeicher-Array 400 mit
einer Architektur wie oben in den 2 oder 3 dargestellt. Verbunden
mit dem Flashspeicher-Array 400 sind ein X-Dekodierer 401 und
ein Y-Dekodierer 402 zum Treiben der Wortleitungs- und
Bitleitungsauswähler
in dem Flashspeicher-Array 400. In dem bevorzugten System
ist auch ein Blockdekodierer 403 zur Auswahl von Blöcken für Zwecke
des Löschvorgangs
mit dem Flashspeicher-Array 400 verbunden.
-
Der X-Dekodierer 401, der
Y-Dekodierer 402 und der Blockdekodierer 403 sind
mit einem Adreßpuffer-
und -auffangregister-Schaltkreis 404 verbunden. Der Adreßpuffer-
und -auffangregister-Schaltkreis 404 ist vorzugsweise sowohl
mit den Adreßanschlußfeldern
auf dem Chip (nicht abgebildet) als auch mit einem Adreßzähler 405 verbunden.
-
Mit dem Flashspeicher-Array 400 ist
auch ein Satz von Abtastverstärkern 406 verbunden.
Die Abtastverstärker
sind mit einem Datenausgabe-Signalspeicher bzw. -Auffangregister 407 und
mit den Datenanschlußfeldern 408 verbunden.
-
Die Datenanschlußfelder 408 sind in
einem bevorzugten System an ein Dateneingabe-Auffangregister 409 angeschlossen,
das seinerseits mit einem Datendekodierer 410 verbunden
ist. Der Datendekodierer 410 ist an ein Befehlsregister 411 angeschlossen
und interpretiert die Dateneingabesequenzen, um Befehle zu erkennen
und an das Befehlsregister 411 zu liefern. Die Chip-Freigabe- und Ausgangs-Freigabe-Steuerungsanschlußfelder 412 sind mit
der Chip-Freigabe- und Ausgabe-Freigabe-Steuerungslogik 413 verbunden.
Die Chip-Freigabe- und Ausgangs-Freigabe-Steuerungslogik 413 ist auch
an das Befehlsregister 411 angeschlossen, das bei der Dekodierung
von Befehlen verwendet wird.
-
Das Dateneingabe-Auffangregister 409 ist auch
an die Lese- und Schreib-Steuerungslogik 415 angeschlossen.
Die Lese- und Schreib-Steuerungslogik 415 reagiert auf
Lese- und Schreibkommandos in dem Befehlsregister 411 zu
Zwecken der Verwaltung des Lesens und Schreibens aus dem bzw. in das
Flashspeicher-Array 400. Der Lese- und Schreib-Steuerungsschaltkreis
ist an eine Anzahl von Elementen in dem integrierten Schaltkreis
angeschlossen, wie durch den Pfeil 416 dargestellt.
-
Wie in 4 abgebildet
enthält
der integrierte Schaltkreis der vorliegenden Erfindung eine Löschaussetz-Steuerungslogik 420.
Die Löschaussetz-Steuerungslogik
ist an die Löschwiederaufnahme-Steuerungslogik 421 angeschlossen.
Ebenso ist die Lösch-Steuerungslogik 422 auf
dem Chip enthalten. Die Lösch-Steuerungslogik 422,
die Löschwiederaufnahme-Steuenangslogik 421 und
die Löschaussetz-Steuerungslogik 420 sind
mit dem Befehlsregister 411 auf der Leitung 423 verbunden.
Die Lösch-Steuerungslogik 422 in
dem bevorzugten System enthält
eine Mehrzahl von Blocklöschflags
wie unter Bezug auf 1 erwähnt. Die
Blocklöschflags sind
der Einfachheit halber in 4 nicht
abgebildet.
-
Die Lösch-Steuerungslogik 422 reagiert
auf ein Löschkommando
auf Leitung 423, um einen Blocklöschvorgang zu beginnen. Der
Blocklöschvorgang
beinhaltet eine Präkonditionierungsphase,
die von dem Vorprogrammierungs-Steuerungslogikblock 424 ausgeführt wird,
der mit der Lösch-Steuerungslogik 422 verbunden
ist. Der Vorprogrammierungs-Steuerungslogikblock 424 ist
mit einem Programmierungs-Überprüfungs-Steuerungslogikblock 425 verbunden.
Als Teil des Programmierungs-Überprüfungsprozesses
der Präkonditionierungsphase wird
ein Datenvergleichsschritt in der Datenvergleichslogik 426 ausgeführt. Die
Datenvergleichslogik 426 ist mit den Abtastverstärkem 406 für Zwecke der
Byte-für-Byte-Überprüfung der
erfolgreichen Vorprogrammierung der Daten in dem Flashspeicher-Array 400 verbunden.
Sobald das Array erfolgreich vorprogrammiert wurde, wendet die Löschsteuerung
einen Löschimpuls
auf ausgewählte
Blöcke
in dem Flashspeicher-Array an. Nach Anwendung des Löschimpulses
unter Steuerung des Lösch-Steuerungsblocks 422 wird
ein Löschüberprüfungs-Steuerungslogikblock 427 freigegeben.
Der Löschüberprüfungs- Steuerungslogikblock 427 ist
für Zwecke
der Byte-für-Byte-Überprüfung der
erfolgreichen Löschung
von Blöcken
in dem Flashspeicher-Array an die Datenvergleichslogik 426 angeschlossen.
-
Ein Programmierungs- und Lösch-Wiedefiolzähler 428 ist
mit den Löschüberprüfungs- und
Vorprogrammierungs-Steuerungsblöcken 422 und 424 verbunden.
Der Programmierungs- und Lösch-Wiederholzähler 428 verfolgt
die Anzahl von Löschversuchen
eines Blocks und die Anzahl von Vorprogrammierungsversuchen eines
Bytes in dem Block. Wenn die Anzahl von ausgeführten Versuchen einen Grenzwert überschreitet,
dann wird ein Fehler angezeigt.
-
Die Löschaussetz-Steuerungslogik 422 ist mit
der Lese- und Schreib-Steuerungslogik 415, den Löschüberprüfungs-Steuerungs-,
Löschsteuerungs- und
Vorprogrammierungsüberprüfungs-Steuerungs-Blöcken verbunden,
um die Aussetzung des Löschvorgangs
nach der Ausgabe des Löschaussetz-Befehls
so effizient und schnell wie möglich
zu Stande zu bringen.
-
Die Löschwiederaufnahme-Steuerungslogik 421 reagiert
auf Befehle auf der Leitung 423, um die Wiederaufnahme
des Löschvorgangs
an einem geeigneten Punkt, abhängig
von der Stelle, an der der Löschaussetzprozeß ausgeführt wurde,
zu veranlassen.
-
Genauere Einzelheiten bezüglich der
in der Blocklöschlogik
gemäß der vorliegenden
Erfindung einbezogenen Vorgänge
kann man unter Bezugnahme auf die 5–8 unten verstehen. Die 5–7 stellen
die Präkonditionierungs-,
Lösch-
und Aussetzvorgänge
dar, die an einem Blocklöschvorgang gemäß der vorliegenden
Erfindung beteiligt sind. In 5 wartet
die Logik, wie man sehen kann, in einem Bereitschafts- bzw. Standby-Modus
(Schritt 500). Wenn der Benutzer ein Löschkommando ausgibt, wird es
von der Logik in Schritt 501 erkannt. An diesem Punkt beginnt
der Zustandsautomat einen Löschablauf
auszuführen.
Am Beginn des Löschablaufs
wird der Adreßzähler auf
Null gesetzt (Schritt 502). Als nächstes wird ein Vorprogrammierungsimpuls
auf das Byte an Adresse 0 angelegt (Schritt 503). Ein Löschaussetz-Prüfpunkt tritt
nach dem Anlegen des Vorprogrammierungsimpulses in Schritt 503 auf.
Daher prüft
der Algorithmus, um zu erkennen, ob ein Löschaussetz-Befehl von der Steuerungslogik
empfangen wurde (Schritt 504). Wenn der Befehl empfangen
wurde, dann wird ein Löschaussetzablauf
ausgeführt
(Schritt 505). Wenn der Löschaussetzprozeß vollzogen
ist oder wenn kein Löschaussetz-Befehl
in Schritt 504 empfangen wurde, dann wird ein Vorprogrammierungs-Überprüfungsprozeß für das Byte,
das den Impuls erhalten hat, ausgeführt (Schritt 506).
Als nächstes
stellt der Algorithmus fest, ob das Byte den Vorprogrammierungs-Überprüfungsschritt (Schritt 507)
bestanden hat. Wenn es nicht bestanden hat, dann wird festgestellt,
ob der Programmierungszähler
eine Zahl kleiner oder gleich dem Programmierungs-Wiederholungs-Grenzwert
speichert. Wenn der Programmierungszähler kleiner als der Programmierungs-Wiederholungs-Grenzwert
ist, dann geht der Algorithmus in einer Schleife zurück zu Schritt 503,
um die Vorprogrammierung des Bytes erneut zu versuchen. Wenn der
Programmierungszähler-Grenzwert überschritten ist,
dann tritt eine Löschfehlschlag-Bedingung
ein.
-
Wenn das Byte in Schritt 507 die
Vorprogrammierung bestanden hat, dann wird der Adreßzähler inkrementiert
(Schritt 509). Als nächstes
stellt der Algorithmus fest, ob dies die letzte Adresse in dem Block
ist, der Gegenstand des Löschvorgangs ist.
Wenn es nicht die letzte Adresse ist, dann geht der Algorithmus
in einer Schleife zurück
zu Schritt 503, um das nächste Byte vorzuprogrammie ren. Wenn
es die letzte Adresse ist, dann schreitet der Algorithmus zu Punkt 100 weiter,
um den Prozeß von 6 zu beginnen, der der Löschphase
des Blocklöschvorgangs
entspricht. Gemäß einer
Ausführungsform
der vorliegenden Erfindung entspricht der Punkt 100 auch
einem Löschaussetz-Prüfpunkt.
-
In technischeren Begriffen ausgedrückt gibt es
vier Perioden bzw. Zeitabschnitte in der Vorprogrammierungsphase,
nämlich
die Programmierung, die Wiederherstellung bzw. Erholung nach der
Programmierung, die Überprüfung der
Programmierung und die Wiederherstellung bzw. Erholung nach der Überprüfung der
Programmierung. Sowohl die Programmierungsperiode als auch die Periode
der Überprüfung der
Programmierung haben einige Hochspannungsoperationen. Daher ist
es notwendig, gewisse Erholungsintervalle nach der Programmierungsoperation
und der Operation zur Überprüfung der
Programmierung vorzusehen, so daß sich die Schaltkreise von
den Hochspannungsbetriebsarten erholen können, um interne Knoten zu
entladen, etc. In dem bevorzugten System geschieht die Aussetzung
des Zustandsautomaten nach den Erholungsintervallen, so daß sich die
Schaltkreise von den Hochspannungsoperationen erholt haben. Auf
diese Weise ist sichergestellt, daß der Chip nach dem Löschwiederaufnahme-Prozeß richtig
funktioniert.
-
Punkt 100 von 5 ist in 6 dargestellt und ist der Beginn der
Löschphase
des Blocklöschvorgangs.
Der erste Schritt in der Löschphase
ist, das Anlegen des Löschimpulses
an den zu löschenden Block
zu beginnen (Schritt 600). Ein Löschaussetz-Prüfpunkt tritt
während
der Anwendung des Löschimpulses
auf, wie durch Schritt 601 angezeigt. Wenn kein Löschaussetz-Befehl
nach dem Beginn des Löschimpulses
und vor dem Überschreiten
der Zeitüberwachung
am Ende eines Löschimpulses
wie bei Schritt 602 angegeben empfangen wurde, dann setzt
der Algorithmus die Schleife bis zum Ende des Löschimpulses fort. Wenn ein
Löschaussetz-Befehl in
Schritt 601 empfangen wird, dann wird ein Löschaussetzablauf
ausgeführt
(Schritt 603). Nach dem Löschaussetzablauf von Schritt 603 oder
nach dem Ende des Löschimpulses
in Schritt 602, tritt der Algorithmus in das Löschüberprüfungsstadium
ein, indem er den Adreßzähler auf
0 zurücksetzt
(Schritt 604). Ein Löschüberprüfungsprozeß wird Byte
für Byte
ausgeführt
(Schritt 605). Der Löschaussetz-Prüfpunkt von
Schritt 601 erstreckt sich vorzugsweise zusätzlich von
dem Zeitpunkt nach dem Ende des Löschimpulses bis vor das Testen
des ersten Bytes in dem Löschüberprüfungsprozeß in Schritt 607.
Der Zeitpunkt, zu dem der Adreßzähler in
Schritt 604 auf 0 zurückgesetzt
wird, kann irgendwo in dem Prozeß vor der Löschüberprüfung liegen. Ebenso kann dieses
Zurücksetzen
des Zählers
parallel zu der Überwachung
auf dem Löschaussetz-Befehl
vollzogen werden.
-
Ein Löschaussetz-Prüfpunkt tritt
während des
Löschverifizierungsstadiums
auf, das wie in Schritt 606 angegeben Byte für Byte abläuft. Wenn kein
Löschaussetz-Kommando
in Schritt 606 empfangen wird, dann stellt der Algorithmus
fest, ob das aktuelle Byte den Löschüberprüfungsprozeß bestanden
hat (Schritt 607). Falls nicht, dann wird der Löschwiederholzähler in
Schritt 608 überprüft. Wenn der
Löschwiederholzähler einen
Wert speichert, der kleiner oder gleich dem Löschwiederholgrenzwert ist, dann
kehrt der Algorithmus in einer Schleife zu Schritt 600 zurück, um den
Löschimpuls
erneut anzulegen (wenn nur ein Block beteiligt ist, sonst geht der Algorithmus
zu einem nächsten
Block weiter). Wenn der Löschwiederholgrenzwert überschritten
ist, dann liegt eine Löschfehlschlag-Bedingung
vor.
-
Wenn das aktuelle Byte bei Schritt 607 den Löschüberprüfungstest
besteht, dann wird der Adreßzähler inkrementiert
(Schritt 609). Als nächstes stellt
der Algorithmus fest, ob die letzte Adresse in dem Block übergeben
wurde (Schritt 610). Falls nicht, dann geht der Algorithmus
in einer Schleife zu Schritt 605 zurück, um mit der Löschüberprüfung, die Byte
für Byte
erfolgt, fortzufahren. Wenn die letzte Adresse übergeben wurde, dann kehrt
die Logik zu dem Bereitschafts- bzw. Standby-Zustand am Ende des
Löschvorgangs
zurück
(Schritt 611).
-
Wenn der Löschaussetz-Prüfpunkt in
Schritt 606 ein Löschaussetz-Kommando
erkennt, dann geht der Algorithmus in einer Schleife zu Schritt 612, um
die Löschüberprüfung für den aktuellen
Block zwangsweise zum Scheitern zu bringen. Als nächstes wird
der Block-Adreßzähler in
Schritt 613 inkrementiert. Der Algorithmus prüft dann
in Schritt 614, ob dies der letzte Block ist. Falls nicht,
dann geht der Algorithmus in einer Schleife zu Schritt 612 zurück, um die
Löschüberprüfung für alle Blöcke zwangsweise
zum Scheitern zu bringen. Nach dem letzten Block wird dann der Löschunterbrechungsablauf
ausgeführt
(Schritt 615). Nach dem Löschunterbrechungsablauf von
Schritt 615 kehrt der Algorithmus zu Punkt 604 zurück, um den
Löschüberprüfungsvorgang
erneut zu versuchen.
-
Der Löschunterbrechungsablauf ist
in 7 dargestellt. Nach
dem Eintritt in den Löschunterbrechungsablauf
initialisiert sich die Logik und gibt ein Unterbrechung-Bereit-Signal
aus (Schritt 700). Nach Unterbrechung-Bereit gibt der Benutzer
einen Array-Lesen-Befehl oder einen Befehl für eine andere Art des Zugriffs
auf einen anderen Block als den Block oder die Blöcke, der
bzw. die Gegenstand des Löschvorgangs
ist bzw. sind (Schritt 701). In Schritt 702 stellt
der Vorgang fest, ob der Zugriff von Schritt 701 auf einen
sicheren Block geschehen soll (Schritt 702). Falls nicht,
dann wird ein Fehler angezeigt (Schritt 703). Wenn der
Zugriff auf einen sicheren Block geschehen soll, dann wird der Lesezugriff
oder der anderweitige Zugriff ausgeführt (Schritt 704).
Der Löschaussetzprozeß ist vollzogen,
wenn der Benutzer einen Löschwiederaufnahme-Befehl,
wie in Schritt 705 angezeigt, gibt.
-
8 stellt
den Algorithmus für
das eingebettete Löschen
dar, das von der Steuerungslogik 12 unter Verwendung der
Flags 13 und des Adreßzählers 14 von 1 ausgeführt wird, um die Wirkungsweise
bzw. den Betrieb der Blocklöschflags
zu veranschaulichen. Nähere
Einzelheiten der Blocklöschoperation
sind in dem oben zitierten U.S.-Patent Nr. 5.414.664 dargelegt.
-
Gemäß dieser bevorzugten Version
des eingebetteten Löschalgorithmus
beginnt eine Löschoperation
mit dem Setzen eines oder mehrerer Flags. Für ein Chiplöschen werden alle Flags gesetzt
und die Adreßzähler werden
auf Adresse 0 initialisiert. Wenn eine Blocklöschoperation ausgeführt werden
soll, werden nur die Flags für
ausgewählte
Blöcke
gesetzt. Um den Löschvorgang
zu starten, wird, wie oben mit Bezug auf 5 beschrieben, mit ausgewählten Blöcken eine
Vorprogrammierungsphase mit der Fähigkeit bzw. Möglichkeit
zur Löschaussetzung
an Bytegrenzen ausgeführt
(Schritt 800).
-
Im nächsten Schritt werden alle
Blöcke
mit einem gesetzten Flag durch Anlegen eines Löschimpulses gelöscht (Schritt 801).
Dann wird die gesamte Menge von ausgewählten Blöcken durch Anlegen von Erregerspannungen
gelöscht,
wie oben beschrieben, und zwar segmentweise unter der Steuerung
des unteren Blockauswahltransistors. Solange der Löschimpuls
anliegt, überwacht
die Logik die Befehlsschnittstelle bezüglich eines Löschaussetz-Befehls
(Schritt 802). Wenn kein Befehl auftritt, bevor der Impuls
die Zeitüberwachung überschreitet (Schritt 803),
dann fährt
der Algorithmus mit dem Löschüberprüfungsprozeß fort,
indem er Löschüberprüfungsspannungen
aufbaut (Schritt 804).
-
Wenn der Löschaussetz-Befehl in Schritt 802 erkannt
wird, dann führt
der Algorithmus einen Löschaussetzvorgang
aus, der in 8 durch
Schritt 805 repräsentiert
ist, der nach einem Löschwiederaufnahme-Befehl
Ausschau hält
und beim Empfang des Befehls zu Schritt 801 zurückkehrt.
-
Der Löschnachprüfungsvorgang, der bei Schritt 804 beginnt,
setzt aus beim Aufbauen der Löschnachprüfungsspannungen
(Schritt 808). Nach dem Aufbauen der Löschnachprüfungsspannungen überwacht
die Logik die Befehlsschnittstelle bezüglich des Löschaussetz-Befehls (Schritt 809).
Wenn der Befehl empfangen wird, dann führt der Algorithmus einen Löschaussetzvorgang
durch, der in 8 durch
Schritt 810 repräsentiert
ist. In Schritt 810 wird auf der Befehlsschnittstelle nach
einem Löschwiederaufnahme-Befehl
Ausschau gehalten. Wenn der Befehl empfangen wird, dann kehrt der
Algorithmus zu Schritt 804 zurück.
-
Wenn in Schritt 809 kein
Löschaussetz-Befehl
empfangen wird, dann wird das Flag für einen aktuellen Block getestet
(Schritt 813). Wenn das Flag nicht gesetzt ist, dann verzweigt
der Algorithmus zu Schritt 814, um zu testen, ob es der
letzte Block in dem Chip ist. Wenn es nicht der letzte Block ist,
dann wird die höchstwertige
Bitadresse vergrößert und
die niedrigstwertige Bitadresse zurückgesetzt, um zum nächsten Block
weiterzugehen (Schritt 815). Nach Schritt 815 geht
der Algorithmus in einer Schleife zu Schritt 809 zurück, um zu überprüfen, ob
ein Aussetzbefehl vorliegt.
-
Wenn das Flag in Block 813 gesetzt
ist, dann stellt der Algorithmus fest, ob das aktuelle Byte die Löschüberprüfung bestanden
hat (Schritt 816) und ob das aktuelle Byte das letzte Byte
in dem Block ist. Wenn es besteht und es nicht das letzte Byte ist, dann
wird die niedrigerwertige Bitadresse inkrementiert, um zum nächsten Byte
weiterzugehen (Schritt 817) und der Algorithmus geht in
einer Schleife zu Schritt 809 zurück, um erneut zu prüfen ob ein
Aussetzbefehl vorliegt.
-
Wenn in Schritt 816 das
letzte Byte in dem Block vorliegt oder es die Überprüfung nicht bestanden hat, dann
geht der Algorithmus in einer Schleife zu Schritt 818 über, in
dem er erneut feststellt, ob das Byte die Löschüberprüfung bestanden hat und ob es das
letzte Byte in dem Block ist. Wenn es bestanden hat und es das letzte
Byte war, dann wird das Blocklöschflag
zurückgesetzt
(Schritt 819) und der Algorithmus geht zu Schritt 814 über, um
festzustellen, ob der letzte Block getestet wurde. Wenn das Byte
die Überprüfung in
Block 818 nicht bestanden hat, dann geht der Algorithmus
zu Schritt 814 über,
um festzustellen, ob der letzte Block getestet wurde, und setzt die
Schleife durch die Schritte 815 und 809 fort,
bis alle Blöcke
getestet wurden.
-
Wenn in Schritt 814 der
letzte Block erkannt wird, dann testet der Algorithmus in Schritt 820,
ob alle Flags zurückgesetzt
wurden. Wenn sie alle zurückgesetzt
sind, dann wurde der Löschvor gang überprüft (Schritt 821).
Wenn an dieser Stelle bzw. zu diesem Zeitpunkt nicht alle Flags
zurückgesetzt
sind, dann geht der Algorithmus in einer Schleife zu Schritt 801 zurück, um die
Blöcke
zu löschen,
die immer noch ein gesetztes Flag haben.
-
Die 9, 10 und 11A–11B sind vereinfachte Logikdiagramme
und ein Zeitdiagramm, welche die Löschaussetzoperation darstellen,
die dem Block 504 in 5 entspricht.
Die 12, 13, 14, 15 und 16A–16B stellen eine vereinfachte
Logik und einen vereinfachten Zeitablauf für die Löschaussetzoperation, die dem
Block 601 von 6 entspricht,
zur Verfügung.
Die 17 und 18 liefern eine vereinfachte Logik,
die dem Löschaussetzprozeß in Block 606 von 6 entspricht. Die Logik
und der Zeitablauf, die in diesen 9–18 bereitgestellt werden,
liefern ein Beispiel für
den Zeitablauf des Löschaussetzprozesses,
und für
einfache Logik, die bei dem Zustandsautomaten verwendet wird, um
den Zeitablauf zu steuern. Andere Techniken und Zeitabläufe können je nach
der speziellen Implementierung des Löschaussetz-Algorithmus' der vorliegenden
Erfindung verwendet werden.
-
9 ist
ein Logikdiagramm, das die Operation bzw. Wirkungsweise des Löschaussetz-Signals beim Erzeugen
der Steuersignale zur Programmierungserholung PGMREC und zur Programmierungsüberprüfung PGMVFY
zeigt. Die Logik umfaßt
einen Setz-/Rücksetz-Signal-
bzw. -Zustandsspeicher 900 (SR-Latch), der eine Ausgabe
PGMREC auf der Leitung 901 erzeugt. Die Ausgabe PGMREC
auf der Leitung 901 errichtet ein Zeitfenster für das Erholen
von den hohen Spannungen, die während
des Programmierimpulses verwendet werden. Die Eingaben zum SR-Latch 900 beinhalten
das TPGMREC1-Signal auf der Leitung 902 und das TPRCEND-Signal
auf der Leitung 903. Das TPGMREC1-Signal ist ein Steuersignal,
das von dem Zustandsautomaten erzeugt wird, um die Programmierungserholung
auszulösen. Das
TPRCEND-Signal auf der Leitung 903 ist ein Triggersignal,
das von dem Zustandsautomaten erzeugt wird, um zu veranlassen, daß das Programmierungserholungintervall
endet.
-
Die Logik in 9 beinhaltet auch das SR-Latch 910,
das das PGMVFY-Signal auf der Leitung 911 erzeugt, das
ein Programmierungsüberprüfungsintervall
anzeigt. Die gesetzte Eingangsgröße zum SR-Latch 910 ist
die Ausgangsgröße des NOR-Gates 912.
Die Rücksetzeingabe
ist das TPGMREC2-Signal auf der Leitung 913. Die Eingaben
bzw. Eingangsgrößen des
NOR-Gatters 912 beinhalten die Ausgangsgrößen des
Invertierers 914, dessen Eingangsgröße das TPRCEND-Signal auf der
Leitung 903 ist, und das ERSPEND-Signal auf der Leitung 915.
Das ERSPEND-Signal auf der Leitung 915 ist das Löschaussetzsignal,
das von dem Zustandsautomaten erzeugt wird, um die Programmierungsüberprüfungssequenz
während
eines Löschaussetzintervalls
zu sperren bzw. zu blockieren. Das TPGMREC2-Signal auf der Leitung 913 ist ein
Steuersignal, das verwendet wird, um das SR-Latch 910 zur
Programmierungsüberprüfung zurückzusetzen,
um das Programmierungsüberprüfungintervall
zu beenden.
-
10 stellt
die Logik dar, die verwendet wird, um das Signal ERASE SUSPEND READY
zu erzeugen, das einem Signal an den Benutzer der Speichereinrichtung
entspricht, daß die
Löschaussetzung
erfolgreich erreicht wurde und eine Leseoperation ausgeführt werden
kann. Diese Logik enthält das
SR-Latch 1000 und erzeugt das Signal ERASE SUSPEND READY
auf der Leitung
1001. Die Eingaben zum SR-Latch 1000 beinhalten
die Ausgabe des NOR-Gatters 1002 bei der Setzeingabe und
das Signal ERASE RESUME auf der Leitung 1003 bei der Rücksetzeingabe.
Die Eingaben an das NOR-Gatter 1002 umfassen das PGMVFY-Signal
auf der Leitung 1004 und die Ausgabe des NAND-Gatters 1005.
Die Eingaben an das NAND-Gatter 1005 umfassen das TPRCEND-Signal
auf der Leitung 1006 und das ERSPEND-Signal auf der Leitung 1007.
-
Die Wirkungsweise der Logik der 9 und 10 kann man unter Bezug auf die Zeitdiagramme
in den 11A und 11B verstehen. Unter Bezug
auf die 11A kann man
die Zeitablaufsequenz der Programmierung verstehen. Zuerst beginnt
ein Programmierungsintervall bei Punkt 1100. Der Programmierungsimpulszyklus
dauert bis zum Ende des Programmierungssignals bei Punkt 1101.
Bei Punkt 1101 beginnt das Programmierungserholungsintervall
als Reaktion auf den TPGMREC1-Impuls bei Punkt 1102. Während des
Programmierungserholungsintervalls klingen die hohen Spannungen
ab, die während
des Programmierungsimpulszyklus' erzeugt
wurden. Das Ende des Programmierungserholungsintervalls wird durch
den TPRCEND-Impuls bei Punkt 1103 signalisiert. Nach der
Programmierungserholungssequenz wird die Programmierungsüberprüfung eingeleitet.
Wiederum wird dieses Intervall durch den TPRCEND-Impuls bei Punkt 1103 eingeleitet.
Das Ende des Überprüfungsintervalls
wird durch den TPGMREC2-Impuls bei Punkt 1104 signalisiert.
Nach einem Erholungsintervall nach der Programmierungsüberprüfung, das
durch den Impuls 1105 repräsentiert wird, beginnt eine
weitere Programmierungssequenz.
-
In 11B wird
die Löschaussetzung
an dem Prüfpunkt
in Block 504 von 5 dargestellt. Die
ersten vier Aufzeichnungen in 11B entsprechen
denselben vier Aufzeichnungen in 11A und haben
gleiche Bezugszahlen. Ein Löschaussetzsignal
wird jedoch bei Punkt 1110 in dem Zeitdiagramm von 11B ausgegeben. Wenn das Löschaussetzsignal
auf einem hohen Zustand ist, wird das Signal ERASE SUSPEND READY
auf der Leitung 1101 als Reaktion auf das TPRCEND-Signal
bei Punkt 1103 erzeugt. Die Sequenzen der Programmierungsüberprüfung und
der Erholung von der Programmierungsüberprüfung treten nicht auf. Daher
kann man in 11B sehen,
daß der
Löschaussetz-Befehl
zu einer Unterbrechung des Vorprogrammierungsprozesses zwischen
dem Anlegen des Programmierungsimpulses nach der Erholung bei Punkt 1103 und
dem Beginn der Programmierungsüberprüfungsoperation führt, wenn
der Aussetzbefehl während
des Programmierungsimpulses zwischen den Punkten 1100 und 1101 gegeben
wird. Derselbe Effekt tritt auch ein, wenn der Aussetz-Befehl während des
Intervalls zur Erholung von der Programmierung zwischen den Punkten 1101 und 1103 empfangen
wird. Wenn sich der Löschaussetz-Befehl
nach dem TPRCEND-Signal auf der Leitung 1106 ereignet,
dann wird ERASE SUSPEND READY in dieser Beispiel-Implementierung
bis zum nächsten
Programmierungszyklus nicht ausgegeben.
-
Unter normalen Bedingungen wird ein
elektrischer Impuls TPGMREC1 nach dem Programmierungsimpuls in dem
Vorprogrammierungsintervall von einer Zeitüberwachung ausgesendet, um
den Zustandsautomaten in eine Periode zur Erholung von der Programmierung
zu versetzen, in der sich die zugeordneten Schaltkreise und die
programmierten Zellen von dem Belastungszustand mit hoher Spannung
hin zu einem normalen Spannungszustand erholen. Nach der Periode
zur Erholung von der Programmierung sendet die Zeitüberwachung
einen elektrischen Impuls TPRCEND aus, um das Programmierungserholungssignal
auf einen niedrigen Zustand zurückzusetzen
und das PGMVFY-Signal auf einen hohen Zustand zu setzen, um die
Programmierungsüberprüfung zu
starten. Wenn der Benutzer während
des Selbstlöschprozesses
im Vorprogrammierungsschritt einen Löschaussetz-Befehl ausgibt, wird
dieser Aussetzbefehl den Übergang
vom Zustand der Programmierungserholung in den Zustand der Programmierungsüberprüfung verhindern.
Wenn der Löschaussetz-Befehl
gegeben wird, nachdem das PGMVFY-Signal auf einem hohen Zustand
ist, wird die Sequenz der Programmierungsüberprüfung nicht angehalten, bis
das nächste
Intervall zur Erholung von der Programmierung abgeschlossen ist.
-
Während
des Vorprogrammierungsschrittes ist das Signal ERASE SUSPEND READY
nur gültig, wenn
sowohl ein Löschaussetz-Befehl
gegeben wurde und ein Intervall zur Erholung von der Programmierung
abgelaufen ist, das der Schaltung ermöglicht, den normalen Spannungszustand
zu erreichen. Der Löschwiederaufnahme-Befehl
setzt das Signal ERASE SUSPEND READY auf einen niedrigen Zustand
zurück.
Sobald eine Löschwiederaufnahme ausgegeben
wird, bringt der Zustandsautomat das TPRCEND-Signal auf einen hohen
Zustand und löst das
PGMVFY-Siganl aus, um den Ablauf von der Programmierungsüberprüfung an
wieder aufzunehmen.
-
Die 12, 13, 14, 15 und 16A–16B stellen die
Logik und den Zeitablauf für
das Erzeugen des Signals ERASE SUSPEND READY während des Prüfpunktes
in Block 601 von 6 dar.
Mit 12 kann man die
Erzeugung des ERASE-Befehls auf der Leitung 1200 verstehen.
Der ERASE-Befehl auf der Leitung 1200 ist die vom SR-Latch 1201 erzeugte
Ausgabe. Die gesetzte Eingabe des SR-Latch 1201 ist die
Ausgabe des ODER-Gatters 1202. Die Rücksetzeingabe des SR-Latch 1201 ist
das Signal ERASE INTERRUPT auf der Leitung 1203. Die Eingaben
des ODER-Gatters 1202 umfassen
das Signal PRE-PROGRAM COMPLETED und das Signal ERASE RETRY START. 13 veranschaulicht die Erzeugung
der Signale ENABLE ERASE TIMER und RESET ERASE TIMER auf den Leitungen 1300 bzw. 1305.
Diese Signale werden unter Verwendung des SR-Latch 1301 erzeugt.
Die gesetzte Eingabe für
das SR-Latch 1301 ist das ERASE-Signal, das wie in 12 gezeigt erzeugt wird.
Die Rücksetzeingabe des
SR-Latch 1301 ist die Ausgabe des ODER-Gatters 1303.
Die Eingaben für
das ODER-Gatter 1303 umfassen die Signale ERASE IN-TERRUPT und ERASE
RECOVERY.
-
Das Löschintervall endet unter der
Steuerung des Signals ERASE INTERRUPT, das wie in 14 gezeigt erzeugt wird. Das UND-Gatter 1400 erzeugt
das Signal ERASE INTERRUPT auf der Leitung 1402 und das
Signal ERASE RECOVERY START für
den Löschaussetzprozeß auf der
Leitung 1402. Die Eingaben für das UND-Gatter 1400 umfassen
das ERASE-Signal, das wie in 12 gezeigt
erzeugt wird, und das vom Benutzer erzeugte Signal ERASE SUSPEND.
-
15 stellt
die Erzeugung des Signals ERASE SUSPEND READY auf der Leitung 1500 dar. Das
Signal auf der Leitung 1500 wird am Ausgang des SR-Latch 1501 erzeugt.
Die gesetzte Eingabe von SR-Latch 1501 ist die Ausgabe
des UND-Gatters 1502. Die Eingaben für das UND-Gatter 1502 umfassen das Signal
ERASE RECOVERY DONE und das Signal ERASE SUSPEND. Der Rücksetzeingang
für das
SR-Latch 1501 empfängt
das Signal ERASE RESUME.
-
Die 16A und 16B stellen den Zeitablauf für den Löschaussetzprozeß bei Prüfpunkt 601 von 6 dar. Wie man in 16A sieht, beginnt das Löschintervall
bei Punkt 1600. Am Ende des Löschintervalls 1600 wird
ein Signal ERASE RECOVERY STATE bei Punkt 1601 erzeugt.
Dieses leitet das Löscherholungsintervall
ein. Ein Signal ERASE RECOVERY DONE wird bei Punkt 1602 als
Reaktion auf die Zeitüberwachung
ausgegeben. Dies führt
zum Beginnen des Löschüberprüfungsintervalls
und zum Beenden des Löscherholungsintervalls.
Nach dem Ende einer Löschüberprüfungssequenz
beginnt ein Intervall zur Erholung von der Löschüberprüfung bei Punkt 1603.
Ein Impuls ERASE VERIFY COMPLETED wird vom Zustandsautomaten bei
Punkt 1604 erzeugt, was den Beginn einer anderen Löschsequenz
markiert.
-
Wenn der Löschaussetzprozeß bei Punkt 601 von 6 auftritt, wird der Zeitablauf
wie in 16B gezeigt geändert. Insbesondere
wird dann, wenn ein Löschaussetzsignal
bei Punkt 1610 während
eines Löschimpulses
gegeben wird, das Signal ERASE INTERRUPT bei Punkt 1611 erzeugt.
Dies veranlaßt,
daß das
Löschintervall
beendet wird und ein Prozeß zum
Starten einer Erholung vom Löschen beginnt.
Das Signal ERASE RECOVERY START veranlaßt das Einleiten eines Intervalls
zur Erholung vom Löschen
wie in der Figur angegeben. Am Ende des Intervalls zur Erholung
vom Löschen
wird ein Impuls ERASE RECOVERY DONE bei Punkt 1612 erzeugt.
Dies bewirkt, daß das
Signal ERASE SUSPEND READY aktiviert wird, vorausgesetzt, daß das Löschaussetzsignal
aktiv bleibt. Das Signal bleibt im hohen Zustand, bis das Löschwiederaufnahmesignal das
Latch 1501 von 15 zurücksetzt.
-
In diesem Beispiel setzt das Löschsignal
einen Löschsteuerungszeitgeber,
um 10 Millisekunden für
einen Löschimpulszyklus
zu zählen.
Nach diesem Impulszyklus setzt das Signal ERASE RECOVERY, das vom
Zustandsautomaten erzeugt wird, die Löschperiode zurück und löst die Periode
zur Erholung vom Löschen
ein. Der Zweck der Periode zur Erholung vom Löschen ist, die hohen Spannungen,
die während
des Löschimpulszyklus' verwendet werden, abzubauen.
Sobald die Periode zur Erholung vom Löschen abgeschlossen ist, tritt
die Löschsequenz
in die Löschüberprüfungssequenz
ein. Wenn der Benutzer während
des Löschimpulses
einen Löschaussetz-Befehl
ausgibt, wird der Löschzeitgeber
sofort durch das Signal ERASE INTERRUPT deaktiviert, wie man in 13 sehen kann. Die Länge bzw.
Dauer des Löschimpulses
wird ebenso durch das Signal ERASE INTERRUPT verkürzt. Diese
Bedingung löst auch
eine Erholung vom Löschen
aus. Das ERASE SUSPEND READY folgt auf den Abschluß des Intervalls
zur Erholung vom Löschen
bei Punkt 1612.
-
Die 17 und 18 stellen die Logik für den Löschaussetzprozeß beim Prüfpunkt-Block 606 von 6 dar. Wie man in 17 sehen kann, wird ein Signal
ERASE SUSPEND INITIATION am Ausgang des SR-Latch 1700 erzeugt.
Die gesetzte Eingabe des SR-Latch 1700 ist die Ausgabe
des UND-Gatters 1701. Die Eingaben für das UND-Gatter 1701 umfassen
das Signal ERASE VERIFY und das Signal ERASE SUSPEND. Die Rücksetzeingabe
des SR-Latch 1700 ist das Signal ERASE RESUME. Die Ausgabe des
SR-Latch 1700 ist das Signal ERASE SUSPEND INITIATION.
Das SR-Latch 1702 wird verwendet, um das Signal ERASE SUSPEND
READY zu erzeugen. Die Rücksetzeingabe
für das
SR-Latch 1702 ist das Signal ERASE RESUME. Die gesetzte
Eingabe für das
SR-Latch 1702 ist die Ausgabe des UND-Gatters 1703.
Die Eingaben für
das UND-Gatter 1703 umfassen das Signal ERASE VERIFY COMPLETED
und das Signal ERASE SUSPEND.
-
In 18 wird
das Übereinstimmungssignal erzeugt,
das zum Rücksetzen
der Blocklöschflags
für den
Prozeß von 8 verwendet wird. Das Übereinstimmungssignal
wird am Ausgang des NOR-Gatters 1800 erzeugt. Die Eingaben
des NOR-Gatters 1800 sind das Signal ERASE SUSPEND INITIATION
und die Ausgabe des Invertierers 1802. Die Eingangsgröße des Invertierers 1802 ist
das Signal DATA COMPARE MATCH, das von dem Überprüfungsvergleicher erzeugt wird.
-
Normalerweise überprüft der Zustandsautomat während des
Löschüberprüfungsschrittes
mittels einer Operation DATA COMPARE MATCH die gelöschte Zelle,
um festzustellen, ob sie erfolgreich gelöscht wurde. Dieser Vorgang
wird ausgeführt,
bis eine Zelle die Überprüfung verfehlt
oder die letzte gelöschte
Zelle überprüft ist.
Die Ergebnisse des Vergleichs der gelöschten Zellen legen fest, ob
eine weitere Löschwiederholsequenz,
die einen Löschimpuls und
eine Löschüberprüfungssequenz
nach sich zieht, für
den aktuellen Block erforderlich ist.
-
Während
des Löschüberprüfungsschrittes wird
das Signal ERASE SUSPEND INITIATION auf den hohen Zustand gesetzt,
wenn der Benutzer ein Löschaussetz-Kommando
ausgibt, um das Signal DATA COMPARE MATCH auf einen niedrigen Zustand
zu zwingen, wie man in 18 sehen
kann. Diese Bedingung repräsentiert,
daß die
letzten der Löschzellen,
direkt nachdem die Löschaussetzung ausgegeben
wurde, zwangsweise in einen Zustand "nicht übereinstimmend" versetzt werden.
Dies veranlaßt
den Zustandsautomaten, den nächsten
Block mit einem gesetzten Flag zu überspringen und so weiter zu
verfahren, bis der letzte Block erreicht ist. Danach wird das Signal
ERASE VERIFY COMPLETED auf einen hohen Zustand gesetzt, und das
Signal ERASE SUSPEND READY wird aktiviert.
-
Die Logikdiagramme in den 9–18 sind vereinfachte
Diagramme, die darauf ausgerichtet sind, den groben Zeitablauf der
Löschaussetz-
und -wiederaufnahme-Operation zu zeigen. In tatsächlichen Implementierungen
werden synchrone, nicht überlappende
Takte verwendet, um Wettlaufsituationen bzw. Konkurrenz zu vermeiden.
Offenbar können viele
Variationen bzw. Veränderungen
bei der Logik verwendet bzw. angewendet werden, abhängig von einem
speziellen System, in dem die Erfindung implementiert wird.
-
Dementsprechend sieht die vorliegende
Erfindung mehrere Prüfpunkte
in dem Löschvorgang für eine Löschaussetz-Operation
vor. Um den Löschvorgang
so schnell wie möglich
auszusetzen, erlaubt es der Algorithmus der vorliegenden Erfindung,
daß der
Löschvorgang
am Ende des ersten Vorprogrammierungs-Impulses und, nachdem das
Aussetz-Kommando gegeben wurde, unabhängig davon unterbrochen wird,
ob das Byte, das Gegenstand der Vorprogrammierung ist, erfolgreich
programmiert wurde. Dies verhindert, daß mehrere Wiederholungen der Vorprogrammierung
eines gegebenen Bytes zu einem langen Warten vor der Ausführung des
Aussetz-Algorithmus' führen. Darüber hinaus
ermöglicht die
vorliegende Erfindung, daß der
Löschvorgang während des
Löschimpulszyklus' unterbrochen wird. Dies
sorgt für
eine wesentliche Verbesserung bei der Effizienz und Ausführung des
Löschaussetz-Kommandos,
insbesondere in Systemen, die einen langen Löschimpuls bedingen bzw. mit
sich bringen. Schließlich
wird der Löschaussetz-Prüfpunkt während der Löschüberprüfung der
vorliegenden Erfindung angepaßt,
um effizient mit den Blocklöschvorgängen zu
arbeiten, die Blocklöschen
von mehr als einem Block in einer Menge von Blöcken ermöglichen.
-
Die vorstehende Beschreibung einer
bevorzugten Ausführungsform
der Erfindung wurde zu Zwecken der Veranschaulichung und der Beschreibung
präsentiert.
Sie soll nicht erschöpfend
sein oder die Erfindung auf die genaue, offenbarte Form beschränken. Offensichtlich
liegen für
Praktiker auf diesem Gebiet viele Abwandlungen und Änderungen auf
der Hand. Der Schutzbereich der Erfindung soll durch die folgenden
Ansprüche
und ihre Äquivalenzen
definiert werden.