-
TECHNISCHES
GEBIET
-
Die
vorliegende Erfindung betrifft nicht-flüchtige Halbleiterspeicher (z.B.
EPROMs, Flashspeicher, E2PROMs) und betrifft
insbesondere eine Mehrspeicherbank-Architektur mit einer Adressierungs- und
Lese/Schreib-Schaltung, die gleichzeitige Lese- und Schreiboperationen
ermöglicht.
-
STAND DER
TECHNIK
-
Im
US-Pat. Nr. 5 307 314 beschreibt Lee ein Speicherbauelement, das
in Bänke
mit separaten Schreibfreigabeeingängen (WEH und WEL)
aufgeteilt ist. Auf beide Speicherbänke kann gleichzeitig zugegriffen
werden, aber nur bei derselben Adresse. Wenn beide Schreibfreigabesignale
aktiv sind, führt das
Bauelement einen Wortschreibvorgang in beide Speicherbänke an derselben
Adressenstelle aus. Wenn beide Schreibfreigabesignale inaktiv sind
und das einzelne Ausgabefreigabesignal (OE) aktiv ist, führt das Bauelement einen Wortlesevorgang
aus derselben Adressenstelle in beiden Bänken aus. Wenn nur eines der
Schreibfreigabesignale aktiv ist, führt das Bauelement einen Byteschreibvorgang
in nur eine Bank aus. Die Logikschaltung des Bauelements ermöglicht auch
eine aufgeteilte Lese/Schreib-Operation, wenn eines der zwei Schreibfreigabesignale
aktiv ist und das Ausgabefreigabesignal auch aktiv ist. Dann wird
ein Bytelesevorgang aus der Bank entsprechend dem inaktiven Schreibfreigabesignal
ausgeführt,
während
ein Byteschreibvorgang an der anderen Bank entsprechend dem aktiven
Schreibfreigabesignal ausgeführt
wird, wobei wiederum auf beide Bänke
an derselben Adresse zugegriffen wird. Jede Bank hat ihren eigenen
bytebreiten Satz von Dateneingangs-/-ausgangsleitungen.
-
Im
US-Pat. Nr. 5 513 139 beschreibt Butler einen Speicher, der zwei
Adressendecodierer aufweist, einen Decodierer für Leseoperationen und einen
separaten Decodierer für
Schreiboperationen. Der Speicher weist auch separate Eingangs- und Ausgangsdatenbusse
auf. Beide Adressendecodierer empfangen sequentiell geordnete Adressen
von einem Adressenzähler,
aber decodieren die Adressenbits, um die Zeilen von Speicherzellen
in der entgegengesetzten Richtung abzutasten. Somit kann in die
Zeilen des Speichers nacheinander in aufsteigender Reihenfolge geschrieben
werden und aus diesen in absteigender Reihenfolge gelesen werden
(oder umgekehrt). Ferner ist der Adressenzähler ein Binärzähler, dessen
Ausgangssignale, die zum Schreibdecodierer geliefert werden, um
ein Bit von den Ausgangssignalen, die zum Lesedecodierer geliefert werden,
verschoben sind, so dass der Lesezyklus mit zweimal der Rate des
Schreibzyklus stattfindet. Die Anzahl von Speicherzeilen ist ein
Vielfaches von (n+1), wobei "n" das Verhältnis der
Lesefrequenz zur Schreibfrequenz ist (z.B. 2:1), um sicherzustellen, dass
in keine Zeile des Speichers im gleichen Intervall sowohl geschrieben
als auch aus dieser gelesen wird.
-
Im
US-Pat. Nr. 5 502 683 beschreibt Marchioro einen Doppelzugriffs-Datencachespeicher,
der zwei Zeilendecodierer, einen auf jeder Seite der Wortleitungen
oder Zeilen, verwendet. Jeder Zeilendecodierer gibt eine gegebene
Wortleitung frei, wenn ihr Adresseneingangssignal anzeigte, dass
auf die entsprechende Zeile zugegriffen (von dieser gelesen oder
in diese geschrieben) werden soll. Auf die Speicherzellen der aktivierten
Wortleitung wird dann durch Bitleitungen zugegriffen, die mit Leseverstärkern oder
einer Schreibsteuerschaltung verbunden sind, wie geeignet. Die Zeilen
sind in Worte mit einer gegebenen Bitlänge organisiert, wobei die
Spaltengrenzen jede Zeile in vier Worte unterteilen. Es sind zwei
Datenanschlüsse
vorhanden, die jeweils über Datenmultiplexer
auf eine unterschiedliche der vier möglichen Wortspalten zugreifen.
Um Konflikte zwischen den zwei Zeilendecodierern, die versuchen, dieselbe
Wortleitung anzusteuern, zu verhindern, sind Zugriffsschalter in
jeder der Zeilen an den Grenzen zwischen den Worten angeordnet.
Diese Zugriffsschalter sind normalerweise geschlossen, so dass jede
Wortleitung vollständig
verbunden ist. Wenn jedoch auf dieselbe Zeile durch beide Zeilendecodierer
zugegriffen werden soll, wird ein Zugriffsschalter durch eine Steuerlogik
(die einen Adressenvergleicher umfasst) geöffnet, um die Wortleitung dieser
Zeile in zwei separate Abschnitte zu trennen. Auf diese Weise ermöglicht die
Speicherschaltung einen unabhängigen
gleichzeitigen Zugriff auf zwei verschiedene Worte in der Speichermatrix.
-
Im
US-Pat. Nr. 5 367 494 beschreiben Shebanow et al. einen Speicher
mit einer Vielzahl von Speicherbänken
jeweils mit ihrem eigenen Adressenzwischenspeicher und -decodierer,
ihrem eigenen Dateneingangszwischenspeicher und -treiber und ihrem
eigenen Datenausgangszwischenspeicher und -treiber. Steuersignale
umfassen ein Lese/Schreib-Signal, ein Adressenfreigabesignal, ein Dateneingangsfreigabesignal
und ein Datenausgangsfreigabesignal, die zu allen Speicherbänken gesandt
werden, und Mehrbit-Adressenbank-Dateneingangs-
und -Datenausgangsbank-Adressensignale, die zuerst decodiert und
dann zu nur einer ausgewählten
Speicherbank gesandt werden. Diese Steuersignale geben eine ausgewählte Speicherbank
frei, um eine Adresse zwischenzuspeichern, Daten zwischenzuspeichern
und Ausgangsdaten zu steuern, wie angefordert. Dieses Schema ermöglicht dadurch
einen zeitlich überlappenden
Speicherzugriff der verschiedenen Speicherbänke.
-
Im
US-Pat. Nr. 5 361 343 beschreiben Kosonocky et al. ein System mit
zwei nicht-flüchtigen
Speichermatrizes. Jede Matrix hat ihr eigenes Adressenregister,
ihren eigenen Decodierer und ihre eigene Torsteuerung; sowie ihre
eigenen Lösch-
und Programmierspannungsschalter. Die Matrizes teilen sich Eingangs-
und Ausgangsdatenwege über
einen gemeinsamen Dateneingangszwischenspeicher, Datenausgangsmultiplexer
und Eingangs/Ausgangs-Puffer. Die verschiedenen Register, Schalter, Multiplexer
und Freigaben werden durch eine Logik gesteuert, die eine Matrixansteuerschaltung
umfasst, die eine Matrix für
eine Schreiboperation und die andere Matrix für eine gleichzeitige Leseoperation
ansteuern kann.
-
Wenn
Speicherbauelemente entworfen werden, die zu gleichzeitigen Lese-
und Schreiboperationen in der Lage sind, wird eine beträchtliche
Verdoppelung einer Schaltung bereitgestellt, wenn eine Adressierungsflexibilität erforderlich
ist. Die einfacheren Bauelemente mit einem Minimum an Steuerlogik und
Adressierungsschaltung sind normalerweise in ihrer gleichzeitigen
Lese/Schreib-Fähigkeit
begrenzt, z.B. auf den Zugriff auf die gleiche Adresse von zwei Speicherbänken oder
das sequentielle Abtasten von Adressen. Diejenigen Speicherbauelemente,
die zu einem wahrhaft wahlfreien unabhängigen Zugriff von zwei oder
mehr Speicheradressen gleichzeitig in der Lage sind, weisen typischerweise
eine zumindest verdoppelte Adressierungsschaltung auf, wie z.B. zwei
oder mehr Zeilendecodierer für
die separaten Lese- und Schreiboperationen oder für die verschiedenen
Speicherbänke.
Häufig
sind separate Dateneingangs- und Datenausgangswege oder verdoppelte
Datenwege für
die verschiedenen angeforderten Speicherzugriffe vorhanden. Ein
Grund für
die Komplexität
liegt in der Tatsache, dass Speicherlesevorgänge weniger Zeit zur Durchführung benötigen als Speicherschreiboperationen.
In nichtflüchtigen Speicherbauelementen
kann eine Leseoperation nur 150 bis 200 ns pro Adresse dauern, während eine Schreiboperation
eine Byteladezykluszeit von etwa 150 μs aufweisen kann und das Schreiben
einer vollständigen
Seite nicht weniger als 10 ms dauern kann. Somit ist zu sehen, dass
man von vielen Stellen in der Zeit lesen kann, die es dauert, um
nur ein Byte oder eine Seite von Daten zu schreiben. Die hinzugefügte Logik-Adressierungs-
(und Daten-) Schaltung ermöglicht
einem, die Adressenleitungen (und Datenleitungen) für Leseoperationen
freizugeben, während
eine Schreiboperation an einer anderen Adresse mit einem anderen
Satz von Datenbits fortfährt.
-
Es
gibt einige Anwendungen, die sowohl einen Programmspeicher mit hoher
Dichte, der Programmbefehlscodes speichert, die relativ permanent sind,
als auch einen kleineren Datenspeicher, der Parameter speichert,
die häufig
aktualisiert werden müssen,
erfordern. Ein Speicherbauelement, das beide Speicherarten in einem
einzelnen Chip kombiniert, wäre
erwünscht.
Um brauchbar zu sein, müsste ein
solches Bauelement aus dem Programmspeicher lesen können, während eine
Schreiboperation im Datenspeicher ausgeführt wird.
-
J.
Krückeberg
beschreibt in "Zweigeteiltes EEPROM:
Gleichzeitig auslesen und beschreiben", Elektronik, Franzis Verlag, Band 39,
Nr. 26, 1990, S. 56–59,
eine nicht-flüchtige Speichermatrix,
die in zwei Teile mit identischer Größe aufgeteilt ist, auf die gleichzeitig
für eine
Schreib- und Leseoperation zugegriffen werden kann. Während der
Schreibsequenz in einem des halben Matrixteils ist der andere halbe
Teil für
das Datenlesen zugänglich.
Verschiedene Adressen werden verwendet, um den ersten oder den zweiten
halben Teil zu adressieren, wobei eine Adressenleitung A12 und ein
zugehöriger A12-Multiplexer,
die die Matrixhälften
trennt, verwendet wird, um auf die Bitleitung im ersten/zweiten
halben Matrixteil zu multiplexieren.
-
Das
Halbleiterspeicherbauelement von
US
5 553 016 , auf dem der Oberbegriff von Anspruch 1 basiert,
umfasst verschiedene Arten von Speichermatrizes auf einem einzelnen
Substrat.
-
Es
ist eine Aufgabe der vorliegenden Erfindung, ein kombiniertes nicht-flüchtiges
Programm- und Datenspeicherbauelement mit gleichzeitiger Programmlese- und Datenschreibfähigkeit
bereitzustellen, wobei so viel der Schaltung wie möglich gemeinsam
genutzt wird, ohne die unabhängige
Adressierung und den Datenzugriff auf die Programm- und Datenspeichermatrizes
zu opfern.
-
Die
Erfindung ist in Anspruch 1 definiert. Spezielle Ausführungsbeispiele
sind in den abhängigen
Ansprüchen
dargelegt.
-
OFFENBARUNG
DER ERFINDUNG
-
Die
Aufgabe wird durch ein nicht-flüchtiges Speicherbauelement
mit zwei Speichermatrizes in diesem gelöst, wobei eine beispielsweise
dazu vorgesehen ist, als relativ permanenter Programmspeicher verwendet
zu werden, und die andere dazu vorgesehen ist, als häufiger aktualisierter
Datenspeicher verwendet zu werden. Das Bauelement umfasst ferner
einen einzelnen Satz von Adressenleitungen und einen einzelnen Satz
von Datenleitungen, die für
beide Speichermatrizes verwendet werden. Das Speicherbauelement
weist auch ein Adressendecodiermittel auf, das einen gemeinsam genutzten
Zeilendecodierer umfasst, der beiden Speichermatrizes gemeinsam
ist, wobei ein Zeilenadressen-Zwischenspeichermittel
zumindest dem Datenspeicher zum Halten einer decodierten Zeilenadresse
während
einer Schreiboperation zugeordnet ist, um den gemeinsam genutzten
Zeilendecodierer zur Verwendung bei Leseoperationen mit dem Programmspeicher
zu befreien. Obwohl beide Matrizes ihre eigenen separaten Spaltendecodierer,
Spaltenansteuerschaltungen und Datenzwischenspeicher aufweisen,
teilen sie sich nicht nur einen gemeinsamen Zeilendecodierer, sondern
auch gemeinsame Leseverstärker,
Daten-E/A-Puffer und eine Steuerlogik. Die Steuerlogik reagiert
auf Eingangssteuersignale und steuert die verschiedenen Elemente
des Bauelements, um eine ausgewählte
Lese- oder Schreiboperation in einer angesteuerten Speichermatrix
auszuführen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
eine schematische Blockebenen-Entwurfsansicht eines nicht-flüchtigen
Speicherbauelements gemäß der vorliegenden
Erfindung.
-
2 ist ein Ablaufdiagramm, das Lese- und Schreiboperationen
für jede
Speichermatrix des Bauelements von 1 darstellt,
einschließlich
des gleichzeitigen Lesens eines Programmspeichers während eines
Schreibzyklus des Datenspeichers des Bauelements.
-
BESTE ART
ZUR AUSFÜHRUNG
DER ERFINDUNG
-
Mit
Bezug auf 1 kombiniert ein nicht-flüchtiges
Speicherbauelement der vorliegenden Erfindung einen Programmspeicher 11 mit
einem Datenspeicher 13. Der Programmspeicher 11 kann eine
Flashspeichermatrix sein, die anfänglich mit Programmbefehlscodes
programmiert und nur selten (oder überhaupt nicht) aktualisiert
werden soll. Der Datenspeicher 13 kann eine E2PROM-Matrix
sein, die mit Datenparametern programmiert und häufiger aktualisiert wird. Die
zwei Speichermatrizes 11 und 13 müssen nicht
dieselbe Größe aufweisen
und normalerweise ist der Programmspeicher 11 viel größer als
der Datenspeicher 13. Der Programmspeicher 11 könnte beispielsweise
eine Flashmatrix mit 512K × 8 (d.h.
4 MBits) sein, die für
Schreibzwecke in Sektoren von 2K 256 Bytes unterteilt ist, während der
Datenspeicher 13 ein E2PROM mit
allen Merkmalen von 32K × 8
sein könnte,
der zu sowohl Ein-Byte- als auch 16-Byte-Seiten-Schreibvorgängen in
der Lage ist. Andere Speichergrößen und
Datenbreiten sind möglich.
-
Die
zwei Speicher 11 und 13 in dem Bauelement teilen
sich gemeinsame Adresseneingangsleitungen Ai,
eine beträchtliche
Menge einer Adressendecodierschaltung, insbesondere einen gemeinsamen
Zeilendecodierer 15, gemeinsame Dateneingangs-/-ausgangsleitungen
Dj und eine beträchtliche Datenschaltung, einschließlich gemeinsam
genutzter Leseverstärker 17 und
einer E/A-Pufferschaltung 19. Steuersignale für Lese-
oder Ausgabefreigabe OE und
Schreibfreigabe WE werden
auch gemeinsam genutzt, aber es sind separate Chipfreigabesignale CEF und CEE entsprechend den Flash- und E2PROM-Speichermatrizes 11 und 13 vorhanden. Die
Steuerlogik 21 für
das Bauelement wird im Wesentlichen von beiden Speichermatrizes
gemeinsam genutzt. Dieser Grad an gemeinsamer Betriebsmittelnutzung
ermöglicht,
dass ein kleineres Bauelement mit weniger für die Adressen und Daten erforderlichen
Anschlussstiften konstruiert wird, da eine unnötige Verdoppelung der Schaltung
und Signalwege vermieden wird. Dennoch ist das Bauelement immer
noch zu einem gleichzeitigen Zugriff auf die zwei Speichermatrizes 11 und 13 in
der Lage. Der gleichzeitige Zugriff wird trotz gemeinsam genutzter
Adressierungs- und Datenbetriebsmittel erzielt, indem der Datenspeicher 13 mit
einer Anzahl von Zwischenspeicherschaltungen 23, 24 und 27 versehen
ist, insbesondere Zeilenadressenzwischenspeichern 24, die
den gemeinsam genutzten Zeilendecodierer 15 zur Verwendung
vom Programmspeicher 11 während Schreiboperationen in
den Datenspeicher 13 freigeben.
-
Wenn
man sich zuerst den speziellen Adressenschaltungen des Bauelements
zuwendet, werden die Adresseneingangssignale Ai von
Adressenpuffern 25, 27 und 29 empfangen.
Im Fall der Spaltenadressenbits für den Datenspeicher 13 kann
der Adressenpuffer 27 die Form von lesedurchlässigen Zwischenspeichern
annehmen, um diese Adressenbits für die Dauer eines Byteschreibzyklus
des Datenspeichers zu halten. Alternativ könnte die Zwischenspeicherfunktion
für die
Datenspeicher-Spaltenadresse zu einem Teil der Spaltenansteuerschaltung 37 nach
der Decodierung gemacht werden. Die anderen Adressenpuffer 25 und 29 könnten auch
die Form von Zwischenspeicherschaltungen annehmen oder können einfache
Puffer mit drei Ausgangszuständen
sein, die die Adressensignale nur so lange halten, wie sie auf den
Adresseneingangsleitungen Ai aktiviert bleiben.
In beiden Fällen
werden alle Adressenpuffer als Reaktion auf Steuersignale C1–C3 von der Steuerlogik 21 freigegeben.
Die Steuerlogik 21 gewinnt wiederum ihre Steuersignale
Ck von den Signalen CEE, CEF, OE und WE, die von den Eingangsstiften des Bauelements
empfangen werden. Der Zeilenadressenpuffer 25 wird durch
das Signal C1 freigegeben, sobald entweder
die Chipfreigabe CEE oder CEF (aber nicht beide) aktiv
(niedrig) ist und entweder das Ausgabefreigabe- oder Schreibfreigabesignal OE oder WE (aber nicht beide) auch aktiv (niedrig)
ist. Der Spaltenadressenpuffer 27 für den Datenspeicher 13 wird
durch das Signal C2 freigegeben, sobald
das E2PROM-Chipfreigabesignal CEE aktiv ist und entweder das Ausgabefreigabe- oder
Schreibfreigabesignal OE oder WE auch aktiv ist. Der Spaltenadressenpuffer 29 für den Programmspeicher 11 wird
durch das Signal C3 freigegeben, sobald
das Flashspeicher-Chipfreigabesignal CEF aktiv ist
und entweder das Ausgabefreigabe- oder Schreibfreigabesignal OE oder WE auch aktiv ist. Die Adresseninformation
wird in die Puffer 23, 27, 29 bei der
fallenden Flanke eines geeigneten Chipfreigabesignals CEE oder CEF und
geeigneten Ausgabefreigabe- oder Schreibfreigabesignals OE oder WE eingegeben,
welches auch immer zuletzt erscheint. Die Bedingung, unter der beide
Chipfreigabesignale niedrig sind oder beide Ausgabe- und Schreibfreigabesignale
niedrig sind, ist ungültig
und erzeugt keine Steuersignale von der Logik 21. Dem Zeilenadressenpuffer 25 wird
die Masse der Adressenbits zugewiesen, z.B. Bits A4 bis A14 entsprechend
einem Sektor der Flashspeichermatrix 11 von 512K × 8 und einer
Seite der E2PROM-Matrix 13 von
32K × 8.
Den Spaltenadressenpuffern 27 und 29 werden die
restlichen Adressenbits zugewiesen, z.B. die Bits A0 bis A3 der
E2PROM-Matrix und die Bits A0 bis A3 und A15
bis A18 der Flashmatrix. Andere Anordnungen der Zeilen- und Spaltenadressenbits
sind in Abhängigkeit
von der Größe und Konfiguration
der jeweiligen Speichermatrizes möglich.
-
Die
Adresseninformation wird von den Puffern 25, 27 und 29 zur
Adressendecodierschaltung 15, 31 und 33 geliefert.
Typischerweise wird die Adressendecodierung in zwei oder mehr Stufen
ausgeführt,
einschließlich
einer ersten Vordecodierstufe, gefolgt von einer Enddecodierstufe.
Der Einfachheit halber wurden in 1 alle Stufen
in entsprechende einzelne Decodiererschaltungen 15, 31 und 33 zusammengefasst
gezeigt. Der gemeinsam genutzte Zeilendecodierer 15 steht
mit beiden Speichermatrizes 11 und 13 in Verbindung.
Im Fall des Programmspeichers 11 steht der Zeilendecodierer 15 direkt
mit Zeilentreibern 32 in Verbindung, die eine angesteuerte
Wortleitung oder Zeile entsprechend den decodierten Zeilenadressenbits
aktivieren. Im Fall des Datenspeichers 13 steht der Zeilendecodierer 15 mit
einer lesedurchlässigen
Zwischenspeicherschaltung 24 in Verbindung. Die Zwischenspeicherschaltung 24 ist wiederum
mit Zeilentreibern 34 verbunden, die eine angesteuerte
Wortleitung entsprechend der vom Zeilendecodierer empfangenen decodierten
Zeilenadresse aktivieren. Während
einer Leseoperation ist die Zwischenspeicherschaltung 24 effektiv
durchlässig,
so dass der Zeilendecodierer 15 direkt mit dem angesteuerten
Zeilentreiber in Verbindung steht. Aber während einer Schreiboperation
wird die decodierte Zeilenadresse in den Zeilenadressenzwischenspeichern 24 zwischengespeichert
und vom Zeilendecodierer 15 durch Durchgangsgatter, die durch
ein Steuersignal C7 von der Steuerlogik 21 gesteuert
werden, isoliert (dies geschieht, wenn WE = niedrig
und CEE = niedrig). Dies befreit
den Zeilendecodierer 15 zum Decodieren von Adressen, die
aus dem Programmspeicher 11 gelesen werden sollen. Die
Zwischenspeicher 24 halten die decodierte Zeilenadresse
zum Schreiben in den Datenspeicher 13, so dass die angesteuerte
Wortleitung weiterhin mit der Programmierspannung VPP aktiviert
wird.
-
Der
Spaltendecodierer 31 für
den Datenspeicher 13 ist mit einer Spaltenansteuerschaltung 35 verbunden.
Ebenso ist der Spaltendecodierer 33 für den Programmspeicher 11 mit
einer Spaltenansteuerschaltung 37 verbunden. Die Spaltenansteuerschaltungen 35 und 37 sind
bidirektionale Multiplex- und Gatterschaltungen, die den Zugriff
der Datenwege auf eine angesteuerte Spalte von Acht-Bit-Leitungen der jeweiligen
Speichermatrizes 11 und 13 steuern. Die Operation
der Ansteuerschaltungen 35 und 37 wird durch Signale
C4 und C5 von der
Steuerlogik 21 gesteuert. Während einer Leseoperation (OE = niedrig, WE = hoch), wird die angesteuerte Spalte von
Bitleitungen entsprechend der Spaltenadresse in der freigegebenen
Speichermatrix 11 oder 13 (entweder CEE oder CEF ist
niedrig) mit den Leseverstärkern 17 verbunden.
Ein Dateneingangs-/-ausgangspuffer 19, der auf ein weiteres Steuersignal
C6 reagiert, gibt das gelesene Datenbyte
in die Datenleitungen Dj aus. Während einer
Schreiboperation (WE = niedrig, OE = hoch) verbindet die
freigegebene Spaltenansteuerschaltung 35 oder 37 (entweder CEE oder CEF ist niedrig) den Eingangs/Ausgangs-Puffer 19 mit
den Datenzwischenspeichern 23 oder 39 für die angesteuerte
Spalte von Bitleitungen in der freigegebenen Speichermatrix 11 oder 13.
Von den Datenleitungen Dj empfangene Daten
werden in die angesteuerten Datenzwischenspeicher 23 oder 29 geladen,
von denen sie in die Zeile und Spalte des Speichers entsprechend
den empfangenen und decodierten Adressenbits Ai geladen
werden können.
-
Die
Steuerlogik 21 steuert zusätzlich zum Erzeugen von geeigneten
Steuersignalen Ck als Reaktion auf die Eingangssignale CEE, CEF, OE und WE auch die Erzeugung der
hohen Spannung VPP zum Programmieren von
Daten in die Speicherzellen. Insbesondere kann das Bauelement einen
JEDEC-Standardsoftware-Datenschutz (W.P.) umfassen. In diesem Schema
muss jeder Programmiersequenz für
einen Sektor des Flashspeichers oder ein Byte oder eine Seite des
E2PROM eine Drei-Byte-Programmbefehlssequenz
vorangehen, damit die eigentliche Programmierung stattfindet. Diese
Sequenz könnte
aus einer spezifischen Kombination von Datenbits Dj und
Adressenbits Ai, typischerweise abwechselnden
Nullen und Einsen, bestehen.
-
Mit
Bezug auf 2 stellt ein Ablaufdiagramm
die Hauptoperationsmerkmale der vorliegenden Erfindung dar. Eine
Schreiboperation in den Programmspeicher (d.h. die Flashspeichermatrix 11 in 1)
beginnt mit einem Drei-Byte-Schreibfreigabecode,
um den Softwareschreibschutz auszuschalten. Das Chipfreigabesignal CEF für den Flashspeicher und das
Schreibfreigabesignal WE sind
ein niedriger Impuls, während
eine Sequenz von drei Adressen und drei entsprechenden Sätzen von
Daten in das Bauelement eingegeben werden. Typischerweise werden
die Adressenbits A18–A15
ignoriert, da die Schreibschutzlogik auch von der kleineren E2PROM-Matrix 13 gemeinsam genutzt
wird. Dennoch findet kein eigentliches Schreiben in den Flashspeicher
statt, sondern die Sequenz bewirkt, dass die Steuerlogik beginnt,
die Erzeugung einer Programmierspannung VPP zuzulassen,
und startet interne Schreibzeitgeber. Der Flashspeicher wird in
Sektoren mit 256 Bytes programmiert. Ein ganzer Sektor wird nach
dem Empfang der Sektoradresse auf den Bits A14 bis
A4 vor der Programmierung gelöscht. Kein spezieller
Löschbefehl
ist erforderlich. Beliebige Bytes im Sektor, die anschließend unprogrammiert gelassen
werden, sind unbestimmt. Die Sektoradresse A14 bis
A4 bleibt für die Dauer des Sektorschreibvorgangs
unverändert,
während
sich die Byteadresse A18 bis A15 und
A3 bis A0 innerhalb
des Sektors ändert.
Obwohl die Byteadresse typischerweise sequentiell verändert wird,
ist dies nicht wesentlich und die Byteprogrammierung eines Flashsektors
kann in einer beliebigen Reihenfolge vor sich gehen. In 2 wird die Byteadresse für einen
Sektor nacheinander von einer Startadresse ADDR zu einer Endadresse ADDR
+ 255 ausgeführt.
Die entsprechenden Daten DATA-IN, die in den Speicher geladen werden,
werden durch BYTE 0 bis BYTE 255 auf den Datenleitungen angegeben.
-
Ein
Byteladevorgang wird durch Anlegen eines niedrigen Impulses auf CEF und WE, wobei CEE und OE hoch sind, durchgeführt. Die
Adresse wird bei der fallenden Flanke von CEF oder WE zwischengespeichert,
welches auch immer zuletzt auftritt, während die Daten bei der ersten
steigenden Flanke von CEF oder WE zwischengespeichert werden.
Sobald ein Byte in die Datenzwischenspeicher der Flashspeichermatrix
geladen wurde, wird es während
eines internen Programmierzeitraums in die Speicherzellen programmiert.
Die Byteschreibzykluszeit ist typischerweise etwa 150 μs, obwohl
tatsächliche
Ladevorgänge
weniger Zeit benötigen
können. Nachdem
das erste Datenbyte programmiert wurde, werden aufeinanderfolgende
Bytes auf dieselbe Weise eingegeben. Bei jedem zu programmierenden neuen
Byte muss der Übergang
von WE (oder CEF) von einem hohen auf einen niedrigen
Pegel innerhalb 150 μs
des Übergangs
von WE (oder CEF) des vorangehenden Bytes von einem
niedrigen auf einen hohen Pegel stattfinden oder der Ladezeitraum
endet. Die gesamte Schreibzykluszeit für einen Sektor des Flashspeichers
ist typischerweise etwa 10 ms. Keine Leseoperationen an der E2PROM-Matrix werden während des Schreibzeitraums
des Flashspeichers zugelassen und Versuche, den Flashspeicher zu
lesen, sind effektiv Abfrageoperationen des geladenen aktuellen
Bytes. Alternativ würden
Modifikationen am Bauelement von 1, die Zwischenspeicherschaltungen
für decodierte
Zeilenadressen für
den Flashspeicher 11 sowie den E2PROM 13 umfassen, E2PROM-Lesevorgänge während der Flashspeicher-Schreiboperationen
ermöglichen,
falls erwünscht.
-
Eine
Flashspeicher-Leseoperation 52 findet statt, wenn das Chipfreigabesignal CEF des Flashspeichers und
das Ausgabefreigabesignal OE ein niedriger
Impuls sind, während CEE und WE hoch bleiben. Die Flashspeichermatrix 11 wird
wie ein statischer RAM gelesen. Das Lesen wird vielmehr an einzelnen
Bytes als an ganzen Sektoren ausgeführt. Überdies erscheinen die Sektoren
für Leseoperationen
nahtlos und die Sektorgrenzen müssen
nicht berücksichtigt
werden. Das heißt,
Bytes von verschiedenen Sektoren können nacheinander gelesen werden.
Wenn CEF und OE niedrig sind, werden die auszugebenden
Daten DATA-OUT, die an der Flashspeicherstelle gespeichert sind,
die durch die Adresseneingangssignale A18 bis
A0 festgelegt wird, auf den Datenleitungen
aktiviert. Die maximale Lesezeit ist typischerweise nur 150 bis
200 ns pro Byte.
-
In
den Datenspeicher 13, typischerweise eine E2PROM-Matrix,
wird häufiger
geschrieben als in den Programmspeicher 11. Die E2PROM-Schreiboperation 54 in 2 stellt die Fähigkeit, die von der Speicherarchitektur
der vorliegenden Erfindung bereitgestellt wird, zum gleichzeitigen
Lesen des Flashspeichers 11 während des Schreibzykluszeitraums der
E2PROM-Matrix 13 dar. Der Schreibschutz
wird durch eine 3-Byte-Schreibfreigabecode-Sequenz deaktiviert,
welche typischerweise dieselbe ist wie jene für den Flashspeicher, außer dass
nun CEE ein niedriger Impuls
ist, während CEF hoch bleibt. Leseoperationen
aus dem Flashspeicher können
das Laden der Schreibfreigabecode-Sequenz unterbrechen, wie gezeigt,
vorausgesetzt, dass die Byteladezykluszeit von 150 μs nicht verletzt
wird. Da eine Leseoperation im Allgemeinen weniger als 200 ns zur Durchführung dauert,
können
viele Bytes aus dem Flashspeicher zwischen jedem Byte der Codesequenz
gelesen werden. Sobald die gültige
Befehlssequenz geladen wurde, wird der Schreibzyklus dadurch eingeleitet,
dass sowohl CEE als auch WE auf einen niedrigen Pegel
schalten. Wiederum wird die Adresse durch die fallende Flanke von CEE oder WE zwischengespeichert, welches auch immer
zuletzt auftritt, während
die Daten in den Zwischenspeichern 23 von 1 bei
der steigenden Flanke von CEE oder WE zwischengespeichert werden,
welches auch immer zuerst auftritt.
-
Alle
Schreiboperationen in die E2PROM-Matrix
müssen
den Grenzen eines Seitenschreibvorgangs entsprechen. Das heißt, obwohl
irgendwo von einem einzelnen Datenbyte bis zu sechzehn Datenbytes
geschrieben werden können,
müssen
sich alle derartigen Bytes während
eines Schreibzyklus auf derselben Seite befinden, wie durch die
Adressenbits A14–A4
definiert. Für
jeden Übergang
des Signals WE von einem hohen
auf einen niedrigen Pegel, müssen
die Bits A14–A4
gleich sein (SEITE in 2). Die Adressenbits
A3 bis A0 werden verwendet, um festzulegen, welche Bytes innerhalb
der Seite geschrieben werden sollen. Die Adressenbits A18 bis A15
gelten nicht für
die kleinere E2PROM-Matrix und werden ignoriert.
Für eine
Schreiboperation einer ganzen Seite werden die Bytes normalerweise nacheinander
geschrieben, wie in 2 angegeben, indem
die Eingangsdaten BYTE 0 bis BYTE 15 in fortlaufende Bytes, beginnend
mit der Startadresse ADDR und endend mit der Adresse ADDR +15, geladen
werden. Die Bytes können
jedoch auf Wunsch in einer beliebigen Reihenfolge geladen werden
und können
innerhalb desselben Ladezeitraums geändert werden. Nur Bytes, die
zum Schreiben festgelegt sind, werden gelöscht und mit neuen Daten beschrieben,
die in den Datenzwischenspeichern gehalten werden.
-
Lesevorgänge 56 aus
der Flashspeichermatrix werden während
der gesamten E2PROM-Schreibzykluszeit (bis
zu 10 ms) zugelassen, solange die Byteladezykluszeit von 150 μs für den E2PROM-Schreibvorgang nicht verletzt wird.
Wie vorher geschieht ein Flashspeicher-Lesevorgang, wenn CEF und OE ein niedriger Impuls sind. Die Daten
(BYTE), die an der Flashspeicherstelle (F.ADDR) gespeichert sind,
welche durch die Adresseneingangssignale A18 bis A0 festgelegt wird,
werden gelesen und auf den Datenleitungen ausgegeben. Viele Lesevorgänge können in
der zur Verfügung
stehenden Zeit durchgeführt
werden. Versuche, die E2PROM-Matrix während des
E2PROM-Schreibzyklus zu lesen (CEE und OE niedrig),
erzeugen eine Abfrageoperation der in den Zwischenspeichern 23 gehaltenen
Daten.
-
Die
E2PROM-Leseoperation 58 wird genau wie
die Flashleseoperation 52 durchgeführt, außer dass nun die E2PROM-Matrix
angesteuert wird (CEE = niedrig).
Die Daten (BYTE), die an der Speicherstelle (E2ADDR)
gespeichert sind, welche durch die Adresseneingangssignale A14-A0
festgelegt wird, werden gelesen und auf die Datenleitungen ausgegeben.
Ein E2PROM-Lesevorgang kann nicht während irgendeines
der Schreibzyklen durchgeführt werden.
-
Das
Bauelement der vorliegenden Erfindung soll verwendet werden, um
eine selten aktualisierte Programminformation in einer Speichermatrix
und häufiger
aktualisierte Datenparameter in einer anderen Speichermatrix zu speichern.
Die Architektur ermöglicht
ein gleichzeitiges Lesen des Programmspeichers während Schreibvorgängen in
den Datenspeicher, während
viel Verdoppelung in der Adressierungs- und Datenhardware beseitigt
wird. Die Adressenzwischenspeicher des Datenspeichers geben den
Zeilendecodierer zum Durchführen
einer Leseoperationsdecodierung für den Programmspeicher während des
Zeitraums, in dem Daten, die in den Datenzwischenspeichern des Datenspeichers
gehalten werden, tatsächlich
in Speicherzellen programmiert werden, frei. Somit ist nur ein Zeilendecodierer
erforderlich. Alternative Bauelemente könnten beide Speichermatrizes
mit unabhängigen
Adressenzwischenspeichern und -treibern aufweisen, so dass Leseoperationen
in einer Speichermatrix durchgeführt
werden können,
während
die andere eine Schreiboperation vollendet. Nur ein einzelner Satz
von Daten- und Adresseneingängen
ist zum Lesen und Schreiben beider Matrizes erforderlich.