-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der
Erfindung
-
Die vorliegende Erfindung betrifft
unter einem Aspekt generell programmierbare logische Einrichtungen
bzw. Logikeinrichtungen, die einen rekonfigurierbaren Dual-Modus-Speicher enthalten.
Unter einem anderen Aspekt ist ein rekonfigurierbarer Dual-Modus-Speicher
beschrieben, der zum Funktionieren entweder als CAM oder RAM ausgebildet
ist.
-
2. Beschreibung der verwandten
Technik
-
Eine programmierbare Logikeinrichtung
bzw. PLD ist eine programmierbare integrierte Schaltung, die dem
eine Softwarekontrolle verwendenden Benutzer der Schaltung erlaubt,
die logischen Funktionen bzw. Logikfunktionen, welche die Schaltung
ausführt,
kundenspezifisch anzupassen. Die bisher von integrierten Kleinintegrations-,
Mittelintegrations- und Großintegrationsschaltungen
ausgeführten
Logikfunktionen können
anstelle dessen von programmierbaren Logikeinrichtungen ausgeführt werden.
Wird eine typische programmierbare Logikeinrichtung von einem Hersteller
integrierter Schaltungen geliefert, kann sie noch nicht jede spezifische
Funktion ausführen.
Der Benutzer kann die PLD, um die von der Benutzeranwendung benötigte Funktion
oder Funktionen auszuführen,
in Verbindung mit vom Hersteller gelieferter oder vom Benutzer oder
einer angenommenen Quelle erzeugter Software programmieren. Die
PLD kann dann in einem vom Benutzer gebildeten größeren System
ebenso funktionieren, als wären
fest dedizierte logische Chips verwendet. Zwecks dieser Beschreibung
ist es so zu verstehen, dass eine programmierbare Logikeinrichtung
sich sowohl auf einmal programmierbare als auch auf umprogrammierbare
Einrichtungen bezieht.
-
Programmierbare Logik umfasst alle
vom Endbenutzer konfigurierten digitalen Logikschaltungen, enthaltend
am Einsatzort programmierbare bzw. feldprogrammierbare Gate-Arrays
(FPGAs) und komplexe PLDs (= complex PLDs = CPLDs). Ein Beispiel
einer CPLD ist als programmierbare Eingebettet-Array-Logikeinrichtung
(= embedded array programmable logic device) bekannt. Eine programmierbare
Eingebettet-Array-Logikeinrichtung verwendet mehrere Eingebettet-Array-Blöcke (= embedded
array blocks) bzw. EABs, die programmierbar miteinander verbunden
sind, um einen Speicher und ein Logikarray zum Realisieren bzw.
Implementieren einer Speicherfunktion und spezialisierter Logikfunktionen zu
bilden. Generell werden Logikfunktionen durch Verwendung eines Logikarrays
implementiert, das aus programmierbar miteinander verbundenen Logik-Array-Blöcken (=
logic array blocks) bzw. LABs besteht. Durch geeignetes programmierbares
miteinander Verbinden des Arrays aus EABs und des Arrays aus LABs
kann eine programmierbare Eingebettet-Array-Logikeinrichtung viele
komplexe Logik- und kombinierte Logik/Speicher-Funktionen implementieren.
-
Die Architektur der programmierbaren
Eingebettet-Array-Logikeinrichtung
kann durch mehrere Logik-Array-Blöcke gebildet sein, die in Zeilen
und Spalten angeordnet und mittels programmierbarer Verbinder an
mehrere horizontale und vertikale Leiter gekoppelt sind. Auf ähnliche
Weise kann ein Array aus Eingebettet-Array-Blöcken derart ausgebildet sein,
dass in jeder Zeile aus Logik-Array-Blöcken wenigstens ein EAB vorhanden
ist. Die EABs des Arrays sind ebenfalls mittels mehrerer programmierbarer Verbinder
an die mehreren horizontalen und vertikalen Leiter gekoppelt. Beispielsweise
ist die 1 eine Darstellung
der Architektur einer programmierbaren Eingebettet-Array-Logikeinrichtung,
wie sie durch die FLEX10KTM-Logikeinrichtungen-Familie exemplifiziert
ist, die von der Altera Corporation in San Jose, California, hergestellt
wird. Wie oben beschrieben sind die Logik-Array-Blöcke 104a und 104b so
angeordnet, dass sie einen Abschnitt einer Zeile 150, die
einen einzelnen Eingebettet-Array-Block 102a enthält, bilden.
Auf im Wesentlichen ähnliche
Weise ist eine zweite Zeile 152 ist ausgebildet, bei der
ein Abschnitt die Anordnung aus den Logik-Array-Blöcken 104c und 104d und
den Eingebettet-Array-Block 102b enthält.
-
Wie oben beschrieben kann jeder LAB
und EAB durch geeignet angeordnete programmierbare Verbinder programmierbar
an die mehreren vertikalen und horizontalen Leiter gekoppelt sein.
Beispielsweise kann der in einem Abschnitt der Zeile 150 enthaltene
LAB 104a durch programmierbare Verbinder 180 und 182 elektrisch
an eine erste Anzahl horizontaler Leiter 174 und bzw. eine
zweite Anzahl horizontaler Leiter 176 gekoppelt sein. Auf ähnliche
Weise kann der LAB 104a durch programmierbare Verbinder 194 und 196 elektrisch
an eine erste Anzahl vertikaler Leiter 190 bzw. eine zweite
Anzahl vertikaler Leiter 192 gekoppelt sein. Auf ähnliche
Weise kann jeder der EABs eines Arrays elektrisch an jeweils wenigstens
einen der mehreren vertikalen und horizontalen Leiter gekoppelt
sein. Beispielsweise kann der EAB 102a mittels programmierbarer
Verbinder 195 und 197 elektrisch an die jeweiligen
vertikalen Leiter 192 bzw. 191 und mittels programmierbarer
Verbinder 193 und 199 an die jeweiligen horizontalen
Leiter 174 bzw. 176 gekoppelt sein. Auf diese Weise ist
eine programmierbare Eingebettet-Array-Logikeinrichtung gebildet,
die viele komplexe Logik- und kombinierte Logik/Speicher-Funktionen implementieren kann.
-
Der EAB ist ein flexibler Direktzugriffsspeicher-Block
bzw. RAM-Block mit Registern an den Eingangs- und Ausgangstoren.
Wie es bei der Technik bekannt ist, ist ein RAM ein Array aus individuellen
Speicherzellen, deren jede mehrere Transistoren enthält, die
so konfiguriert sind, dass sie digitale Daten in Form eines einzelnen
Bits speichern. Typischerweise sind die individuellen Speicherzellen
so angeordnet, dass sie Datenwörter
mit von der speziellen Anwendung abhängender variierender Länge bilden.
In der Praxis können
Datenwörter
jede Länge aufweisen,
jedoch sind Datenwortlängen
von 1, 8, 16 oder 32 Bit üblich,
aber es ist jede vom Benutzer gewünschte Wortlänge möglich. So
wie sie strukturiert ist hat die RAM-Einrichtung die Fähigkeit,
durch wahlweises Frei geben gewünschter
Zeilen und Spalten auf jedes gespeicherte Datenbit oder Datenwort unabhängig von
jedem anderen gespeicherten Datenbit oder -wort zuzugreifen oder
es zu lesen.
-
Viele Anwendungen, beispielsweise
Datenbankmaschinen, Bild- oder Spracherkennung oder Computer- und
Kommunikationsnetzwerke erfordern Hochgeschwindigkeits-Suchen in
Datenbänken,
Listen, oder Mustern. Üblicherweise
verwenden Hochgeschwindigkeits-Suchen, die einen Speicher mit wahlfreiem
Zugriff bzw. Direktzugriffsspeicher bzw. RAM (= random access memory)
verwenden, Such-Algorithmen, beispielsweise Baum-basisierte binäre Suchen oder Vorgriffs-Etiketten-
bzw. -Markierungs-Puffer.
Leider erfordert die Struktur des RAM, dass die Algorithmen die
gewünschte
Information gegen die im RAM vorab gespeicherten Daten auf relativ
langsame Weise sequentiell vergleicht, was zu inakzeptablen Suchzeiten
führt.
-
Um den Bedarf an Hochgeschwindigkeits-Suchen
in großen
Datenbänken,
Listen oder Mustern zu befriedigen, wurde eine Einrichtung, die in
der Technik als inhaltsadressierbarer Speicher bzw. Assoziativspeicher
bzw. CAM (= content addressable memory) bekannt ist, entwickelt.
Der CAM ist eine Speichereinrichtung, welche Anwendungen wie beispielsweise
Datenbankmaschinen, Bild- oder Spracherkennung oder Computer- und Kommunikationsnetzwerke,
die schnelle Suchen in einer Datenbank, Liste oder einem Muster
benötigen, beschleunigt.
CAMs können
bei der Ausführung
von Hochgeschwindigkeits-Suchen in Datenbänken, Listen und Mustern gegenüber der
Verwendung eines RAM signifikante Leistungsvorteile aufweisen, da CAMs
die ganze Liste vorab gespeicherter Daten simultan vergleicht. Typischerweise
gibt die CAM-basierte Suchmaschine bei der Ausführung von Hochgeschwindigkeits-Suchen
eine bis zu einer Größenordnung
schnellere Leistung als die RAM-basierte Maschine ab.
-
Im Hinblick auf das Vorstehende wäre es vorteilhaft
und deshalb wünschenswert,
eine programmierbare Logikeinrichtung bereitzustellen, die einen effizienten
konfigurierbaren inhaltsadressierbaren Speicher bzw. Assoziativspeicher
aufweist.
-
Aus EP-A-0612154 geht eine Dual-Modus-Speicherzelle
hervor, die so ausgebildet ist, dass sie in einem ersten Modus als
Assoziativspeicher funktioniert und in einem zweiten Modus als Speicher mit
wahlfreien Zugriff bzw. Direktzugriffsspeicher funktioniert, wobei
die Dual-Modus-Speicherzelle eine Datenspeicherschaltung zum Speichern
von Daten, eine Vergleichsschaltung zum Vergleichen von in der Datenspeicherschaltung
gespeicherten Daten mit angeforderten Daten und eine Anpassungs-
bzw. Gleichheitsleitung zum Anzeigen, ob die gespeicherten Daten
und die angeforderten Daten angepasst bzw. gleich sind, aufweist.
-
Aus US-A-4740917 geht ein Speicher
hervor, der eine Matrix aus konventionellen Harper-pnp-Zellen und
peripheren Schaltungen aufweist, die ihm erlaubt, entweder als Direktzugriffsspeicher
oder als Assoziativspeicher benutzt zu werden.
-
Gemäss einem ersten Aspekt der
Erfindung ist eine Dual-Modus-Speicherzelle
bereitgestellt, die ausgebildet ist zum Funktionieren in einem ersten Modus
als inhaltsadressierbarer Speicher bzw. Assoziativspeicher und zum
Funktionieren in einem zweiten Modus als Speicher mit wahlfreiem
Zugriff bzw. Direktzugriffsspeicher, wobei die Dual-Modus-Speicherzelle
aufweist:
eine Datenspeicherschaltung zum Speichern von Daten,
eine
Vergleichsschaltung zum Vergleichen von in der Datenspeicherschaltung
gespeicherten Daten mit angeforderten Daten,
eine Anpassungs-
bzw. Gleichheitsleitung zum Anzeigen, ob die gespeicherten Daten
und die angeforderten Daten einander angepasst bzw. gleich sind, und
eine
Isolationsschaltung zum Wahlweisen Isolieren der Datenspeicherschaltung
von der Vergleichsschaltung und Gleichheitsleitung.
-
Gemäss einem zweiten Aspekt dieser
Erfindung ist eine programmierbare Logikeinrichtung bereitgestellt,
die aufweist:
ein Array aus programmierbaren, miteinander verbundenen
Logikzellen, das zur Verwendung bei der Implementierung programmierter
logischer Funktionen bzw. Logikfunktionen geeignet ist,
einen
Dual-Modus-Speicherblock, der programmierbar an das Array aus Logikzellen
gekoppelt ist, wobei der Dual-Modus-Speicherblock
ein Array aus Dual-Modus-Speicherzellen nach einem der Ansprüche 1 bis
3 aufweist,
eine Modussteuerschalt-Schaltung, die zum wahlweisen
Freigeben der Dual-Modus-Speicherzellen zum Arbeiten in entweder
dem ersten oder zweiten Modus geeignet ist.
-
Bei einer bevorzugten Ausführungsform weist
ein Dual-Modus-Speicherblock
eine mehrere Spalten und Zeilen aufweisende Anzahl Dual-Modus-Speicherzellen
auf, die geeignet angeordnet sind, um mit angeforderten Datenwörtern korrespondierende
Anpassungs- bzw. Gleichheitsadressen auszugeben, wenn der Dual-Modus-Speicherblock so
konfiguriert ist, dass er als Assoziativspeicher arbeitet. Die Dual-Modus-Speicherzellen können auch mehrere
Dual-Modus-Speicherzellen-Datenleitungen,
eine Zeilenleitung, eine Anpassungs- bzw. Gleichheitsleitung, eine
Datenspeicherschaltung zum Speichern von Daten, eine Vergleichsschaltung zum
Vergleichen der gespeicherten Daten mit angeforderten Daten und
eine Isolationsschaltung zum wahlweisen Isolieren der Datenspeicherschaltung und
der Vergleichsschaltung aufweisen.
-
Die programmierbare Logikeinrichtung
kann auch eine Komparandeneinheit zum Speichern und in eine Warteschlange
Einordnen angeforderter Daten und einen Prioritätscodierer aufweisen. Der Prioritätscodierer
ist geeignet sowohl zum Empfang und Speichern von Gleichheitsadressen
als auch zur Erzeugung eines Systemanpassungs- bzw. Systemgleichheitskennzeichens,
das einen GLEICHHEIT- oder NICHTGLEICH-Zustand anzeigt, geeignet.
-
Bei einer anderen Ausführungsform
weist die rekonfigurierbare programmierbare Logikeinrichtung ein
Array aus programmierbar miteinander verbundenen Logikzellen auf,
das zur Verwendung bei der Implementierung programmierter Logikfunk tionen
geeignet ist. Die rekonfigurierbare programmierbare Logikeinrichtung
weist auch einen Dual-Modus-Speicherblock auf, der programmierbar
an das Array aus Logikzellen gekoppelt ist. Der Dual-Modus-Speicherblock
kann so ausgebildet sein, dass er in einem ersten Modus als Assoziativspeicher
und in einem zweiten Modus als Direktzugriffsspeicher arbeitet.
-
Die programmierbare Logikeinrichtung
weist auch eine an den Assoziativspeicherblock gekoppelte Modussteuerschalt-Schaltung auf. Die
Modussteuerschalt-Schaltung gibt den Dual-Modus-Speicherblock zum Arbeiten als
ein Assoziativspeicherblock oder als Direktzugriffsspeicherblock
frei. Bei einer anderen Ausführungsform
kann der Dual-Modus-Speicherblock als ein statischer Direktzugriffsspeicherblock
arbeiten.
-
Bei einer noch anderen Ausführungsform weist
die rekonfigurierbare programmierbare Logikeinrichtung ein Array
aus programmierbar miteinander verbundenen Logikzellen, das zur
Verwendung bei der Implementierung programmierter Logikfunktionen
geeignet ist, und einen Assoziativspeicherblock, der programmierbar
an das Array aus Logikzellen gekoppelt ist, auf. Der Assoziativspeicherblock ist
zum Ausgeben von mit angeforderten Datenwörtern korrespondierenden Adressenstellen
ausgebildet. Die rekonfigurierbare Logikeinrichtung kann auch eine
an den Assoziativspeicherblock gekoppelte Modussteuerschalt-Schaltung
aufweisen. Die Modussteuerschalt-Schaltung kann den Assoziativspeicherblock
freigeben, damit er als Direktzugriffsspeicherblock arbeitet.
-
Mit einer noch anderen Ausführungsform
ist eine programmierbare Logikeinrichtung offenbart, die eine als
ein Dual-Modus-Speicher
konfigurierte Eingebettet-Logik-Array-Block-Architektur verwendet. Die programmierbare
Logikeinrichtung weist ein Array aus programmierbar miteinander
verbundenen Logikblöcken
auf, das zur Verwendung bei der Implementierung programmierter Logikfunktionen
geeignet ist. Die programmierbare Logikeinrichtung weist auch einen
Dual-Modus-Speicherblock
auf, der programmierbar an das Array aus Logikblöcken gekoppelt ist. Bei dieser
Ausführungsform
ist der Du al-Modus-Speicherblock so ausgebildet, dass er in einem ersten
Modus als Assoziativspeicher und in einem zweiten Modus als Direktzugriffsspeicher
funktioniert.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die Erfindung kann zusammen mit weiteren Aufgaben
und Vorteilen am besten durch Bezugnahme auf die folgende Beschreibung
anhand der beigefügten
Zeichnungen verstanden werden, in denen:
-
1 eine
Darstellung einer Architektur einer programmierbaren Eingebettet-Array-Logikeinrichtung
ist.
-
2A eine
Darstellung einer programmierbaren Eingebettet-Array-Logikeinrichtung
ist, die einen Dual-Modus-Speicherblock
gemäß einer
Ausführungsform
der Erfindung aufweist.
-
2B ein
funktionelles Blockschaltbild einer programmierbaren Eingebettet-Array-Logikarchitektur
ist, die eine wie in 2A dargestellte
rekonfigurierbare Dual-Modus-Speichereinrichtung
aufweist.
-
3A ein
funktionelles Blockschaltbild eines Dual-Modus-Speicherblocks ist, der als ein
Assoziativspeicher oder als Direktzugriffsspeicher benutzerkonfiguriert
werden kann, wobei Eingabedaten von einer Daten-Ein/Datenpuffer-Kombination empfangen
und an eine Komparandeneinheit gemäß einer Ausführungsform
der Erfindung weitergegeben werden können.
-
3B ein
funktionelles Blockschaltbild eines mittels eines R/C-Modus-Steuereingangs
als ein Assoziativspeicher benutzerkonfigurierten Dual-Modus-Speicherblocks
ist, wobei Eingabedaten direkt von einer Komparandeneinheit gemäß einer
Ausführungsform
der Erfindung empfangen werden.
-
4A ein
Schaltbild einer Dual-Modus-Speicherzelle gemäß einer Ausführungsform
der Erfindung ist.
-
4B eine
Darstellung eines Abschnitts eines in einer Dual-Modus-Speichereinheit
gemäß einer
Ausführungsform
der Erfindung enthaltenen Arrays aus Dual-Modus-Speicherzellen.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Die Erfindung betrifft generell die
Bereitstellung programmierbarer Logikeinrichtungen mit einem Assoziativspeicher.
Bei einer bevorzugten Ausführungsform
ist der Assoziativspeicher so konfiguriert, dass er als ein Dual-Modus-Speicher arbeitet,
derart, dass der Speicher in einem ersten Modus als ein Assoziativspeicher
bzw. CAM arbeitet. In einem zweiten Modus arbeitet der Speicher
nur als ein RAM, beispielsweise als eine statische Direktzugriffsspeichereinrichtung
bzw. SRAM (= static random access memory).
-
Zunächst bezugnehmend auf die 2A wird eine programmierbare Eingebettet-Array-Logikeinrichtung 200 mit
wenigstens einem Dual-Modus-Speicherblock gemäß einer Ausführungsform der
Erfindung beschrieben. Die programmierbare Logikeinrichtung 200 weist
mehrerer Logik-Array-Blöcke
(LABs) 204a–204d und
mehrere Eingebettet-Array-Blöcke
in Form von Dual-Modus-Speicherblöcken (= DMMBs = dual mode memory
blocks) 202a–202b auf.
Die generelle Architektur der programmierbaren Eingebettet-Array-Logikeinrichtung ist
jenen, die von der von der Altera Corporation in San Jose, Kalifornien,
hergestellten FLEX10KTM-Logikeinrichtungen-Familie
Kenntnis haben können, generell
vertraut. Obgleich nur wenige Logik-Array-Blöcke und Dual-Modus-Speicherblöcke dargestellt
sind, ist einzusehen, dass jede beliebige Zahl von Blöcken vorgesehen
sein kann, um die Erfordernisse eines speziellen Systems zu erfüllen.
-
Jeder der Logik-Array-Blöcke 204a–204d und
Dual-Modus-Speicherblöcke 202a–202b kann durch
geeignet angeordnete programmierbare Koppler bzw. Verbinder programmierbar
an die mehreren vertikalen Leiter und/oder die mehreren horizontalen Leiter
gekoppelt sein. Beispielsweise kann der in einem Abschnitt der Zeile 250 enthaltene
LAB 204a durch einen programmierbaren Koppler bzw. Verbinder 280 an
eine erste Anzahl horizontaler Leiter 274 und durch einen
programmierbaren Koppler bzw. Verbinder 282 an eine zweite
Anzahl horizontaler Leiter 276 elektrisch gekoppelt sein.
Auf ähnliche
Weise kann der LAB 204a durch einen programmierbaren Koppler
bzw. Verbinder 296 an eine erste Anzahl vertikaler Leiter 290 und durch
einen programmierbaren Koppler bzw. Verbinder 294 an eine
zweite Anzahl vertikaler Leiter 292 elektrische gekoppelt
sein. Auf ähnliche
Weise kann jeder DMMB des Arrays aus DMMBs an jeweils wenigstens
einen der mehreren vertikalen und horizontalen Leiter elektrische
gekoppelt sein. Beispielsweise kann der DMMB 202a mittels
eines programmierbaren Kopplers bzw. Verbinders 295 an
die vertikalen Leiter 292, mittels eines programmierbaren
Kopplers bzw. Verbinders 297 an die vertikalen Leiter 291,
mittels eines programmierbaren Kopplers bzw. Verbinders 293 an
die horizontalen Leiter 274 und mittels eines programmierbaren Kopplers
bzw. Verbinders 299 an die horizontalen Leiter 276 elektrisch
gekoppelt sein. Auf diese Weise ist ein Array aus rekonfigurierbarer
Logik und einem Dual-Modus-Speicher gebildet.
-
2B ist
ein funktionelles Blockschaltbild einer programmierbaren Eingebettet-Array-Logikarchitektur,
die als eine Dual-Modus-Speichereinrichtung gemäß einer Ausführungsform
der Erfindung rekonfigurierbar ist. Bei der beschriebenen Ausführungsform
kann der Dual-Modus-Speicherblock 202a als ein Assoziativspeicher
(CAM) oder als ein Direktzugriffsspeicher (RAM) benutzerkonfiguriert
werden. Wie beschrieben weist ein Dual-Modus-Speicherblock 202a einen
Eingangssteuerblock 900 auf, der zum Koppeln mehrerer wahlweise
programmierter Eingänge 297 vom
vertikalen Leiter 291 an eine Spaltensteuereinheit 500 und
eine Zeilensteuereinheit 300 verwendet ist. An die Dual-Modus-Speichereinheit 400 ist
ein RAM/CAM-Modus-Steuereingang 225 (nachfolgend als R/C-Modus-Steuereingang bezeichnet)
direkt gekoppelt. Der R/C-Modussteuerungseingang 225 bewirkt,
dass die Dual-Modus-Speichereinheit 400 in
Abhängigkeit
vom Zustand des R/C-Modus-Steuereingangs 225 als
ein CAM oder als ein RAM arbeitet. Geht bei einer Ausführungsform
der R/C-Modus-Steuereingangs 225 auf HOCH (was beispielsweise durch
einen zugeordneten hohen Spannungspegel oder den Digitalwert „1" repräsentiert
ist), kann die Dual-Modus-Speichereinheit 400 als CAM arbeiten.
Geht alternativ dazu der R/C-Modus-Steuereingang 285 auf NIEDRIG (was
durch einen zugeordneten niedrigen Span nungspegel oder den Digitalwert „0" repräsentiert
ist), kann die Dual-Modus-Speichereinheit 400 als RAM arbeiten.
-
Bei der beschriebenen Ausführungsform können die
wahlweise programmierten Eingängen 297 mehrere
Dateneingänge 210 aufweisen,
die in gewählten
Speicherstellen in der Dual-Modus-Speichereinheit 400 zu
speichernde Eingangsdaten repräsentieren,
wenn diese so konfiguriert ist, dass sie als RAM arbeitet. Ist alternativ
dazu die Dual-Modus-Speichereinheit 400 so konfiguriert,
dass sie als CAM arbeitet, können
die mehreren Dateneingänge 210 angeforderte
Daten repräsentieren,
die mit in der Dual-Modus-Speichereinheit 400 vorab gespeicherten
Daten zu vergleichen sind. Die Eingänge 297 können auch
eine erste Anzahl Adresseneingänge 220 aufweisen,
die bei einer Ausführungsform
die niedrigstwertigen Bits (LSB) eines Multibit-Adressierungsschemas
repräsentieren.
Die Eingänge 297 können auch
eine zweite Anzahl Adresseneingänge 222 aufweisen,
die bei einer Ausführungsform
für die höchstwertigen
Bits (MSB) eines Multibit-Adressierungsschemas repräsentativ
sind.
-
Bei der beschriebenen Ausführungsform empfängt eine
Spaltensteuereinheit 500 mittels einer Eingangssteuerung 900 Eingangsdaten 210 und überträgt sie mittels
eines Spaltendatensignals 520 zur Dual-Modus-Speichereinheit 400.
Die Spaltensteuereinheit 500 empfängt auch die zweite Anzahl Adresseneingaben 222,
die für
die höchstwertigen Bits
(oder MSB) eines Multibit-Adressierungsschemas repräsentativ
sind. Dann decodiert die Spaltensteuereinheit 500 die empfangenen
Adresseneingaben 222, um einen Spaltenwähldatensatz zu bilden, der
danach zur Dual-Modus-Speichereinheit 400 übertragen
wird. Auf diese Weise kann die Spaltensteuereinheit 500 gewählte Speicherzellenspalten, die
in der Dual-Modus-Speichereinheit 400 enthalten sind, wahlweise
freigeben, um Eingangsdaten 210 zu empfangen. Auf ähnliche
Weise empfängt
eine Zeilensteuereinheit 300 mittels einer Eingangssteuereinheit 900 die
erste Anzahl Adresseneingänge 220, die
bei einer Ausführungsform
für die
niedrigstwertigen Adressenbits (oder LSB) repräsentativ sind, und gibt an
die Dual-Modus-Speichereinheit 400 ein Leseadressensignal 310 oder
ein Schreibadressensignal 320 aus.
-
Die Dual-Modus-Speichereinheit 400 kommuniziert
mittels eines Ausgabesignals 650 mit einer Ausgangssteuereinheit 600,
wenn sie so konfiguriert ist, dass sie als RAM arbeitet, und mit
einer globalen Anpassungs- bzw. Gleichheitausgabe 800,
wenn sie so konfiguriert ist, dass sie als CAM arbeitet. Die Ausgangssteuereinheit 600 kann
an (nicht gezeigte) Ausgabetreiber gekoppelt sein, die an wenigstens
einen der mehreren horizontalen Leiter oder an wenigstens einen
der mehreren vertikalen Leiter programmierbar gekoppelt sind. 3A ist ein funktionelles Blockschaltbild
eines Dual-Modus-Speicherblocks 202a, der gemäß einer
Ausführungsform
der Erfindung mittels eines R/C-Modus-Steuereingangs 225 als Assoziativspeicher
oder Direktzugriffsspeicher rekonfigurierbar ist. Bei dieser Ausführungsform bilden
ein Dateneingaberegister 910, ein Datenpuffer 912,
ein Komparand 914, ein Adressenregister 970, ein
Adressenregister 972, eine Adressensteuerung 960,
eine Lese/Schreib-Freigabeeinheit 965 und ein Adressendecodierer 950 die
Eingangssteuereinheit 900 der 2B.
-
Unter Bezugnahme auf die 3A kann die Dual-Modus-Speichereinheit 400 beim Betrieb
als CAM mittels des Dateneingangsregisters 910 Eingangsdaten 210 empfangen.
Der Datenpuffer 912 weist (nicht gezeigte) elektronische
Puffer auf, die ihm erlauben, Eingangsdaten 210 zu empfangen
und an die Eingänge
der Komparandeneinheit 914 zu übertragen, die Eingabedaten 210 als
angeforderte Daten in eine Warteschlange einordnet. Bei dieser Ausführungsform
werden die angeforderten Daten mit in den Speicherzellenschaltungen
der Dual-Modus-Speichereinheit 400 vorab
gespeicherten Daten verglichen, so dass die Adressenstellen aller
passenden bzw. gleichen gespeicherten Daten, die, soweit vorhanden,
in der Dual-Modus-Speichereinheit 400 enthalten
sind, bestimmt werden. Bei einer anderen Ausführungsform können die
Eingangsdaten 210 vorteilhafter Weise direkt von den Eingängen einer wie
in 3B gezeigten Komparandeneinheit 914 empfangen
werden, wobei vorteilhafterweise alle mit Daten im Register 910 und
Datenpuffer 912 verbundenen Verzögerungszeiten eliminiert sind.
-
Nach 3A wiederum
kann bei Konfiguration der Dual-Modus-Speichereinheit 400 zum
Arbeiten als RAM der Komperand 914 überbrückt werden, und die Eingangsdaten 210 werden
mittels des Datenpuffers 912 direkt in die Dateneingänge einer Spaltensteuereinheit 500 eingegeben.
-
Bei der beschriebenen Ausführungsform wird
mittels einer Adresseneingabeeinheit 970 und einer Adresseneingabeeinheit 972 Benutzeradresseninformation
in die Dual-Modus-Speichereinheit 400 eingegeben. Die Benutzeradresseninformation kann
in eine erste Gruppe Adresseneingangsdaten 220, die bei
einer Ausführungsform
die niedrigstwertigen Bits (oder LSB) einer Adresseninformation
darstellt, und eine zweite Gruppe Adresseneingangsdaten 222,
welche die höchstwertigen
Bits (oder MSBs) einer Adresseninformation darstellt, syntaktisch
analysiert bzw. lexikalisch untergliedert werden. Bei der beschriebenen
Ausführungsform
empfängt
die Adresseneingabeeinheit 970 die erste Gruppe Adresseneingangsdaten 220 und überträgt sie zur Adressensteuerung 960.
Die Adressensteuerung 960 erzeugt ihrerseits eine Ausgabe,
die zum Adressencodierer 950 weitergeleitet wird. Beispielsweise kann
die erste Gruppe Adresseneingangsdaten 220 aus sechs Datenbits,
die für
die fünf
niedrigstwertigen Bits eines Multibit-Adressierungsschemas repräsentativ
sind, und einem einzelnen Steuerbit bestehen. Bei diesem Szenario
empfängt
die Adresseneingabeeinheit 970 die fünf Adressenbits der ersten
Gruppe Adresseneingabedaten 220 und das einzelne Steuersbit
und überträgt sie zur
Adressensteuerung 960. Die Adressensteuerung 960 erzeugt
ihrerseits sechs Ausgaben, von denen fünf wählbare Adressestellen, die
vom Adressendecodierer 950 empfangen werden können, darstellen
und die sechste ein Lese/Schreib-Steuersignal ist, das direkt zur
Zeilensteuereinheit 300 weitergeleitet wird. Bei dieser
Ausführungsform
weist der Adressendecodierer 950 (nicht gezeigte) Decodierer
auf, welche die empfangenen fünf
Adressenbits der ersten Gruppe Adresseneingangsdaten 220 in
32 Bits einer Lese/Schreib-Zeilenadresseninformation um wandeln. Diese 32 Adresseninformationsbits
werden ihrerseits zur Zeilensteuerungseinheit 300 weitergeleitet.
-
Die zweite Gruppe Adresseneingangsdaten 222 kann
mittels der Adresseneingabeeinheit 972 und der Spaltensteuereinheit 500 in
die Dual-Modus-Speichereinheit 400 eingegeben werden. Beim Betrieb
empfängt
die Adresseneingabeeinheit 972 die zweite Gruppe Adresseneingangsdaten 222 und leitet
sie zu den Adresseneingängen
der Spaltensteuerungseinheit 500 weiter. Beispielsweise
kann die von der Adresseneingabeeinheit 972 empfangenen
Adresseninformation fünf
Adressenbits, die den höchstwertigen
Bits eines Multibit-Adressierungsschemas zugeordnet sind, und ein
Schreibfreigabebit aufweisen. Die fünf höchstwertigen Adressenbits können zur
Spaltensteuereinheit 500 übertragen werden. Die Spaltensteuereinheit 500 weist
einen (nicht gezeigten) Spaltenadressendecodierer auf, der die fünf höchstwertigen
Bits decodiert und 32 Spaltenadressenbits erzeugt. Das von der Adresseneingabeeinheit 972 ausgegebenen
Schreibfreigabebit bildet eine Eingabe in die Lese/Schreib-Steuereinheit 965,
welche das in die Zeilensteuereinheit 300 eingegebene Lesefreigabe-RE966-
und Schreibfreigabe-WE967-Signal
erzeugt.
-
Wie oben beschrieben empfängt die
Zeilensteuereinheit 300 die vom Adressendecodierer 950 erzeugte
Adresseninformation. Bei der beschriebenen Ausführungsform empfängt die
Zeilensteuereinheit 300 die vom Adressendecodierer 950 erzeugten Adressenbits.
Die Zeilensteuereinheit 300 weist (nicht gezeigte) Zwei-zu-Eins-Demultiplexer
auf, welche zwei Gruppen Adressenbits erzeugen, von denen eine mit
einer Leseadresse korrespondiert und die andere mit einer Schreibadresse
korrespondiert. Gibt beispielsweise der Adressendecodierer 950 an die
Zeilensteuereinheit 300 32 Lese/Schreib-Adressenbits aus,
erzeugen die in der Zeilensteuereinheit 300 enthaltenen
Zwei-zu-Eins-Demultiplexer ein Leseadressensignal 300 aus
32 Bits und ein Schreibadressensignal 320 aus 32 Bits.
Bei dieser Ausführungsform
empfängt
die Zeilensteuereinheit 300 auch komplementäre Signale
RE966 und WE967, die bestimmen, ob die Adresseninformation am Ausgang
der Zeilensteuereinheit 300 zum Lesen aus der oder Schreiben
in die Dual-Modus-Speichereinheit 400 zu benutzen ist.
-
Bei der beschriebenen Ausführungsform weist
eine Ausgangseinheit 600 mehrere Ausgangspufferregister 620 und
einen Prioritätscodierer 610 auf.
Die mehreren Ausgangspufferregister 620 können von
der Dual-Modus-Speichereinheit 400 ausgegebene Daten in
eine Warteschlange einordnen und sie als Ausgangsdaten 622 zu
(nicht gezeigte) Ausgangstreibern übertragen. Bei einer anderen
Ausführungsform
können
die Ausgangspufferregister 620 Ausgangsdaten zu einem in
der programmierbaren Logikeinrichtung enthaltenen anderen DMMB oder EAB übertragen,
um durch Kaskadierung zusätzlicher
Speicherblöcke
größere RAM-Blöcke zu bilden. Der
Prioritätscodierer 620 kann
die globalen Gleichheitsdaten 800 empfangen, welche die
Gleichheitsadressen anzeigen, wenn die Dual-Modus-Speichereinheit 400 als
CAM konfiguriert ist. Der Prioritätscodierer 620 kann
ein SYSTEMGLEICHHEIT-Signal 612 übertragen, welches einen GLEICHHEIT-
oder einen NICHTGLEICH-Zustand anzeigt. Der Prioritätscodierer 610 kann
auch mehrere Gleichheitsadressen speichern und ein GLEICHHEITKENNZEICHEN-Signal 614 erzeugen,
das die Gesamtzahl von in der Dual-Modus-Speichereinheit 400 enthaltenen Gleichheitsadressen
anzeigt.
-
Bei einer Ausführungsform weist die Dual-Modus-Speichereinheit 400 ein
Array aus Dual-Modus-Speicherzellen 410 auf, von denen
eine die in 4A gezeigte Dual-Modus-Speicherzelle 420 sein
kann. Die Dual-Modus-Speicherzelle 420 weist eine Datenspeicherschaltung 460,
eine Vergleichsschaltung 430 und eine Isolatorschaltung 450 auf.
-
Bei der beschriebenen Ausführungsform weist
die Speicher-Speicherschaltung 460 einen p-Kanal-Transistor 464 und
einen n-Kanal-Transistor 466, einen p-Kanal-Transistor 462 und
einen n-Kanal-Transistor 468 auf, die so konfiguriert sind,
dass sie eine statische Direktzugriffsspeicherzelle bzw. SRAM-Zelle
bilden. Die SRAM-Zelle ist wie beschrieben als eine dem Fachmann
bekannte kreuzgekoppelte Inverterrückkopplungsschaltung konfiguriert, die
mit einer digitalen Eins und einer digitalen Null korrespondierende
digitale Daten speichern kann. Bei einer anderen Ausführungsform
kann die Speicher-Speichereinheit 460 als eine Dualport-Speicherzelle,
eine Nurlese-Speicherzelle bzw. ROM-Zelle oder irgendeine andere
dem Fachmann bekannte Schaltung sein, die Daten speichern kann.
-
Bei der beschriebenen Ausführungsform
ist ein E/A-Knoten 965 mit den Gates der Transistoren 464 und 466 sowie
mit der Drain des Transistors 462 und der Source des Transistors 468 elektrisch
verbunden. Auf ähnliche
Weise ist ein zweiter E/A-Knoten 463 mit
den Gates der Transistoren 462 und 468 sowie mit
der Drain des Transistors 464 und der Source des Transistors 466 elektrisch
verbunden. So wie sie konfiguriert sind, sind die Sources der Transistoren 464 und 462 elektrisch
an Vcc gekoppelt, während
die Drains der Transistoren 466 und 468 an Masse
bzw. Erde gekoppelt sind.
-
Die Speicher-Speicherschaltung 460 kann mittels
des n-Kanal-Durchgangsgate-Transistors 472 elektrisch
an eine erste Datenleitung 424 und eine Wortleitung 523 gekoppelt
sein. So wie er konfiguriert ist, weist der Transistor 472 eine
elektrisch mit dem ersten E/A-Knoten 465 verbundene Source,
eine elektrisch mit der Datenleitung 424 verbundene Drain und
ein elektrisch mit der Wortleitung 523 verbundenes Gate
auf. Außerdem
kann die Speicher-Speicherschaltung 460 mittels eines n-Kanal-Durchgangsgate-Transistors 474 elektrisch
an eine zweite Datenleitung 422 und eine Wortleitung 523 gekoppelt sein.
Wie er konfiguriert ist, weist der Transistor 474 eine
elektrisch mit dem zweiten E/A-Knoten 463 verbundene Source,
eine elektrisch mit der Datenleitung 422 verbundene Drain
und ein elektrisch mit der Wortleitung 523 verbundenes
Gate auf. Geht die Wortleitung 523 auf HOCH, sind die Transistoren 472 und 474 im
Wesentlichen leitend, so dass die E/A-Knoten 463 und 465 elektrisch
an die Datenleitungen 422 bzw. 424 gekoppelt sind.
Auf diese Weise kann der erste E/A-Knoten 465 der Speicher-Speicherschaltung 460 mittels
der Datenleitung 424 zu speichernde Daten empfangen (für den Fachmann als
SCHREIB-Operation
bezeichnet) und gespeicherte Daten übertragen (dem Fachmann als
LESE-Operation bekannt). Auf ähnliche
Weise kann der zweite E/A-Knoten 463 mittels der Datenleitung 422 zu
speichernde Daten empfangen und gespeicherte Daten übertragen.
Beim Betrieb stellen der erste und zweite E/A-Knoten 465 und 463 komplementäre Datenzustände dar.
-
Die Vergleichsschaltung 430 weist
einen n-Kanal-Transistors 432 auf,
dessen Drain elektrisch mit der Source eines n-Kanal-Transistors 436 verbunden
ist. Die Vergleichsschaltung 430 weist auch einen n-Kanal-Transistor 434 auf,
dessen Drain elektrisch an die Source eines n-Kanal-Transistors 438 gekoppelt
ist. Die Sources der n-Kanal-Transistoren 432 und 434 sind
elektrisch mit einer Anpassungs- bzw. Gleichheitsleitung 440 verbunden,
während
die Drains der Transistoren 436 und 438 an Masse
bzw. Erde gekoppelt sind. Die Gleichheitsleitung 440 ist elektrisch
an die Sources der Transistoren 432 und 434 gekoppelt
und bildet einen Abschnitt eines Eingangs zu einer globalen Gleichheitsleitung 800.
-
Die Isolationsschaltung 450 wirkt
so, dass sie die Speicher-Speicherschaltung 460 und die
Vergleichsschaltung 430 mittels der n-Kanal-Transistoren 454 und 452 koppelt.
So wie er konfiguriert ist, weist der Transistor 454 eine
elektrisch mit dem Gate des Transistors 436 der Vergleichsschaltung 430 verbundene
Source und eine mit dem E/A-Knoten 465 der Speicher-Speicherschaltung 460 verbundene Drain
auf. Ruf ähnliche
Weise weist der Transistor 452 eine elektrisch mit dem
Gate des Transistors 438 der Vergleichsschaltung 430 verbundene
Source und eine elektrisch mit dem E/A-Knoten 463 der Speicher-Speicherschaltung 460 verbundene
Drain auf.
-
Der R/C-Modus-Steuereingang 225 ist
bei einem Knoten 455 derart elektrisch an die Gates der beiden
Transistoren 454 und 452 gekoppelt, dass ein Leiten
beider Transistoren bewirkt ist, wenn der R/C-Modus-Steuereingang 225 auf
HOCH ist. Auf diese Weise ist die Daten-Speicherschaltung 460 elektrisch
an die Vergleichsschaltung 430 gekoppelt. Ist alternativ
dazu der R/C-Modus-Steuereingang 225 auf NIEDRIG, sind
die Transistoren 452 und 454 im Wesentlichen nicht
leitend, wobei sie die Speicher-Speicherschaltung 460 und
die Vergleichsschaltung 430 effektiv isolieren. Auf diese
Weise kann die Dual-Modus-Speichereinheit 400 als CAM arbeiten,
wenn die Vergleichsschaltung 430 und die Speicher-Speicherschaltung 460 mittels
der Isolatorschaltung 450 elektrisch gekoppelt sind. Alternativ dazu
kann bei dieser Ausführungsform
die Dual-Modus-Speicherschaltung 420 ausschließlich als
RAM arbeiten, wenn die Vergleichsschaltung 430 und die Speicher-Speicherschaltung 460 mittels
der Isolatorschaltung 450 elektrisch isoliert sind.
-
Wünscht
beim Betrieb ein Benutzer, die Dual-Modus-Speichereinheit 400 zur ausschließlichen Benutzung
als SRAM zu konfigurieren, wird der R/C-Modus-Steuereingang 225
auf NIEDRIG gebracht, so dass beide Transistoren 454 und 452 der Isolationsschaltung 450 auf
AUS geschaltet sind. Auf diese Weise sind die Vergleichsschaltung 430 und die
Gleichheitleitung 440 effektiv von der Speicher-Speicherschaltung 460 elektrisch
getrennt. Auf diese Weise wird beim RAM-Modus al-lein die als SRAM konfigurierte Speicher-Speicherschaltung 460 die
einzige interaktive Schaltung der Dual-Modus-Speicherzelle 420, so dass
die Dual-Modus-Speichereinheit 400 ausschließlich als
SRAM wirkt.
-
Wünscht
alternativ dazu ein Benutzer, den Dual-Modus-Speicher 400 zur Verwendung
als CAM zu konfigurieren, wird der R/C-Modus-Steuereingang 225 auf
HOCH gebracht, so dass beide Transistoren 454 und 452 der
Isolationsschaltung 450 auf EIN geschaltet werden, wodurch
die Vergleichsschaltung 430 elektrisch an die E/A-Knoten 465 und 463 der Speicher-Speicherschaltung 460 gekoppelt
wird. Auf diese Weise wirken im CAM-Modus sowohl die Vergleichsschaltungen 430 als
auch die Gleichheitleitung 440 und die Speicher-Speicherschaltung 460 zusammen,
um als Assoziativspeicher zu funktionieren.
-
Ist sie einmal konfiguriert, um als
CAM zu arbeiten, können
in der Speicher-Speicherschaltung 460 gespeicherte Daten
dazu benutzt werden, mittels des Komparanden 914 mit jeder
Dateneingabe verglichen zu werden. Beispielsweise bildet die Gleichheitleitung 440 einen
Eingang zur globalen Gleichheitleitung 800, die elektrisch
mit einem Datenregister ähnlich
dem vorstehend beschrieben Prioritätscodierer 610 ver- bunden sein kann.
Bei dieser Ausführungsform
kann die Gleichheitleitung 440 vor der tatsächlichen
Vergleichsoperation auf einen HOCH-Zustand vorgeladen sein. Ein
im Komparator 914 in eine Warteschlange eingeordnetes einzelnes
BIT eines Datenwortes DATA vorbestimmter Länge kann durch die wie vorstehend
beschriebene Aktion der Spaltensteuereinheit 500 und Zeilensteuereinheit 300 die Datenleitungen 424 und 422 auf
BIT bzw. sein Komplement /BIT treiben. Auf ähnliche Weise kann ein Datenwort
COMP durch eine vorhergehende SCHREIB-Operation in einem Abschnitt
des Speicherzellenarrays 410 vorab gespeichert werden.
Bei dieser Ausführungsform
kann das Datenwort COMP ein in der Speicher-Speicherschaltung 460 gespeichertes
einzelnes Bit COMPBIT aufweisen. Ist beispielsweise bei einer vorhergehenden SCHREIB-Operation
COMPBIT durch Treiben der Datenleitung 424 auf COMPBIT
und der Datenleitung 422 auf /COMPBIT in die Speicher-Speicherschaltung 460 geschrieben
worden, kann am E/A-Knoten 465 ein mit /COMPBIT korrespondierender
Spannungspegel präsent
sein. Ähnlich
kann am E/A-Knoten 463 ein
mit COMPBIT korrespondierender Spannungspegel präsent sein.
-
Während
einer VERGLEICH-Operation wird die Wortleitung 523 durch
die Aktion der Zeilensteuereinheit 300 auf NIEDRIG getrieben,
was die Transistoren 472 und 474 auf AUS schaltet
und die Ausgangsknoten 463 und 465 von den Datenleitungen 422 bzw. 424 entkoppelt.
Da jedoch der R/C-Modus-Schalter auf HOCH ist, werden die E/A-Knoten 463 und 465 mittels
der Gates der Transistoren 436 und 438 elektrisch
an die Vergleichsschaltung 430 gekoppelt. Auf diese Weise
führt der
E/A-Knoten 463 dem Gate des Transistors 438 einen
mit COMPBIT korrespondierenden ersten Spannungspegel zu, und der
E/A-Knoten 465 führt
dem Gate des Transistors 436 einen mit /COMPBIT korrespondierenden
zweiten Spannungspegel zu.
-
Eine Bitanpassung bzw. Bitgleichheit
tritt auf, wenn das in der Speicher-Speicherschaltung 460 gespeicherte
COMPBIT und das im Komparanden 914 gespeicherte korrespondierende
BIT im Wesentlichen ähnliche
Spannungspegel aufweisen, die mit dem gleichen digitalen Wert korrespondieren.
Auf diese Weise hält
beim Auftreten einer Anpassung bzw. Gleichheit die Vergleichsschaltung 430 die Gleichheitleitung 440 auf
ihrem vorgeladenen HOCH-Zustand. Sind jedoch COMPBIT und BIT nicht
gleich, das heißt
von im Wesentlichen verschiedenen Spannungspegeln, so dass sie als
verschiedenen digitale Werte zu betrachten sind, agiert die Vergleichsschaltung 430 so,
dass sie die Gleichheitleitung 440 auf im Wesentlichen
Masse bzw. Erde oder null Volt bringt, was von einem an die globale Gleichheitleitung 800 gekoppelten
(nicht gezeigten) Schaltkreis als ein NICHTGLEICH-Zustand verstanden
wird. Alternativ dazu müssen
für das
Auftreten eines GLEICHHEIT-Zustandes alle Bits von DATA und COMP
gleich sein, was dadurch angezeigt wird, dass alle Gleichheitleitungen
auf HOCH bleiben.
-
Korrespondiert beispielsweise COMPBIT
mit digital „1", wird der E/A-Knoten
465 auf NIEDRIG, d. h. einen mit digital „0" oder im Wesentlichen 0 Volt korrespondierenden
Spannungspegel getrieben, was den Transistor 436 auf AUS
schaltet. Ähnlich
wird der E/A-Knoten 463 auf HOCH, d. h. einen mit digital „1" oder im Wesentlichen
Vcc korrespondierenden Spannungspegel getrieben, was den Transistor 438 auf
EIN schaltet. Korrespondiert auch BIT mit digital „1" (zeigt GLEICHHEIT
an), wird die Datenleitung 424 auf HOCH getrieben, was
den Transistor 432 auf EIN schaltet. Ähnlich wird die Datenleitung 422 auf NIEDRIG
getrieben, was den Transistor 434 auf AUS schaltet. Auf
diese Weise bleibt die Gleichheitleitung 440 auf HOCH.
Sind alternativ dazu COMPBIT und BIT nicht gleich, bringt entweder
das Paar Transistoren 432, 436 oder das Paar Transistoren 434, 438 die Gleichheitleitung 440 auf
NIEDRIG, was einen NICHTGLEICH-Zustand anzeigt.
-
4B ist
eine Darstellung eines Abschnitts eines Arrays aus Dual-Modus-Speicherzellen 410, das
die in der Dual-Modus-Speichereinheit 400 gemäss einer
Ausführungsform
der Erfindung enthaltenen Dual-Modus-Speicherzellen 420a–420d aufweist.
Bei dieser Ausführungsform
führt die
Spaltensteuereinheit 500 empfangene Daten mittels eines Spaltendatensignals 520 sowie
Adressenauswahldaten mittels eines Spaltenadressensignals 530 zu.
Als RAM konfiguriert gibt das Spalten adressensignal 530 wahlweise
verschiedene der Datenleitungen 421–424 frei, um den Empfang
von während
einer SCHREIB-Operation
zu speichernden Daten oder die Übertragung
von Daten zur Ausgabe während
einer LESE-Operation zu erleichtern. Die Zeilensteuereinheit 300 gibt
ein Leseadressensignal 310 oder Schreibadressensignal 320 aus,
das wahlweise verschiedene Wortleitungen wie beispielsweise 523
und 521 freigibt oder sperrt. Die Datenleitungen 421–424 sind
an mehrere Lese- bzw. Abtastverstärker 470–472 gekoppelt,
welche die von den verschiedenen E/A-Knoten von im Array 410 enthaltenen
Dual-Modus-Speicherzellen
ausgegebenen Spannungspegel in eine Form auflösen, die mit zu den Ausgangsregistern 620 übertragenden
Daten konsistent sind. Wenn durch die Aktion des R/C-Modus-Eingangs 225 als
CAM konfiguriert, sind je jede eine von mehreren Gleichheitleitungen
wie beispielsweise 440 und 442 zur Bildung der
Ausgangsgleichheitleitung 800 gekoppelt, welche die globalen
Gleichheitsdaten zum Prioritätscodierer 610 treibt.
-
Wenn die vorstehende Erfindung zum
Zweck des klaren Verständnisses
in gewissen Einzelheiten beschrieben worden ist, ist dies so zu
verstehen, dass gewisse Änderungen
und Modifikationen im Rahmen bzw. Schutzbereich der beigefügten Ansprüche in die
Praxis umgesetzt werden können.
Es sei darauf hingewiesen, dass es viele alternative Wege zur Implementierung
der vorliegenden Erfindung gibt. Beispielsweise kann bei einer Ausführungsform
der Direktzugriffsspeicher-Modus als statischer Direktzugriffsspeicher
(SRAM), Dualport-Speicher oder Nurlesespeicher (ROM) betreibbar
sein. Der Fachmann sieht ein, dass die tatsächliche Struktur der Speicherzelle
weitestgehend variiert werden kann.
-
Die Erfindung ist im Kontext einer
programmierbaren Logikeinrichtung beschrieben worden, die eine Eingebettet
Array-Block-Architektur aufweist. Es ist jedoch einzusehen, dass
die Erfindung auch in anderen programmierbaren Logikarchitekturen
wie beispielsweise Architekturen vom Typ des feldprogrammierbaren
Gate-Arrays implementiert werden kann. Außerdem wurde bei der beschriebenen
Ausführungsform
jeder der Eingebettet-Array-Blöcke
so beschrieben, dass er ein Dual-Modus-Speicherblock ist. Dies ist
jedoch wiederum nicht erforderlich. Vielmehr können einige der Eingebettet-Array-Blöcke als Dual-Modus-Speicher
konfiguriert sein, während
andere als Einzel-Modus-Speicher oder irgendeine andere geeignete
Struktur konfiguriert sind. Deshalb sind die vorliegenden Beispiele
als illustrativ und nicht einschränkend zu betrachten, und die
Erfindung ist nicht auf die hier gegebenen Details beschränkt, sondern
kann im Rahmen bzw. Schutzbereich der beigefügten Ansprüche modifiziert werden.