-
Daten der
Continuation-Anmeldung
-
Die
vorliegende Anmeldung ist eine Continuation-In-Part Anmeldung der
PCT-Patentanmeldung mit dem Titel "Forgeschrittene Programmierverifizierung
für Flash-Speicher
im Seitenbetrieb (Advanced Program Verify for Page Mode Flash Memory),
Anmelde-Nummer: PCT/US95/00077, eingereicht am 05. Januar 1995, die
eine Continuation-In-Part Anmeldung der PCT-Anmeldung US 94/10331,
eingereicht am 13. September 1994, ist, nunmehr US-Patentanmeldung-Nr.
08/325,467, eingereicht am 26. Oktober 1994 mit dem Titel "FLASH EPROM INTEGRATED
ARCHITECTURE" („Integrierte
Flash-EPROM-Architektur" mit
den Erfindern Yiu, et al).
-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf die Technologie der Flash
EEPROM Speicher und genauer gesagt auf eine verbesserte Speicher-Architektur
für Flash
EEPROMs zum automatischen Programmieren mit geregelten Programmierspannungen
für eine
verbesserte Effizienz und Geschwindigkeit.
-
Beschreibung
des verwandten Standes der Technik
-
Flash
EEPROMS sind eine wachsende Klasse nicht flüchtiger integrierter Speicherschaltkreise.
Die Speicherzellen in einem Flash EEPROM werden unter Verwendung
sogenannter Floating Gate Transistoren (Transistoren mit potentialfreiem
Gate) gebildet, in welchem die Daten in einer Zelle gespeichert
werden, indem das potentialfreie Gate oder Floating Gate geladen
oder entladen wird. Das Floating Gate besteht aus einem leitfähigem Material,
typischerweise aus Polysilicium, welches gegenüber dem Kanal des Transistors durch
eine dünne
Oxidschicht oder ein durch ein anderes Isoliermaterial isoliert
ist und auch gegenüber
dem Steuer-Gate des Transistors durch eine zweite Schicht aus einem
Isoliermaterial isoliert ist.
-
Das
Floating Gate kann durch einen Fowler-Nordheim-Tunnel-Mechanismus
geladen werden, indem eine große
positive Spannung zwischen dem Gate und der Source oder der Drain
bereitgestellt wird. Dies bewirkt, dass Elektronen durch den dünnen Isolator
hindurch in das Floating Gate injiziert werden. Alternativ kann ein
Lawinen-Injektions-Mechanismus, der auch als Injizierung heißer Elektronen
bezeichnet wird, verwendet werden, indem Potentiale angelegt werden,
um hochenergetische Elektronen in dem Kanal der Zelle zu induzieren,
die durch den Isolator hindurch in das Floating Gate injiziert werden.
Wenn das Floating Gate geladen ist, ist die Schwellwertspannung,
die bewirkt, daß die
Speicherzelle leitfähig
wird, gegenüber
der Spannung erhöht,
die während
eines Lesevorgangs an der Wortleitung angelegt wird. Demnach leitet
die Zelle nicht, wenn die geladene Zelle während eines Lesevorgangs adressiert
bzw. angesprochen wird. Der nicht leitende Zustand der Zelle kann
je nach der Polarität
des Abfrage- bzw. Erfassungsschaltkreises als binäre Eins
oder Null interpretiert werden.
-
Das
Floating Gate wird entladen, um den entgegengesetzten Speicherzustand
bereitzustellen. Diese Funktion wird üblicherweise durch einen F-N-Tunnel-Mechanismus
zwischen dem Floating Gate oder der Source oder der Drain des Transistors
ausgeführt
oder zwischen dem Floating Gate oder dem Substrat. Beispielsweise
kann das Floating Gate durch die Drain entladen werden, indem eine
große
positive Spannung von der Drain zu dem Gate bereitgestellt wird,
während
man die Source potentialfrei (schwebend) läßt.
-
Die
hohen Spannungen, die verwendet werden, um das Floating Gate zu
laden und zu entladen, bringen beträchtliche Einschränkungen
hinsichtlich des Designs für
Flash-Speichereinrichtungen mit sich, insbesondere, wenn die Zellabmessungen
und die Spezifikationen des Prozesses in ihren Maßen reduziert
werden.
-
Weiterhin
ist der Vorgang des Ladens und Entladens des potentialfreien bzw.
schwebenden Gates (Floating Gate), insbesondere wenn man den F-N-Tunnel-Mechanismus
verwendet, ein relativ langsamer Vorgang, der die Anwendung von
Flash-Speichereinrichtungen in gewissen geschwindigkeitsempfindlichen
Anwendungen einschränken
kann.
-
Bei
den Floating-Gate-Speicher-Architekturen nach dem Stand der Technik,
welche eine Sub-Mikrometer-Technologie
verwenden, wird die Variation der kritischen Maße in den Mustern bzw. Strukturen
auf dem physikalischen Material üblicherweise
innerhalb von 10% genau eingestellt bzw. geregelt. Für eine Flash-EEPROM-Zelle
oder einen anderen Floating Gate-Speicher kann eine solche Variation
der kritischen Maße
bei Verwendung des Fowler-Nordheim-Tunnel-Verfahrens zu einer Variation
der Programmiergeschwindigkeit zweiter Ordnung führen. Wenn weiterhin die Abweichung
in den Vorspannungen in dem Array bzw. Speicher-Zellen-Feld berücksichtigt
werden, kann die Variation der Programmiergeschwindigkeit sich bei
Einrichtungen nach dem Stand der Technik in der vierten Ordnung
bzw. vierten Potenz verändern.
-
Das
konventionelle Verfahren zum Programmieren von Flash-Speichern verwendet
eine feste Pulsbreite und eine feste Vorspannung, wobei nach jedem
Programmierimpuls eine Programmierverifizierungsschleife ausgeführt wird.
Wenn die Verifizierung fehlschlägt,
so wird iterativ ein weiterer Impuls angelegt. Wenn die Programmierimpulse
zu viel Energie haben, so können
daraus überprogrammierte
Zellen resultieren. Wenn Impulse zu wenig Energie haben, so wird
eine zu geringe An zahl von Zellen im ersten Zyklus bzw. Takt programmiert.
Eine überprogrammierte
Zelle führt
dazu, dass zuviel Ladung aus dem Floating Gate der Einrichtung heraus
verschoben wird, so dass sie außerhalb
der spezifizierten Arbeitsweise für das Array liegt. Dies kann
zu Codierungsfehlern führen.
Demnach müssen
die Algorithmen eine Überprogrammierung
sorgfältig vermeiden,
während
sichergestellt werden muß,
daß es
nicht zu lange dauert, um ein bestimmtes Byte in dem Speicher zu
programmieren. Wenn der Bereich der Programmiergeschwindigkeit für Zellen
in einem Speicher Array um zwei bis vier Größenordnungen variiert, so kann
man sich vorstellen, dass das Problem der Überprogrammierung oder das
Erfordernis, das zu viele Programmierimpulse notwendig sind, ziemlich
beträchtlich sein
kann. Dies hat die Arbeit von Flash-Speichereinrichtungen nach dem
Stand der Technik verlangsamt.
-
Ein
früherer
Ansatz zur Erhöhung
der Programmiergeschwindigkeit, während eine Überprogrammierung schnell programmierter
Zellen vermieden wird, beinhaltet das schrittweise Erhöhen der
Impulshöhe
für jeden
nachfolgenden Wiederholungsimpuls. Dieser Ansatz erzielt ein schnelles
Programmieren, vorausgesetzt, daß die Schritte bzw. Abstufungen
der Impulshöhe
beträchtlich
sind. Er erfordert jedoch auch eine komplexe Schaltung zum Implementieren.
Weiterhin bewirken die gesteigerten Impulshöhen der späteren Impulse in der Sequenz
eine zunehmende Störung
von Zellen, die nicht programmiert werden. Eine weitere Alternative umfaßt statt
Erhöhen
der Impulshöhe
einfach das Vergrößern der
Impulsbreite bzw. Pulsbreite der nachfolgenden Impulse in dem Wiederholungspfad.
Diese Technik verursacht zwar nicht das Problem der zunehmenden Störung durch
den Algorithmus der Steigerung der Impulshöhe, führt jedoch zu einer nicht mehr
hinnehmbaren Programmierdauer und zu einer relativ komplizierten
Schaltung, um all die verschiedenen Impulsbreiten zu implementieren.
-
Der
Artikel mit dem Titel "A
3.3 V 32 Mb NAND Flash Memory with Incremental Step Pulse Programming
Scheme" (NAND-Flash-Speicher
mit 32 Mb bei 3.3 V mit einem Programmierschema schrittweiser Impulsabstufung)
von Kang-Deog Suh et al, IEEE Internationale Konferenz für Festkörperschaltkreise
(Solid-State Circuits), Band 38, 1. Februar 1995, Seiten 128 und
129, beschreibt einen Flash-Speicher
vom NAND-Typ, bei welchem nach einem anfänglichem Programmierimpuls
jeder nachfolgende Impuls (falls erforderlich) in 0,5-Voltschritten
bis auf 20 Volt heraufgesetzt wird.
-
Die
US-A-4,357,685 beschreibt Techniken zum Programmieren eines elektrisch
veränderbaren
nur Lese-Speichers, dessen Zellen Feldeffekttransistoren mit isoliertem
Gate (IGFETs) aufweist. Insbesondere werden Techniken der Injektion
heißer
Elektronen verwendet, um die Zellen während einer Folge von Lade-Schritten
zu programmieren. In einer Ausführungsform
nimmt die Periode bzw. Dauer für
jeden Lade-Schritt zu, während
die Spannung an der Drain und dem Gate konstant bleibt. In einer
alternativen Ausführungsform bleibt
die Zeitdauer für
jeden Ladungsschritt konstant, während
die Spannung an dem Gate in aufeinanderfolgenden Lade-Schritten
zunimmt. Es wird auch angegeben, daß es möglich wäre, sowohl die Dauer der Lade-Schritte
als auch die Größe des Gate-Vorspannungspotentials
während
nachfolgender Ladeschritte zu variieren.
-
Der
Artikel "High-Speed
Programming and Program-Verify Methods Suitable for Low-Voltage
Flash Memories" (Hochgeschwindigkeitsprogrammierung
und Programmierverifizierungsverfahren, die für Flash-Speicher mit niedriger
Spannung geeignet sind), von Toshihiro, Tanaka et al, veröffentlicht
im SYMPOSIUM ON VLSI CIRCUITS, DIGEST OF TECHNICAL PAPERS, PROCEEDINGS
OF 1994 IEEE SYMPOSIUM ON VLSI CIRCUITS HONOLULU, HI, USA, 9. bis
11. JUNI 1994, beschreibt ein Flash-Speicher-Modell, bei welchem
die Programmierimpulsbreite quasi Logarithmen gesteigert und die
Wiederholung der Verifizierung abgesenkt wird, um die gesamte Verifizierungszeit
zu reduzieren.
-
Die
US-A-5,357,463 beschreibt eine Technik zum Durchführen einer
umgekehrten Programmierung eines Flash EEPROM, bei welcher alle
Zellen zunächst
auf eine hohe Schwellwertspannung gelöscht werden und dann ausgewählte Zellen
unter Verwendung von Fowler-Nordheim-Tunneln auf eine niedrige Schwellwertspannung
programmiert werden.
-
Es
ist deshalb wünschenswert,
eine Flash EEPROM Zell-Architektur und ein Verfahren zum Programmieren
der Zellen bereitzustellen, welche die Geschwindigkeitsnachteile
und Überprogrammier-Fehler des Standes
der Technik überwinden.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Spezielle
und bevorzugte Aspekte der vorliegenden Erfindung sind in den beigefügten unabhängigen und
abhängigen
Ansprüchen
dargelegt.
-
Ausführungsformen
der vorliegenden Erfindung stellen ein Verfahren und eine Vorrichtung
zum Programmieren eines Flash-Speicher-Arrays bereit, welches eine
schnelle Programmierung im wesentlichen sämtlicher Zellen in dem Array
ohne irgendeine Überprogrammierung
sicherstellt. Die Erfindung beruht auf der Bereitstellung eines
Musters von Programmierwiederholungsimpulsen, die entsprechende
Pulsbreiten und Pulshöhen
haben, die entsprechend einem Muster variieren. Die bevorzugten
Muster umfassen eine erste Phase, die innerhalb eines angegebenen
Zeitrahmens einschließlich
einer vorbestimmten Anzahl von Wiederholungen abgeschlossen wird,
so dass im wesentlichen sämtliche
Zellen in dem Array innerhalb der ersten Phase programmiert werden.
Eine zweite Phase des bevorzugten Musters beinhaltet eine Sequenz
von Impulsen höherer
Energie, die für
die Programmierung an die langsamsten Zellen in dem Array adressiert
werden. Das Muster weist eine Kombination zunehmender Pulsbreiten
und zunehmender Pulshöhen
auf. Bei der Benutzung in einem Seitenprogrammierarray, bei welchem
einzelne Zellen, die einfach programmiert werden können, keine
nachfolgenden Pulse erhalten, kann man ein sehr schnelles und zuverlässiges Programmierschema
erreichen, das eine beträchtliche
Verbesserung gegenüber
Ansätzen
nach dem Stand der Technik bringt.
-
Dementsprechend
kann eine Ausführungsform
der vorliegenden Erfindung als ein Verfahren zur Programmierung
einer Floating Gate-Speicherzelle charakterisiert werden, welche
das Anlegen eines ersten Programmierimpulses an der Zelle mit einer
ersten Impulshöhe
und einer ersten Impulsbreite umfasst, welche so ausgewählt sind,
daß die
Zelle sehr wahrscheinlich nicht überprogrammiert
wird. Als nächstes
bestimmt der Algorithmus, ob die Zelle in Reaktion auf den ersten
Programmierimpuls programmiert worden ist, und wenn dies nicht der
Fall ist, so legt er einen Programmierwiederholungsimpuls einer
Zelle an. Nach dem Programmierwiederholungsimpuls bestimmt der Algorithmus,
ob die Zelle in Reaktion auf diesen Impuls programmiert worden ist,
und wenn dies nicht der Fall ist, so legt er wiederholt weitere
Programmierwiederholungsimpulse an die Zelle an und bestimmt, ob
die Zelle programmiert worden ist, bis festgestellt wurde, daß die Zelle
programmiert worden ist oder bis eine maximale Anzahl von Wiederholungen
durchgeführt
worden ist. Die Programmierwiederholungsimpulse haben entsprechende
Impulsbreiten und Impulshöhen,
die entsprechend einem Muster variieren, dass zumindest einen Impuls
enthält,
der eine Impulsbreite hat, die breiter ist als die Impulsbreite
des ersten Impulses und eine Impulshöhe hat, die höher als
die Höhe
des ersten Impulses ist. Das Muster wird derart ausgewählt, dass
die Zelle wahrscheinlich innerhalb einer ersten Phase des Musters einschließlich einer
vorbestimmten Anzahl von Wiederholungen programmiert worden ist,
die geringer ist als die maximale Anzahl der Wiederholungen.
-
Gemäß einer
Ausführungsform
der Erfindung haben die Wiederholungsimpulse in dem Muster entsprechende
Energien, die durch ihre jeweiligen Impulshöhen und Impulsbreiten bestimmt
werden, die nacheinander konstant bleiben oder die während der
ersten Phase des Musters zunehmen und die eine Energie während der
zweiten Phase des Musters haben, die zumindest so groß ist, wie
bei dem letzten Impuls der ersten Phase des Musters.
-
Gemäß einer
weiteren Ausführungsform
der Erfindung kann diese gekennzeichnet werden als ein Verfahren
zum Speichern von Daten in einem Speicher-Array auf einem integrierten
Schaltkreis, der eine Mehrzahl von Reihen und Spalten aus Speicherzellen
mit potentialfreiem Gate bzw. Floating Gate hat. Das Verfahren umfaßt das Laden
eines Seitenpuffers auf dem integrierten Schaltkreis mit einer Reihe
von Eingabedaten (wobei Bits gesetzt werden, die Programmierimpulse
für einen
Programmierwert empfangen sollen) und Auswählen von einer Reihe von Speicherzellen
zum Programmieren der Eingabedaten in die Reihe. Das Programmierwiederholungsmuster,
welches oben beschrieben wurde, wird auf die Zellen in der Reihe
von Speicherzellen angewendet, welche den Eingangs- bzw. Eingabedaten
entsprechen, die einen Programmierwert in dem Seitenpuffer haben.
Nach jeder Verifizierungssequenz werden die Eingangsdaten für jedes
Bit, welches in dem Seitenpuffer verifiziert wird, auf einen Wert
für das
Nichtprogrammieren zurückgesetzt.
Nachdem die Bits in dem Seitenpuffer zurückgesetzt worden sind, die
die Verifizierung erfolgreich durchlaufen haben, wird der nächste Wiederholungsimpuls
nur an denjenigen Zellen angelegt, die die Verifizierung nicht erfolgreich
durchlaufen haben.
-
Auf
diese Weise kann eine Seite von Daten in einer Reihe geladen werden,
die mehr als 500 Zellen umfasst, und in einer Ausführungsform
der Erfindung mehr als 1000 Zellen. Die erste Phase des Programmierwiederholungsmusters
gemäß dieser
Ausführungsform
wird in weniger als einer Millisekunde abgeschlossen. Für eine Reihe
mit 1000 Zellen entspricht dies einer Mikrosekunde pro Intervall
der Zellprogrammierung. Gemäß einer
Ausführungsform
der vorliegenden Erfindung ist die erste Phase des oben erwähnten Musters
dafür ausgelegt,
in weniger als einer Millisekunde abgeschlossen zu werden und viele
Seiten werden in beträchtlicher
weniger als einer Millisekunde abgeschlossen. Demnach wird für diejenigen
Seiten, die langsame Zellen haben, welche es erfordern, dass das
Muster bis in die zweiten Phase hinein ausgedehnt wird, die gesamte durchschnittliche
Programmiergeschwindigkeit der Einrichtung durch diese Ausführungsform
der vorliegenden Erfindung beibehalten, welche sicherstellt, dass
die meisten Reihen eine erfolgreiche Programmierung in weniger als
einer Millisekunde abschließen.
-
Die
vorliegende Erfindung ist besonders zweckmäßig bei der Architektur für seitenweise
Programmierung mit automatischer bitweiser (Bit für Bit) Verifizierung.
Sie stellteine effiziente, schnelle Programmierung von Flash-Speicher-Einrichtungen
in einem vollständig
automatischen Algorithmus bereit, der keine Intervention eines Host
erfordert.
-
Andere
Gesichtspunkte und Vorteile der vorliegenden Erfindung erkennt man
bei Betrachtung der Figuren, der genauen Beschreibung und der folgenden
Ansprüche.
-
KURZBESCHREIBUNG
DER FIGUREN
-
1 ist
ein schematisches Diagramm eines integrierten Speicherschaltkreis
mit Floating Gate gemäß der vorliegenden
Erfindung, wobei eine automatische Programmierung variable Pulsbreiten
und Pulshöhen
verwendet.
-
2 ist
eine vereinfachte Darstellung einer Floating Gate-Speicherzelle
für den
Zweck der Beschreibung des Programmiervorgangs.
-
3 veranschaulicht
das Muster von Wiederholungsimpulsen, bei welchen im Verlaufe des
Musters die Impulsformen in Breite und Höhe variieren.
-
4 ist
ein Blockdiagramm der für
die Erzeugung des Musters der Wiederholungsimpulse gemäß der vorliegenden
Erfindung verwendeten Logik.
-
5 ist
eine Kurve, welche den Ansatz der Verwendung einer erhöhten Pulsbreite
allein mit dem Ansatz der vorliegenden Erfindung vergleicht, welche
eine variable Pulshöhe
und Pulsbreite verwendet.
-
6 ist
eine Kurve, welche die Leistungsfähigkeit durch die Steigerung
der Pulshöhe
allein im Vergleich zu dem Ansatz der vorliegenden Erfindung zeigt,
in welcher die Pulshöhe
und die Pulsbreite gesteigert werden.
-
7 ist
eine Kurve, welche die Leistungsfähigkeit eines bevorzugten Ansatzes
der vorliegenden Erfindung und Verwendung der in den 8 bis 11 gezeigten
Architektur darstellt.
-
8 ist
schematisches Diagramm eines Arrays aus Flash EEPROM Zellen, welche
bei der vorliegenden Erfindung verwendet werden.
-
9 ist
ein schematisches Blockdiagramm eines Flash EEPROM-Arrays mit Seitenprogrammierung und
einer automatischen Verifizier- und Wiederholungsschaltung gemäß der vorliegenden
Erfindung.
-
10 ist
ein schematisches Diagramm, welches einen Abschnitt des Seitenprogrammier-
und automatischen Verifizierungsschaltkreises für zwei Speicherzellen in dem
Flash EEPROM-Array zeigt.
-
11 zeigt
ein Flußdiagramm
eines Seitenprogrammier- und automatischen Verifizierungsvorgangs gemäß der vorliegenden
Erfindung unter Verwendung eines Musters der Form von Wiederholungsimpulsen.
-
GENAUE BESCHREIBUNG
-
Eine
genaue Beschreibung bevorzugter Ausführungsformen der vorliegenden
Erfindung wird in Verbindung mit den Figuren gegeben, von denen 1 eine Übersicht
des Konzeptes einer Speichereinrichtung mit Floating Gates unter
Verwendung eines automatischen Programmieralgorithmus mit einer
Steuerlogik für die
Impulshöhe
und -breite bereitstellt. Danach enthält der in 1 dargestellte
integrierte Schaltkreis ein Speicher-Array 10 mit Floating
Gates, wie zum Beispiel einen Flash-Speicher oder EEPROM. Mit dem
Array 10 sind ein x-Decoder 11, ein y-Decoder 12 und
Durchlaßgatter 13 für die y-Richtung
verbunden, welche Zugriff auf die Bit-Leitungen des Arrays gewähren. Der
y-Decoder wählt
bestimmte Bit-Leitungen in dem Array aus, während der x-Decoder 11 bestimmte
Wortleitungen auswählt.
Adreßsignale
werden auf den Eingangsstiften bzw. -anschlüssen, die allgemein mit 14 bezeichnet
sind, an einen Adreß-Zwischenspeicher
und -puffer 15 geliefert. Der Adreß-Zwischenspeicher und -puffer 15 treibt
Leitungen 16, die mit dem x-Decoder 11 und dem y-Decoder 12 verbunden
sind. Datensignale werden durch Eingangs-/Ausgangsanschlüs se 17 an
die Dateneingangs-/-ausgangsschaltung 18 zugeführt. Die
Dateneingangs-/-ausgangsschaltung 18 führt Eingangsdaten durch einen
Programmierdatenpuffer 19 und die y-Durchlaßgatter 13 in
das Array zu. Ausgangsdaten von dem Array werden durch die y-Durchlaßgatter 13 an
Abfrage-Verstärker 20 zugeführt und
von diesen Abfrage-Verstärkern
durch die Dateneingangs-/-ausgangsschaltung 18. Andere
Eingangsgrößen der
Einrichtung umfassen Steuersignale, einschließlich einer Chipeinschaltung CE, einer Ausgangsfreigabe OE und einer Schreibfreigabe WE, die Anschlüssen bzw.
Stiften 21 zugeführt
werden. Diese Signale werden auf die Eingangslogik 22 geschaltet,
welche mit der Betriebsartlogik und der Zustandsmaschine bzw. dem
endlichen Automaten 23 kombiniert ist. Die Zustandsmaschine
gemäß der vorliegenden
Erfindung umfaßt
einen automatischen Programmieralgorithmus, wie er nachstehend noch
genauer erläutert
wird.
-
Die
Betriebsartlogik reagiert auf Befehle, die über die Adreß- und Datenleitungen 14 und 17 empfangen
werden. Demnach ist der Ausgang der Daten I/O Schaltung auf Leitung 24 nicht
nur mit dem Programmierdatenpuffer 19, sondern auch mit
der Betriebsartlogik und der Zustandsmaschine 23 verbunden.
Außerdem
werden Adreßsignale
von Leitung 16 auch auf die Betriebsartlogik und die Zustandsmaschine 23 geschaltet.
-
Gemäß einer
Ausführungsform
der Erfindung besteht das Speicher-Array 10 mit potentialfreien
Gates aus Flash EEPROM-Zellen, die gelöscht und programmiert werden
können.
Um diesen Vorgang zu bewerkstelligen, sind Spannungsquellen 25 für die Programmierung
und das Löschen
vorgesehen, welche hohe positive oder negative Spannungen für das Array
zum Zwecke der Programmierung und des Löschens der Floating Gate-Zellen
bereitstellen. Gemäß der vorliegenden
Erfindung ist eine Steuerlogik 26 für die Impulshöhe und -breite
vorgesehen, welche während
der automatischen Programmiersequenz des Chips verwendet wird, um
eine effiziente, schnelle Programmierung von Zellen in dem Array
ohne Überprogrammierung
sicherzustellen. Die Quellen 25 für die Programmier- und Löschspannung
sind unter der Steuerung der Steuerlogik für die Impulshöhe und -breite
auf Leitung 27 durch den x-Decoder 11 auf die
Wortleitungen in dem Speicher-Array 10 in dem Floating
Gate, über
Leitung 28 durch die y-Durchlaßgatter 13 weiter
auf die Bit-Leitung des Arrays und über Leitung 29 auf
die Source-Spannungsknoten des Arrays geschaltet.
-
Eine
Pumpe für
negative Ladung wird in den Programmierspannungsquellen 25 nach 1 verwendet,
um die Wortleitungen der Arrays entsprechend dem oben Gesagten zu
treiben.
-
Die
Implementierung der Ladungspumpe und der beispielhaften Schaltung,
die für
den Spannungsteiler verwendet werden kann, wird in der gleichzeitig
anhängigen
Patentanmeldung mit dem Titel "SERIES
CAPACITOR CHARGE PUMP",
Anmelde-Nr. PCT/US/03069, eingereicht am 09. März 1995, beschrieben, die durch
diese Bezugnahme hier aufgenommen ist, als ob dies hier im vollem
Umfang dargestellt wäre.
-
Das
Blockdiagramm nach 1 soll eine vollständige, integrierte
Speicherschaltkreiseinrichtung wiedergeben, die gemäß der vorliegenden
Erfindung mit dem automatischen Programmieralgorithmus verbessert ist,
der die Steuerlogik 26 für die Impulshöhe und -breite
verwendet. Demnach können
bezüglich
der Implementierung der Chip-Steuerstrukturen und der Speicher-Architekturen,
mit welchen die vorliegende Erfindung verwendet werden kann, weitere
Details unter Bezug auf kommerzielle integrierte Schaltkreise bestimmt
bzw. festgestellt werden.
-
Gemäß der vorliegenden
Erfindung ist der Programmieralgorithmus für das Speicher-Array 10 mit
potentialfreien Gates durch Verwendung der Steuerlogik für Impulshöhe und -breite
verbessert. In einem bevorzugten System beinhaltet der Programmiervorgang
das Entladen der Floating Gates in den Floating Gates-Zellen, wie
es unter Bezug auf 2 beschrieben wird.
-
2 ist
ein schematisches Diagramm einer Speicher-Zelle mit Floating Gate,
welche ein Steuer-Gate 40,
eine Source 41, eine Drain 42 und ein Floating
Gate 43 enthält.
Während
der Programmierung wird das Steuergerät einer zu programmierenden
Zelle gemäß der vorliegenden
Erfindung mit einer Wortleitung verbunden, welche die Wortleitungsspannung
von –8
V erhält.
Der Source-Anschluß 41 wird
bzw. ist mit der Array-Referenzspannung VSS verbunden, die während des
Programmiervorgangs mit Masse verbunden oder schwebend (floating)
gehalten wird. Die Drain 42 ist mit einer Bit-Leitung verbunden,
die ein Impulsmuster gemäß der vorliegenden
Erfindung für
das automatische Programmieren der Zelle empfängt. Das Impulsmuster sieht
in einer Ausführungsform
der Erfindung einen positiven Impuls in dem Bereich von 5,5 V bis
6,5 V vor, was zu einem Vorgang führt, der als Fowler-Nordheim-Tunneln
von Elektronen aus dem Floating Gate in die Drain bekannt ist, wie
es durch den Pfeil 44 angezeigt wird. Wenn Elektronen aus
dem Floating Gate 43 entfernt werden, wird der Einschaltschwellwert
der Zelle mit dem Floating Gate reduziert. Demnach wird bei einem
Speicher-Array 10 mit Floating Gates, welches ein Entladen
des Floating Gate als den programmierten Zustand verwendet, eine
ausgewählte
Zelle in Reaktion auf eine Lesespannung leitfähig, welche die Bit-Leitung
herabzieht, mit welcher die Zelle verbunden wird, wenn sie ausgewählt ist.
In alternativen Systemen kann der umgekehrte Zustand als der programmierte
Zustand verwendet werden, was das Laden des Floating Gates umfasst,
so dass sein Schwellwert erhöht
wird. Wenn der erhöhte
Schwellwert als der programmierte Zustand für das Speicher-Array mit Floating
Gate verwendet wird, ist die Zelle nicht leitfähig, wenn auf sie zugegriffen
wird und zieht die entsprechende Bit-Leitung nicht herab.
-
Wie
oben erwähnt,
wird an der Drain 42 der Floating Gate-Zelle, die programmiert
wird, ein Impulsmuster gemäß der vorliegenden
Erfindung angelegt. Ein beispielhaftes Impulsmuster ist in 3 wiedergegeben.
Demnach wird gemäß der Ausführungsform
nach 3 das Steuer-Gate der Zelle, die programmiert wird,
auf –8
V eingestellt, während
die Drain eine Folge aus einem oder mehreren Programmierimpulsen
empfängt,
um die Zelle zu programmieren. Ein erster Programmierimpuls 60 wird
an der Drain der Floating Gate-Zelle, die programmiert werden soll,
angelegt. Der erste Pro grammierimpuls hat eine Impulsbreite von 100
Mikrosekunden und eine Impulshöhe
von 5 V. Nach dem ersten Impuls 60 wird in dem Intervall 61 ein
Programmier-Verifizierungsvorgang ausgeführt. Wenn die Zelle den Verifizierungstest
besteht, der während
des Intervalls 61 ausgeführt wird, so werden an der
Zelle keine weiteren Impulse angelegt. Wenn sie die Verifizierung
jedoch nicht besteht bzw. nicht positiv durchläuft, so wird erneut ein Programmierwiederholungsimpuls 62 an
der Drain angelegt. In der in 3 dargestellten
Ausführungsform
ist die Impulsbreite des Wiederholungsimpulses 62 100 Mikrosekunden
und die Impulshöhe
beträgt
5,5 V. Demnach ist die Impulshöhe
in dem zweiten Impuls in der Sequenz erhöht, jedoch nicht die Impulsbreite.
Wie zuvor wird nach dem zweiten Impuls ein Verifizieralgorithmus
ausgeführt.
Wenn die Zelle diesen besteht, so werden keine weiteren Impulse
angelegt. Wenn die Zelle ihn jedoch nicht besteht, so wird ein zweiter
Wiederholungsimpuls 63 angelegt. Der zweite Wiederholungsimpuls
hat in diesem Beispiel eine Impulsbreite von 200 Mikrosekunden und
eine Impulshöhe
von 5,5 V. Demnach ist die Impulsenergie durch Verdoppeln der Breite
des Impulses im Vergleich zu dem ersten Wiederholungsimpuls 62 erhöht, jedoch
nicht durch Vergrößern der
Impulshöhe.
Wenn nach dem zweiten Wiederholungsimpuls 63 der Verifizierungsalgorithmus
nicht erfolgreich ist, so wird ein dritter Wiederholungsimpuls 64 angelegt.
Der dritte Wiederholungsimpuls 64 hat eine Impulsbreite
von 400 Mikrosekunden und eine Impulshöhe von 5,5 V. Demnach wird
die Impulsenergie relativ zu dem zweiten Wiederholungsimpuls 63 durch Verdoppeln
der Breite erneut verdoppelt. Die Impulshöhe wird jedoch in diesem Stadium
nicht gesteigert. Nach dem dritten Wiederholungsimpuls 64 wird
ein Verifizierungsalgorithmus ausgeführt. Wenn die Zelle die Verifizierung
immer noch nicht positiv durchläuft,
so wird an der Drain ein vierter Wiederholungsimpuls 65 angelegt. Der
vierte Wiederholungsimpuls hat eine Höhe von 8 V und eine Impulsbreite
von 800 Mikrosekunden. Demnach ist der vierte Impuls zweimal so
breit wie der dritte Wiederholungsimpuls 64 und hat auch
eine größere Impulshöhe. Erneut
wird nach dem vierten Wiederholungsimpuls eine Verifizierungsschleife
ausgeführt.
Wenn die Zelle die Verifizierung nicht positiv durchläuft, so
wird eine Folge zusätzlicher
Wiederholungsimpulse, wie zum Beispiel des Impulses 66,
ausgeführt,
bis die Zelle verifiziert ist oder bis eine maximale Anzahl von
Wiederholungen ausgeführt
worden ist. Gemäß einer
Ausführungsform
sind die Wiederholungsimpulse nach dem Impuls 65 allesamt
800 Mikrosekunden breit und haben eine Höhe von 6 V. Eine Folge von
acht dieser 800 Mikrosekunden-Impulse wird angelegt. Wenn die Zelle
nach diesen acht Impulsen von 800 Mikrosekunden die Verifizierung
nicht besteht, so wird ein Fehler angezeigt.
-
Wie
in 3 dargestellt, umfasst das Impulswiederholungsmuster
eine erste Phase, die weniger als 1000 Mikrosekunden breit ist,
und eine zweite Phase. Das Muster wird so ausgewählt, daß man erwarten kann, daß im wesentlichen
alle Zellen in dem Array innerhalb der ersten Phase programmiert
werden, so daß die durchschnittliche
Programmiergeschwindigkeit der Zellen in dem Array bestimmt wird
durch Bereitstellen der Breite der ersten Phase (in diesem Beispiel
1000 Mikrosekunden) geteilt durch die Anzahl von Zellen, die während des
Programmierzyklus parallel programmiert werden. Die Zelle, die zufälligerweise
während
der ersten Phase nicht programmiert worden ist, erfordert für diese
spezielle Zelle einen längeren
Programmierzyklus. Die durchschnittliche Program miergeschwindigkeit
für das
gesamte Array wird jedoch durch die Spezifizierung bestimmt, welche
durch die Länge
der ersten Phase des Programmierzyklus bestimmt wird.
-
Zusätzlich sind
die Programmierzyklen während
der ersten Phase so ausgelegt, dass sie ein Überprogrammieren von "schnellen" Zellen verhindern,
während
sie das Programmieren "langsamer" Zellen während dieser
ersten Phase sicherstellen. Demnach ist der erste Programmierimpuls 60 dafür ausgelegt,
daß es
sehr unwahrscheinlich ist, daß irgendeine
bestimmte Zelle, welche diesen Impuls empfängt, überprogrammiert ist. Dies führt bei
vielen Zellen in den Arrays dazu, daß sie die Verifizierung während des
ersten Verifizierungsalgorithmus 61 nicht positiv durchlaufen.
In ähnlicher
Weise hat der Wiederholungsimpuls 62 eine geringfügig erhöhte Energie
relativ zu dem ersten Impuls 60 und wird so ausgewählt, dass
Zellen, die nach dem ersten Impuls die Verifizierung nicht positiv
durchlaufen bzw. bestanden haben, durch den zweiten Impuls wahrscheinlich
nicht überprogrammiert
werden. Wie man in 3 erkennen kann, sind die Wiederholungsimpulse während der
ersten Phase allesamt in ihrer Energie gesteigert und zwar entweder
durch Erhöhen
der Höhe der
Impulse oder durch Erhöhen
der Breite der Impulse. Eine Kombination, die sowohl das Erhöhen der
Impulshöhe
als auch der Impulsbreite verwendet, kann verwendet werden je nach
dem, wie es den Bedürfnissen einer
bestimmten Zell-Architektur entspricht. Die vorliegende Erfindung
beruht auf der Erkenntnis, dass eine Erhöhung der Impulshöhe einen
größeren Einfluß auf die
Programmiergeschwindigkeit hat als eine Steigerung der Impulsbreite,
die hinsichtlich des Integrals der Impulshöhe über die Impulsbreite äquivalent
ist. Beispielsweise nimmt in einer Ausführungsform der Architektur,
die in 8 unten dargestellt ist, die Programmiergeschwindigkeit
für jeweils
2 V Steigerung in der Größe der Wortleitungsspannung
um etwa eine Größenordnung zu
und sie nimmt für
jede Steigerung um 1,5 V in der Größe der Bit-Leitungsvorspannung
um etwa eine Größenordnung
zu. Eine Erhöhung
hinsichtlich des Zeitablaufs allein erfordert jedoch einen um eine
Größenordnung
breiteren Impuls bei einer um 2 V niedrigeren Vt bei einer gegebenen
Impulshöhe.
Wie unten noch genauer beschrieben wird, liefert die Impulshöhen- und
-breitensteuerung gemäß der vorliegenden
Erfindung eine beträchtlich
gesteigerte Leistungsfähigkeit
gegenüber
Systemen nach dem Stand der Technik.
-
4 zeigt
die Steuerlogik für
die Impulshöhe
und -breite, die für
die Programmier- und Lösch-Spannungsquellen 25 der
vorliegenden Erfindung verwendet wird. Diese Steuerlogik weist einen
Taktgenerator 70 auf, der ein Taktsignal CLK für einen
Takt-Teiler 71 bereitstellt. Der Ausgang des Takt-Teilers 71 besteht
aus einem Satz von Steuersignalen OSCMUX, die auf einen Zeitgeber 72 geschaltet
werden, welcher das Zeitablaufsignal für die Programmierimpulse auf
Leitung 73 zuführt.
Ein Zähler 74 für die Programmierwiederholung ist
in der Logik enthalten, welcher die Anzahl der Wiederholungen oder
die Impulsanzahl an die Kombinationslogik 75 liefert. Die
Kombinationslogik 75 führt
Steuersignale an den Takt-Teiler 71 zu, der die Pulsbreite
jedes Impulses spezifiziert. Die Kombinationslogik 75 treibt
auch eine Ladungspumpe und einen Teiler 76, welcher die
positive Spannung für
die Drain zuführt.
Dieser Teiler führt
ein Spannungssteuersignal VTEN an einen Refe renzgenerator 77 zu.
Der Referenzgenerator 77 führt eine Referenzspannung BLISOB
an einen Steuertransistor 78 zu, der mit den Bit-Leitungen
in dem Array auf Leitung 79 verbunden ist. Die andere Seite
des Transistors 70 wird mit dem Strom- bzw. Leistungssignal 80 der
Datenleitung verbunden. Das Niveau des Impulses wird durch das Signal
BLISOB am Gate des Transistors 78 festgelegt. Dieses Signal
wird so eingestellt, dass es eine Schwellwertspannung oberhalb der
gewünschten
Impulshöhe
ist. Die Leistung der Datenleitung auf Leitung 80 wird
oberhalb der maximalen Impulshöhe
eingestellt und wird durch die Ladungspumpe in dem System konstant
gehalten.
-
Die
bevorzugte Implementierung des Eingangs-/Ausgangsschaltkreises,
der die Programmierspannung für
das Array gemäß der vorliegenden
Erfindung treibt, ist unten in 10 dargestellt.
Der Transistor 78 nach 4 entspricht
den Transistoren 502 und 508 in 10.
Die Bit-Leitung 79 des Arrays nach 4 entspricht
den metallischen Bit-Leitungen 143 und 152 nach 10.
Die Stromversorgung der Datenleitung auf Leitung 80 nach 4 entspricht
den Leitungen 574 und 576 in 10,
welche ihren Strom aus dem Signal DLPWR auf Leitung 586 über Transistoren 528 bzw. 530 bzw. 538 bzw. 540 erhalten.
Das Steuersignal TPGMEND auf Leitung 73 wird verwendet,
um den Zeitablauf der Steuersignale BLISOB, DLCTL und DMWL nach 10 zu
steuern. Der Programmierimpuls wird beendet, indem DLCTL auf 0 V
getrieben wird, was das Signal DLPWR auf Leitung 586 von
der Leitung 574 trennt und gleichzeitig DMWL hochtreibt,
was die Datenleitung 574 auf 0 V zieht, um den Programmierimpuls
zu beenden. Gleichzeitig wird das BLISOB-Signal, welches durch den
Referenzgenerator 77 nach 4 zugeführt wird,
in Vorbereitung der Programmierverifizierungssequenz auf VCC geschaltet.
-
Die 5 bis 7 sind
Kurven, welche die Verbesserung in der Leistungsfähigkeit
veranschaulichen, welche durch den Autoprogrammierungsalgorithmus
der kontrollierten Impulshöhe
und Impulsbreite gemäß der vorliegenden
Erfindung gewährleistet
wird. Zunächst
stellt 1 einen Vergleich zwischen einem Algorithmus nach
dem Stand der Technik, bei welchem nur die Impulsbreite variiert
wird, mit der vorliegenden Erfindung dar, bei welcher sowohl die
Impulshöhe
als auch die Impulsbreite variiert wird. Das Muster der Impulsbreite
und Impulshöhe
ist so ausgewählt
worden, dass die Energien zwischen den aufeinanderfolgenden Impulsen
im wesentlichen äquivalent
sind.
-
Entlang
der horizontalen Achse ist die Programmierdauer in Mikrosekunden
auf einer logarithmischen Skala wiedergegeben. Entlang der vertikalen
Achse ist die resultierende Schwellwertspannung für die Zelle wiedergegeben.
Die Grafiken bzw. Diagramme zeigen eine Simulation eines kontinuierlichen
Programmierimpulses. Dieser gibt die Folge von Impulsen ohne Verifizierungsintervalle
dazwischen wieder. Auch die Zielprogrammierung VT wird mit etwa
3 V ausgewählt.
Ein Überprogrammierungszustand
wird dann als gegeben angesehen, wenn VT etwa 0,5 V erreicht.
-
Die
Leistungsfähigkeit
ist für
fünf Zell-Zustände wiedergegeben.
Der erste Zell-Zustand, der auf der Bahn bzw. Kurve 200 wieder
für eine
variierende Impulshöhe
und -breite wiedergegeben ist, und auf Bahn 200' nur für eine variierende
Breite wiedergegeben ist, entspricht einer Zelle, die schnell programmiert
wird und hat einen "schnellen
Schaltkreis". Mit "schnellem Schaltkreis" ist gemeint, dass
die Vorspannung auf der Bit-Leitung, die auf diese Zelle geschaltet
wird, höher
ist (in diesem Beispiel um etwa ein halbes V) als die normale Vorspannung
auf dem Array. Dies führt
zu einer sehr schnell programmierten Zelle, was bei den modernen
Architekturen hoher Dichte gelegentlich auftreten kann. Der zweite
Zustand auf der Bahn 201, bei welcher der Algorithmus der
vorliegenden Erfindung verwendet wird, und auf der Bahn 201,
bei welcher nur die Pulsbreite variiert wird, betrifft eine Zelle,
die mit normaler Vorspannung schnell in den programmierten Zustand
geht. Der dritte Zustand auf der Bahn 202 und der Bahn 202' zeigt eine
typische Zelle in dem Array. Der vierte Zustand auf den Bahnen 203 und 203' veranschaulicht
die Programmiereigenschaften einer langsamen Zelle in dem Array.
Der letzte Zustand auf den Bahnen 205 und 205' zeigt die Programmiereigenschaften
einer Zelle in dem Array, die nur langsam programmierbar ist und
die mit einem "langsamen
Schaltkreis" verbunden
ist. Mit "langsamen
Schaltkreis" ist
gemeint, dass die Bit-Leitung eine niedrigere Spannung erhält (in diesem
Beispiel um etwa ein halbes V) als die normale Bit-Leitung in dem
Array.
-
Die
geänderten
Zustände
bzw. Bedingungen der Pulshöhe
und Pulsbreite für
die Grafik in 5 sind in der nachstehenden
Tabelle 1 wiedergegeben.
-
-
Die
Leitungen für
den Algorithmus mit variierender Pulsbreite nehmen eine konstante
Drain-Spannung von
6 V bei einer Gate-Spannung von –8 V an. Demnach kann man erkennen,
dass die Impulshöhe
bei dem Pulshöhen-/Pulsbreitenalgorithmus,
wie er für
diesen Vergleich verwendet wird, niedriger beginnt (5 V/–8 V) als
die Pulshöhe
(6 V/–8
V) des Algorithmus mit variierender Pulsbreite. Er endet außerdem auch
mit einer größeren Impulshöhe (6,5
V bis 7,5 V/–8
V) für
die letzten vier Impulse in der Sequenz.
-
Man
kann erkennen, daß für eine schnelle
Zelle mit einem schnellen Schaltkreis der Algorithmus 200' mit variierender
Pulsbreite zu einer viel schnelleren Programmierung führt (größere anfängliche
Pulshöhe)
und eine größere Gefahr
der Überprogrammierung
hat, als der Algorithmus 200 mit variierender Pulsbreite
und Pulshöhe
gemäß der vorliegenden
Erfindung.
-
Die
Leistungsfähigkeit
bzw. Eigenschaften der typischen Zelle 202/202' ist ähnlich,
wobei der Algorithmus der vorliegenden Erfindung etwas langsamer
programmiert. Für
die langsame Zelle in dem Array (203, 203') kann man erkennen,
dass der Algorithmus mit variierender Pulshöhe und Pulsbreite viel schneller
zu einer programmierten Zelle führt
als bei einer langsamen Zelle, für
die nur die variierende Pulsbreite verwendet wird. Für die Zelle,
die sowohl langsame Programmiereigenschaften als auch einen langsamen
Schaltkreis hat (204, 204') ist der Ansatz nach dem Stand
der Technik mit lediglich variierender Pulsbreite unannehmbar langsam
und führt
dazu, daß viele
Matrizen bzw. Rohchips als nicht bearbeitbar verworfen werden.
-
6 ist
eine Grafik, welche die Leistungsfähigkeit bei nur variierender
Pulshöhe
gegenüber
der variierenden Pulsbreite und Pulshöhe gemäß der vorliegenden Erfindung
vergleicht. Wie zuvor ist die horizontale Achse die Programmierzeit
auf einer logarithmischen Skala. Die vertikale Achse ist die sich
ergebende Schwellwertspannung.
-
Der
Algorithmus für
variierende Pulshöhe
und Pulsbreite, der für
diesen Vergleich verwendet wird, ist ebenfalls in Tabelle 1 wiedergegeben.
Für den
Algorithmus mit variierender Pulshöhe ist jeder Puls 100 Mikrosekunden
breit, die Drain-Spannung wird von 0,3 V-Schritten von 5 V bis 7,4
V variiert und die Gate-Spannung wird in 0,4 V-Schritten von –8 V bis –11,2 V
variiert. Der Algorithmus mit variierender Pulshöhe/Pulsbreite für die schnelle
Zelle mit schnellem Schaltkreis ist auf Kurve 210 wiedergegeben,
Kurve 211 zeigt die Leistungsfähigkeit für die schnelle Zelle, Kurve 212 zeigt
die Leistungsfähigkeit
der typischen Zelle, Kurve 213 die Leistungsfähigkeit
der langsamen Zelle. Kurve 214 zeigt die Leistungsfähigkeit
der langsamen Zelle mit dem langsamen Schaltkreis. Die entsprechenden
Kurven für
den Algorithmus mit nur variierender Pulshöhe weisen die Kurve 210' für die schnelle
Zelle und den schnellen Schaltkreis, die Kurve 211' für den schnellen
Schaltkreis, die Kurve 212' für die typische
Zelle, die Kurve 213' für die langsame
Zelle und die Kurve 214' für die langsame Zelle
mit dem langsamen Schaltkreis auf.
-
Man
kann erkennen, daß der
Algorithmus mit nur variierender Pulshöhe in der Lage ist, selbst
bei der langsamen Zelle und dem langsamen Schaltkreis (214') relativ schnell
zu programmieren. Der Spannungsbereich, der verwendet wird, um dieses
Ergebnis zu erzielen, erfordert sehr hohe Spannung auf der Wortleitung und/oder
Drain. Diese sehr hohen Spannungen erhöhen das Risiko der Störung von
Zellen, die nicht programmiert werden sollen. In Richtung des Endes
des Zyklus erfordert die Wortleitung in diesem Beispiel etwa –11 V. Selbst
wenn die Drain einer nicht-ausgewählten Zelle geerdet ist, erzeugt
dies ein beträchtliches
Feld auf der nicht-ausgewählten
Zelle. Dies kann man erkennen, wenn man versteht, daß der erste
Impuls bei diesem Algorithmus mit variierender Pulshöhe ein Feld
von –13
V erzeugt, welches sehr nahe an der Spannung der Wortleitung für die späteren Pulse
in dem Strom liegt. Weiterhin erfordert der Algorithmus der Impulshöhe für die Implementierung
eine kompliziertere Schaltung als der Algorithmus mit variierender
Pulshöhe
und Pulsbreite gemäß der vorliegenden
Erfindung. Die Leistungsfähigkeit
hinsichtlich der Geschwindigkeit des Programmierzyklus des Algorithmus
mit variierender Pulshöhe
und Pulsbreite ist immer noch sehr gut, selbst im Vergleich mit
dem Algorithmus mit variierender Impulshöhe, der sehr hohe Spannungen
verwendet, wie es in 6 dargestellt ist.
-
7 zeigt
die Leistungsfähigkeit
eines weiteren Beispiels eines Algorithmus mit variierender Pulsbreite
und Pulshöhe
gemäß der vorliegenden
Erfindung. Das Muster gemäß dieser
Ausführungsform
ist in Tabelle 2 wiedergegeben.
-
-
Die
horizontale Achse in 7 gibt die Programmierzeit auf
einer logarithmischen Skala in Mikrosekunden wieder. Die vertikale
Achse zeigt die sich ergebende Schwellwertspannung mit einem angestrebten Schwellwert
bei 3 V und einer Spezifizierung der Überprogrammierung bei 0,5 V.
Unter Verwendung des in Tabelle 2 wiedergegeben Musters erreicht
die schnelle Zelle auf einem schnellen Schaltkreis, die auf Kurve 220 gezeigt
ist, den Schwellwert der Überprogrammierung
nicht nach dem ersten Impuls. Die auf Bahn 221 dargestellte
Zelle liegt beträchtlich
oberhalb des Schwellwerts der Überprogrammierung.
Die typische Zelle, die auf Bahn 222 wiedergegeben ist,
wird durch den ersten Impuls von 100 Mikrosekunden nicht programmiert
(VT nicht unter 3 V) jedoch ist die typische Zelle nach dem zweiten
100 Mikrosekunden Impuls unter den Zielwert VT von 3 V programmiert,
jedoch nicht überprogrammiert.
Die auf Bahn 223 gezeigte langsame Zelle schneidet den
VT-Schwellwert von
3 V sehr nahe an dem Zielwert bei 1000 Mikrosekunden. Die langsame
Zelle mit dem langsamen Schaltkreis, die auf der Kurve 224 gezeigt
ist, erreicht den Zielwert des VT-Schwellwerts erst bei etwa 5000 Mikrosekunden.
-
Der
Algorithmus mit variierender Pulshöhe und Pulsbreite kann eingestellt
werden, wie es den Bedürfnissen
einer bestimmten Implementierung entspricht, um die Leistungsfähigkeit
für eine
langsame Zelle zu verbessern und die Wahrscheinlichkeit der Überprogrammierung
zu vermindern, während
die durchschnittliche Gesamtprogrammierzeit auf einem optimalen
Wert gehalten wird, der schneller ist, leichter zu implementieren ist
und weniger leicht eine Störung
von benachbarten Zellen hervorruft, als bei Systemen nach dem Stand
der Technik.
-
8 veranschaulicht
eine Architektur des Flash EEPROM Arrays gemäß einer Ausführungsform
der vorliegenden Erfindung, bei welchem zwei Spalten von Flash EEPROM-Zellen
eine einzelne metallische Bit-Leitung gemeinsam verwenden. 8 zeigt
vier Paare von Spalten in dem Array, wobei jedes Paar von Spalten
Flash EEPROM-Zellen in einer Drain-Source-Drain-Konfiguration zeigt.
-
Demnach
enthält
das erste Paar 120 von Spalten eine erste Drain-Diffusion-Zuleitungsleitung 121, eine
Source-Diffusionsleitung 122 und eine zweite Drain-Diffusionsleitung 123.
Wortleitungen WL0 bis WL63 liegen jeweils über den Floating Gates einer
Zelle in einem ersten der Paare von Spalten und einer Zelle in dem
zweiten des Paares von Spalten. Wie in der Figur dargestellt, enthält ein erstes
Paar 120 von Spalten eine Spalte mit den Zellen 124, 125, 126 und 127.
Nicht dargestellt sind Zellen, die mit Wortleitungen WL2 bis WL61 verbunden
sind. Die zweite aus dem Paar 120 von Spalten enthält die Zellen 128, 129, 130 und 131.
Entlang derselben Spalte des Arrays ist ein zweites Paar 135 von
Spalten dargestellt. Es hat eine ähnliche Architektur, wie das
Paar 120 von Spalten mit Ausnahme der Tatsache, daß es spiegelbildlich
ausgebildet ist.
-
Wie
man sieht, enthält
demnach der Transistor in dem ersten Paar von Spalten, wie zum Beispiel
der Zelle 125, eine Drain in der Drain-Diffusionsleitung 121 und
eine Source in der Source-Diffusionsleitung 122. Ein
Floating Gate liegt über
dem Kanalbereich zwischen der ersten Drain-Diffusionsleitung 121 und der
Source-Diffusionsleitung 122. Die Wortleitung WL1 liegt über dem
Floating Gate der Zelle 125, um eine Flash EEPROM-Zelle
bereitzustellen.
-
Das
Spaltenpaar 120 und das Spaltenpaar 135 verwenden
eine virtuelle Massendiffusion 136 des Arrays (ARVSS) gemeinsam.
Demnach ist die Source-Diffusionsleitung 122 des Spaltenpaares 120 mit
der Massendiffusion (Massendiffusionsleitung) 136 verbunden.
In ähnlicher
Weise ist die Source-Diffusionsleitung 137 des Spaltenpaars 135 mit
der Massendiffusion (durch Diffusion hergestellte Masseleitung) 136 verbunden.
-
Wie
oben erwähnt,
verwendet jedes Paar 120 von Spalten von Zellen eine einzelne
Metalleitung gemeinsam. Demnach sind ein rechter Block Auswahl-Transistoren 138 und
ein linker Block Auswahl-Transistoren 139 enthalten. Der
Transistor 139 weist eine Drain in der Drain-Diffusionsleitung 121,
eine Source, die mit einem Metallkontakt 140 verbunden
ist, und ein Gate, das mit dem Steuersignal BLTR1 auf Leitung 141 verbunden
ist, auf. In ähnlicher
Weise weist der rechte Auswahl-Transistor 138 eine
Source in der Drain-Diffusionsleitung 123, eine mit dem
Metallkontakt 140 verbundene Drain und ein Gate auf, welches
mit dem Steuersignal BLTR0 auf Leitung 142 verbunden ist.
Demnach stellt der Auswahl-Schaltkreis, der die Transistoren 138 und 139 enthält, eine
selektive Verbindung der ersten Drain-Diffusionsleitung 121 und
der zweiten Drain-Diffusionsleitung 123 mit der metallischen
Leitung 143 (MTBL0) durch den metallischen Kontakt 140 bereit.
Wie man erken nen kann, enthält
das Spaltenpaar 135 einen linken Auswahl-Transistor 144 und
einen rechten Auswahl-Transistor 145, die in ähnlicher
Weise mit einem Metallkontakt 146 verbunden sind. Der Kontakt 146 ist mit
derselben metallischen Leitung 143 verbunden, wie der Kontakt 140,
der mit dem Spaltenpaar 120 verbunden ist. Die Metalleitung
kann mit einer zusätzlichen
Auswahlschaltung durch mehr als zwei Spalten von Zellen gemeinsam
verwendet werden.
-
Die
in 3 dargestellte Architektur beruht auf einer Drain-Source-Drain-Einheit,
die zwei Spalten von Zellen bildet, welche gegenüber benachbarten Drain-Source-Drain-Einheiten
isoliert sind, um einen Leckstrom zwischen benachbarten Spalten
von Zellen zu verhindern. Die Architektur kann erweitert werden
auf Einheiten mit mehr als zwei Spalten, mit geeigneten Toleranzen
für den
Leckstrom in der Abfrage-Schaltung oder mit anderen Steuerungen
bezüglich
des Leckstromes von nicht-ausgewählten
Zellen. Demnach könnten
beispielsweise vierte und fünfte
Diffusionsleitungen innerhalb eines gegebenen isolierten Bereichs
hinzugefügt werden,
um eine Drain-Source-Drain-Source-Drain-Struktur
zu erzeugen, die vier Spalten von Zellen vorsieht.
-
Spaltenpaare
sind horizontal und vertikal ausgelegt, um ein Array aus Flash EEPROM-Zellen
bereitzustellen, welches M-Wortleitungen und 2N-Spalten aufweist.
Das Array erfordert nur N-metallische Bit-Leitungen, von denen jede
mit einem Paar von Spalten von Flash EEPROM-Zellen durch eine Auswahl-Schaltung verbunden
ist, wie oben beschrieben.
-
Auch
wenn die Figur nur vier Spaltenpaare 120, 135, 150 und 151 zeigt,
die mit zwei metallischen Bit-Leitungen 143 und 152 (MTBL0–MTBL1)
verbunden sind, kann das Array in horizontaler und vertikaler Richtung
je nach Erfordernis wiederholt bzw. erweitert werden, um ein Flash
EEPROM-Speicher-Array
in großem
Maßstab
bereitzustellen. Demnach sind die Spaltenpaare 120 und 150,
die eine Wortleitung gemeinsam verwenden, in horizontaler Richtung
wiederholt, um ein Segment des Arrays bereitzustellen. Segmente
werden in vertikaler Richtung wiederholt. Eine Gruppe von Segmenten
(beispielsweise acht Segmente), die entsprechende Wortleitungen
haben, welche mit einem gemeinsam verwendeten Wortleitungstreiber
verbunden sind, können
als ein Sektor des Arrays betrachtet werden.
-
Das
Layout des Arrays ist kompakt wegen der Konfiguration mit virtueller
Masse, des reduzierten Erfordernisses für den Metallabstand des Layouts
und weiterhin durch die Fähigkeit,
die Wortleitungstreiber für eine
Mehrzahl von Reihen in verschiedenen Segmenten gemeinsam zu verwenden.
Demnach kann die Wortleitung WL63' einen Wortleitungstreiber gemeinsam
mit der Wortleitung WL63 verwenden. In einem bevorzugten System
verwenden acht Wortleitungen gemeinsam einen einzelnen Wortleitungstreiber.
Demnach wird nur der Wiederholabstand eines einzigen Wortleitungstreiberschaltkreises
zum nächsten
für jeweils
einen Satz von acht Reihen von Zellen benötigt. Die zusätzliche
Decodierung, die durch die linken und rechten Auswahl-Transistoren
bereitgestellt wird (139, 138 für das Segment 120)
ermöglicht
die Konfiguration einer gemeinsam verwendeten Wortlei tung. Die Konfiguration
der gemeinsam verwendeten Wortleitung hat den Nachteil, daß während eines
Sektor-Löschvorgangs
acht Reihen von Zellen allesamt dieselbe Wortleitungsspannung empfangen,
was eine Wortleitungsstörung
in Zellen hervorruft, die nicht gelöscht werden sollen. Wenn dies
für ein
gegebenes Array ein Problem darstellt, kann dieses Störungsproblem
beseitigt werden, indem man sicherstellt, daß alle Sektor-Löschvorgänge für Segmente
decodieren, die alle Reihen von Zellen einschließen, die mit den gemeinsam
verwendeten Wortleitungstreibern verbunden sind. Für acht Wortleitungen,
die einen einzelnen Treiber gemeinsam verwenden, kann ein minimales
Sektor-Löschen
von acht Segmenten erwünscht
sein.
-
9 ist
ein schematisches Blockdiagramm eines Flash EEPROM Arrays, welches
gewisse Merkmale der vorliegenden Erfindung veranschaulichen soll.
Demnach enthält
das Flash EEPROM-Speichermodul, das
in 9 dargestellt ist, ein Haupt-Flash EEPROM Array
mit Sektoren 170-1, 170-2, 170-3, 170-N,
wobei jeder Sektor acht Segmente (beispielsweise SEG0–SEG7) enthält. Eine
Mehrzahl von Sätzen
gemeinsam verwendeter Wortleitungstreiber 171-1, 171-2, 171-3, 171-N wird
verwendet, um die gemeinsam verwendeten Wortleitungen von acht Segmenten
in den entsprechenden Sektoren anzusteuern. Wie es bezüglich der
gemeinsam verwendeten Wortleitungstreiber 171-1 dargestellt
ist, gibt es 64 gemeinsame Treiber für den Sektor 170-1.
Jeder der 64 Treiber liefert eine Ausgangsgröße auf Leitung 172.
Jede dieser Ausgangsgrößen wird verwendet,
um acht Wortleitungen in entsprechenden Segmenten des Sektors 170-1 anzusteuern,
wie es in der Figur schematisch durch die Aufteilung in acht Sätze von
64 Linien veranschaulicht wird.
-
Weiterhin
ist mit dem Array eine Mehrzahl von Block-Auswahl-Treibern 173-1, 173-2, 173-3, 173-N verbunden.
Die Block-Auswahl-Treiber treiben jeweils ein linkes und ein rechtes
Auswahl-Signal für
jedes Segment. Wo die Segmente, wie in 8 dargestellt,
implementiert sind, wird ein BLTR1 und ein BLTR0-Block-Auswahl-Signalpaar
für jeden
Satz von 64 Wortleitungen zugeführt.
-
Zusätzlich gibt
es N-globale Bit-Leitungen in dem Flash EEPROM Array. Die N-Bit-Leitungen
werden verwendet, um einen Zugriff auf die 2N-Spalten von Flash
EEPROM-Zellen in dem Array für
den Dateneingangsschaltkreis und die Abfrage-Verstärker 191 zu
ermöglichen.
Der Spalten-Auswahl-Decoder 175 ist
mit Bit-Zwischenspeichern 190 für die Seitenprogrammierung
verbunden, welche zumindest einen Bit-Zwischenspeicher für jede der
N-Bit-Leitungen umfassen. Auch der Spalten-Auswahl-Decoder 175 ist mit
dem Dateneingangsschaltkreis und den Abfrage-Verstärkern 191 verbunden.
Die Datenbusleitung 192 ist 16 Bit breit und stellt Eingangsdaten
für den
Dateneingangsschaltkreis und Abfrage-Verstärker 191 bereit. Die
Datenbusleitung 192 stellt außerdem 16 Bits an Ausgangsdaten
bereit. Gemeinsam stellen diese Schaltkreise die Dateneingabe- und
-ausgabeschaltung für
die Verwendung mit dem Flash EEPROM Array bereit.
-
Die
N Bit-Leitungen 174 sind mit einem Spaltenauswahl-Decoder 175 verbunden.
In einem bevorzugten System ist für insgesamt 1024 Bit-Leitungen
N = 1024. Die Blockauswahl-Treiber 173-1 bis 173-N sind
mit einem Block-Decoder 176 verbunden. Die gemeinsam verwendeten
Wortleitungstreiber 171-1 bis 171-N sind mit einem
Reihen-Decoder 177 verbunden. Der Spaltenauswahl-Decoder 175,
der Block-Decoder 176 und der Reihen-Decoder 177 empfangen
Adreßsignale
auf der Adreßeingangsleitung 178.
-
Mit
dem Spaltenauswahl-Decoder 175 ist der Block 190 der
Bit-Zwischenspeicher/Verifizierung für die Seitenprogrammierung
verbunden. Der Block 190 für die Bit-Zwischenspeicher/Verifizierung
der Seitenprogrammierung enthält
N Zwischenspeicher, jeweils einen für die N Bit-Leitungen. Demnach
kann eine Seite von Daten als N Bit-breit angesehen werden, wobei
jede Reihe von Zellen zwei Seiten, nämlich Seite 0 und Seite 1,
breit ist. Seiten in einer gegebenen Reihe werden ausgewählt unter
Verwendung der linken und rechten Decodierung, die oben beschrieben
wurde. Der Block 190 der Bit-Zwischenspeicher/Verifizierung
für die
Seitenprogrammierung enthält
eine Verifizierschaltung für
Daten, die in den N Bit-Schaltern bzw. -Zwischenspeichern und der
N Bits-breiten Seite von Daten gespeichert sind, die in eine ausgewählte Reihe
von Zellen in dem Array programmiert sind. Ein Beispiel dieser Schaltung
wird nachstehend beschrieben. Ausführbare Spannungsquellen 179 werden
verwendet, um die Bezugspotentiale für den Lese-, Programmier- und
Löschbetrieb
für das
Flash EEPROM Array zuzuführen,
wie es in seiner Konzeption in der Figur dargestellt und oben beschrieben
wurde, und zwar durch die Wortleitungstreiber 171-1 bis 171-N und
durch die Bit-Leitungen.
-
Die
virtuellen Masseleitungen in dem Array sind mit dem virtuellen Massetreiber 181 verbunden
und stellen Potentiale für
die verschiedenen Betriebsarten an den virtuellen Masseanschlüssen in
dem Array bereit. Außerdem
sind p-well und n-well Referenz-Spannungsquellen 199 mit
den entsprechenden wells des Arrays verbunden.
-
Demnach
werden, wie man in 9 sehen kann, die 64 Wortleitungstreiber,
wie zum Beispiel der Wortleitungstreiber 171-1 mit 512
(64 × 8)
Reihen in dem Array verwendet. Die zusätzliche Decodierung, der rechte
Block-Auswahl-Treiber (beispielsweise 173-1) bereitgestellt
wird, ermöglicht
das Layout mit gemeinsam verwendeter Wortleitung.
-
Die
Zellen in der bevorzugten Ausführungsform
sind für
einen Sektor-Lösch-Vorgang
ausgestaltet, der ein Laden des Floating Gates bewirkt (Elektronen
treten in das Floating Gate ein), so dass beim Abfragen einer gelöschten Zelle
die Zelle nicht leitend ist und die Ausgangsgröße des Abfrage-Verstärkers "high" ist. Außerdem ist
die Architektur für
eine Seitenprogrammierung ausgestaltet, was das Entladen eines Floating
Gates umfasst (Elektronen verlassen das Floating Gate), so dass
beim Abfragen eine programmierte Zelle leitend ist.
-
Die
Betriebsspannungen für
den Programmierbetrieb liegen bei positiven 5,5 V bis 6,5 V an der
Drain einer Zelle, die auf einen niedrigen (Daten = 0) Schwellwertzustand
programmiert werden soll, nega tiven 8 V an dem Gate und 0 V oder
Floating (schwebend) an dem Source-Anschluß. Das Substrat oder der p-well
der Zelle werden geerdet. Dies führt
zu einem Fowler-Nordheim-Tunnel-Mechanismus
zum Entladen des Floating Gate.
-
Der
Löschvorgang
wird ausgeführt
durch Anlegen von negativen 8 V an der Source und positiven 12 V
an dem Gate, während
die Drain schwebend (potentialfrei) ist. Der p-well wird mit negativen
8 V vorgespannt. Dies führt
zu einem Fowler-Nordheim-Tunnel-Mechanismus, um das Floating Gate
zu laden. Die Lesepotentiale betragen 1,2 V an der Drain, 5 V an
dem Gate und 0 V an der Source.
-
Dieses
verleiht die Fähigkeit,
unter Verwendung der Wortleitungsdecodierung für das Auswählen von Zellen, die gelöscht werden
sollen, einen Sektor-Löschvorgang
auszuführen.
Der Lösch-Störungszustand
für nicht-ausgewählte Zellen
innerhalb eines Segmentes führt
zu –8
V an der Drain, 0 V an dem Gate und –8 V an der Source. Dies liegt
deutlich innerhalb der Toleranzen der Zellen, um diesen Potentialen
zu widerstehen, ohne dass eine nennenswerte Störung der Ladung in der Zelle
verursacht wird.
-
In ähnlicher
Weise sind die Programmierstörbedingungen
für Zellen,
welche dieselbe Bit-Leitung in demselben Segment gemeinsam verwenden,
maximal 6,5 V an der Drain, 0 V an dem Gate (oder optional 1 V)
und 0 V oder schwebend an der Source. Es gibt in diesem Zustand
kein Treiben von Gate zu Drain und es stört die Zellen nicht nennenswert.
-
Für Zellen,
welche dieselbe Wortleitung gemeinsam verwenden, jedoch nicht dieselbe
Bit-Leitung oder für
eine adressierte Zelle, die in einem hohen Zustand bleiben soll,
sind die Störungsbedingungen
0 V an der Drain, –8
V an dem Gate und 0 V oder schwebend an der Source. Auch dieser
Zustand führt
nicht zu einer nennenswerten Verschlechterung der Ladung in den
nicht ausgewählten
Zellen.
-
Gemäß 9 enthält der Block 190 für den Bit-Zwischenspeicher/Verifizierung
der Seitenprogrammierung eine Programmierverifizierungsschaltung,
die das Bit-weise Zurücksetzen
der Daten in dem Seitenpuffer, welche die Verifizierung erfolgreich
durchlaufen haben, beinhaltet.
-
10 ist
ein schematisches Diagramm eines Abschnittes der Schaltung für die Seitenprogrammierung
und automatische Verifizierung für
zwei Bit-Leitungen MTBL0 143 und MTBL1 152. Die
Metalleitung 143 (MTBL0) aus 10 entspricht
der Metalleitung 143 (MTBL0) aus 8. Die Metalleitung 152 (MTBL1)
entspricht der Metalleitung 152 (MTBL1) aus 8.
Die virtuelle Masse 136 des Arrays (ARVSS) nach 10 entspricht
der virtuellen Masse 136 des Arrays (ARVSS) nach 8.
Das Signal PWI auf Leitung 501 wird auf den p-well der
Transistoren 502, 504, 506 und 508 geschaltet.
Mit jedem Paar von Bit-Leitungen in dem Array ist eine ähnliche
Struktur verbunden.
-
Gemäß 10 sind
die Drain des Transistors 502 und die Drain des Transistors 504 mit
der Metalleitung 143 (MTBL0) verbunden. Die Drain des Transistors 506 und
die Drain des Transistors 508 sind mit der Metalleitung 152 (MTBL1)
verbunden. Die Source des Transistors 504 und die Source
des Transistors 506 sind mit der virtuellen Masse 136 des
Arrays (ARVSS) verbunden. Das Signal DMWLX auf Leitung 570 ist
mit dem Gate des Transistors 504 und dem Gate des Transistors 506 verbunden.
Wenn das Signal DMWLX auf Leitung 570 aktiv ist, ist die
virtuelle Masseleitung 136 des Arrays (ARVSS) mit der Metalleitung 143 (MTBL0)
und der Metalleitung 152 (MTBL1) über den Transistor 504 bzw. 506 verbunden.
-
Die
Daten I/O-Leitung 574 (Eingangs-/Ausgangsleitung) ist mit
der Source des Transistors 502 verbunden. Die Daten I/O-Leitung 576 ist
mit der Source des Transistors 508 verbunden. Das Signal
BLISOB auf Leitung 572 ist auf das Gate des Transistors 502 und
das Gate des Transistors 508 geschaltet. Wenn das Signal
BLISOB "high" ist, ist die metallische
Leitung 143 über
den Transistor 502 mit der Daten I/O-Leitung 574 verbunden
und die Metalleitung 152 ist über den Transistor 508 mit
der Daten I/O-Leitung 576 verbunden.
-
Die
Daten I/O-Leitung 574 ist mit der Drain des Transistors 542 verbunden.
Die Source des Transistors 542 ist mit Masse verbunden
und das Gate des Transistors 542 ist mit den Signal DMWL
auf Leitung 588 verbunden. Die Daten I/O-Leitung 574 wird
herabgezogen, wenn das Signal DMWL "high" ist.
-
Die
Daten I/O-Leitung 574 ist weiterhin mit der Drain des Spaltenauswahl-Transistors 544 verbunden. Die
Source des Transistors 544 ist mit dem Knoten 551 verbunden.
Das Gate des Transistors 544 ist mit dem Signal Y0 auf
Leitung 590 verbunden.
-
Ein
Dateneingangspuffer 550 ist mit der Source des Durchlaßgatters 552 verbunden.
Die Drain des Durchlaßgatters 552 ist
mit dem Knoten 551 verbunden. Das Durchlaßgatter 552 wird
durch das Signal DINL auf Leitung 592 gesteuert.
-
Der
Abfrage-Verstärker 554 ist
ebenfalls mit dem Knoten 551 verbunden. Der Abfrage-Verstärker 554 wird
durch das Signal SAEB auf Leitung 594 gesteuert. Der Ausgang
des Abfrage-Verstärkers 554 wird
mit der Drain des Durchlaßgatters 556 verbunden.
Die Source des Durchlaßgatters 556 ist
mit dem Verriegelungs- bzw. Zwischenspeicherschaltkreis 557 verbunden.
Das Durchlaßgatter 556 wird
durch das SARD-Signal auf Leitung 596 gesteuert.
-
Der
Verriegelungs- bzw. Zwischenspeicherschaltkreis enthält Inverter 558 und 560.
Die Eingangsgröße des Inverters 558 ist
mit der Source des Durchlaßgatters 556 verbunden.
Der Ausgangs des Inverters 558 ist mit dem Eingang des
Inverters 560 verbunden. Und der Ausgang des Inverters 560 ist
mit der Source des Durchlaßgatters 556 verbunden.
Der Ausgang des Verriegelungsschaltkreises 557 ist außerdem mit
einem ersten Eingang mit dem NOR Gatter 562 verbunden.
Ein zweiter Eingang zu dem NOR Gatter 562 ist mit dem Signal
RESLATB auf Leitung 598 verbunden. Der Ausgang des NOR
Gatters 562 ist mit dem Gate des Transistors 564 verbunden.
Die Drain des Transistors 564 ist mit dem Knoten 551 verbunden
und die Source ist mit Masse verbunden.
-
Die
Daten I/O-Leitung 576, die durch den Transistor 508 mit
der Bit-Leitung 152 verbunden ist, ist in ähnlicher
Weise geschaltet. Demnach ist die Leitung 576 mit der Drain
des Transistors 548 verbunden. Die Source des Transistors 548 ist
mit Masse verbunden und das Gate ist mit dem Signal DMWL auf Leitung 588 verbunden.
Die Drain des Transistors 546 ist außerdem mit der Daten I/O-Leitung 576 verbunden.
Das Signal Y0 ist auf das Gate des Transistors 546 geschaltet,
die Source des Transistors 546 ist mit dem Knoten DATA1 591 verbunden,
der dem Knoten 551 auf der anderen Seite entspricht. Der
Einfachheit halber sind ein entsprechender Satz aus DIN Puffer 550,
Abfrage-Verstärker 554,
Zwischenspeicherschaltkreis 557 und zugehörige Schaltkreise,
die mit dem Knoten DATA1 591 verbunden sind, nicht dargestellt.
Im Betrieb sind Schaltkreise ähnlich
dem Puffer 550, dem Durchlaßgatter 552, dem Abfrage-Verstärker 554,
dem Durchlaßgatter 556,
dem Zwischenspeicherschaltkreis 527, dem NOR Gatter 562 und
dem Transistor 564 ausgestaltet und mit dem Knoten DATA1 591 verbunden.
-
Jede
Daten I/O-Leitung 574, 576 hat einen Zwischenspeicher/Verifizierlogik-Schaltkreis,
der damit verbunden ist, und der im wesentlichen aus dem NAND Gatter 524 und
dem Inverter 526 für
die Daten I/O-Leitung 574 und aus dem NAND Gatter 534 und
dem Inverter 536 für
die Daten-I/O-Leitung 576 besteht.
Für die
Daten I/O-Leitung 574 ist die Drain des Durchlaßgatters 522 mit
der Daten I/O-Leitung 574 verbunden und die Source des
Durchlaßgatters 522 ist
mit einem ersten Eingang dessen NAND Gatters 524 verbunden.
Ein zweiter Eingang des NAND Gatters 524 ist mit dem Signal
BLATEN auf Leitung 582 verbunden. Der Ausgang das NAND Gatters 524 ist
mit dem Eingang des Inverters 526 verbunden. Die Eingangsstromversorgung
für das
NAND Gatter 524 und dem Inverter 526 ist mit dem
Signal LATCHPWR auf Leitung 580 verbunden. Das Signal LATCHB
auf Leitung 578 ist mit dem Gate des Durchlaßgatters 522 verbunden.
Der Ausgang des Invertierers 526 ist mit dem ersten Eingang
des NAND Gatters 524, dem Gate des Transistors 510 und
dem Gate des Transistors 530 verbunden. Die Drain des Transistors 510 ist
mit dem Signal ABLRES1 auf Leitung 577 verbunden. Die Source
des Transistors 510 ist mit Masse verbunden. Die Drain
des Transistors 530 ist mit dem Signal DLPWR auf Leitung 586 verbunden.
Die Source des Transistors 530 ist mit der Drain des Transistors 528 verbunden.
Das Gate des Transistors 528 ist mit dem Signal DLCTL auf
Leitung 584 verbunden und die Source des Transistors 528 ist
mit der Daten I/O-Leitung 574 verbunden.
-
Der
Zustand Daten = 1, der in dem Zwischenspeicherschaltkreis 524 und 526 zwischengespeichert
ist, zieht das Signal ABLRES auf Leitung 577 herunter.
Das logisch hohe Niveau schaltet den Transistor 510 ein, was
ein logisch niedriges Niveau auf Leitung 577 verursacht.
Wenn der Transistor 510 eingeschaltet ist, ist die Leitung 577 mit
Masse verbunden, was bewirkt, da? das Signal ABLRES auf ein logisch
niedriges Niveau geht. Die Transistoren 514 und 516 weisen
einen Inverter auf, der gemeinsam mit den Transistoren 510 und 512 eine
logische NOR Funktion bereitstellt. Der Transistor 514 ist
ein P-Kanal Transistor, dessen Source mit VCC und dessen Drain mit
der Drain des N-Kanal Transistors 516 verbunden sind. Die
Leitung 577 ist mit den Drains der Transistoren 514 und 516 verbunden.
Die Source des n-Kanal Transistors 516 ist mit Masse verbunden und
die Gates der Transistoren 514 und 516 sind mit
dem Signal PGPVB auf Leitung 599 verbunden. Die Inverter 518 und 520 sind
in Reihe geschaltet. Leitung 577 stellt den Eingang für den Inverter 518 bereit.
Der Ausgang des Inverters 518 stellt die Eingangsgröße des Inverters 520 dar,
und der Ausgang bzw. die Ausgangsgröße des Inverters 520 liefert
das Signal ABLRES auf Leitung 579.
-
Demnach
ist, wann immer die Verriegelungs- bzw. Zwischenspeicherschaltung 524 und 526 ein
logisch hohes Niveau speichert, das Signal ABLRES auf einem logisch
niedrigen Niveau. Der Transistor 514 gewährleistet
ein Heraufziehen der Leitung 572, die durch Einschalten
entweder des Transistors 510 oder des Transistors 512 auf
ein logisch niedriges Niveau getrieben werden kann.
-
Der
Zweck des Transistors 516 ist derjenige, da? während des
Standardzustands PGPVB auf Leitung 599 "high" ist
und alle Gates der Transistoren 510, 512, ...
niedrig sind bzw. "low" sind, so da?, falls
kein Transistor 516 vorhanden ist ABLRES1 auf Leitung 577 Floating
bzw. schwebend ist. Der Transistor 516 ist der Hilfsleitung 577 hinzugefügt, um in
diesem Fall auf "low" herabzuziehen. Während des
aktiven Betriebs, welcher eine Programmierverifizierungsperiode
während
des Seitenprogrammierbetriebs ist, ist PGPVB auf Leitung 599 aktiv "low", Transistor 516 ist
abgeschaltet und Transistor 514 gewährleistet ein Heraufziehen
für Leitung 572.
-
Eine
spiegelbildliche Anordnung von Schaltkreisen, die ebenfalls durch
Signale LATCHB, LATCHPWR, BLATEN und DLCTL gesteuert sind, sind
mit der Daten I/O-Leitung 576 verbunden. Die Drain des
Durchlaßgatters 532 ist
mit der Daten I/O-Leitung 576 verbunden. Das Gate des Durchlaßgatters 532 ist
mit dem Signal LATCHB auf Leitung 578 verbunden. Die Source
des Durchlaßgatters 532 ist
mit einem ersten Eingang des NAND Gatters 534 verbunden.
Ein zweiter Eingang des NAND Gatters 534 ist mit dem Signal
BLATEN auf Leitung 582 verbunden. Der Ausgang des NAND
Gatters 534 ist mit dem Eingang des Inverters 536 verbunden.
Das Signal LATCHPWR auf Leitung 580 liefert eine Stromeingangsversorgung
für das
NAND Gatter 534 und den Inverter 536. Der Ausgang
des Inverters 536 ist mit dem ersten Eingang des NAND Gatters 534, dem
Gate des Transistors 512 und dem Gate des Transistors 538 verbunden.
Das Signal DLPWR auf Leitung 586 ist mit der Drain des
Transistors 538 verbunden. Die Source des Transistors 538 ist
mit der Drain des Transistors 540 verbunden. Das Gate des
Transistors 540 ist mit dem Signal DLCTL auf Leitung 584 verbunden und
die Source des Transistors 540 ist mit der Daten I/O-Leitung 576 verbunden.
Die Source des Transistors 512 ist mit Masse verbunden
und die Drain des Transistors 512 ist mit Leitung 577 verbunden.
-
Der
Ausgang der Zwischenspeicherschaltung 524 und 526 ist
mit dem Gate des Transistors 530 und der Source des Transistors 522 verbunden.
Das Signal DLPWR auf Leitung 586 ist mit der Source des
Transistors 530 verbunden. Die Drain des Transistors 530 ist
mit der Source des Transistors 528 verbunden. Das Gate
des Transistors 528 ist mit dem Signal DLCTL auf Leitung 584 verbunden.
Die Drain des Transistors 528 ist mit der Daten-I/O-Leitung 574 verbunden.
Der Transistor 530 und der Transistor 528 haben
eine Breite von 6 Mikrometern und eine Länge von 1,2 Mikrometern.
-
Die
Drain des Transistors 510 liefert ein Ausgangssignal ABLRES1
auf Leitung 577. Die Source des Transistors 510 ist
mit Masse verbunden und das Gate des Transistors 510 ist
mit Leitung 577 verbunden. Demnach gehört, in Abhängigkeit von dem Zustand des
Bit-Zwischenspeichers, das Signal ABLRES1 entweder auf Masse kurzgezogen
oder durch den Transistor 514 heraufgezogen. Die Breite
des Transistors 510 beträgt 10 Mikrometer und die Länge beträgt 0,8 Mikrometer.
-
Die
Drain des Transistors 544 ist mit der Daten-I/O-Leitung 574 verbunden
und die Source ist mit der Datenleitung 650 verbunden.
Das Signal Y0 auf Leitung 590 ist mit dem Gate des Transistors 544 auf
Leitung 590 verbunden. Der Primärpuffer 550 ist mit
der Datenleitung 650 verbunden. Der Abfrage-Verstärker 554 ist mit
der Datenleitung 650 am Knoten 551 verbunden und
stellt ein Steuersignal für
das Gate des Transistors 564 bereit. Die Drain des Transistors 564 ist
mit der Datenleitung 650 verbunden und die Source des Transistors 564 ist
mit Masse verbunden. Demnach verbindet der Transistor 564 in
Abhängigkeit
von der Ausgangsgröße des Abfrage-Verstärkers 554,
die Datenleitung 650 mit Masse.
-
Im
Betrieb führt
der Schaltkreis für
Seitenprogrammierung und automatische Verifizierung des Flash EEPROM
Arrays, wie es in 10 dargestellt ist, die Seitenprogrammierung
und die Programmierverifizierung in einer Reihe von Stufen aus.
Die Stufen können
verallgemeinert werden als (1) Datenladestufe, (2) Datenprogrammierstufe,
(3) Lesen der Array-Datenstufe, (4) Zurücksetzen der Bit-Zwischenspeicherstufe
und (5) Stufe einer Wiederholung. Der Betrieb der Seitenprogrammierung
und automatischen Verifizierung des Flash EEPROM Arrays wird unter
Bezug auf die Daten I/O-Leitung 574 beschrieben.
Seitenprogrammierung und automatische Verifizierung werden in ähnlicher
Weise unter Verwendung der Daten-I/O-Leitung 576 ausgeführt, die
mit einer weiteren Speicherzelle verbunden ist. Darüber hinaus
enthält
der Seitenprogrammier- und automatische Verifizierungs-Schaltkreis
eine ähnliche
Schaltung für
alle Daten-I/O-Leitungen, die erforderlich sind, um eine Seite von
Speicherzellen in dem Flash EEPROM Array zu programmieren.
-
In
dem Datenladezustand werden das Signal LATCHPWR auf Leitung 580,
das Signal LATCHB auf Leitung 578 und das Signal BLATEN
auf Leitung 582 mit 5 V zugeführt, um die Datenzwischenspeicherschaltung 524 und 526 für den Betrieb
zur aktivieren. Das Signal LATCHPWR auf Leitung 580 führt dem
NAND Gatter 524 und dem Inverter 526 für ihren
Betrieb eine Spannung zu. Das Signal BLATEN auf Leitung 582 gibt
die Zwischenspeicherschaltung 524 und 526 frei,
um Eingaben aufzunehmen. Das Signal LATCHB auf Leitung 578 gibt
das Durchlaßgatter 522 frei,
um die Daten-I/O-Leitung 574 mit
dem ersten Eingang des NAND Gatters 524 zu verbinden. Das
Signal BLISOB auf Leitung 572 ist ein logisch niedriges
Niveau, welches den Transistor 502 abschaltet. Das Abschalten
des Transistors 502 isoliert die Daten-I/O-Leitung 574 von
der Metalleitung 143 (MTBL0). Das Signal DLCTL auf Leitung 584 ist
auf einem logisch niedrigen Niveau, welches das Durchlaßgatter 528 abschaltet.
Das Signal DLPWR befindet sich auf einem logisch hohen Niveau mit
einer Spannung von VCC, die näherungsweise
5 V beträgt.
Das Signal DMWL auf Leitung 588 befindet sich auf einem logisch
niedrigen Niveau, welches verhindert, dass der Transistor 542 die
Daten-I/O-Leitung 574 mit Masse verbindet. Das Signal Y0
auf Leitung 590 ist auf einem logisch hohen Niveau, was
es dem Transistor 544 ermöglicht, zu leiten. Das Signal
Y0 ist ein decodiertes Signal, welches es der Daten-I/O-Leitung 574 erlaubt, einen
entsprechenden von 16 DIN Puffern (beispielsweise Puffer 550)
während
der Datenladestufe zuzugreifen. Das Signal DINL auf Leitung 592 ist
auf einem logisch hohen Niveau, was das Durchlaßgatter 552 einschaltet.
Die Eingangsdaten von den DIN Puffern 550 werden über das
Durchlaßgatter 552 an
die Daten-I/O-Leitung 574 übertragen.
-
Sobald
die Eingangsdaten zu der Daten-I/O-Leitung 574 übertragen
worden sind, werden die Daten von dem DIN Puffer 550 an
den ersten Eingang des NAND Gatters 524 übertragen.
Wenn Daten von dem DIN Puffer 550 auf einem logisch hohen
Niveau liegen, bewirkt das logisch hohe Niveau, welches am ersten
Eingang des NAND Gatters 524 empfangen wird, einen logisch
niedrigen Ausgang. Der logisch niedrige Ausgang des NAND Gatters
versorgt den Eingang des Inverters 526, der einen logisch
hohen Ausgangswert erzeugt. Das NAND Gatter 524 und der
Inverter 526 bilden die Bit-Zwischenspeicherschaltung 524 und 526,
welche die an dem ersten Eingang des NAND Gatters 524 empfangenen
Daten zwischenspeichert. Das logisch hohe Niveau am Ausgang des
Inverters 526 schaltet das Durchlaßgatter 530 frei und überträgt ein Signal
DLPWR auf Leitung 586 an das Durchlaßgatter 528. Während der
Datenladestufe jedoch ist das Signal DLCTL auf Leitung 584 logisch
niedrig, was das Durchlaßgatter 528 abschaltet
bzw. blockiert gegenüber
einer Leitung des Signals der DLPWR an die Daten-I/O-Leitung 574.
-
Im
anderen Fall, wenn die Daten vom DIN Puffer 550 auf einem
logisch niedrigen Niveau sind, bewirkt das logisch niedrige Niveau,
welches am ersten Eingang des NAND Gatters 524 empfangen
wird, einen logisch hohen Ausgangswert. Der logisch hohe Ausgangswert
des NAND Gatters 524 versorgt den Eingang des Inverters 526,
der einen logisch niedrigen Ausgangswert liefert, der in der Zwischenspeicherschaltung 524 und 526 gespeichert
wird. Der logisch niedrige Wert am Ausgang des Inverters 526 schaltet
das Durchlaßgatter 530 ab
und die Übertragung
des Signals DLPWR auf Leitung 586 über das Durchlaßgatter 528 an
die Daten-I/O-Leitung 574. Demnach speichert der Bit-Zwischenspeicherschaltkreis
des NAND Gatters 524 und des Inverters 526 entweder
das logisch hohe Niveau oder das logisch niedrige Niveau der Eingangsdaten,
welches den Daten entspricht, die vom DIN Puffer 550 übertragen
werden.
-
Die
Bit-Zwischenspeicher für
die gesamte Seite von 1024 Bits werden jeweils zu 16 Bits geladen. Wenn
die Eingangsdaten von den DIN Puffern 550 in die Bit-Zwischenspeicherschaltung 524 und 526 geladen werden
nach der Ausführung
der Datenladestufe für
alle Bit-Leitungen, so wird eine Verifizierungssequenz ausgeführt, worauf
die Schreibstufe der Daten folgt. Die Verifizierungsschleife vor
dem Schreiben (gemäß der nachstehend
beschriebenen Sequenz) verhindert ein Überprogrammieren von Zellen
zu einer Verarmung, so als wenn kein Vorlöschen ausgeführt wurde
und ein Benutzer die Seite mit denselben Daten zweimal programmiert.
Ein Datenschreiben erfolgt, wenn ein logisches "high" in
der Zwischenspeicherschaltung 524 und 526 gespeichert
ist. Wenn ein Zustand Daten = 1 mit logisch hohem Niveau von dem
DIN Puffer 550 empfangen wird, so wird das logisch hohe
Niveau während
der Datenschreibstufe in eine Zelle des Flash EEPROM Arrays programmiert.
Wenn ein logisch niedriges Niveau (Daten = 0) von dem DIN Puffer 550 empfangen
wird und in der Zwischenspeicherschaltung 524 und 526 gespeichert
wird, programmiert die Schreibstufe die Speicherzelle des Flash
EEPROM nicht.
-
In
dem vorliegenden Beispiel wird ein logisch hohes Niveau (Daten =
1) von dem DIN Puffer 550 übertragen und in der Bit-Zwischenspeicherschaltung 524 und 526 gespeichert.
Während
der Ausführung
der Datenschreibestufe wird das Signal LATCHB auf Leitung 578 abgeschaltet.
Das Signal LATCHB auf Leitung 578 wird auf ein logisch
niedriges Niveau eingestellt, um die Eingänge in die Zwischenspeicherschaltung 524 und 526 abzuschalten.
Das Signal LATCHPWR wird auf eine hohe Spannung eingestellt, um
Strom für
die Zwischenspeicherschaltung 524 und 526 bereitzustellen.
Das Signal BLATEN auf Leitung 582 wird auf ein hohes Spannungsniveau
gesetzt, um den Ausgang der Zwischenspeicherschaltung 524 und 526 freizugeben.
Das Signal BLISOB auf Leitung 572 wird auf ein logisch
hohes Spannungsniveau gesetzt, um den Transistor 502 einzuschalten
und wird auf den geeigneten Wert für die Steuerung der Impulswerte
zum Programmieren eingestellt. Der Transistor 502 verbindet
die Daten-I/O-Leitung 574 mit der Metalleitung 143.
Das Signal DLCTL auf Leitung 584 wird auf ein hohes Spannungsniveau
gesetzt, um das Durchlaßgatter 528 frei
zuschalten. Das Signal DLPWR auf Leitung 586 wird auf eine
hohe Spannung (etwa 9 V) eingestellt. Das Signal y0 auf Leitung 590 ist
auf einem logisch niedrigen Niveau, um den Transistor 544 abzuschalten.
Das Signal DINK ist auf einem logisch niedrigen Niveau, was die
Eingangsdaten von dem DIN Puffer 550 von der Daten-I/O-Leitung 574 entkoppelt.
Das Signal SAEB ist auf einem logisch niedrigen Niveau, um den Abfrage-Verstärker 554 abzuschalten.
-
Wenn
die Steuersignale ordnungsgemäß initialisiert
sind, um die Datenprogrammierstufe auszuführen, wird das Signal DLPWR
auf Leitung 586 an die Daten-I/O-Leitung 574 übertragen.
Das Signal DLPWR liefert Programmierleistung für die Programmierung einer
Speicherzelle in dem Flash EEPROM Array. Demnach wird, wenn die
Zwischenspeicherschaltung 524 und 526 mit einem
Zustand Daten = 1 verriegelt ist, das Durchlaßgatter 530 freigeschaltet,
um zu ermöglichen,
dass das Signal DLPWR durch das Durchlaßgatter 528 hindurchtritt.
Das Signal BLISOB auf Leitung 572 schaltet den Transistor 502 ein
und verbindet das Signal DLPWR mit der Metalleitung 143 (MTBL0)
mit der passenden Impulshöhe.
-
Gemäß 8 verbindet
das Freigabesignal BLTR1 auf Leitung 141 oder BLTR0 auf
Leitung 142 eine Spalte von Zellen mit der Metalleitung 143 und
stellt die Programmierspannung von dem Signal DLPWR für die Programmierung
einer bestimmten Speicherzelle 125 oder 129 auf
der Wortleitung bereit, die auf –8 V geändert wird. Wenn beispielsweise
BLTR1 auf Leitung 141 ausgewählt wird und die Wortleitung
WL1 ausgewählt
ist, wird die Programmierspannung von dem Signal DLPWR auf die Speicherzelle 125 gelenkt.
-
Nachdem
die Daten von der Zwischenspeicherschaltung 524 und 526 in
die Speicherzelle programmiert sind, ist die Schaltung bereit, automatisch
zu verifizieren, daß die
Daten der Datenschreibestufe ordnungsgemäß programmiert worden sind.
Dies umfaßt
eine Folge von fünf
Schritten (A bis E), um zu entscheiden, ob der Bit-Zwischenspeicher
zurückgesetzt
wird, und zwar folgendermaßen:
-
Schritt A
-
Lesen
(READ) der realen Daten aus dem nicht-flüchtigem Bit durch den zugehörigen Abfrage-Verstärker (alle
16 Abfrage-Verstärker
werden gleichzeitig aktiviert, das heißt 16 Bits werden gleichzeitig
gelesen). Das Abfrage-Ergebnis wird in dem Zwischenspeicher 557 nach 10 gespeichert.
Beispielsweise muß in 10 für die Verifizierung
einer ausgewählten
Zelle aus einer spezifizierten Wortleitung BLISOB (572) "high" (ON) sein, das ausgewählte Y (544, 546 und
14 sowie mehrere derartige Einrichtungen) ist ein, der Abfrage-Verstärker (SA) 554 ist
aktiviert (und 15 weitere SA), SARD (596) ist "high", um zu ermöglichen,
daß das Abfrage-Ergebnis
an den Zwischenspeicher (557) läuft und LATCHB (578),
DLCTL (584) sind auf niedriger Spannung (OFF), so daß während dieses
Leseschrittes die Bit-Zwischenspeicherung, welche aus 524 und 526 besteht,
nicht gestört
wird. Die Schwellwertspannung der ausgewählten Zelle wird durch SA (554) über die
Datenleitung 574 erfaßt
und dann in dem Zwischenspeicher 557 gespeichert, und zwar
nach einer gewissen Zeitspanne, die für den SA (554) ausreichend
ist, um die Abfrage vorzunehmen. Wenn nach der Programmierung die
Schwellwertspannung (VT) der Zelle niedrig genug ist (bis zu dem
Punkt, zu welchem der SA 554 feststellen kann, daß die Zelle
sich in einem niedrigen VT-Zustand befindet), so gibt der Ausgangswert
des Inverters (560 oder der Eingang von 558) ein
niedriges Niveau wieder, SARD (596) ist abgeschaltet und
SA (544) wird abgeschaltet. Das niedrige Niveau wird in
dem Zwischenspeicher (557) gespeichert, unabhängig davon,
welches Lesen während
der nächsten
Schritte in der Sequenz erfolgt, bis die neuen Positionen erneut
gelesen werden müssen.
Wenn die ausgewählte
Zelle VT nach dem Programmieren beim Lesen immer noch "high" ist, so ist der
Ausgangswert des Inverters 560 auf einem hohen Niveau,
das heißt
ein logisch hohes Niveau wird in dem Zwischenspeicher 557 verriegelt
bzw. zwischengespeichert. Man beachte, dass RESLATB (598)
in diesem Schritt "high" ist, so das unabhängig davon,
ob der Zwischenspeicher 557 auf "high" oder "low" verriegelt ist,
dieses die Einrichtungen (564) nicht beeinflußt, da die
Einrichtung 564 ohnehin abgeschaltet (OFF) ist.
-
Schritt B
-
Entladen
von Datenleitungen (alle einschließlich der ausgewählten und
nicht-ausgewählten).
Der Zweck dieses Schrittes wird in Schritt D erläutert). Die Art und Weise der
Entladung der Datenleitung 574 geschieht durch Aktivieren
von DMWL (588) auf "high", LATCHB auf "low", DLCTL auf "low", wobei alle Abfrage-Verstärker abgeschaltet
sind, 564 und 652 sind abgeschaltet. Der Transistor 588 entlädt Ladung,
die in der Datenleitung 574 gespeichert ist. BLISOB (572)
befindet sich auf einem niedrigem Niveau, um die lange metallische
Bit-Leitung (MTBL0) gegenüber
der Datenleitung (574) zu isolieren, so dass die Entladesequenz schneller
bewerkstelligt werden kann.
-
Schritt C
-
Vorladen
von Datenleitungen (wahlweise entsprechend dem zugehörigen Bit-Zwischenspeicher).
Der Zweck dieses Schrittes wird in Schritt D erläutert). Während dieses Schrittes befindet
sich DMWL auf einem niedrigen Niveau, BLISOB ist immer noch auf
einem niedrigem Niveau, unabhängig
davon, ob die 16 ausgewählten
Datenleitungen desselben Wortes und andere nicht-ausgewählte Datenleitungen
auf ein hohes Spannungsniveau vorgeladen werden sollen oder nicht,
wird entschieden durch die Daten, welche in dem Bit-Zwischenspeicher
gespeichert werden.
-
Beispielsweise
ist in 10 während dieses Schrittes LATCHB
(578) immer noch abgeschaltet, DLCTL (584) ist
von "low" auf "high" umgeschaltet und
die Datenleitung 574 ist durch die Verbindung von DLPWR
(in diesem Fall eine Stromquelle auf VCC-Niveau) mit der Datenleitung
(574) über
die Einrichtungen 530 und 528 auf ein hohes Niveau
vorgeladen, wenn der Ausgang des Inverters 526 (welcher
das Gate 530 ist) auf ein hohes Niveau verriegelt bzw.
zwischengespeichert ist.
-
Ansonsten
kann DLPWR die Datenleitung 574 nicht auf ein hohes Niveau
vorladen und die Datenleitung 574 sollte während des
Schrittes B noch immer auf einem niedrigen Spannungsniveau sein.
-
Schritt D
-
ZWISCHENSPEICHER
ZURÜCKSETZEN
ODER NICHT? Während
dieses Schrittes wird LATCHB (578) von einem niedrigen
auf ein hohes Niveau umgeschaltet und RESLATB (598) schaltet
von "high" auf "low", um den Bit-Zwischenspeicher
(welcher aus dem Inverter 524 und 526 besteht)
zurückzusetzen,
indem 564 eingeschaltet wird, wenn der Ausgang des Inverters 560 "low" (von Schritt A verriegelt)
ist. Da die ausgewählte
Zelle bereits auf niedrigem VT ist, muß der Inhalt des Bit-Zwischenspeichers
zurückgesetzt
werden, so daß für die nächste Programmierung
eine Hochspan nungsimpulssequenz die Zelle, welche sich auf niedrigem VT
befindet, nicht erneut auf niedriges VT programmiert wird. Es besteht
die Möglichkeit,
das der Bit-Zwischenspeicher aus einem vorherigen Schritt D der
Verifizierungsschleife zurückgesetzt
ist oder sogar vor der ersten Programmiersequenz in einem zurückgesetzten
Zustand war. In diesen Fällen
hat der nachfolgende Zurücksetzungsschritt
des Bit-Zwischenspeichers keinen Einfluß auf den Bit-Zwischenspeicher
für den
früheren
Fall, und für
den letzten Fall hat die Frage, ob die ausgewählte Zelle auf einem hohen
VT ist oder nicht, keinen Einfluß auf den Bit-Zwischenspeicher,
weil dann, wenn die Zelle auf hohem VT liegt, der Bit-Zwischenspeicher nicht
zurückgesetzt
wird (564 ist OFF aus den Schritten A und D) und der Bit-Zwischenspeicher
in einem zurückgesetzten
Zustand war. Wenn die Zelle auf niedrigem VT war, so macht das Zurücksetzen
des Bit-Zwischenspeichers wiederum keinen Unterschied hinsichtlich
des Inhalts des Bit-Zwischenspeichers. In dieser Implementierung
wird kein Vergleicher-Schaltkreis benötigt.
-
Man
beachte, dass LATCHB ein globales Signal für alle Bit-Zwischenspeicher
in dem Flash EEPROM-Model ist und dass das hohe Niveau an den Gates
von 522, 532, ... dazu führt, daß alle Bit-Zwischenspeicher mit den zugehörigen Datenleitungen
kommunizieren, was bedeutet, daß der
Knoten des Ausgangs des Inverters 526 eine Ladungsteilung
mit der zugehörigen
Datenleitung (zum Beispiel 574) erfährt. Die Treiberfähigkeit
des Inverters 526 ist als eine schwache Einrichtung ausgelegt,
damit ordnungsgemäße Daten
in den Bit-Zwischenspeicher eingesetzt werden (um gegen den Inverter 526 anzukommen).
Wenn also LATCHB (528) "high" ist, erfährt der
schwache Inverter (526) eine Ladungsteilung, was zu einer
Unsicherheit hinsichtlich der Integrität des Bit-Zwischenspeichers
führt.
-
Der
Zweck der Schritte B) und C) besteht darin, das geeignete Spannungsniveau
an den Datenleitungen bereitzustellen, bevor man in Schritt D) eintritt,
das heißt
bevor LATCH B 578 von "low" auf "high" umschaltet, um irgendwelche "Vorgänge der
Ladungsteilung" zu
vermeiden, auch wenn die Schaltung, wie oben erwähnt, so ausgelegt werden kann,
dass sie eine ordnungsgemäße Funktion
auch ohne diese sicherstellt. Während
des Schrittes B) werden alle Datenleitungen auf ein niedriges Niveau
entladen und dann werden in Schritt C) nur diejenigen Datenleitungen,
deren zugehöriger
Bit-Zwischenspeicher ein hohes Niveau "gespeichert" haben, auf ein hohes Niveau vorgeladen.
Demnach sind die Schritte B) und C) optionale Schritte, die hier
der Sicherheit wegen in das Modell eingefügt wurden.
-
Schritt E
-
ENTLADE
ERNEUT ALLE DATENLEITUNGEN. Zu diesem Zeitpunkt, wenn die Verifizierungsaktivität im wesentlichen
gelaufen ist und bevor man zu dem nächsten Wort für eine Programmierungs-Verifizierung übergeht
(oder genauer gesagt, zum Ändern
des neuen Wortes und zur Wiederholung der Schritte A) bis D)), entfernt
die Logiksteuerung Restladungen von allen Datenleitungen und schaltet
auf ein neues Wort um. Beispielsweise ist während dieses Schrittes LATCHB
(578) auf einem LOW-Niveau, RESLATB (598) ist
auf einem HIGH-Niveau, DMWAL (598) ist auf einem HIGH-Niveau und BLISOB
(572) ist auf einem HIGH-Niveau.
-
Demnach
stellt der Seitenprogrammier- und automatische Verifizierschaltkreis
der vorliegenden Erfindung das einzigartige Merkmal der automatischen
Verifizierung einer Speicherzelle bereit, welche programmiert ist.
Die Zwischenspeicherschaltung 524 und 526 speichert
die von dem DIN Puffer 550 empfangenen Eingangsdaten. Die
in der Zwischenspeicherschaltung 524 und 526 gespeicherten
Daten steuern ABLRES1, welches auf ein logisch niedriges Niveau
gesetzt wird, wenn eine oder mehrere Zellen vorhanden sind, die nicht
programmiert werden müssen.
Das Signal ABLRES1 bleibt auf einem logisch niedrigen Niveau, bis
die Speicherzelle während
der Programmierverifizierungssequenz verifiziert worden ist, wodurch
die Zwischenspeicherschaltung 524 und 526 auf
ein logisch niedriges Niveau zurückgesetzt
wird und das Signal ABLRES1 auf ein logisch hohes Niveau zurückgesetzt
wird, was eine ordnungsgemäß programmierte
Speicherzelle anzeigt. Die Programmierverifizierungssequenz läuft automatisch
ab.
-
Das
Signal PGPVB auf Leitung 599 befindet sich auf einem logisch
niedrigen Niveau, um während
der automatischen Verifizierungssequenz eine Ladung an die Leitung 577 zuzuführen. Wenn
die Zwischenspeicherschaltung 526 und 524 zurückgesetzt
ist, ist der Transistor 510 abgeschaltet und die Ladung
auf Leitung 577 wird nicht mehr nach Masse entladen. Das
Signal ABLRES1 auf Leitung 577 wird zu einem logisch hohen Niveau.
Das logisch hohe Niveau liefert eine Eingangsgröße für den Inverter 518,
der eine Ausgangsgröße erzeugt,
die eine Eingangsgröße für den Inverter 520 ist,
der den Ausgang auf einem logisch hohem Niveau des Signals ABLRES1
auf Leitung 579 bereitstellt. Das logisch hohe Niveau des
Signals ABLRES auf Leitung 579 liefert ein Verifizierungssignal
der Seitenprogrammierung, welches anzeigt, daß die Seite von Speicherzellen die
Programmierverifizierung erfolgreich durchlaufen hat.
-
Jede
Speicherzelle innerhalb einer Seite von Speicherzellen in dem Array
ist in der Lage, einen Transistor 520 zu aktivieren, um
zu bewirken, dass das Signal ABLRES1 auf Leitung 577 auf
einem niedrigen Niveau ist. Demnach kann irgendeine Speicherzelle,
welche die Programmierverifizierung innerhalb einer Seite von Speicherzellen
in dem Array nicht erfolgreich durchläuft, bewirken, dass der Ausgang
ABLRES auf einem logisch niedrigen Niveau liegt. Das logisch niedrige
Niveau von ABLRES auf Leitung 579 signalisiert, dass zumindest
eine Speicherzelle innerhalb der Seite von Speicherzellen in dem
Array nicht ordnungsgemäß programmiert
und verifiziert ist. Demnach kann jede Speicherzelle, die nicht
ordnungsgemäß verifiziert
ist, bewirken, dass das Signal ABLRES auf Leitung 579 auf
einem logisch niedrigen Niveau liegt. Wenn alle Speicherzellen ordnungsgemäß programmiert
und verifiziert worden sind, ist das Signal ABLRES auf Leitung 579 auf einem
logisch hohen Niveau.
-
Im
Betrieb werden nicht erfolgreich programmierte Speicherzellen erneut
programmiert und erneut verifiziert, bis das Signal ABLRES einen
logisch hohen Wert annimmt. Die Anzahl der erneuten Versuche ist
begrenzt, um eine endlose Schleife der Programmiersequenz zu verhindern,
falls eine Seite wiederholt die Programmierverifizierung nicht besteht.
-
11 zeigt
ein Flußdiagramm,
welches den Programmfluß für den Flash
EEPROM Schaltkreis nach 8 veranschaulicht. Der Prozeß beginnt
durch Löschen
des Sektors (beispielsweise des Sektors 170-1), in welchem
Daten programmiert werden sollen (Block 700). Nach dem
Löschen
des Sektors wird ein Löschverifizierungsvorgang
ausgeführt
(Block 701). Als nächstes
werden die Seitennummer entweder 0 oder 1 und die Segmentnummer,
1–8, durch
den Hostprozessor in Reaktion auf die Eingabeadresse eingestellt
bzw. festgesetzt (Block 702).
-
Nach
dem Einstellen der Seitenzahl und der Segmentzahl wird der Seitenpuffer
mit den Daten für
die Seite geladen (Block 703). Dieser Seitenpuffer kann
mit sämtlichen
N-Daten-Bits oder mit einem einzelnen Daten-Byte geladen werden,
je nach dem, wie es zu einem speziellem Programmiervorgang paßt. Als
nächstes wird
der Verifizierungsvorgang ausgeführt,
für den
Fall, daß der
Benutzer keine vorherige Löschung
vornimmt oder versucht, dieselben Daten wieder zu programmieren,
um zu bestimmen, welche Zellen eine Programmierung benötigen (Block 704).
Nach der anfänglichen
Verifizierung im Block 704 geht der Algorithmus weiter,
um das Programmwiederholungsmuster einzustellen, indem ein Index "i" auf Eins gesetzt wird (Block 705).
Ein Programmierimpuls wird dann angewendet, wie es oben unter Bezug
auf 10 beschrieben wurde, wobei der Impuls eine Form
hat, die durch den Index "i" (Block 706)
definiert wird. Wie oben erwähnt,
wird die Form sowohl hinsichtlich der Pulshöhe als auch hinsichtlich der
Pulsbreite entsprechend Mustern gesteuert, die für die spezielle Implementierung
ausgewählt
wurden, wie oben beschrieben. Nach dem Programmierimpuls mit der
Form "i" verifiziert der
Algorithmus und setzt die Seitenpuffer-Bits zurück, welche bestehen (die Verifizierung
erfolgreich durchlaufen)(Block 707). Nach der Verifizierschleife
bestimmt der Algorithmus, ob alle Seiten-Bits in dem Puffer (708)
zurückgesetzt
worden sind. Wenn dies nicht der Fall ist, so legt der Algorithmus fest,
ob die maximale Anzahl von erneuten Versuchen ausgeführt worden
ist, indem er den Index "i" überprüft (Block 709). Wenn
dieser noch nicht den Maximalwert erreicht hat, so wird "i" um Eins heraufgesetzt (Block 710)
und der Algorithmus geht in einer Schleife zurück zu Block 706, um
den nächsten
Programmierimpuls anzuwenden, der die nächste Form in dem Wiederholungsmuster
hat. Der Algorithmus läuft
auf diese Weise in einer Schleife, bis alle Seiten-Bits in dem Seitenpuffer
abgeschaltet sind. An diesem Punkt verzweigt der Algorithmus in
Block 708 zu dem Block 711, wo er bestimmt, ob
der Sektor, welcher programmiert wurde, abgeschlossen ist. Wenn
er abgeschlossen bzw. beendet worden ist, so ist der Algorithmus
erledigt. Wenn er noch nicht beendet ist, so geht der Algorithmus
in einer Schleife zurück
zu Punkt A, wie es in der Figur angezeigt wird, wodurch er zurück auf Block 702 gebracht
wird, um die Seitenzahl und Segmentzahl der nächsten zu programmierenden
Seite einzustellen.
-
Wenn
die Seite nicht erfolgreich programmiert worden ist, nachdem die
maximale Anzahl von erneuten Versuchen durchgeführt wurde, so erfaßt der Test
bzw. die Überprüfung in
Block 9 diesen Zustand und zeigt einen Fehler an (Block 713).
Der Algorithmus ist dann in Block 712 erledigt.
-
Dementsprechend
ist eine neue Programmiertechnik und eine neue Flash EEPROM-Zelle
und Array-Architektur bereitgestellt worden. Die Architektur liefert
ein sehr dichtes Kern-Array, welches durch einzigartige Zellanordnungen
erhalten wurde, wobei zwei benachbarte lokale Drain-Bit-Leitungen eine gemeinsame Source-Bit-Leitung
gemeinsam verwenden. Außerdem
ist die Anordnung so optimiert worden, dass sie die Verwendung einer
einzelnen metallischen Leitung für
je zwei Spalten von Zellen in dem Array ermöglicht.
-
Weiterhin
ist das Layout noch weiter reduziert durch gemeinsam verwendete
Wortleitungen, so dass der Wiederholabstand der Wortleitungstreiber
die Größe des Hauptarrays
nicht nachteilig beeinflußt.
Das Sektorlöschen
ist möglich
unter Verwendung der segmentierbaren Architektur der vorliegenden
Erfindung. Außerdem
stellen die Schaltungen für
Seitenprogrammierung und automatische Verifizierung eine effiziente
und genaue Programmierung der Speicherzellen bereit. Demnach kann
man ein hoch leistungsfähiges,
zuverlässiges Flash
Speicher Array unter Verwendung dieser Technologien erreichen.
-
Die
Verwendung eines Puls- bzw. Impuls-Musters mit variablen Pulshöhen und
Pulsbreiten für
die erneuten Programmierversuche erhöht die Leistungsfähigkeit
des Flash EEPROM Arrays beträchtlich.
Insbesondere wird eine Überprogrammierung
vermindert, der durchschnittliche Zeitablauf der Programmierung
wird beschleunigt, eine Störung
nicht ausgewählter
Zellen wird begrenzt und es müssen
weniger Matrizen wegen zu langsamer oder zu schneller Programmierung
von Zellen in dem Array ausgesondert werden. Da der Stand der Technik
in den kritischen Maßen
die Merkmale integrierter Schaltkreise schrumpft bzw. verkleinert,
führen Variationen
in den kritischen Maßen
zu immer größeren Variationen
in der Programmiergeschwindigkeit von Zellen mit Floating Gate.
Der Algorithmus der vorliegenden Erfindung stellt eine beträchtliche
Verbesserung der Leistungsfähigkeit
bereit, die insofern kritisch ist, als die Auslegungsregeln, die
Merkmale und Eigenschaften von Transistoren in dem Array bis auf
ein Drittel Mikrometer und darunter treiben.
-
Die
vorstehende Beschreibung einer bevorzugten Ausführungsform der Erfindung ist
für Zwecke
der veranschaulichten Beschreibung präsentiert worden. Sie soll nicht
erschöpfend
sein oder die Erfindung auf die speziell offenbarten Formen beschränken. Offensichtlich
liegen viele Modifikationen und Variationen für auf diesem Gebiet erfahrenen
Praktika auf der Hand. Der Schutzumfang der Erfindung soll durch
die folgenden Ansprüche
und deren Äquivalente
definiert sein.