-
Die
vorliegende Erfindung betrifft ein Verfahren und einen Schaltkreis
zum Programmieren eines nichtflüchtigen
Multilevel-Speichers.
-
Es
ist bekannt, dass die jüngsten
Entwicklungen im Bereich nichtflüchtiger
Speicher, insbesondere EPROM- und FLASH-Speicher, darauf gerichtet sind,
ihre Speicherkapazität
zu erhöhen.
-
Architekturen
des Multilevel-Typs erscheinen derzeit für dieses Ziel am vielversprechensten.
Jedoch erfordert das Lesen von diesen Speichern und mehr noch das
Schreiben auf diese Speicher die Verwendung hochentwickelter Techniken.
Es ist den Experten auf diesem technischen Gebiet auch bekannt, dass
normalerweise zur Programmierung einer Multilevel-Zelle verwendete
Verfahren eine Stufenspannung eine sogenannte „Spannungs-Leiter" ist, die vollständig innerhalb
des Speichergeräts
erzeugt wird. Weiterhin werden, um eine effektive Programmierung
zu erreichen, speziell für
diese Operation vorgesehene Pins verwendet, was die weitere Verbreitung
des Speichers in der Zukunft begrenzt, für den eine immer weiter zunehmende
Anzahl von Adress-Pins erforderlich ist.
-
Zusätzlich verwenden
konventionelle Speicher als Synchronisierungssignal für die Programmierungsoperation
einen Pin, der als Cen (Chip enable) bekannt ist, der jedoch in
einigen Speichergeräten
möglicherweise
nicht zur Verfügung
steht (beispielsweise MASK-ROMs mit einer Kapazität von 64 MBit
oder mehr).
-
Weiterhin
wird die Dauer des elementaren Impulses zum Programmieren der individuellen
Speicherzellen normalerweise mit Hilfe komplizierter interner Taktschaltungen
eingestellt, deren Verzögerung
bekanntermaßen
prozessabhängig
ist und von Gerät
zu Gerät
variiert.
-
FR-A-2
632 110 offenbart ein Verfahren zum Programmieren eines nichtflüchtigen
Speichers mit einer verringerten Anzahl Pins.
-
Das
Ziel der vorliegenden Erfindung ist es, ein Verfahren zum Programmieren
eines nichtflüchtigen
Multilevel-Speichers anzugeben, das es erlaubt zu schreiben (programmieren),
ohne auf speziell vorgesehene Schreib-Pins zurückzugreifen.
-
Im
Rahmen dieses Ziels ist eine Aufgabe der vorliegenden Erfindung,
ein Verfahren zum Programmieren eines nichtflüchtigen Multilevel-Speichers
anzugeben, das keine internen Takterzeugungs-Schaltkreise benötigt, um
angepasste Synchronisierungssignale zu erzeugen, die zum Programmieren
verwendet werden.
-
Eine
weitere Aufgabe der vorliegenden Erfindung ist einen Schaltkreis
zum Programmieren eines nichtflüchtigen
Multilevel-Speichers anzugeben, der es erlaubt, das Verfahren der
Erfindung zu implementieren.
-
Eine
weitere Aufgabe der vorliegenden Erfindung ist es, ein Verfahren
und ein Schaltkreis zum Programmieren eines nichtflüchtigen
Multilevel-Speichers anzugeben, welche es erlauben, eine Multilevel-Speicherzelle
mit einem minimalen Anstieg der Gesamtausmaße und der logischen Komplexität zu programmieren.
-
Eine
weitere Aufgabe der vorliegenden Erfindung ist es, ein Verfahren
und einen Schaltkreis zum Programmieren eines nichtflüchtigen
Multilevel-Speichers anzugeben, die besonders zuverlässig, vergleichsweise
einfach und zu wettbewerbstauglichen Kosten bereitstellbar sind.
-
Dieses
Ziel und diese sowie andere Aufgaben, die nachfolgend noch besser
verständlich
werden, werden durch ein Verfahren zum Programmieren eines nichtflüchtigen
Multilevel-Speichers mit einer verringerten Anzahl von Pins erreicht,
wie es in Anspruch 1 definiert ist.
-
Dieses
Ziel und diese Aufgaben werden auch durch einen Schaltkreis zum
Programmieren eines Multilevel-Speichers erzielt, wie er in Anspruch
6 definiert ist.
-
Weitere
Merkmale und Vorteile der Erfindung werden anhand der Beschreibung
eines bevorzugten, jedoch nicht ausschließlichen Ausführungsbeispiels
des Verfahrens und des Schaltkreises gemäß der Erfindung besser verständlich,
welche mit einem nicht beschränkend
gemeinten Beispiel in den beigefügten
Zeichnungen dargestellt sind, wobei:
-
1 ein
Flussdiagramm der Schritte des Programmierungsverfahrens gemäß der vorliegenden
Erfindung ist;
-
2a und 2b jeweils
Timing-Diagramme externer und interner Signale des Speichergeräts sind,
auf welches das Verfahren der vorliegenden Erfindung angewendet
wird;
-
3 ein
Blockdiagramm einer Architektur eines Datenbusses und eines Prüfschaltkreises
ist, die zur Implementierung des Verfahrens gemäß der Erfindung verwendet werden;
und
-
4 ein
Blockdiagramm eines Programmierungs-Schaltkreises ist, der zur Implementierung des
Verfahrens gemäß der vorliegenden
Erfindung verwendet wird.
-
Mit
Bezug auf die Figuren, in denen identische Ziffern und Bezugszeichen
identischen Elementen entsprechen, wird das Programmierungsverfahren
der vorliegenden Erfindung schematisch im Flussdiagramm der 1 dargestellt.
-
Das
grundlegende Konzept der vorliegenden Erfindung ist die Implementierung
eines effektiven Verfahrens zum elektrischen Programmieren des nichtflüchtigen
Multilevel-Speichers durch einen Schaltkreis, der einen oder mehrere
Adress-Pins als ein
Schreib-Synchronisierungssignal verwendet. Durch diese Adress-Pins wird die Dauer
der Programmierung der Zelle auch ohne Rückgriff auf komplizierte interne
Takt-Schaltkreise eingestellt, deren Verzögerung bekanntlich prozessabhängig ist
und von Gerät
zu Gerät
variiert.
-
Das
verwendete Verfahren zum Schreiben eines nichtflüchtigen Multilevel-Speichers unter Verwendung
eines oder mehrerer Adress-Pins zur Synchronisierung wird im Flussdiagramm
der 1 dargestellt. Es wird beispielhaft der Fall betrachtet,
in dem vier Programmierungs-Niveaus auftreten, d. h., zwei Bits
für jede
individuelle Speicherzelle. Dies ist selbstverständlich nur ein Beispiel und
darf nicht als Einschränkung
betrachtet werden.
-
Der
erste Schritt des Verfahrens der Erfindung, der in 1 mit
der Bezugsziffer 1 gekennzeichnet ist, umfasst ein Einstellen
des Speicherprogrammierungsmodus, welcher, wie für manche Speicher bekannt,
durch ein Signal PGMODE aktiviert wird, das vom Ausgang eines Latches
eintrifft, in welchem der aktive Zustand durch eine jeweilige Adresse
des Speichers bestimmt ist, der auf das Niveau „1" gebracht ist. Dies dient dazu, den
Programmierungsmodus von den restlichen Betriebsmodi des Speichers
schaltkreistechnisch zu isolieren.
-
Das
Verfahren gemäß der Erfindung
verwendet wenigstens einen und vorzugsweise zwei oder mehr Schreib/Prüf-Synchronisierungsadressen,
die aus den Adress-Pins ausgewählt
werden.
-
Wenn
zwei Synchronisierungsadressen verwendet werden, erfordert das Schreiben
eines vollständigen
Feldes (Arrays) vier aufeinanderfolgende Schritte. Eine Programmierung
eines ersten Viertels des Arrays beginnt damit, dass alle Adressen
auf null gesetzt werden, Schritt 2, und dann der Pin der
Versorgungsspannung Vpp auf ein hohes Spannungsniveau gebracht wird,
Schritt 3, zum Beispiel auf ungefähr 12 V, um auf der ansteigenden
Flanke den Wert der zwei Adressen zu speichern, die für die Synchronisation
verwendet werden, welche zu diesem Zeitpunkt frei werden.
-
Der
Schritt zum Speichern der zwei Adressen ist mit der Bezugsziffer 4 gekennzeichnet.
-
Im
Schritt 5 wird die erste Synchronisierungsadresse auf das
Niveau „1" gebracht, und zusammen
mit der auf hohem Spannungsniveau befindlichen Versorgungsspannung
Vpp wird ein Signal A1TLDUMMY erzeugt, und ein interner Zähler wird auf
seiner ansteigenden Flanke zurückgesetzt, Schritt 6;
der Zähler
speichert die Anzahl Programmierungspulse, welche von einer Stufen-Spannungsquelle gesendet
werden, auf dem Gate-Anschluss der Speicherzelle, die programmiert
werden soll.
-
Die
Hardware-Konfiguration, die zur Implementierung des Verfahrens der
Erfindung verwendet wird, wird nachfolgend in näheren Einzelheiten beschrieben,
um die verschiedenen Komponenten und ihre Funktion klarzustellen.
-
Die
zweite freie Adresse, Schritt 7, wird variiert, so dass
die zu programmierenden Daten, welche von den Dateneingängen des
Speichers eintreffen, an ihrer abfallenden Flanke zwischengespeichert (engl.
latched) werden, Schritt 8.
-
Dieser
Vorprogrammierungsschritt endet, indem die zweite Synchronisierungsadresse,
welche von hier an als Taktgeber agiert, auf das Niveau „1" gebracht wird, und
indem die erste Synchronisierungsadresse auf das Null-Niveau gebracht
wird, Schritt 9, was einen Ausgang OUT auf das Null-Niveau
bringt, der als ein Indikator verwendet wird, um dem Programmierer
den Anfang des Programmierschrittes anzuzeigen, wenn der Indikator
auf dem Niveau „0" ist, und das Ende
das Programmierschrittes anzuzeigen, wenn der Indikator auf dem
Niveau „1" ist.
-
Der
Null-Übergang
des Ausgangs OUT ist im Schritt 10 dargestellt, welchem
Schritt 11 folgt, in dem die zweite Adresse, welche für die Synchronisierung verwendet
wird, auf das Niveau „1" gebracht wird.
-
Der
tatsächliche
Programmierungsschritt beginnt und endet mit einer Prüfung, Schritt 12,
so dass es am Anfang möglich
ist, die unbeschriebenen Zellen schnell und ohne sie einer Belastung
auszusetzen zu testen, und schließlich um die Array-Adresse in
Abwesenheit des hohen Spannungsniveaus zu ändern.
-
Auf
jede negative Prüfung
hin wird der Zähler bis
zu seinem maximalen Wert inkrementiert, Schritte 13 und 14,
wonach die Zelle, deren Programmierung gescheitert ist, als „schlecht" markiert wird, Schritt 15.
-
Wenn
jedoch die Prüfung
ein positives Ergebnis geliefert hat, endet die Programmierung durch Setzen
des Indikators am Ausgang OUT auf „1", Schritt 16. Wenn der programmierte
Wert eine „00" ist, Schritt 17,
wird der Zähler
vollständig
auf „1" gesetzt, so dass
der Gate-Anschluss der „00"-Zelle die maximale
Spannung zugeführt
bekommt, die einen ausreichenden Programmierungsspielraum sicherstellen
kann.
-
Der
Programmierungszyklus wird für
jedes Viertel des Arrays wiederholt, indem die Adressen inkrementiert
werden, Schritt 20, wenn ein Übergang von einem Viertel des
Arrays auf das andere nicht erforderlich ist.
-
Die
Adressinkrementierung führt
das Verfahren zurück
auf Schritt 5.
-
Wenn
jedoch stattdessen das Array-Viertel bereits programmiert worden
ist, springt das Verfahren weiter zu Schritt 21, welcher
prüft,
ob die aktuelle Adresse die letzte Adresse zur Programmierung ist; wenn
dies der Fall ist, endet der Programmierungszyklus, Schritt 22.
-
Andernfalls
wird das hohe Spannungsniveau von Vpp entfernt, Schritt 23,
und dann werden die ersten und/oder zweiten Synchronisierungsadressen geändert, Schritt 24,
zum Beispiel, indem die erste Adresse auf das Niveau „1" gebracht wird und
die zweite Adresse wieder auf das Niveau „0" gebracht wird, und das Verfahren startet
erneut, indem die Spannung Vpp auf einen hohen Wert gebracht wird, um
die Adressen wieder zu speichern.
-
In
der Praxis zeigt Schritt 24 auf Schritt 3 des oben
beschriebenen Verfahrens.
-
Die 2a und 2b sind
Flussdiagramme der Signale, die im Verfahren gemäß der vorliegenden Erfindung
involviert sind, und des Signals, das durch DATABUS gekennzeichnet
ist, wobei die Bezugziffer 30 das Laden von Daten an einer
Adresse kennzeichnet, die Bezugsziffer 31 einen Datenbeschaffungsschritt
kennzeichnet, die Bezugsziffer 32 einen Datenspeicherschritt
kennzeichnet, und so weiter, und wobei die Bezugszeichen V und P
bei der zweiten Synchronisierungsadresse A2 jeweils den Prüf- bzw.
Programmierungsschritt anzeigen.
-
Die
Bezugsziffer 33 im Flussdiagramm der 2a sowie
im Flussdiagramm der 2b, und in gleicher Weise die
Bezugsziffer 34 kennzeichnen jeweils den Vorprogrammierungs-
bzw. Programmierungsschritt.
-
Das
Signal ENDPROG zeigt das Ende der Programmierung an und wird vom
Zähler
ausgegeben, nachfolgend in näherem
Detail beschrieben.
-
Der
Buchstabe A kennzeichnet einen Adressübergang aller Adressen mit
Ausnahme der zwei zum Schreiben verwendeten Adressen (A1, A2).
-
Das
Flussdiagramm der 2b ist im wesentlichen ähnlich dem
Flussdiagramm der 2a, mit der Ausnahme, dass die
zweite Synchronisierungsadresse A2 „hoch" ist und nach Durchgang der Daten auf
dem Datenbus DATABUS auf „niedrig" („0") gebracht wird.
Dies erlaubt es, die Daten zu speichern, die in Bezug zu den Speicherorten
eines anderen Speicherteils mit Blick auf 2a stehen.
Im wesentlichen illustriert 2a den
Schreibprozess von Daten in ein erstes Viertel und ein zweites Viertel des
Speicher-Arrays, während 2b die
selben Schreibschritte für
das dritte und vierte Viertel des Speicher-Arrays illustriert.
-
3 ist
ein Blockdiagramm des Datenbusses DATABUS, welcher verwendet wird,
um das zu programmierende Datenelement zu speichern, welches von
den Ausgangskontakten 35 des Speichers her eintrifft, und
dann, während
des Prüfschrittes,
um die Daten am Ausgang der Leseverstärker 36 zu einer Vergleichslogik 37 zu übertragen.
Während
des Programmierschrittes wird das gespeicherte Datenelement wieder
auf dem Datenbus DATABUS präsentiert,
um die nichtangeschlossenen (floating) Knoten daran zu hindern,
Quellen zusätzlichen
Verbrauchs zu werden. Der Speicher ist in eine Vielzahl von Blöcken unterteilt,
je ein Block für
jeweils zwei Ausgangsbits für
einen Vier-Niveauspeicher.
-
Die
Bezugsziffer 38 kennzeichnet den Null-Block, der ähnlich den
nachfolgenden Blöcken 39 und 40 ist.
-
Auf
dem Niveau jedes Blocks vergleicht die Vergleichslogik 37 die
zu programmierenden Daten mit den Daten am Ausgang der Leseverstärker.
-
Die
zu programmierenden Daten werden von den Ausgangskontakten 35 durch
einen Puffer 41 dem Datenbus DATABUS und von dort dem Speicherelement 42 eingegeben,
in dem das zweite Adresssignal zur Synchronisierung ebenfalls eingegeben
wird.
-
Das
Speicherelement 42 ist mit der Vergleichslogik 37 verbunden,
welche, wenn eine Programmierung erfolgt ist, das hohe Spannungsniveau vom
Drain-Anschluss
der Zelle beseitigt, wobei ein Signal STOPVPDLOC an eine lokale
Quelle 43 der Spannung gesendet wird, die die Leseverstärker 36 steuert,
und steuert mit Hilfe eines Signals BLKPROGN eine verteilte Logik,
die von einem P-Kanal MOS-Transistor 44 gebildet
wird, für
jeden der Blöcke 38, 39 und 40.
Die verteilte Logik setzt den in 4 gezeigten
Zähler
mit Hilfe des Signals SETCOUNTER, wenn alle Blöcke programmiert worden sind
und der letzte Impuls der höchsten
Spannung für die „00"-Zelle verbleibt.
-
Die
Stufenspannung, die erforderlich ist, um eine Multilevel-Zelle zu
programmieren, wird, wie in 4 gezeigt,
erzeugt, indem von einem resistiven Spannungsteiler 50 zwischen
einer Spannung Vpp und einer Lesespannung VREAD das Spannungsniveau
abgezweigt wird, welches geeignet ist, mit Hilfe einer Dekodierungslogik 51 ausgewählt wurde,
die vom beschriebenen Zähler 52 gesteuert
wird, der an seinem Eingang des Signal SETCOUNTER empfängt. Das
mit Hilfe der Dekodierungslogik 51 ausgewählte Spannungsniveau
wird an den Gate-Anschluss
der zu programmierenden Zelle gesendet, wobei als Steuerung ein
Operationsverstärker 53 verwendet
wird, der mit negativer Rückkopplung
verschaltet ist.
-
Der
Modulus-Wert des Zählers
hängt von
der Programmierungsspannung und von der Genauigkeit der zu erzeugenden
Stufenspannung ab. Beispielsweise erfordern ein Programmierungsspannungs-Bereich
von 5,5 bis 11,5 V und eine erforderliche Genauigkeit von 100 mV
60 Impulse und daher einen 6x-Zähler.
Der selbe Zähler
setzt den Indikatorwert am Ausgang OUT am Ende der Programmierung
auf „1 ", wobei das ENDPROG-Signal
ausgesandt wird.
-
In
der Praxis wurde beobachtet, dass das Verfahren und der Schaltkreis
zum Programmieren eines nichtflüchtigen
Multilevel-Speichers mit einem externen Synchronisationssignal das
gewünschte Ziel
und die Aufgaben voll erreicht, weil es erlaubt, eine Multilevel-Speicherzelle
mit einem minimalen Anstieg der Gesamtausmaße und der Logikkomplexität zu programmieren,
indem als ein Synchronisierungssignal für die gesamte Operation zwei Adress-Pins
anstelle des Cen-Pins verwendet werden, der möglicherweise manchmal nicht
verfügbar ist.
-
Darüber hinaus
hilft die Synchronisierung, erhalten vom internen/externen Management
der gesamten Schreiboperation, von der Erzeugung der Stufenspannung
zur Verwendung der selben Schaltkreise für den Prüfschritt, die in einem normalen
Lesezyklus verwendet werden, die Genauigkeit der programmierten
Spannungsniveaus zu erhöhen.
-
Wo
in einem Anspruch erwähnte
technische Merkmale mit Bezugszeichen versehen sind, wurden diese
Bezugszeichen zum alleinigen Zweck der Verbesserung der Verständlichkeit
der Ansprüche
aufgenommen, und haben dementsprechend solche Bezugszeichen keinerlei
begrenzende Wirkung auf den Bedeutungsumfang jedes Elements, das
beispielhaft durch solche Bezugszeichen identifiziert ist.