-
Hintergrund der Erfindung
-
Die
vorliegende Erfindung betrifft allgemein nichtflüchtige Speichersysteme und
insbesondere ein nichtflüchtiges
Speichersystem mit Steuerung der Programmierzeit.
-
Bei
Speicherzellen oder Ladungsspeicherelementen (die beiden Begriffe
werden vorliegend synonym verwendet) eines nichtflüchtigen
Speichers wird typischerweise ein Teil einer Zeile oder eine vollständige Zeile
von Zellen gleichzeitig parallel programmiert. In einem Programmierzyklus
werden Programmierspannungsimpulse an die ausgewählte Zeile von Speicherzellen
angelegt, bis die Schwellspannung jeder der ausgewählten Zellen
in der Zeile auf einen Wert innerhalb eines vorgegebenen Spannungsbereichs
programmiert ist (welcher den gewünschten Endzustand der Zelle
darstellen kann oder auch nicht). Während jedes Programmierzyklus wird
eine zeitliche Abfolge von Programmierspannungsimpulsen in vorgegebenen
Zeitintervallen angelegt, beispielsweise in periodischen Zeitintervallen, wobei
die Amplitude jedes Programmierimpulses im Vergleich zu der Amplitude
des unmittelbar vorausgehenden Programmierimpulses der Sequenz um
einen festgelegten Spannungsschritt erhöht wird.
-
In
den Zeitspannen zwischen den Programmierspannungsimpulsen werden
Programmierverifizierungsvorgänge
ausgeführt.
Das bedeutet, der programmierte Pegel jedes Ladungsspeicherelements, das
parallel programmiert wird, wird nach jedem Programmierimpuls gelesen,
um festzustellen, ob dieser mindestens dem Verifizierungsspannungspegel
entspricht, auf welchen er programmiert wird. Wenn festgestellt
wird, dass die Schwellspannung eines gegebenen Ladungsspeicherelements
den Verifizierungsspannungspegel überschritten hat, wird in einem Prozess,
der nachstehend als "Aussperren" (Locking out) bezeichnet
wird, die Programmierung dieses Ladungsspeicherelements gestoppt,
indem die Spannung der Bitleitung, an welche das spezielle Ladungsspeicherelement
angeschlossen ist, von einer niedrigen Spannung (typischerweise
0 Volt) auf einen hohen oder Sperrpegel (typischerweise Vdd) angehoben
wird. Die Programmierung der anderen Ladungsspeicherelemente, die
parallel programmiert werden, wird fortgesetzt, bis diese ihrerseits
ihre Verifizierungsspannungspegel erreichen. Nach jedem Programmierverifizierungsvorgang
wird, wenn immer noch eines oder mehrere der parallel programmierten
Ladungsspeicherelemente vorhanden sind, deren Schwellspannung noch
nicht den Verifizierungsspannungspegel erreicht hat, die Amplitude
des Programmierimpulses mit der vorgegebenen Schrittgröße erhöht und wird
erneut an die parallel programmierten Ladungsspeicherelemente angelegt,
worauf wieder ein Programmierverifizierungsvorgang folgt. Wenn nach
dem nächsten
Programmiervorgang der erhöhte
Programmierimpuls noch immer nicht bewirkt hat, dass die Schwellspannung
sämtlicher
parallel programmierter Ladungsspeicherelemente den Verifizierungsspannungspegel
erreicht hat, wird die Amplitude des Programmierimpulses während des nächsten Zeitintervalls
erneut erhöht,
mit der gleichen vorgegebenen Schrittgröße, und dieser Prozess wird
wiederholt, bis die Schwellspannungen sämtlicher parallel programmierter
Ladungsspeicherelemente den Verifizierungsspannungspegel erreicht haben.
Dies markiert das Ende eines bestimmten Programmierzyklus.
-
Bei
einem Ladungsspeicherelement mit Floating-Gates, bei welchem Ladung
durch Fowler-Nordheim-Tunneln eingebracht wird, kann der Betrag
an Ladung auf dem Floating-Gate
in Funktion der Spannungsimpulscharakteristiken mithilfe allgemein
bekannter Tunnelgleichungen berechnet werden. 5A zeigt
die Schwellspannung (gemessen vom Steuergate) in Funktion der Anzahl
von Spannungsimpulsen, die an das Steuergate angelegt werden. Die
verschiedenen Fowler-Nordheim-Parameter, die bei dieser Simulation
genutzt wurden, waren derart gewählt,
dass sie für
einen 90 nm-NAND-Prozess typisch sind, und für den Spannungsimpuls wurde
ein Beginn bei 15 Volt und eine Erhöhung um 0,2 Volt für jeden
Impuls angenommen. Die beiden Kurven zeigen, dass für zwei unterschiedliche
Impulsdauern (10 μs
und 15 μs)
der Anstieg der Schwellspannung nahezu gleich ist. Bei der längeren Impulsdauer
ergibt sich anfangs eine höhere
Schwellspannung (während
der längeren
Zeitspanne tunnelt mehr Ladung), aber die Änderung der Schwellspannung mit
jedem Impuls ist proportional zum Absolutwert der Spannung. Das
bedeutet, dass man, solange man eine feste Impulsdauer für jeden
Programmierschritt nutzt, erwarten kann, dass sich während jedes Impulses
die Schwellspannung um nicht mehr als einen vorgegebenen Betrag
(in diesem Fall 0,2 Volt) erhöht,
und wenn man die Programmierung an einer Zelle wie vorstehend beschrieben
zellenweise sperrt, ist zu erwarten, dass die Endverteilung der
Schwellspannungen sämtlicher
auf einen gegebenen logischen Zustand programmierter Zellen innerhalb
eines schmalen Bereichs liegt, der ungefähr gleich der Größe des Spannungsimpulsschrittes
ist.
-
Das
beobachtete Problem besteht darin, dass, wenn gestattet wird, dass
die Impulsdauer während
einer Programmiersequenz variiert, die Breite dieser Schwellspannungsverteilung
unerwünschterweise
größer sein
wird. 5B zeigt eine Simulation, bei
welcher die ersten 4 Impulse mit einer konstanten Programmierdauer
von 10 μs
angelegt werden, wobei jeder Impuls um 0,2 Volt erhöht wird, und
danach Programmierimpulse mit variabler Breite folgen. Die Serie
1 zeigt die Änderung
der Schwellspannung für
den Fall, dass der 5. und alle nachfolgenden Impulse 15 μs lang sind.
Nach weiteren 5 bis 10 Impulsen nähert sich die Änderung
der folgenden Schwellspannung derjenigen, die zuvor mit dem schmaleren
Impuls entsprechend den in 5A gezeigten
Ergebnissen erreicht worden ist. Man beachte, dass selbst ein einziger
längerer
Impuls die Schwellspannung etwaiger Zellen, die nach diesem Impuls
ausgesperrt werden, derart erhöhen
kann, dass diese die Schwellspannung übersteigen kann, die zu erwarten
ist, wenn sich die Impulsbreite nicht erhöht. Serie 2 zeigt die erwartete Änderung
der Schwellspannung für
den Fall, dass die Impulsdauer nach jedem Impuls zwischen 10 μs und 15 μs oszilliert:
Impuls 5 ist 10 μs
lang und Impuls 6 ist 15 μs lang,
Impuls 7 ist 10 μs
lang und Impuls 8 ist 15 μs lang
und so weiter. In diesem Fall wird die Verteilung der Schwellspannungen
des programmierten Zustands breiter sein als diejenige, die erhalten
wird, wenn dauerhaft Impulse entweder 10 μs oder 15 μs angelegt werden, oder auch
als diejenige, die durch eine einmalige Änderung der Impulsbreite erhalten wird.
Wenngleich einige Impulse zu einer kleineren Änderung der Schwellspannung
als 0,2 Volt führen, ist
dies nicht notwendigerweise hilfreich, da, wenn mit diesem Impuls
ein Aussperren verfehlt wird, aber ein Pegel unmittelbar unterhalb
des Verifizierungspegels erreicht wird, einfach ein weiterer Impuls
erforderlich sein wird, dessen erwartete Änderung der Schwellspannung
größer ist,
was zu einer verbreiterten Verteilung der Schwellspannungen führt.
-
Der
vorstehende Programmiervorgang trifft sowohl für Mehrpegel-Ladungsspeicherelemente
als auch für
Binärpegel-Ladungsspeicherelemente
oder Speicherzellen zu. Eine Darstellung der vorstehend erwähnten Programmier-
und Programmierverifizierungsvorgänge für Mehrpegel-Ladungsspeicherelemente
ist in
US-Patent 6,522,580 beschrieben.
-
Wie
anhand der vorstehenden Beschreibung offensichtlich sein wird, erfordert
der vorstehende Programmierprozess ein wiederholtes Programmieren
der Zellen mit einem Programmierimpuls, worauf ein Programmierverifizierungsvorgang
folgt. Dieser Prozess kann daher zeitaufwändig sein. Es ist daher wünschenswert,
dass die Programmierzeit für
das Anlegen jedes Programmierimpulses von kurzer Dauer ist, sodass
die Speicherzellen oder Ladungsspeicherelemente im Hinblick auf
ein verbessertes Leistungsverhalten in einer möglichst kurzen Zeit auf die
gewünschten
Schwellspannungen programmiert werden können.
-
Die
Programmierimpulse zum Programmieren der Speicherzellen werden oft
von Ladungspumpen erzeugt, in welchen sich die Ausgangsspannung leicht über DAC-Steuerung ändern lässt. Die
Ausgangsspannung der Ladungspumpe wird typischerweise mit einer
Referenzspannung verglichen. Wenn die Ausgangsspannung der Ladungspumpe
den Wert der Referenzspannung erreicht, wird ein Programmiermerker-Signal
FLGPGM generiert, um anzuzeigen, dass die Pumpenausgangsspannung
den gewünschten
Programmierspannungspegel erreicht hat. Die Messung der Programmierzeit
für die
ausgewählten
Zellen in der ausgewählten
Zeile beginnt, sobald der Programmiermerker FLGPGM auf hohem Pegel
ist. Wenn diese Programmierzeit beginnt, wird die Programmierausgangsspannung
(auch als Pumpimpuls bezeichnet) der Ladungspumpe parallel an die
Speicherzellen oder Ladungsspeicherelemente angelegt, um deren Schwellspannungen
zu ändern. Für den Fall,
dass sich der Programmiermerker FLGPGM verzögert, beispielsweise wenn die
Ladungspumpe schwach ist, wie später
beschrieben wird, wird die Programmierung zu einem vorgegebenen Zeitpunkt
nach dem erwarteten Zeitpunkt des Merkers FLGPGM beginnen, wenn
der Programmiermerker FLGPGM noch nicht angekommen ist, wodurch sich
von Impuls zu Impuls eine variable Programmierdauer ergibt.
-
Wenn
der Programmierspannungspegel um einen Spannungsschritt mit bestimmter
Größe erhöht wird,
wird die Referenzspannung um die gleiche Schrittgröße erhöht und zum
Vergleich mit dem Programmierimpuls genutzt, nachdem dieser um die Schrittgröße erhöht worden
ist. Auf diese Weise wird die zum Generieren des Programmiermerkers
FLGPGM genutzte Referenzspannung mit dem erhöhten Programmierspannungspegel
Schritt halten.
-
Das
Leistungsvermögen
vieler Ladungspumpen hängt
sowohl von der Temperatur als auch vom Eingangsspannungspegel ab.
Bei kalten Temperaturen sind beispielsweise einige Arten von Ladungspumpen
tendenziell schwach, sodass sie mehr Zeit brauchen, damit die Ausgangsspannung
der Ladungspumpe einen bestimmten erwarteten Spannungswert erreicht.
Es ist außerdem
möglich,
dass schwache Ladungspumpen mehr Zeit benötigen, um eine Ausgangsspannung
bereitzustellen, wenn eine Ausgangsspannung mit hoher Amplitude
gefordert wird, im Vergleich dazu, wenn eine Ausgangsspannung mit
niedriger Amplitude erforderlich ist. Daher wird, wenn die Pumpe
schwach ist, sodass sich der Programmiermerker FLGPGM verzögert, die
Programmierung zu periodischen Zeitpunkten beginnen, selbst wenn
die Amplitude des Programmierspannungsimpulses noch nicht den beabsichtigten
oder erwarteten Wert erreicht hat. Es ist zu beobachten, dass unter
solchen Umständen
in einem Programmierzyklus die Programmierung manchmal durch die Ankunft
des Programmiermerkers FLGPGM ausgelöst wird und manchmal zu periodischen
Zeitpunkten ausgelöst
wird, wenn sich der Programmiermerker FLGPGM verzögert. Die
effektive Programmierzeit (der Anteil der Programmierzeitspanne,
während welcher
der Programmierimpuls einen gewünschten Spannungspegel
aufweist) wird daher variieren. Dies kann eine Verbreiterung der
Schwellspannungsverteilung der Speicherzellen bewirken.
-
Eine
Lösung
besteht darin, die für
die Programmierung zugewiesene Zeit zu erhöhen, sodass, selbst wenn zu
Beginn der Programmierzeitspanne die Ausgangsspannung der Ladungspumpe
noch nicht den gewünschten
Spannungspegel erreicht hat, die für die Programmierung zugewiesene
längere Programmierzeitspanne
es ermöglicht,
dass eine schwache Ladungspumpe nach einer gewissen zeitlichen Verzögerung einen
gewünschten
Spannungspegel erreicht, sodass die resultierende effektive Programmierzeit
dennoch zum Programmieren der Speicherzellen auf den beabsichtigten
Schwellspannungswert geeignet sein wird. Wie zuvor erwähnt, wäre es im
Hinblick auf ein verbessertes Leistungsverhalten jedoch wünschenswert,
die Programmierzeit, in welcher die Programmierimpulse angelegt werden,
zu minimieren. Daher würde
sich durch Zuweisen einer längeren
Programmierzeit das Leistungsverhalten des nichtflüchtigen
Speichersystems verschlechtern. Dies ist insbesondere deshalb der Fall,
weil die längere
Programmierzeit nur unter bestimmten eingeschränkten Bedingungen benötigt wird.
Es ist daher wünschenswert,
ein nichtflüchtiges Speichersystem
zur Verfügung
zu stellen, bei dem die vorstehend beschriebenen Schwierigkeiten
verringert sind.
-
Zusammenfassung der Erfindung
-
Idealerweise
ist es wünschenswert,
dass die zugewiesene Programmierzeitspanne so kurz wie möglich ist,
wenn die Ladungspumpe stark ist, beispielsweise wenn die Pumpe bei
Raumtemperatur betrieben wird, und dass eine längere Programmierzeitspanne
nur bevorzugt wird, wenn es notwendig ist, eine langsamere Ladungspumpe
zu kompensieren. In derselben Art können kurze Programmierzeitspannen
während
des Anfangsteils des Programmierzyklus genutzt werden, wenn von
der Ladungspumpe eine Bereitstellung von niedrigen bis mittleren Ausgangsspannungen
für die
Programmierimpulse gefordert wird. Zum Ende des Programmierzyklus hin,
wenn Spannungen mit höherer
Amplitude gefordert werden, kann eine längere Programmierzeitspanne
anstatt der anfänglich
genutzten kürzeren Zeitspanne
genutzt werden.
-
Die
vorliegende Erfindung basiert auf der Erkenntnis, dass, wenn festgestellt
wird, dass der von einer Ladungspumpe bereitgestellte Spannungspumpimpuls
nicht einer Referenzspannung entspricht, die Programmierzeitspanne
des Spannungspumpimpulses auf einen Wert angepasst wird, der bis
zum Ende des Programmierzyklus im Wesentlichen unverändert bleibt.
Auf diese Weise wird für
den Rest des Programmierzyklus die Schwankung der effektiven Programmierzeitspanne
der Programmierimpulse verhindert, sodass eine Verbreiterung der Schwellspannungsverteilung
nicht auftreten wird oder reduziert sein wird. Dieses Merkmal ermöglicht es,
im Hinblick auf ein besseres Leistungsverhalten für die Programmierimpulse
eine kurze Programmierzeitspanne festzulegen, wobei gleichzeitig
die Flexibilität
einer verlängerten
Programmierzeitspanne möglich
ist, wenn die Ladungspumpe unter Bedingungen arbeitet, welche bewirken,
dass diese langsam und/oder schwach ist.
-
Die
Erfindung ist in den unabhängigen
Ansprüchen
1 und 11 definiert.
-
Kurze Beschreibung der Zeichnungen
-
1 stellt
ein Blockdiagramm eines Computersystems dar, das einen Host-Computer
sowie ein mit dem Host-Computer verbundenes Flash-EEPROM-System
umfasst.
-
2 stellt
ein Blockdiagramm des Controllers sowie eines Spannungserzeugungsteils
des Flash-EEPROM-Systems aus 1 dar, um
eine Ausführungsform
der Erfindung zu veranschaulichen.
-
3 stellt
ein Schaltungsschema einiger Elemente der Schaltung aus 2 dar,
um eine Ausführungsform
der Erfindung zu veranschaulichen.
-
4 stellt
ein Taktungsdiagramm dar, welches die Funktionsweise der Schaltung
aus 3 veranschaulicht.
-
5A stellt
eine Computersimulation der Zellen-Schwellspannung in Abhängigkeit
von der Anzahl der Impulse, die an die Ladungsspeicherzelle angelegt
werden, für
zwei unterschiedliche Impulsdauern dar.
-
5B stellt
eine Computersimulation der Änderung
der Zellen-Schwellspannung in Funktion der an die Ladungsspeicherzelle
angelegten Anzahl von Impulsen für
zwei unterschiedliche Impulsdauersequenzen dar.
-
Der
einfacheren Beschreibung halber sind in der vorliegenden Anmeldung
identische Komponenten mit den gleichen Bezugszeichen bezeichnet.
-
Beschreibung exemplarischer Ausführungsformen
-
1 stellt
ein Blockdiagramm eines Flash-Speichersystems 20 dar (welches
die Form einer Einsteckkarte oder eines Einsteckmoduls aufweisen
kann), das mit einem Host-Computer 10 über einen
Systembus 15 in Verbindung steht. Das Flash-Speichersystem 20 umfasst
ein Flash-EEPROM-Modul 30 sowie einen Controller 40,
welcher wiederum einen Speicher 41 und einen Prozessor 43 umfasst.
Der Controller 40 interpretiert die von dem Host-Computer 10 empfangenen
Befehle und übersetzt
diese in entsprechende Lese-, Schreib- und andere Vorgänge für das Flash-EEPROM-Modul 30 in einer
für den
Host-Computer 10 transparenten Weise.
-
2 stellt
als Beispiel ein vereinfachtes Blockdiagramm von Teilen des Flash-EEPROM-Systems 20 dar,
die mit der Erzeugung der Spannungsimpulse der Ladungspumpe im Zusammenhang
stehen. Wie in 2 gezeigt ist, wird die Versorgungsspannung
Vsys durch den Host an dem Controller 40 angelegt, und über einen
optionalen Spannungsregler 45 wird ein möglicherweise
anderer Spannungspegel Vdd an das Modul 30 angelegt. Der
Prozessor 43 legt Befehls- und Taktungssignale an das Modul 30 an,
und die Ladungspumpe 32 erzeugt die Programmierimpulse
Vpp aus der Spannung Vdd unter Ansprechen auf die Steuersignale
von dem Prozessor 43. In der Praxis ist üblicherweise
in dem Schnittstellen- und Steuermodul 56 in dem nichtflüchtigen Speicher 30 hinreichend
Logik vorhanden, um die Funktionsweise des Speichers im Einzelnen
zu steuern und dabei den Prozessor 43 von dieser Verantwortung
zu entlasten. Typischerweise besteht die Steuerung 56 aus
ausreichenden Logikelementen, um die Befehle von dem Prozessor 43 zu
interpretieren, und zwar mithilfe eines vorgegebenen Protokolls und
einer zweckbestimmten Logikzustandsmaschine, wobei möglicherweise
einige Parameter in einem separaten ROM in der Steuerung 56 oder
dem Array 54 gespeichert sind und beim Start ausgelesen
werden. Die vorliegende Erfindung ist jedoch nicht von der technischen
Anordnung des Controllers abhängig,
und dafür
kann entweder der Prozessor 43 oder das Schnittstellen-
und Steuerungsmodul 56 genutzt werden. Die Programmierimpulse
Vpp werden an eine Programmierzeit-Steuerungsschaltung 52 und an
ein Speicherzellen-Array 54 angelegt.
Das Array 54 umfasst Zeilen und Spalten aus Speicherzellen. Der
einfacheren Beschreibung halber sind die verschiedenen Steuerschaltungen
für die
Zeilen- und Spaltensteuerung
wie auch andere Steuerelemente für
das Speicher-Array in 2 weggelassen. Die Programmierzeit-Steuerungsschaltung 52 erkennt, wann
die Amplitude des Programmierimpulses Vpp geringer als die Referenzspannung
ist. Wenn dies passiert, setzt die Schaltung 52 einen Programmierzeitmerker
und sendet den Merker an die Steuerung 56. Die Steuerung 56 wiederum
erhöht
die Programmierzeit für
die nachfolgenden Impulse Vpp, die von der Ladungspumpe 32 erzeugt
werden. Die Schaltung 52 ist derart ausgelegt, dass bei
der zeitlichen Abfolge von Programmierimpulsen Vpp, wenn Vpp zum
ersten Mal unter die entsprechende Referenzspannung fällt (welche
sich schrittweise erhöht,
um mit der Schrittgröße der Spannungserhöhung des Programmierimpulses
Vpp Schritt zu halten) der Programmierzeitmerker für den Rest
des Programmierzyklus gesetzt wird, sodass die erhöhte Programmierzeit
für sämtliche
nachfolgenden Programmierimpulse Vpp angewandt wird, die während des
Rests des Programmierzyklus generiert werden.
-
3 stellt
ein Schaltungsschema dar, das die Programmierzeit-Steuerungsschaltung 52 aus 2 detaillierter
zeigt. Wie in 3 gezeigt ist, ist der Ausgang
Vpp der Ladungspumpe 32 mit einem Spannungsteiler 62 verbunden,
der zwei Widerstände 64a, 64b umfasst,
die an einem Knoten 65 verbunden sind. Der Widerstand 64b liegt
außerdem
auf Masse. Der Knoten 65 ist mit einem der Eingänge eines
Komparators 66 verbunden, dessen anderer Eingang eine Spannung
aV von der Steuerung 56 erhält, wobei V die Referenzspannung
darstellt. Der Komparator 66 vergleicht die Spannung an
dem Knoten 65 mit der Spannung aV. Der Wert a wird derart
angepasst, dass er den Spannungsabfall von Vpp über den Widerstand 64a ausmacht,
damit der Vergleich zwischen der Spannung an dem Knoten 65 und
aV durch den Komparator 66 angibt, ob Vpp oberhalb oder
unterhalb der Referenzspannung V liegt. Somit wird, wenn die Ausgangsspannung
Vpp der Ladungspumpe 32 oberhalb von V liegt, der Komparator 66 also
den Wert des Merkersignals FLGPGM auf hoch (d. h. "1") setzen. Das Merkersignal FLGPGM wird
an den Eingang Sn des SR-Flipflop 70 angelegt. Der Eingang
Sn des Flipflop 70 ist "aktiv
niedrig", was bedeutet,
dass der Eingang Sn des Flipflop 70 auf das Signal anspricht,
welches das invertierte des Merkersignals FLGPGM an dem Eingang
Sn darstellt. Der Eingang Rn des Flipflop 70 ist ebenfalls "aktiv niedrig". Das Flipflop 70 wird
gesetzt, wenn Vpp zu dem Zeitpunkt, wenn CLKp aktiviert wird, unterhalb
der Referenzspannung liegt.
-
4 stellt
ein Taktungsdiagramm dar, welches die Funktionsweise der Schaltung
aus 3 veranschaulicht, wobei der Zeitpunkt t0 den
Beginn eines Programmierzyklus bezeichnet. Das SR-Flipflop 70 stellt
ein getaktetes Flipflop dar, sodass es auf die Signale an den Eingängen Sn
und Rn reagiert, wenn der Taktimpuls CLKp von der Steuerung 56 aktiv
(z. B. hoch) ist. Wie in 4 gezeigt ist, wird in der Nähe des Beginns
t0 eines Programmierzyklus durch die Steuerung 56 bewirkt,
dass die Ladungspumpe 32 den mit 1 bezeichneten ersten
Pumpimpuls bereitstellt, und die anfängliche standardmäßige Programmierzeitspanne
wird auf einen kleineren Wert pt1 festgelegt (z. B. ungefähr 11 oder
12 μs),
um das Leistungsverhalten des in 2 gezeigten
Systems 20 zu optimieren. Wie in 4 gezeigt
ist, ist die Programmier- oder Programmzeit pt1 im Wesentlichen gleich
der Impulsbreite des mit 1 bezeichneten ersten Pumpimpulses. Die
Amplitude dieses Pumpimpulses wird mit der von der Steuerung 56 gelieferten
Referenzspannung in der zuvor beschriebenen Weise verglichen.
-
Anfangs
(d. h. zum Zeitpunkt t0) wird der Programmierzeitmerker auf niedrigen
Pegel oder "0" gesetzt. Nehmen
wir an, dass die Amplitude von Vpp des ersten Programmierimpulses 1 höher ist
als diejenige der Referenzspannung, so wird das Merkersignal FLGPGM
vor dem Zeitpunkt t1 als hoch festgestellt, wie in 4 gezeigt
ist. Das Flipflop 70 empfängt dann den ersten Taktimpuls
CLKp zum Zeitpunkt t1 von der Steuerung 56. Wie in 4 gezeigt ist,
wird das Signal 72 zur Rücksetzung am Ende des Vorgangs
von der Steuerung 56, das an den Eingang Rn des Flipflop 70 angelegt
wird, am Beginn t0 eines Programmierzyklus als hoch festgestellt.
Daher sind zum Zeitpunkt t1, wenn ein erster Taktimpuls (CLKp) an
das Flipflop angelegt wird, beide Eingänge Sn und Rn hoch. Da das
Flipflop auf die invertierten Signale des Merkersignals FLGPGM und
des Signals zum Rücksetzen
am Ende des Vorgangs anspricht, wird damit angezeigt, dass der Ausgang
Q des Flipflop 70 auf seinem Anfangswert gehalten werden
soll, der zu Beginn des Programmierzyklus eingestellt worden ist,
also auf niedrigem Pegel oder "0". Zum Zeitpunkt t2,
wenn ein zweiter Taktimpuls (CLKp) an das Flipflop 70 angelegt
wird, wiederholt sich der gleiche Prozess. Vor dem Zeitpunkt t2
ist der Programmierimpuls Vpp höher
als die Referenzspannung, sodass das Merkersignal wieder als hoch
festgestellt wird und der Ausgang Q des Flipflop wieder auf niedrigem Pegel
gehalten wird.
-
Zum
Zeitpunkt t3 jedoch steigt der von der Ladungspumpe 32 ausgegebene
Programmierimpuls Vpp langsamer an als zuvor, sodass die gewünschte Spitzenamplitude
erst zu einem späteren Zeitpunkt
als t3 erreicht wird. Dies kann auf eine Reihe unterschiedlicher
Gründe
zurückzuführen sein, wovon
einer eine niedrige Temperatur darstellt. Ein weiterer möglicher
Grund liegt in der Tatsache, dass von der Ladungspumpe 32 gefordert
wird, zum Zeitpunkt t3 einen höheren
Spannungspegel als zu früheren
Zeitpunkten zu liefern. Da das Eingangssignal bei Sn niedrig ist,
setzt das Flipflop 70 seinen Ausgang bei Q zum Zeitpunkt
t3 auf hohen Pegel zurück. Dies
stellt das Programmierzeit-Merkersignal dar, welches an die Steuerung 56 geliefert
wird, die ihrerseits die Programm- oder Programmierzeit sofort von pt1
auf pt2 erhöht
und somit die Steuersignale, die sie an das EEPROM-Modul 30 anlegt,
derart ändern wird,
dass diese die Änderung
der Programmierzeit widerspiegeln. Damit wird eine ausreichende
Zeit dafür
ermöglicht,
dass der Pumpimpuls auf die erwartete Spitzenamplitude ansteigt
und dass dennoch der Pumpimpuls mit dieser Spitzenamplitude die
gewünschte
Programmierzeit pt1 lang angelegt werden kann, wie in 4 angegeben
ist. Idealerweise wird der Wert für pt2 derart festgelegt, dass
er um einen Betrag länger
als pt1 ist, der gerade ausreicht, um der langsameren Anstiegszeit
des Pumpimpulses Rechnung zu tragen, sodass das Leistungsverhalten nicht
unnötigerweise
verschlechtert wird, selbst wenn die Pumpe schwächer ist. Bei dem obigen Beispiel, bei
dem pt1 ungefähr
11 oder 12 μs
beträgt,
kann pt2 bei einem Wert von ungefähr 14 μs liegen.
-
Der
Ausgang Q 74 des Flipflop 70, oder das Programmierzeit-Merkersignal,
verbleibt für
den Rest des Programmierzyklus unverändert, sodass der Prozessor 43 und/oder
die Steuerung 56 fortfahren, das Modul 30 derart
zu steuern, dass diese erhöhte Programmierzeit
pt2 anstatt von pt1 für
den Rest des Programmierzyklus genutzt wird. Daher beträgt die dem
nächsten
Pumpimpuls Vpp zugewiesene Programmierzeit pt2 anstatt pt1, wie
in 4 gezeigt ist. Selbst wenn die Amplitude des Programmierimpulses
zum Zeitpunkt t4 aus irgendeinem Grund die Referenzspannung übersteigt,
sodass das Merkersignal FLGPGM hoch ist, wie es zum Zeitpunkt t4
der Fall ist, wie in 4 gezeigt ist, bleibt die für den Pumpimpuls
Vpp zugeordnete Programmierzeit bei pt2. Zum Ende des Programmierzyklus,
zum Zeitpunkt t6, fällt
das Signal zum Rücksetzen
am Ende des Vorgangs auf "0" ab. Wie Fachleuten
auf dem Gebiet bekannt ist, kann das SR-Flipflop derart ausgelegt
werden, dass das Rücksetz-Eingangssignal
bei Rn eine höhere
Priorität
besitzt als das Setz-Eingangssignal Sn. Somit setzt das Flipflop 70 bei
Ankunft des Taktsignals zum Zeitpunkt t6 seinen Ausgang Q auf niedrig,
oder "0", zurück. Dies
bewirkt, dass die Steuerung 56 die Programmierzeit auf
den kleineren Standardwert pt1 zurücksetzt, bereit für den nächsten Programmierzyklus.
-
Wenngleich
die Erfindung vorstehend mit Bezugnahme auf verschiedenen Ausführungsformen beschrieben
worden ist, versteht es sich, dass Änderungen und Modifikationen
vorgenommen werden können,
ohne dass vom Schutzumfang der Erfindung abgewichen wird, der allein
durch die anhängenden Ansprüche und
deren Äquivalente
definiert sein soll.