-
HINTERGRUND
-
Gebiet der Erfindung
-
Die vorliegende Erfindung bezieht
sich auf integrierte Schaltkreis-Speichereinrichtungen, die auf der
Technologie von Transistoren mit erdfreiem Gate beruhen, und insbesondere
auf das Reduzieren der Anforderungen sowohl an den Programmierstrom
als auch an die Bitleitungs- und Wortleitungs-Beanspruchung während des
Programmierens von Speicherarrays mit erdfreiem Gate.
-
Verwandter Stand der Technik
-
Flash-Speicher sind eine wachsende
Klasse von nicht-flüchtigen
integrierten Speicherschaltkreisen, die auf Transistoren mit erdfreien
Gates basieren. Die Speicherzellen in einer Flash-Einrichtung werden
gebildet, indem sogenannte Transistoren mit erdfreiem Gate verwendet
werden, in denen die Daten in einer Zelle gespeichert werden durch
Laden oder Entladen des erdfreien Gates. Das erdfreie Gate ist ein
leitfähiges
Material, typischerweise Polysilicium, das von dem Kanal des Transistors
durch eine dünne
Schicht von Oxid oder einem anderen isolierenden Material isoliert
ist und das von dem Steuergate des Transistors durch eine zweite
Schicht des isolierenden Materials isoliert ist.
-
Um Daten in einer Speicherzelle mit
erdfreiem Gate zu speichern, wird das erdfreie Gate geladen oder
entladen, wobei ein Fowler-Nordheim-Tunnelmechanismus verwendet
wird, oder ein Injektionsmechanismus für heiße Elektronen. Der Fowler-Nordheim-Tunnelmechanismus
wird ausgeführt durch
das Aufbauen einer großen
positiven (oder negativen) Spannung zwischen dem Gate und der Source
oder der Drain der Einrichtung. Dies veranlaßt Elektronen, in (oder aus)
dem erdfreien Gate durch den dünnen
Isolator injiziert zu werden. Der Injektionsmechanismus für heiße Elektronen
basiert auf einem Lawinenprozeß.
Eine Injektion von heißen Elektronen
wird induziert durch Anlegen von Potentialen, um in dem Kanal der
Zelle hochenergetische Elektronen zu induzieren, die über den
dünnen
Isolator in das erdfreie Gate injiziert werden. Um eine Injektion
von heißen
Elektronen zu induzieren, wird ein Potential über die Source und die Drain
der Einrichtung angelegt zusammen mit einem positiven Potential
auf dem Steuergate. Das positive Potential auf dem Steuergate führt zu der
Tendenz, daß Elektronen
von dem Strom in dem Kanal der Einrichtung in das erdfreie Gate
gezogen werden. Die Vorgänge des
Aufladens und Entladens des erdfreien Gates sind über ein
großes
Array von Zellen schwer zu steuern. Daher werden einige der Zellen
schneller programmiert als andere in der gleichen Einrichtung. In
einem gegebenen Programmiervorgang werden nicht alle die Zellen,
die Gegenstand des Vorgangs sind, mit dem gleichen Betrag an in
dem erdfreien Gate gespeicherter Ladung zur Ruhe kommen. Da Chiphersteller
anfangen, Arrays von Speicherzellen mit erdfreiem Gate zu konstruieren,
die mit Nicht-Programmier-Versorgungsspannungen von 3 V oder weniger
operieren, wird es kritisch, daß alle
Zellen mit erdfreiem Gate in etwa den gleichen Betrag von Ladung
speichern, so daß die
Arrays in einem schmaleren Band von Lesestrom-Schwellen operieren
können.
-
Programmierverifikationssequenzen
wurden entwickelt, um effizient sicherzustellen, daß der Speicher
richtig programmiert ist. Die Programmierverifikationsoperation
basiert auf dem Vergleichen der in dem Speicherarray mit erdfreiem
Gate gespeicherten Daten mit den beabsichtigten Daten. Dies wird
typischerweise auf einer Wort-für-Wort-Basis
durchgeführt.
Wenn ein Fehler in der Verifikationssequenz erfaßt wird, dann wird die Programmieroperation
erneut versucht. In Einrichtungen aus dem Stand der Technik werden
erneute Programmversuche typischerweise Wort für Wort ausgeführt. Demnach
sind erfolgreich programmierte Bits in einem Wort mit nur einem
fehlerhaften Bit wiederholt Gegenstand des Programmierzyklus. Dies
kann zu Überprogrammierung
und zu einem Versagen der Zelle führen.
-
Eine Lösung dieses Problems ist die
Verwendung sogenannter Seitenmoduseinrichtungen. In Seitenmoduseinrichtungen
ist ein Seitenpuffer mit dem Speicherarray verbunden. Dieser Puffer
weist einen Ein-Bit-Signalspeicher für jede Bitleitung in dem Speicherarray
auf. Um das Array zu programmieren, wird der Speicherpuffer zuerst
mit den zu programmierenden Daten durch Transferieren der Daten
mit je einem Byte gleichzeitig (oder einem Wort gleichzeitig) in
den Seitenpuffer geladen. Die gesamte Seite wird dann parallel in
das Array programmiert, wobei der Inhalt der Bit-Signalspeicher verwendet wird. Die Verifikationsprozedur
löscht
automatisch alle die Bits in dem Seitenspeicher, die erfolgreich
in das Array programmiert wurden. Der Seitenpuffer wird dann mit
jeweils einem Byte (oder jeweils einem Wort) gelesen, um zu bestätigen, daß alle Bits
gelöscht
wurden, wodurch eine erfolgreiche Programmieroperation angezeigt
wird. Zum Beispiel siehe Tanaka et al., "High-Speed Programming and Program-Verify
Methods Suitable for Low-Voltage Flash Memories", Symposium on VLSI Circuits, Digest
of Technical Papers, 1994, S. 64–62.
-
Ein anderes Problem beim Programmieren von
Arrays mit erdfreiem Gate ist, eine ausreichende Quelle von Programmierstrom
bereitzustellen. Wenn eine große
Anzahl von Zellen mit erdfreiem Gate gleichzeitig programmiert wird,
wird eine große
Menge an Strom benötigt.
Zum Beispiel, wenn alle Speicherzellen mit erdfreiem Gate in einem
16-Bit-Wort gleichzeitig programmiert werden, und jede Zelle 250 μA Strom während des
Programmierens benötigt,
benötigt
das 16-Bit-Wort 4 Milliampère
an Programmierstrom. Dies ist kein Problem, wenn eine externe Stromversorgung
verwendet wird, um einen Programmierstrom zu liefern. Wenn jedoch
ein On-Chip-Pumpschaltkreis verwendet wird, um den Programmierstrom
zu liefern, muß der On-Chip-Pumpschaltkreis
groß genug
sein, um diese Anforderung zu erfüllen, und er wird folglich
einen großen
Betrag der Siliciumfläche
in Anspruch nehmen.
-
Eine frühere Erfindung erlaubt es,
daß individuelle
Bytes eines Wortes eines Speichers mit erdfreiem Gate individuell
programmiert werden. Siehe US-Patent Nr. 5,317,535 mit dem Titel
GATE/SOURCE DISTURB PROTECTION FOR 16-BIT EEPROM MEMORY ARRAYS von
Talreja et al. Jedoch erreicht diese Erfindung nicht das Ziel der
Reduzierung des Programmierstroms. Wenn auch diese Erfindung es Bytes
erlaubt, individuell programmiert zu werden, erlaubt es die Erfindung
auch einem ganzen Wort, gleichzeitig programmiert zu werden, wobei
ein großer
Betrag an Pro grammierstrom benötigt
wird und folglich eine große
On-Chip-Ladungspumpe benötigt wird.
Darüber
hinaus bricht jene Erfindung ein Wort nicht automatisch in Bytes
zum Programmieren auf; explizite Byteprogrammierbefehle müssen verwendet
werden, um jeweils ein Byte zu programmieren. Letztlich verwendet
jene Erfindung mehrere Wortleitungsdecoder (einen für jedes
Byte), die einen großen
Betrag an On-Chip-Fläche
verbrauchen.
-
WO-A-96/21227 bezieht sich auf eine
Programmierverifikationsprozedur für Flash-Speicher mit Seitenmodus.
Ein Seitenspeicher, der mit der Mehrzahl von Bitleitungen des Speichers
verbunden ist, liefert Eingangsdaten an eine Mehrzahl von Spalten
von Flash-EEPROM-Zellen. Schreibsteuerschaltkreise liefern Programmierspannungen
zum Programmieren von Eingabedaten an die Flash-EEPROM-Zellen als
Antwort auf die Eingabedaten, die in dem Dateneingangspuffer gespeichert
sind. Verifikationsschaltkreise verifizieren automatisch ein Programmieren
der Seite durch Zurücksetzen
von Bits in dem Seitenpuffer für
jede Zelle, die (die Überprüfung) besteht.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die vorliegende Erfindung liefert
ein Verfahren entsprechend Anspruch 13 und die Vorrichtung entsprechend
Anspruch 1 zum Programmieren von Arrays von Zellen mit erdfreiem
Gate, die die Anforderungen an den Programmierstrom reduzieren und zusätzlich die
Wortleitungs- und Bitleitungsspannung während der Neuprogrammieroperationen
reduziert. Die Erfindung arbeitet durch automatisches Aufteilen eines
zu programmierenden Wortes in eine Mehrzahl von kleineren Teilworten
und Programmieren jeweils eines dieser Teilworte.
-
Besondere und bevorzugte Aspekte
der vorliegenden Erfindung sind in den begleitenden abhängigen Ansprüchen dargelegt.
-
Insbesondere arbeiten bevorzugte
Ausführungsformen
der Erfindung durch: (1) Auswählen
eines adressierten Wortes des Speichers mit einem Adressiermechanismus;
(2) automatisches Programmieren des adressierten Wortes des Speichers
mit jeweils einem Teilwort; (3) Verifizieren des Programmierens
eines jeden Teilwortes in dem adressierten Wort des Speichers, wobei
die Verifizierungsoperation ein Verifizieren der Programmierung
eines jeden individuellen Bits in jedem Teilwort umfaßt; und
(4) automatisches Neuprogrammieren nur solcher Teilworte, bei denen
das Programmieren innerhalb des adressierten Wortes fehlgeschlagen
ist, wobei dieses Neuprogrammieren mit jeweils einem Teilwort gleichzeitig
stattfindet und wobei nur solche Bits, bei denen die Programmierung
fehlgeschlagen ist, neu programmiert werden.
-
Die Technik der bevorzugten Ausführungsformen
der Erfindung hat eine Anzahl von Vorteilen. Zuerst wird der Programmierstrom
reduziert, da nur ein Teilwort des Speichers gleichzeitig programmiert wird.
Zweitens erzeugt die Erfindung weniger Wortleitungsspannung, da
Teilworte, die erfolgreich programmiert wurden, nicht neu programmiert
werden. Letztlich wird die Bitleitungsspannung reduziert, da nur
solche Bits, bei denen ein Programmieren fehlschlägt, neu
programmiert werden, und die Bits, die erfolgreich programmiert
wurden, nicht neu programmiert werden.
-
Selektives Neuprogrammieren von individuellen
Bits wird vorzugsweise erreicht durch Bereitstellen von speziellen
Spaltentreibern für
jede Bitleitung auf dem Datenbus. Diese speziellen Spaltentreiber können sowohl
durch Teilwort- als auch Bit-Einschaltsignale eingeschaltet werden,
wobei sie es individuellen Teilworten und Bits erlauben, innerhalb
individueller Teilworte zum Programmieren und Neuprogrammieren ausgewählt zu werden.
Eine Ausführungsform
der vorliegenden Erfindung umfaßt
auch Bitprogrammieranzeigen, je eine für jedes Bit in dem Datenbus,
die anzeigen, ob ein bestimmtes Bit erfolgreich programmiert wurde.
-
In bevorzugten Ausführungsformen
der Erfindung wird eine separate Zweistufen-Spannungsquelle verwendet für jedes
Teilwort, um Wortleitungstreiber innerhalb jedes Teilwortes mit
Leistung zu versorgen. Diese Zweistufen-Spannungsquellen liefern Programmierspannungen
an ausgewählte
Teilworte und Nicht-Programmierspannungen an andere Teilworte.
-
Zusätzlich wird in bevorzugten
Ausführungsformen
ein Betriebszustand mit externem Programmierleistungsnebenschluß bereitgestellt,
der das Programmieren von jeweils einem Teilwort ausschaltet, wenn
eine Quelle für
Programmierleistung außerhalb
des Chips verfügbar
ist. Auf diese Weise können schnellere
Programmieroperationen für
jeweils ein Wort ausgeführt
werden, wenn eine Quelle für
Programmierstrom außerhalb
des Chips verfügbar
ist. Wenn nicht, kann eine Programmierung von jeweils einem Teilwort
verwendet werden, um den Programmierstrom zu reduzieren.
-
Die bevorzugte Ausführungsform
der vorliegenden Erfindung zeigt eine Anzahl von Vorteilen. (1) Sie
erlaubt eine Reduzierung der Menge an Siliciumfläche, die von einem Array von
Speicherzellen mit erdfreiem Gate in Anspruch genommen wird, weil
ein kleinerer On-Chip-Pumpschaltkreis
verwendet werden kann, um den Programmierstrom zu erzeugen. (2)
Anders als Systeme aus dem Stand der Technik, die Programmierung
von jeweils einem Byte liefern, durch Verwenden einer Mehrzahl von
Reihendecodern, verwendet die bevorzugte Ausführungsform der vorliegenden
Erfindung einen einzelnen Reihendecoder, der mit einer Mehrzahl
von zweistufigen Spannungsquellen verbunden ist, um die Wortleitungstreiber
anzutreiben. (3) Bitleitungsstörbedingungen
sind reduziert durch Neuprogrammieren nur solcher Bits, bei denen
eine Programmierung fehlschlägt.
(4) Wortleitungsstörbedingungen
werden reduziert durch Neuprogrammieren nur solcher Teilworte, bei
denen eine Programmierung fehlschlägt. (5) Zuletzt sind, anders
als in Systemen mit Seitenmodusprogrammierung, eine große Seitenpufferstruktur
und ein enorme Menge an Programmierstrom nicht erforderlich.
-
Zusammenfassend liefert die vorliegende
Erfindung ein Programmiersystem für Arrays von Speicherzellen
mit erdfreiem Gate, das nur solche Bits neu programmiert, die bei
einer Programmierverifikation durchfallen und es belastet nicht
die Gates oder die Drains der Zellen, die die Programmierverifikation bestehen.
Zusätzlich
erlaubt das System der vorliegenden Erfindung zum Programmieren
von Arrays mit erdfreiem Gate, die Anforderungen an den Programmierstrom
zu reduzieren, wobei es ermöglicht wird,
einen kleineren On-Chip-Pumpschaltkreis zu verwenden, um den Programmierstrom
zu erzeugen.
-
BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm der funktionellen Hauptkomponenten eines Systems
zum Programmieren eines Arrays von erdfreien Speicherzellen gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
2 ist
ein Schaltkreisdiagramm, das gemäß einer
Ausführungsform
der vorliegenden Erfindung ein Array von Speicherzellen mit erdfreiem Gate
zeigt.
-
3 ist
ein Diagramm, das zeigt, wie gemäß einer
Ausführungsform
der vorliegenden Erfindung Programmeingabestrukturen und Meßverstärker mit
den Spaltenleitungen eines Arrays von Speicherzellen mit erdfreiem
Gate verbunden sind.
-
4 ist
ein Schaltkreisdiagramm einer Dateneingabestruktur, die gemäß einer
Ausführungsform
der vorliegenden Erfindung einem einzelnen Bit des Datenbusses entspricht.
-
5 ist
ein Schaltkreisdiagramm für
die Low-Byte-Zweistufen-Spannungsquelle 110 aus 1.
-
6 ist
ein Schaltkreisdiagramm der High-Byte-Zweistufen-Spannungsquelle 112 aus 1.
-
7 ist
ein Schaltkreisdiagramm für
einen einzelnen Low-Byte-Wortleitungstreiber gemäß einer Ausführungsform
der vorliegenden Erfindung.
-
8 ist
ein Schaltkreisdiagramm für
einen einzelnen High-Byte-Wortleitungstreiber gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
9 ist
ein Flußdiagramm,
das die Schritte zeigt, die verwendet werden, um gemäß einer
Ausführungsform
der vorliegenden Erfindung ein Wort in einem Array von Speicherzellen
mit erdfreiem Gate zu programmieren.
-
BESCHREIBUNG EINER BEVORZUGTEN
AUSFÜHRUNGSFORM
-
Die folgende Beschreibung wird präsentiert, um
einen Fachmann in die Lage zu versetzen, die Erfindung herzustellen
und zu verwenden, und sie wird geliefert in dem Zusammenhang einer
bestimmten Anwendung und ihren Erfordernissen. Verschiedene Modifikationen
an der bevorzugten Ausführungsform sind
leicht ersichtlich für
solche Fachleute und die generellen Prinzipien, die hierin definiert
werden, können
auf andere Ausführungsformen
und Anwendungen angewandt werden, ohne von dem Geist und Schutzbereich
der Erfindung abzuweichen. Daher ist nicht beabsichtigt, daß die vorliegende
Erfindung auf die gezeigte Ausführungsform
begrenzt ist, sondern sie soll mit dem weitesten Schutzbereich übereinstimmen,
der konsistent mit den hierin offenbarten Prinzipien und Eigenschaften
ist.
-
1 ist
ein Blockdiagramm der funktionalen Hauptkomponenten eines Systems
zum Programmieren eines Arrays von Speicherzellen mit erdfreiem
Gate gemäß einer
Ausführungsform
der vorliegenden Erfindung. In 1 ist
das Array von Speicherzellen mit erdfreiem Gate in zwei Teile aufgeteilt: ein
Low-Byte-Speicherarray 100 und ein High-Byte-Speicherarray 102,
die zusammen ein Zwei-Byte-(oder 16-Bit-)Speicherarray aufweisen bzw.
bilden.
-
Das Low-Byte-Speicherarray 100 hat
sowohl Reihen- als auch Spalteneingänge. Es akzeptiert Reiheneingaben
von den Low-Byte-Wortleitungstreibern 120, die von der
Zweistufen-Spannungsquelle 110 angetrieben
werden. Es akzeptiert Spalteneingaben von dem Low-Byte-Spaltendecoder 140,
der Spalteneingaben von Low-Byte-Programmdateneingabestrukturen 150 auswählt, die
selbst wiederum Daten von dem Low-Byte des Dateneingangspuffers 182 akzeptieren.
-
Das High-Byte-Speicherarray 102 hat
ebenfalls sowohl Reihen- als auch Spalteneingänge. Das High-Byte-Speicherarray 102 akzeptiert
Reiheneingaben von den High-Byte-Wortleitungstreibern 122, die
von der High-Byte-Zweistufen-Spannungsquelle 112 angetrieben
werden. Das High-Byte-Speicherarray 102 akzeptiert Spalteneingabe
von dem High-Byte-Spaltendecoder 142, der Daten von den High-Byte-Programmdateneingabestrukturen 152 akzeptiert,
die selbst wiederum Daten von dem High-Byte des Dateneingabepuffers 182 akzeptieren.
-
Das Speicherarray, das in 1 dargestellt ist, akzeptiert
eine Anzahl von Programmiereingängen.
Der Adreßbus 160 ist
ein Eingang, der sich aufspaltet in eine Spaltenadresse und eine
Reihenadresse. Die Spaltenadresse gibt sowohl in den Low-Byte-Spaltendecoder 140 als
auch in den High-Byte-Spaltendecoder 142 ein. Der Low-Byte-Spaltendecoder 140 verwendet
diese Spaltenadresse, um Programmierdaten von den Low-Byte-Programmdateneingangsstrukturen 150 in ausgewählte Bitleitungen
des Low-Byte-Speicherarrays 100 zu leiten. Der High-Byte-Spaltendecoder 142 verwendet
diese Spaltenadresse, um Daten von den High-Byte-Programmdateneingangsstrukturen 152 in
ausgewählte
Bitleitungen des High-Byte Speicherarrays 102 zu leiten.
Die Reihenadresse gibt in den Reihendecoder 130 ein, der
diese Reihenadresse in einen Satz von Einschaltsignalen decodiert,
die verwendet werden, um ausgewählte
Wortleitungstreiber von sowohl dem Low-Byte-Wortleitungstreiber 120 als
auch dem High-Byte-Wortleitungstreiber 122 einzuschalten.
-
Der Datenbus 180 ist auch
ein Eingang in das Speicherarray, das in 1 dargestellt ist. Der Datenbus 180 gibt
in den Dateneingangspuffer 182 ein, der den Inhalt des
Datenbusses 180 zur Eingabe in sowohl das Low-Byte-Speicherarray 100 als
auch das High-Byte-Speicherarray 102 speichert. Der Ausgang
des Dateneingangsspeichers 182 spaltet in ein Low-Byte
und ein High-Byte auf. Das Low-Byte wird in die Low-Byte-Programmdateneingangsstrukturen 152 eingegeben,
die in das Low-Byte-Speicherarray 100 eingegeben werden.
Das High-Byte wird in die High-Byte-Programmdateneingangsstrukturen 152 eingegeben,
die in das High-Byte-Speicherarray 102 eingegeben werden.
-
Zuletzt sind zwei Eingaben in das
Speicherarray Einschaltsignale: Low-Byte-Einschaltsignal 170 und
High-Byte-Einschaltsignal 172. Diese Einschaltsignale stammen
von einer Steuerstruktur für
das Speicherarray mit erdfreien Gates, das nicht dargestellt ist.
Das Low-Byte-Einschaltsignal 170 wird in die Low-Byte-Zweistufen-Spannungsquelle 110 eingegeben,
wo es selektiv die Energie (bzw. den Strom), die von der Low-Byte-Zweistufen-Spannungsquelle 110 herstammt,
zwischen einer 12 V-Wortleitungsprogrammierspannung und einer 5 V-Nicht-Programmierspannung
schaltet. Das Low-Byte-Einschaltsignal 170 wird auch in
die Low-Byte-Programmdateneingabestrukturen 150 eingegeben,
wo es Drain-Programmierspannungen einschaltet, die in Spalten des
Low-Byte-Speicherarrays 100 durch
den Low-Byte-Spaltendecoder 140 eingegeben werden.
-
Das High-Byte-Einschaltsignal 172 wird
in die High-Byte-Zweistufen-Spannungsquelle 112 eingegeben
und in die High-Byte-Programmdateneingangsstrukturen 152.
Das High-Byte-Einschaltsignal 172 schaltet
die High-Byte-Zweistufen-Spannungsquelle 112 zwischen einer
Wortleitungsprogrammierspannung von 12 V und einer Nicht-Programmierspannung
von 5 V. Das High-Byte-Einschaltsignal 172 wird
auch in die High-Byte-Programmdateneingangsstrukturen 152 eingegeben,
wo es Drain-Programmierspannungen schaltet, die durch den High-Byte-Spaltendecoder 142 in
Spalten des High-Byte-Speicherarrays 102 eingegeben werden.
-
2 stellt
eine segmentierbare Arrayarchitektur dar, die eine Drain-Source-Drain-Konfiguration des
Flash-EPROM-Schaltkreises verwendet, wie in US-Patent Nr. 5,414,664
mit dem Titel FLASH EPROM WITH BLOCK ARRAY FLAGS FOR OVER-ERASE
PROTECTION beschrieben, das nun und zum Zeitpunkt dieser Erfindung
dem gleichen Anmelder gehört
wie die vorliegende Erfindung.
-
Der Schaltkreis umfaßt eine
erste lokale Bitleitung 10 und eine zweite lokale Bitleitung 11.
Die ersten und zweiten lokalen Bitleitungen 10 und 11 sind
unter Verwendung vergrabener Diffusionsleiter implementiert. Auch
ist eine lokale virtuelle Masseleitung 12 implementiert
durch vergrabene Diffusion. Eine Mehrzahl von Transistoren mit erdfreiem
Gate, die Gates, Drains und Sources aufweisen, sind mit den lokalen
Bitleitungen 10 und 11 und mit der virtuellen
Masseleitung 12 verbunden. Die Sourcen der Mehrzahl von
Transistoren sind mit der lokalen virtuellen Masseleitung 12 verbunden.
Die Drains einer ersten Spalte von Transistoren, im allgemeinen
mit 13 bezeichnet, sind mit der ersten lokalen Bitleitung 10 verbunden
und die Drains einer zweiten Spalte von Transistoren, im allgemeinen 14 bezeichnet,
sind mit der zweiten lokalen Bitleitung 11 verbunden. Die Gates
der Transistoren mit erdfreiem Gate sind mit den Wortleitungen WLO bis WLN verbunden,
wobei jede Wortleitung (z. B. WL1) mit dem
Gate eines Transistors (z. B. Transistor 15) in der ersten
lokalen Bitleitung 10 und einem Transistor (z. B. Transistor 16) in
der zweiten lokalen Bitleitung 11 verbunden ist. Daher
können
die Transistoren 15 und 16 betrachtet werden als
zwei Transistorzellen mit einer gemeinsamen Sourcediffusion.
-
Der Akt des Ladens des erdfreien
Gates wird als "Programmierschritt" für die Flash-EPROM-Zellen bezeichnet.
Dies wird byteweise erreicht durch Injektion von heißen Elektronen
durch Aufbauen einer großen
positiven Spannung zwischen dem Gate und der Source, wie z. B. 12
V, und einer positiven Spannung zwischen der Drain und der Source,
wie z. B. 6 V.
-
Eine erste globale Bitleitung 17 und
eine zweite globale Bitleitung 18 sind mit jedem Drain-Source-Drain-Block
verbunden. Die erste globale Bitleitung 17 ist mit der
Source des obersten Blockauswahltransistors 19 durch einen
Metall-zu-Diffusion-Kontakt 55 verbunden. Gleichfalls ist
die zweite globale Bitleitung 18 an die Source des obersten
Blockauswahltransistors 21 durch einen Metall-zu-Diffusion-Kontakt 56 verbunden.
Die Drains der obersten Blockauswahltransistoren 19, 21 sind
mit den ersten und zweiten lokalen Bitleitungen 10 bzw. 11 verbunden.
Die Gates der obersten Blockauswahltransistoren 19 und 21 werden
von einem obersten Blockauswahlsignal TBSELA auf
Leitung 23 gesteuert.
-
Die lokale virtuelle Masseleitung 12 ist
mit einem virtuellen Masseanschluß über den Leiter 54A durch
den untersten Blockauswahltransistor 65A verbunden. Die
Drain des untersten Blockauswahltransistors 65A ist mit
der lokalen virtuellen Masseleitung 12 verbunden. Die Source
des untersten Blockauswahltransistors 65A ist mit dem Leiter 54A verbunden.
Das Gate des untersten Blockauswahltransistors 65A wird
von einem unteren Blockauswahlsignal BBSELA über Leitung 26 gesteuert.
In dem bevorzugten System ist der Leiter 54A ein vergrabener
Diffusionsleiter, der sich zu einem Metall-zu-Diffusion-Kontakt 60A an
einer Position, die horizontal verschoben ist, durch das Array erstreckt,
und der einen Kontakt zu einem vertikalen metallischen virtuellen
Massebus 25 liefert.
-
Die globalen Bitleitungen erstrecken
sich vertikal durch das Array zu den entsprechenden Spaltenauswahltransistoren 70 und 71,
durch die eine ausgewählte
globale Bitleitung mit einem Meßverstärker und
einem Programmdatenschaltkreis (nicht gezeigt) verbunden ist. Daher
ist die Source des Spaltenauswahltransistors 70 mit der
globalen Bitleitung 17 verbunden, das Gate des Spaltenauswahltransistors 70 ist
mit dem Spaltendecodiersignal Yn0 verbunden
und die Drain des Spaltenauswahltransistors 70 ist mit
den Leitern 29 verbunden.
-
Die Blöcke der Flash-EPROM-Zellen,
die in 1 gezeigt sind,
sind in einer Mehrzahl von Teilarrays konfiguriert, wie in 2 dargestellt. 2 stellt zwei Teilarrays
innerhalb eines größeren integrierten Schaltkreises
dar. Die Teilarrays sind allgemein entlang der gestrichelten Linie 50 geteilt
und umfassen ein Teilarray 51A, das generell über der
Linie 50 liegt, und ein Teilarray 51B, das generell
unter der Linie 50 liegt. Eine erste Gruppe 52 von
Zellen ist spiegelbildlich zu einer zweiten Gruppe 53 von
Zellen entlang eines gegebenen Bitleitungspaares (z. B. Bitleitungen 17 und 18)
angeordnet. Wenn man das Bitleitungspaar hinaufverfolgt, so sind
die Speicherteilarrays umgedreht, so daß sie die virtuellen Masseleiter 54A und 54B (vergrabene
Diffusion) und die Metall-zu-Diffusion-Kontakte 55, 56, 57 und 58 gemeinsam
verwenden. Die virtuellen Masseleiter 54A und 54B erstrecken
sich horizontal über
das Array zu einer vertikalen virtuellen Massemetalleitung 25 durch Metall-zu-Diffusion-Kontakte 60A und 60B.
Die Teilarrays wiederholen sich auf den gegenüberliegenden Seiten der metallischen
virtuellen Masseleitung 25, so daß benachbarte Teilarrays eine
metallische virtuelle Masseleitung 25 gemeinsam verwenden. Die
metallische virtuelle Masseleitung 25 ist mit Array Masseschaltkreisen
und Schaltkreisen zum Löschen der
High-Spannungen verbunden. Daher erfordert der Schaltplan des Teilarrays
zwei metallische Kontaktanschlüsse
pro Spalte von zwei Transistorzellen für die globalen Bitleitungen
und einen metallischen Kontaktanschluß pro Teilarray für die metallische
virtuelle Masseleitung 25.
-
Darüber hinaus können, wie
in 2 gezeigt, zwei oder
mehr Teilarrays Wortleitungssignale, wie sie dargestellt sind, aufgrund
der zusätzlichen Decodierung,
die von den oberen und unteren Blockauswahlsignalen TBSELA, TBSELB, BBSELA und BBSELB geliefert
werden, gemeinsam verwenden. In dem bevorzugten System ist jeder
Block so konfiguriert, daß er
vier Teilarrays in einer Spalte umfaßt, mit einer Zeile in jedem
Teilarray, die einen gemeinsamen Wortleitungstreiber mit Reihen
in den anderen drei Teilarrays gemeinsam verwenden. Decodieren unter
den vier Teilarrays wird ausgeführt,
wobei die obersten Blockauswahltransistoren als Antwort auf TBSELA und TBSELB verwendet
werden. Jedes Teilarray umfaßt
32 Wortleitungen und 1 K (1.024) Bitleitungen. Daher wird mit vier
Teilarrays, 32 Wortleitungen tief und 1 K Bitleitungen breit, ein
Block von 128 K Zellen bereitgestellt. Zweiunddreißig Blöcke bilden einen
4-Megabit-Speicher.
-
3 stellt
dar, wie Programmdaten in Strukturen und Meßverstärkern mit Spaltenleitungen eines
Arrays von Speicherzellen mit erdfreiem Gate verbunden sind gemäß einer
Ausführungsform
der vorliegenden Erfindung. Insbesondere stellt 3 die Verbindungen "mit Meßverstärkern und Programmdateneingangsstrukturen" dar, die in der
unteren rechten Ecke von 2 spezifiziert
sind. Programmdaten0 Eingangsstruktur 300 nimmt das Daten0-Eingangssignal 320 und
das Low-Byte-Einschaltsignal 170 auf
und erzeugt einen Ausgang, der in Spaltenleitungen des Speicherarrays
mit erdfreiem Gate eingegeben wird, die dem Bit 0 des Datenbusses
entsprechen. Wenn die Speicherzelle mit erdfreiem Gate, die Bit
0 entspricht, programmiert wird, wird der Ausgang der Speicherzelle
mit erdfreiem Gate durch Spaltenleitungen in den Daten0-Meßverstärker 330 geleitet,
der das Signal auf seine richtigen hohen oder niedrigen Spannungen
verstärkt.
Dieses verstärkte
Signal wird in einen Daten0-Komparator 340 geleitet, der
auch das Daten0-Eingangssignal 320 als eine Eingabe akzeptiert
und ein Übereinstimmungs-Daten0-Signal 350 ausgibt.
Das Übereinstimmungs-Daten0-Signal 350 zeigt
an, daß der
Inhalt des erdfreien Gates mit dem DatenO-Eingangssignal 320 übereinstimmt.
-
3 stellt
auch die Programmdateneingangsstruktur und den Meßverstärker für das Daten0-Eingangssignal 321 dar.
Die Programmdaten15-Eingangsstruktur 310 nimmt das Daten15-Eingangssignal 321 und
das High-Byte-Einschaltsignal 172 auf. Es erzeugt eine
Ausgabe, die in die Spaltenleitungen des Speicherarrays mit erdfreiem
Gate eingegeben wird, entsprechend dem Bit 15 des Datenbusses 182.
Sobald die richtige Zelle mit erdfreiem Gate programmiert ist, wird
die Programmierung verifiziert durch Ausgeben des Zelleninhalts in
den Daten15-Meßverstärker 332.
Dieser verstärkt das
Signal auf seine richtige hohe oder niedrige Spannung. Dieses verstärkte Signal
wird in den Daten15-Komparator 342 geleitet, der auch das Daten15-Eingangssignal 321 als
eine Eingabe aufnimmt und das Übereinstimmungsdaten15-Signal 352 ausgibt,
das anzeigt, ob der Inhalt der Zelle mit erdfreiem Gate mit dem
Wert des Bit 15 des Datenbusses 182 übereinstimmt.
-
Die gleiche Struktur wird wiederholt
für alle Bits
zwischen Bit 0 und Bit 15 des Datenbusses 182. Die Programmdateneingangsstrukturen
für die
ersten acht Bits, Bit 0 bis Bit 7, nehmen das Einschaltsignal 170 auf.
Wohingegen die Programmdateneingangsstrukturen für die letzten acht Bits, Bit
8 bis Bit 15, das High-Byte-Einschaltsignal 172 aufnehmen. Diese
Byte-Einschaltsignale 170 und 172 erlauben es,
eine Drain-Programmierspannung an nur eines der zwei Bytes gleichzeitig
anzulegen, wodurch der Stromverbrauch der Speicherzellen der nicht
ausgewählten
Bytes reduziert wird.
-
4 stellt
die interne Struktur für
die Programmdateneingangsstrukturen dar, die in 3 auftauchen. Jede Programmdateneingangsstruktur hat
eine Anzahl von Eingaben. Übereinstimmungsdaten/400 zeigen
an, daß das
Daten/-Bit innerhalb des Speicherarrays mit erdfreiem Gate richtig
programmiert ist. Das Daten/-Zurücksetz-Bitanzeigesignal 402 setzt
die Anzeige zurück,
die anzeigt, daß die Daten/neu
programmiert werden müssen.
Das High/Low-Byte-Einschaltsignal 404 ist entweder mit dem
Low-Byte-Einschaltsignal 170 oder dem High-Byte-Einschaltsignal 172 verbunden,
in Abhängigkeit
davon, ob Daten/ in dem High- oder Low-Byte sind oder nicht. Das
Daten/-Eingangssignal 406 ist mit
dem Dateni-Bit des Datenpuffers 182 verbunden. Zuletzt
stammt das Programmierendesignal 408 aus dem Steuerschaltkreis
des Arrays (nicht gezeigt) und zeigt an, daß der Programmierprozeß beendet
ist.
-
Die NOR-Gatter 420 und 422 sind
Eingang-an-Ausgang miteinander verbunden in einer bistabilen Konfiguration,
um einen Daten/-Anzeigenspeicher 450 zu bilden, der ein
Bit speichert, das anzeigt, ob Daten/ richtig programmiert wurden.
Insbesondere verwendet das NOR-Gatter 420 das Übereinstimmungsdaten/-Signal 400 und
den Ausgang des NOR-Gatters 422, um eine Ausgabe zu erzeugen,
die in eine Eingabe des NOR-Gatters 422 zusammen mit der
Zurücksetzdaten/-Marke 402 eingegeben
wird. Normalerweise sind sowohl das Übereinstimmungsdaten/-Signal 400 als
auch die Zurücksetzdaten/-Marke 402 bei
einem niedrigen Wert. Wenn dies der Fall ist, bleibt der Inhalt
des Daten/-Markenspeichers 450 unverändert gegenüber seinem vorhergehenden Wert.
Wenn das Übereinstimmungsdaten/-Signal 400 einen
hohen Wert hervorbringt, gibt das NOR-Gatter 420 einen
niedrigen Wert aus, der in einen Eingang des NOR-Gatters 422 eingegeben
wird. Nimmt man an, daß das
Zurücksetzdaten/-Anzeigensignal 402 bei
einem niedrigen Wert verbleibt, so ist die Ausgabe des NOR-Gatters 422 hoch.
Wenn das Übereinstimmungdaten/-Signal 400 nachfolgend
wieder niedrig wird, verbleibt die hohe Ausgabe des NOR-Gatters 422 hoch,
bis die Zurücksetzdaten/-Anzeige 402 bestätigt wird,
um den Datenmarkenspeicher 450 zurückzusetzen.
-
Das Zurücksetzdaten/-Anzeigensignal 402 wird
verwendet, um den Daten/-Anzeigenspeicher 450 zurückzusetzen.
Wenn die Zurücksetzdaten/-Anzeige 402 einen
hohen Wert hervorbringt, zwingt sie das NOR-Gatter 422,
einen niedrigen Wert auszugeben. Wenn das Übereinstimmungsdaten/-Signal 400 niedrig
ist, wird die Ausgabe des NOR-Gatters 420 hoch. Dies koppelt
in einen Eingang des NOR-Gatters 422 zurück, aber
es ändert
nicht die Ausgabe des NOR-Gatters 422 von ihrem neu hervorgebrachten
niedrigen Wert. Der Datenmarkenspeicher 450 wird dadurch
zurückgesetzt.
-
Das NOR-Gatter 424 nimmt
Eingaben von: der Ausgabe des NOR-Gatters 422, dem High/Low-Byte-Einschaltsignal 404 und
dem Daten/-Eingangssignal 406. Wenn jede dieser Eingaben hoch
ist, wird die Ausgabe des NOR-Gatters 424 niedrig. Die
Ausgabe des NOR-Gatters 424 gibt über den Inverter 426 ein
in: die Gateeingabe des n-Kanal-Transistors 440, die Eingabe
des Inverters 428, und die Gateeingabe in den n-Kanal-Transistor 444. Die
Ausgabe des Inverters 428 gibt in die Gateeingabe des n-Kanal-Transistors 442 ein.
Die Drain des n-Kanal-Transistors 440 ist mit Erde bzw.
Masse verbunden und die Source des n-Kanal-Transistors 440 ist
sowohl mit der Drain des p-Kanal-Transistors 430 verbunden
als auch mit dem Gate des p-Kanal-Transistors 432. Die
Drain des n-Kanal-Transistors 442 ist mit Masse (Erde)
verbunden und die Source des n-Kanal-Transistors 442 ist mit: dem
Gate des p-Kanal-Transistors 430, der Drain des p-Kanal-Transistors 432 und
dem Gate des p-Kanal-Transistors 430 verbunden. Sowohl
die Source des p-Kanal-Transistors 430 als
auch das Substrat des p-Kanal-Transistors 430 sind mit
VPP verbunden, der ein High-Programmierspannungsniveau ist. Gleichfalls
sind sowohl die Source des p-Kanal-Transistors
432 als auch
das Substrat des p-Kanal-Transistors 432 mit VPP verbunden.
Die Source des p-Kanal-Transistors 434 ist
mit der Programmreferenzspannung 410 verbunden und das
Substrat des p-Kanal-Transistors 434 ist mit VPP verbunden.
Die Drain des p-Kanal-Transistors 434 ist mit der Source
des n-Kanal-Transistors 444 und dem Gate des n-Kanal-Transistors 448 verbunden.
Die Drain des n-Kanal-Transistors 444 ist mit Masse verbunden.
Die Source des n-Kanal-Transistors 448 ist mit VPP verbunden
und die Drain des n-Kanal-Transistors 448 ist sowohl mit der
Source des n-Kanal-Transistors 446 als auch mit der Ausgabe
an Bit/Spalten 412 verbunden. Zuletzt ist das Gate des
n-Kanal-Transistors 446 mit dem Programmendesignal 408 verbunden
und die Drain des n-Kanal-Transistors 446 ist mit Masse
verbunden.
-
Der oben beschriebene Schaltkreis
arbeitet wie folgt. Wenn die Eingabe des Dateni-Anzeigenspeichers 450 einem
hohen Wert zugeordnet ist oder das High/Low-Byte-Einschaltsignal 404 einem
hohen Wert zugeordnet ist, wird die Ausgabe des NOR-Gatters 424 niedrig,
was den Ausgang des Inverters 426 veranlaßt, auf
High zu gehen. Dieser High-Wert wird in das Gate des n-Kanal-Transistors 440 eingegeben,
wobei er die Source des n-Kanal-Transistors 440 veranlaßt, sich
mit Masse zu verbinden. Der High-Spannungsausgang des Inverters 426 wird durch
den Inverter 428 eingegeben, um eine Low-Eingabe in das
Gate des n-Kanal-Transistors 442 zu treiben, wodurch die
Source des n-Kanal-Transistors 442 von der Massespannung
an der Drain des n-Kanal-Transistors 442 entkoppelt
wird. Die Low-Spannung bei der Source des n-Kanal-Transistors 440 wird
in den Gateeingang des p-Kanal-Transistors 432 eingegeben,
wodurch ein leitender Pfad zwischen VPP und der Drain des p-Kanal-Transistors 432 gebildet
wird, der mit dem Gate des p-Kanal-Transistors 434 verbindet.
Dies treibt die High-Spannung in das Gate des p-Kanal-Transistors 434,
wobei die Drain des p-Kanal-Transistors 434 veranlaßt wird,
sich von der Programmreferenzspannung 410 zu entkoppeln,
die mit der Source des p-Kanal-Transistors 434 verbunden
ist.
-
Der High-Spannungsausgang des Inverters 426 wird
auch in den Gateeingang des n-Kanal-Transistors 444 eingegeben,
wobei ein leitfähiger
Pfad zwischen der Source des n-Kanal-Transistors 444 und der Drain
des n-Kanal-Transistors 444 verursacht wird, der auf Masse
gezogen wird. Dieser Massewert wird in den Gateeingang des n-Kanal-Transistors 448 eingegeben,
wobei die Drain des n-Kanal-Transistors 448 veranlaßt wird,
sich von VPP zu entkoppeln. Nimmt man an, daß das Programmierendesignal 408 auf
einen Low-Wert gesetzt ist, so ist das Gate des n-Kanal-Transistors 446 auch
ein Low-Wert. Dies entkoppelt die Source des n-Kanal-Transistors 446 von
der Drain des n-Kanal-Transistors 446, der auf Masse gezogen
ist. Da die Gateeingänge
zu beiden n-Kanal-Transistoren 446 und 448 auf
eine Low-Spannung gesetzt sind, ist der Ausgang zu Bit/Spalten 412 entkoppelt
von sowohl VPP als auch von Masse. In der Konsequenz nehmen die Ausgangzu-Bit/Spalten 412 eine
erdfreie Spannung an.
-
Das Daten/-Eingangssignal 406 beeinflußt den Schaltkreis
wie folgt. Wenn der Ausgang des Dateni-Anzeigenspeichers 450 und
das High/Low-Byte-Einschaltsignal 404 beide einen Low-Wert
präsentieren,
steuert das Daten/-Eingangssignal 406 die Ausgang-zu-Bit/Spalten 412. Wenn
das Dateni-Eingangssignal 406 eine High-Spannung ist, nimmt
der Ausgang des Inverters 424 eine Low-Spannung an, die verursacht, daß die Ausgang-zu-Bit/Spalten 412 erdfrei
sind auf die gleiche Wei se wie die bestätigenden High/Low-Byte-Einschaltsignale 404 oder
der bestätigende
Eingang von dem Daten/-Anzeigenspeicher 450 die Ausgang-zu-Bit/Spalten 412 verursacht,
erdfrei zu werden.
-
Wenn das Daten/-Eingangssignal 406 einen Low-Wert
annimmt, so nimmt der Ausgang des NOR-Gatters 424 einen
High-Wert an, wobei der Ausgang des Inverters 426 veranlaßt wird,
auf Low zu gehen. Dieser Low-Wert wird in den Gateeingang des n-Kanal-Transistors 442 eingegeben
und durch den Inverter 428, um eine High-Spannung in den
Gateeingang des n-Kanal-Transistors 442 zu treiben. Dies
erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 442 und
der Drain des n-Kanal-Transistors 442, der auf Masse gezogen ist.
Dieser Massewert wird in den Gateeingang des p-Kanal-Transistors 434 eingegeben,
wobei die Drain des p-Kanal-Transistors 434 veranlaßt wird,
sich mit der Programmreferenzspannung 410 an der Source des
p-Kanal-Transistors 434 zu verbinden. Der Low-Ausgang des
Inverters 426 wird auch in den Gateeingang des n-Kanal-Transistors 444 eingegeben, wobei
die Source des n-Kanal-Transistors 444 veranlaßt wird,
sich von der Drain des n-Kanal-Transistors 444 zu entkoppeln,
die mit Masse verbunden ist. Die High-Spannung von der Drain des p-Kanal-Transistors 434 ist
mit dem Gateeingang des n-Kanal-Transistors 448 verbunden,
wobei die Ausgang-zu-Bit/Spalten 412 veranlaßt werden,
sich mit der Programm-Drainspannung zu verbinden. Eine Programmierspannung
wird dann durch die Ausgangzu-Bit/Spalten 412 in eine ausgewählte Bitleitung
des Arrays mit erdfreien Gates fließen.
-
Zuletzt nimmt, wann immer das Programmende-Signal 408 einen
High-Wert vorbringt, der Gateeingang des n-Kanal-Transistors 446 einen High-Wert
an, wobei die Source des n-Kanal-Transistors 446 veranlaßt wird,
sich mit der Drain des n-Kanal-Transistors 446 zu verbinden,
die mit Masse verbunden ist. Dies veranlaßt die Ausgang-zu-Bit/Spalten 412,
einen Massewert anzunehmen, wobei effektiv die Programmierspannung
auf den Bitleitungen des Arrays mit erdfreien Gates abgeschaltet
wird.
-
5 ist
ein Schaltkreisdiagramm, das die interne Struktur der Low-Byte-Zweistufen-Spannungsquelle 110 darstellt.
Dieser Schaltkreis nimmt einen einzelnen Eingang auf, das Low-Byte-Einschaltsignal 170,
und erzeugt einen Low-Byte-Zweistufen-Spannungsausgang 500.
Das Low-Byte-Einschaltsignal 170 wird in den Gateeingang
des n-Kanal-Transistors 530 eingegeben und durch den Inverter 510 in
den Gateeingang des n-Kanal-Transistors 532. Der Ausgang
des Inverters 510 wird auch durch den Inverter 512 in
den Gateeingang des n-Kanal-Transistors 534 und den Gateeingang
des p-Kanal-Transistors 526 eingegeben. Die Drain des n-Kanal-Transistors 530 ist
mit Masse verbunden und die Source des n-Kanal-Transistors 530 ist
sowohl mit dem Gateeingang des p-Kanal-Transistors 522 als auch
mit der Drain des p-Kanal-Transistors 520 verbunden. Die
Drain des n-Kanal-Transistors 532 ist mit Masse verbunden
und die Source des n-Kanal-Transistors 532 ist sowohl mit
dem Gate des p-Kanal-Transistors 520 als auch mit der Drain
des p-Kanal-Transistors 522 verbunden. Die Source des n-Kanal-Transistors 532 ist
auch mit dem Gateeingang des p-Kanal-Transistors 524 verbunden.
Sowohl die Source des p-Kanal-Transistors 520 als auch
das Substrat des p-Kanal-Transistors 520 sind mit VPP verbunden.
Sowohl die Source des p-Kanal-Transistors 522 als auch
das Substrat des p-Kanal-Transistors 522 sind auch mit
VPP verbunden. Sowohl die Source des p-Kanal-Transistors 524 als auch
das Substrat des p-Kanal-Transistors 524 sind mit VPP verbunden.
Die Drain des p-Kanal-Transistors 524 ist verbunden mit:
der Source des n-Kanal-Transistors 534,
der Source des p-Kanal-Transistors 526 und dem Gateeingang
des p-Kanal-Transistors 528.
Die Drain des n-Kanal-Transistors 534 ist mit Masse verbunden.
Die Drain und das Substrat des p-Kanal-Transistors 526 sind
beide mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden.
Der Low-Byte-Zweistufen-Spannungsausgang 500 ist auch mit
dem Substrat des p-Kanal-Transistors 528 und
der Source des p-Kanal-Transistors 528 verbunden. Zuletzt
ist die Drain des p-Kanal-Transistors 528 mit VDD (welche
typischerweise 5 V ist) verbunden.
-
Die Low-Byte-Zweistufen-Spannungsquelle 110 arbeitet
wie folgt. Wenn das Low-Byte-Einschaltsignal 170 einen
Low-Wert vorbringt, veranlaßt
es den Gateeingang zu dem n-Kanal-Transistor 530, einen Low-Wert
anzunehmen. Dieser Low-Wert wird auch durch den Inverter 510 zum
Treiben einer High-Spannung in den Eingang des n-Kanal-Transistors 532 eingegeben.
Dies erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 532 und
der Drain des n-Kanal-Transistors 532,
die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 532 nimmt
dabei eine Low-Spannung an, die in den Gateeingang des p-Kanal-Transistors 542 eingegeben
wird, wobei ein leitender Pfad zwischen der Source des p-Kanal-Transistors 520,
die mit VPP verbunden ist, und der Drain des p-Kanal-Transistors 524 verursacht
wird. Die High-Spannung auf der Drain des p-Kanal-Transistors 524 ist mit
dem Gateeingang des p-Kanal-Transistors 528 verbunden,
wobei die Source des p-Kanal-Transistors 528, die mit dem
Low-Byte-Zweistufen-Spannungsausgang 512 verbunden
ist, von VDD an der Drain des p-Kanal-Transistors 528 isoliert
wird. Der High-Spannungsausgang des Inverters 510 wird dann
durch den Inverter 512 eingegeben, um eine Low-Spannung
an dem Eingang zu dem n-Kanal-Transistor 534 und dem Gateeingang
zu dem p-Kanal-Transistor 526 zu erzeugen. Dies isoliert
die Source von der Drain des n-Kanal-Transistors 534 und erzeugt
einen leitenden Pfad zwischen der Source des p-Kanal-Transistors 526,
die mit VPP verbunden ist, und der Drain des p-Kanal-Transistors 526, die
mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden
ist. Daher ist der Low-Byte-Zweistufen-Spannungsausgang 510 mit VPP
verbunden, wobei die Low-Byte-Wortleitungstreiber 120 veranlaßt werden,
Programmierspannungen in das Low-Byte-Speicherarray 100 durchzusetzen.
-
Wenn das Low-Byte-Einschaltsignal 170 einem
High-Wert zugeordnet ist, nimmt der Gateeingang zu dem n-Kanal-Transistor 530 einen High-Wert
an. Dieser High-Wert wird auch durch den Inverter 510 eingegeben,
um einen Low-Wert in dem Gateeingang zu n-Kanal-Transistor 532 zu
treiben. Der High-Wert auf dem Gateeingang zu n-Kanal-Transistor 530 erzeugt
einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 530 und der
Drain des n-Kanal-Transistors 530, die mit Masse verbunden
ist. Die Source des n-Kanal-Transistors 530 ist auch mit
dem Gateeingang zu p-Kanal-Transistor 522 verbunden, wobei
der Gateeingang zu p-Kanal-Transistor 522 veranlaßt wird,
einen Low-Wert anzunehmen. Dieser Low-Wert erzeugt einen leitfähigen Pfad
zwischen der Source des p-Kanal-Transistors 522, der mit
VPP verbunden ist, und der Drain des p-Kanal-Transistors 522, die mit dem Gateeingang
des p-Kanal-Transistors 524 verbunden ist. Dies veranlaßt den Gateeingang
zu p-Kanal-Transistor 524, einen High-Wert anzunehmen, wobei
die Drain des p-Kanal-Transistors 524 von VPP isoliert
wird. Der Low-Ausgang des Inverters 510 wird auch durch
den Inverter 512 eingegeben, um eine High-Spannung in die
Gateeingänge
des n-Kanal-Transistors 534 und
des p-Kanal-Transistors 526 zu treiben. Dies verursacht
einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 534 und
der Drain des n-Kanal-Transistors 534, die mit Masse verbunden
ist. Diese Massespannung wird in den Gateeingang des p-Kanal-Transistors 528 eingegeben,
wobei ein leitender Pfad zwischen VDD bei der Drain des p-Kanal-Transistors 528 und
dem Low-Byte-Zweistufen-Spannungsausgang 500 bei der Source
des p-Kanal-Transistors 528 erzeugt wird. VDD vom Low-Byte-Zweistufen-Spannungsausgang 500 wird
daher in die Low-Byte-Wortleitungstreiber 520 eingegeben,
was bewirkt, daß eine Nicht-Programmierspannung
an die Wortleitungen des Low-Byte-Speicherarrays 100 angelegt
wird.
-
6 ist
ein Schaltkreisdiagramm, das die interne Struktur der High-Byte-Zweistufen-Spannungsquelle darstellt.
Dieser Schaltkreis ist identisch mit dem Schaltkreis aus 5 außer der Tatsache, daß er einen
Eingangswert von dem High-Byte-Einschaltsignal 172 nimmt
anstelle des Low-Byte-Einschaltsignals 170. Der in 6 dargestellte Schaltkreis
arbeitet in exakt der gleichen Weise wie der Schaltkreis in 5. Wenn das High-Byte-Einschaltsignal 172 einen
Low-Wert anzeigt, treibt der High-Byte-Zweistufen-Spannungsausgang 600 eine Spannung
des VPP durch die High-Byte-Wortleitungstreiber 122 in
die Wortleitungen des High-Byte-Speicherarrays 102. Dies
verursacht, daß eine
Programmierspannung an die Wortleitungen des High-Byte-Speicherarrays 102 angelegt
wird. Wenn das High-Byte-Einschaltsignal 172 einen High-Wert
erklärt,
verursacht dies, daß eine
Spannung des VDD durch den High-Byte-Zweistufen-Spannungsausgang
600 getrieben wird. Dies veranlaßt die High-Byte-Wortleitungstreiber 122, Nicht-Programmier-VDD-Spannungen in den
Wortleitungen des High-Byte-Speicherarrays 102 vorzubringen
bzw. anzulegen.
-
7 ist
ein Schaltkreisdiagramm der internen Struktur einer der Low-Byte-Wortleitungstreiber 120.
Der Low-Byte-Wortleitungstreiber, der in 7 abgebildet ist, nimmt die Adreßdecodereingabe 700 auf
und gibt die Low-Byte-Wortleitung 710 aus. Einer dieser
Wortleitungsschaltkreise ist mit jeder Wortleitung in dem Low-Byte-Speicherarray 100 verbunden. Das
Adreßdecodiereingangssignal 700 läuft durch den
Inverter 720 in den Gateeingang des n-Kanal-Transistors 740.
Der Ausgang des Inverters 720 läuft auch durch den Inverter 722 in
den Gateeingang des n-Kanal-Transistors 742. Die Drains
von beiden, dem n-Kanal-Transistor 740 und dem n-Kanal-Transistor 742,
sind mit Masse verbunden. Die Source des n-Kanal-Transistors 740 ist
mit der Drain des p-Kanal-Transistors 730 und dem Gateeingang
des p-Kanal-Transistors 732 verbunden. Die Source des n-Kanal-Transistors 742 ist
mit der Drain des p-Kanal-Transistors 732 und dem Gateeingang
des p-Kanal-Transistors 730 verbunden. Sie ist auch mit
dem Ausgang des Schaltkreises verbunden, der die Low-Byte-Wortleitung 710 ist.
Die Source und das Substrat des p-Kanal-Transistors 730 sind mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden.
Gleichfalls sind auch die Source und das Substrat des p-Kanal-Transistors 732 mit
dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden.
-
Der in 7 dargestellte
Schaltkreis arbeitet wie folgt. Wenn die Adressendecodereingabe
auf 700 Low vorgebracht wird, so wird die Low-Spannung durch Inverter 720 eingegeben,
um eine High-Spannung an dem Gateeingang des n-Kanal-Transistors 740 zu
erzeugen. Dies erzeugt einen leitenden Pfad zwischen der Source
des n-Kanal-Transistors 740 und der Drain des n-Kanal-Transistors 740,
die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 740 ist
mit dem Gateeingang des p-Kanal-Transistors 732 verbunden,
was bewirkt, daß der
Gateeingang des p-Kanal-Transistors 732 auf
Low getrieben wird. Dies verursacht einen leitenden Pfad zwischen
der Source des p-Kanal-Transistors 732, die mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden
ist, und der Drain des p-Kanal-Transistors 732, die mit
der Low-Byte-Wortleitung 710 verbunden ist. Der High-Spannungsausgang
des Inverters 720 läuft
durch den Inverter 722, um einen Low-Spannungseingang an
dem Gate des n-Kanal-Transistors 742 zu erzeugen. Dies
veranlaßt die
Source des n-Kanal-Transistors 742, die mit der Low-Byte-Wortleitung 710 verbunden
ist, von der Drain des n-Kanal-Transistors 742 entkoppelt
zu werden, die mit Masse verbunden ist. Der Ausgang der Low-Byte-Wortleitung 710 nimmt
in der Konsequenz die Spannung des Low-Byte-Zweistufen-Spannungsausgangs 510 an.
-
Wenn der Adressendecodereingang 700 zurückgenommen
wird auf eine hohe Spannung, so läuft diese hohe Spannung durch
den Inverter 720, um einen niedrigen Wert an dem Gateeingang
des n-Kanal-Transistors 740 zu erzeugen. Der niedrige Wert
wird auch durch den Inverter 722 eingegeben, um einen hohen
Wert an den Gateeingang des n-Kanal-Transistors 742 zu
erzeugen. Dies erzeugt einen leitenden Pfad zwischen der Source
des n-Kanal-Transistors 742 und der Drain des n-Kanal-Transistors 742,
die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 742 ist
auch mit der Low-Byte-Wortleitung 710 verbunden, was bewirkt, daß die Low-Byte-Wortleitung 710 auf
eine niedrige Spannung getrieben wird. Der niedrige Wert auf dem Gateeingang
des n-Kanal-Transistors 740 entkoppelt die
Source des n-Kanal-Transistors 740 von der Drain des n-Kanal-Transistors 740,
die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 742,
die nun einen niedrigen Wert hat, ist mit dem Gateeingang des p-Kanal-Transistors 730 verbunden,
wodurch ein leitender Pfad zwischen dem Low-Byte-Zweistufen-Spannungsausgang 500 und der
Drain des p-Kanal-Transistors 730 erzeugt wird. Die Drain
des p-Kanal-Transistors 730 ist mit dem Gateeingang des
p-Kanal-Transistors 732 verbunden, der dadurch auf eine
hohe Spannung getrieben wird. Diese hohe Spannung isoliert die Source
des p-Kanal-Transistors 732, die mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden
ist, von der Drain des p-Kanal-Transistors 732, die mit
der Low-Byte-Wortleitung 710 verbunden ist. Die Low-Byte-Wortleitung 710 nimmt
folglich eine Massespannung an.
-
Zusammenfassend erzeugt die Sammlung von
Low-Byte-Wortleitungstreibern 120, die in jede der Wortleitungen
in dem Low-Byte-Speicherarray 100 eingeben, ein System,
das eine Massespannung in zwei Wortleitungen treibt, die nicht ausgewählt werden,
und eine zweistufige Spannung in eine einzelne Wortleitung, die
ausgewählt
wird.
-
8 ist
ein Schaltkreisdiagramm, das die interne Struktur eines der High-Byte-Wortleitungstreiber 122 darstellt.
Diese Struktur ist identisch mit der Struktur für den Low-Byte-Wortleitungstreiber,
der in 7 abgebildet
ist, außer
der Tatsache, daß die Source-Spannung
an den p-Kanal-Transistoren 830 und 832 von dem
High-Byte-Zweistufen-Spannungsausgang 600 geliefert wird
statt von dem Low-Byte-Zweistufen-Spannungsausgang 500.
Die Ansammlung von High-Byte-Wortleitungstreibern 122 erzeugt
ein System, das ein Massespannungsniveau in nicht ausgewählte Wortleitungen
treibt und eine zweistufige Spannung in eine einzelne ausgewählte Wortleitung.
-
9 ist
ein Flußdiagramm,
das den Prozeß des
Ausführens
einer Byte-für-Byte-Programmierung eines
16-Bit-Wortes in einem Array von Speicherzellen mit erdfreiem Gate
gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt.
-
Bei Schritt 900 beginnt
die Wortprogrammieroperation. Eine Adresse wird über den Adreßbus 160 übermittelt.
Diese Adresse spaltet sich auf in eine Reihenadresse, die in den
Reihendecoder 130 eingegeben wird, und eine Spaltenadresse,
die in sowohl den Low-Byte-Spaltendecoder 140 als auch den
High-Byte-Spaltendecoder 142 eingegeben wird. Der Reihendecoder 130 wählt einen
Wortleitungstreiber aus den Low-Byte-Wortleitungstreibern 120 aus und
einen Wortleitungstreiber aus den High-Byte-Wortleitungstreibern 122.
Der Low-Byte-Spaltendecoder 140 wählt einen Satz von Bitleitungen
aus dem Array von Speicherzellen mit erdfreiem Gate aus gemäß dem Low-Byte des adressierten
Wortes. Der High-Byte-Spaltendecoder 142 wählt einen
Satz von Bitleitungen gemäß dem High-Byte
des adressierten Wortes aus. Letztlich werden die in das adressierte
Wort in dem Array von Zellen mit erdfreiem Gate zu programmierenden
Daten von dem Datenbus 180 in den Dateneingangspuffer 182 geladen.
-
Bei Schritt 902 beginnt
die Low-Byte-Programmierung. Die Steuerung für das Array von Speicherzellen
mit erdfreiem Gate (nicht gezeigt) erklärt ein Low-Byte-Einschaltsignal 170 und
löscht
ein High-Byte-Einschaltsignal 172. Das gesetzte Low-Byte-Einschaltsignal 170 veranlaßt die Low-Byte-Zweistufen-Spannungsquelle 110,
eine Programmierspannung zu produzieren für den ausgewählten Wortleitungstreiber
aus den Low-Byte-Wortleitungstreibern 120. Das nicht gesetzte
High-Byte-Einschaltsignal 172 veranlaßt die High-Byte-Zweistufen-Spannungsquelle 112,
eine Nicht-Programmierspannung für
die ausgewählten Wortleitungstreiber
von den High-Byte-Wortleitungstreibern 122 zu
produzieren. Nimmt man an, daß alle Dateni-Anzeigenspeicher 450 zurückgesetzt
wurden, so veranlaßt
das Low-Byte-Einschaltsignal 170, daß die Programmdaten in den
Strukturen für
das Low-Byte freigegeben werden, was bewirkt, daß die Programmierspannungen
an die Spalten des Low-Byte-Speicherarrays 100 angelegt werden,
die von dem Low-Byte-Spaltendecoder 140 ausgewählt werden.
Das High-Byte-Einschaltsignal 172 wird in die High-Byte-Programmdateneingangsstrukturen 152 eingegeben,
was bewirkt, daß diese
Programmdaten in den Strukturen abgeschaltet werden. Folglich werden
die von dem High-Byte-Spaltendecoder 142 ausgewählten Bitleitungen
mit erdfreien Ausgängen
der High-Byte-Programmdateneingangsstrukturen 152 verbunden
und es findet kein Programmieren des High-Bytes statt.
-
Bei Schritt 904 werden die
Programmierspannungen über
eine Programmerholungsperiode aufrechterhalten bis ein Zeitschalter
anzeigt, daß die
Programmerholungsperiode abgeschlossen ist. Dies gewährt Zeit
zum Einstellen der Programmierspannungen und zum angemessenen Laden oder
Entladen der erdfreien Gates.
-
Bei Schritt 906 findet eine
Bit-für-Bit-Verifikation
statt. Die Wortleitungen, die dem adressierten Wort in beiden, dem
Low-Byte-Speicherarray 100 und dem High-Byte-Speicherarray 102 ent sprechen, bleiben
ausgewählt.
Jedoch wird eine Nicht-Programmier-Lesespannung an diese beiden
Wortleitungen angelegt. Die Ausgänge
der ausgewählten Speicherzellen
mit erdfreiem Gate in dem Low-Byte werden von dem Low-Byte-Speicherarray 100 in
die Datenmeßverstärker geleitet
und dann durch die Komparatoren, um zu bestimmen, ob alle Zellen
in dem ausgewählten
Byte richtig programmiert sind. Wenn die Dateneingangseingaben mit
den Ausgängen
der Meßverstärker übereinstimmen,
dann wird das Übereinstimmungs-Daten/-Signal 400 generiert, was
bewirkt, daß die
Daten/-Anzeigenspeicher 450 entsprechend dem Low-Byte gesetzt
werden. Dies schaltet das nachfolgende Neuprogrammieren der erfolgreich
programmierten Bits des Low-Bytes aus.
-
Bei Schritt 908 findet eine
Programmverifikationserholung statt. Programmverifikationsspannungen
werden aufrechterhalten über
das Memory Array, bis ein Zeitschalter abschließt. Dies stellt sicher, daß ausreichend
Zeit für
die Ausbreitung der Verifikationssignale durch das Memoryarray gewährt wird.
-
Bei Schritt 910 verifiziert
das System, daß alle
Bits innerhalb des Low-Bytes richtig programmiert wurden. Wenn dies
der Fall ist, fährt
das System fort zu Schritt 914. Wenn nicht, schleift das
System zurück
zu Schritt 902, um nur solche Bits neu zu programmieren,
die nicht richtig programmiert wurden. Die Dateni-Anzeigenspeicher 450 schalten
die Drain-Programmierspannungen für Bits, die richtig programmiert
wurden, ab, um Drain-Störungsbedingungen
vorzubeugen. Der Programmierprozeß wird dann wiederholt für das Low-Byte,
außer
daß nur
solche Bits, die nicht richtig programmiert wurden, neu programmiert
werden. Nicht gezeigt in 9 ist,
daß nach
einer festen Anzahl von Näherungen
ohne erfolgreiche Programmierung der Low-Byte-Programmierprozeß angehalten wird und ein Fehler
angezeigt wird.
-
Der High-Byte-Programmierprozeß besteht aus
den Schritten 914, 916, 918, 920 und 922.
Dieser Prozeß ist
exakt analog zu dem Low-Byte-Programmierprozeß, außer daß das High-Byte-Speicherarray 102 betroffen
ist. Nachdem der High-Byte-Programmierprozeß abgeschlossen ist, fährt das
System fort zu Schritt 926 und der Wortprogrammierprozeß ist abgeschlossen.
-
Eine Ausführungsform der vorliegenden
Erfindung liefert eine Ausweich- bzw. Nebenschlußstruktur, die es erlaubt die
Programmierung von jeweils einem Byte zugunsten einer Programmierung mit
jeweils einem Wort zu umgehen. Diese Umgehung wird verwendet wenn
eine externe Programmierspannungsquelle verfügbar ist, wodurch ausreichend
Programmierstrom für
eine Programmierung mit jeweils einem Wort bereitgestellt wird.
-
Andere Ausführungsformen der oben beschriebenen
Erfindung sind möglich.
Die Beschreibung hat sich bisher auf Teilworte, die 8 Bits in der Größe betragen,
konzentriert. Jedoch können
andere Teilwortgrößen, wie
z. B. 4, 6, 10, 12 und 16 Bit, leicht verwendet werden.
-
In einer anderen Ausführungsform
wird eine Bit-für-Bit-Verifikation
geliefert ohne Programmierung mit jeweils einem Byte. In dieser
Ausführungsform wird
ein ganzes Wort auf einmal programmiert und nur solche Bits innerhalb
eines Wortes, bei denen die Programmierung fehlschlägt, werden
neu programmiert.
-
Noch eine andere Ausführungsform
liefert die Programmierung jeweils eines Bytes ohne die Bit-für-Bit-Verifikation.