DE60129269T2 - Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung - Google Patents

Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung Download PDF

Info

Publication number
DE60129269T2
DE60129269T2 DE60129269T DE60129269T DE60129269T2 DE 60129269 T2 DE60129269 T2 DE 60129269T2 DE 60129269 T DE60129269 T DE 60129269T DE 60129269 T DE60129269 T DE 60129269T DE 60129269 T2 DE60129269 T2 DE 60129269T2
Authority
DE
Germany
Prior art keywords
circuit
port
read
memory
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60129269T
Other languages
English (en)
Other versions
DE60129269D1 (de
Inventor
Tony San Jose Ngai
Nitin San Jose Prasad
Thungoc San Jose Tran
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Altera Corp
Original Assignee
Altera Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Altera Corp filed Critical Altera Corp
Publication of DE60129269D1 publication Critical patent/DE60129269D1/de
Application granted granted Critical
Publication of DE60129269T2 publication Critical patent/DE60129269T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1075Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/16Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups

Description

  • Hintergrund der Erfindung
  • Diese Erfindung betrifft programmierbare integrierte Logik-Schaltungsvorrichtungen ("PLDs") und insbesondere Speicherschaltungen zur Verwendung mit PLDs, die ein Anwender der PLD während des normalen Logik-Betriebs der PLD für verschiedene Zwecke verwenden kann.
  • Programmierbare Logik-Vorrichtungen mit relativ großen Speicherblöcken zusätzlich zu der üblichen programmierbaren Logik und programmierbarer Verbindung sind wohl bekannt, wie es beispielsweise in der US 5,550,782 von Cliff et al., US 5,689,195 von Cliff et al., US 6,020,759 von Heile, der US-Patentanmeldung Nr. 09/292,448 von Heile, eingereicht am 15. April 1999, und der US-Patentanmeldung Nr. 09/389,995 von Heile, eingereicht am 2. September 1999, dargelegt ist. Die oben genannten Speicherblöcke können über die programmierbare Verbindung mit der programmierbaren Logik und/oder den Eingabe/Ausgabe-("I/O")-Pins der Vorrichtung verbunden werden. Derartige Speicherblöcke können für Nur-Lese-Speicher ("ROM"), Direktzugriffspeicher ("RAM"), Assoziativspeicher ("CAM"), Produkt-Term-(p-Term)-Logik, usw. verwendet werden. Es ist bekannt, daß derartige Speicherblöcke eine programmierbar variable Breite und Tiefe haben können. Ein 2K-bit-Speicher kann beispielsweise als 2K Ein-Bit-Worte ("2K×1"), 1K Zwei-Bit-Worte ("1K×2"), 512 Vier-Bit-Worte ("512×4"), 256 Acht-Bit-Worte ("256×8"), 128 16-bit-Worte ("128×16"), usw. konfiguriert sein. Es ist auch bekannt, daß derartige Speicherblöcke mit separaten Lese- und Schreib-Ports ausgestattet sein können, so daß Lesen und Schreiben unabhängig gleichzeitig erfolgen können (sogenannter Dual-Port-Betrieb).
  • Die bekannten programmierbaren Logikvorrichtungs-Speicheranordnungen des oben beschriebenen Typs lassen sich mitunter nur schwer vollständig nutzen. Wenn ein erster First-In/First-Out-("FIFO")-Speicher mit einer Kapazität von acht Worten von jeweils acht Bit (d. h. ein 8×8 FIFO) benötigt wird, werden nur 64 Bit eines 2K-Bit-Speicherblocks genutzt, und die restlichen 1984 Bits in diesem Block werden vergeudet.
  • Die US 5,559,450 offenbart die Implementierung von Multi-Port-RAMs in einem FPGA, wobei das RAM ein Dual-Port-RAM mit zwei Schreib-Ports und zwei Lese-Ports ist.
  • OFFENBARUNG DER ERFINDUNG
  • Erfindungsgemäß wird eine programmierbare Schaltung bereitgestellt, welche mehrere Logikkomponenten umfaßt, wobei jede Logikkomponente wenigstens eine programmierbare Schaltung umfaßt; und einen Multi-Port-Speicher umfaßt, welcher mit den mehreren Logikkomponenten gekoppelt ist, wobei der Speicher selektiv konfigurierbar ist, um wenigstens einen Schreib-Port und wenigstens einen Lese-Port zu umfassen, wobei die Gesamtzahl an Lese- und Schreib-Ports größer als zwei ist, wobei der Speicher in der Lage ist, mehrere Schreib- und Lese-Operationen gleichzeitig durchzuführen, und dadurch gekennzeichnet ist, daß wenigstens einer der Ports mit einer programmierbaren Inversions-Schaltung versehen ist, welche selektiv Signale an den Speicher in einer wahren und komplementären Form liefert.
  • Der Speicher der Vorrichtung ist in einer Ausführungsform so konfigurierbar, daß er mindestens zwei Lese-Ports und einen Schreib-Port umfaßt.
  • Der Speicher der Vorrichtung ist in einer anderen Ausführungsform so konfigurierbar, daß er mindestens zwei Lese-Ports und zwei Schreib-Ports umfaßt.
  • In jeder Ausführungsform kann auf jede Speicherzelle über jeden Lese-Port und jeden Schreib-Port zugegriffen werden. Hierdurch kann der Speicher in jeglichen von mehreren unterschiedlichen Modi betrieben werden, einschließlich (1) Operation als ein großer Speicher oder (2) Operation als zwei effektiv separate Speicher mit einem beliebigen aus einem weiten Bereich von relativen Größen.
  • Weitere Merkmale der Erfindung, ihre Natur und verschiedene Vorteile ergeben sich aus den angefügten Zeichnungen und der folgenden detaillierten Beschreibung.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein vereinfachtes schematisches Blockdiagramm einer beispielhaften programmierbaren Logikvorrichtung, die erfindungsgemäß ausgelegt sein kann.
  • 2 ist ein vereinfachtes schematisches Blockdiagramm, das detaillierter eine beispielhafte Ausführungsform eines repräsentativen Abschnitts der erfindungsgemäßen Vorrichtung von 1 zeigt.
  • 3 ist ein vereinfachtes schematisches Blockdiagramm, das noch detaillierter eine beispielhafte Ausführungsform eines repräsentativen Abschnitts der erfindungsgemäßen Schaltung von 2 zeigt.
  • 4 ist eine vereinfachtere Darstellung der in 2 gezeigten Schaltung.
  • 5 ist 4 ähnlich, stellt jedoch eine spezielle Anwendung der erfindungsgemäßen Schaltung von 4 dar.
  • 6 ist ein vereinfachtes schematisches Blockdiagramm einer beispielhaften Ausführungsform einer repräsentativen Schaltung, die erfindungsgemäß in den erfindungsgemäßen Schaltungen der anderen Figuren verwendet werden kann.
  • 7 ist ein vereinfachtes Blockdiagramm eines beispielhaften Systems, das eine erfindungsgemäße programmierbare Logikvorrichtung verwendet.
  • DETAILLIERTE BESCHREIBUNG
  • Wie in 1 gezeigt ist, umfaßt eine beispielhafte programmierbare Logikvorrichtung 10, die erfindungsgemäß ausgelegt sein kann, eine zweidimensionale Matrix sich schneidender Reihen und Spalten von Bereichen 30 einer programmierbaren Logik. Jede Reihe umfaßt auch einen relativ großen Bereich 40 von Speicherzellen. Jeder Speicherbereich 40 kann beispielsweise 4K (4096) Bit Speicher umfassen. Die Speicherbereiche 40 sind auf Vorrichtung 10 in einer Spalte angeordnet. Die Bereiche 20 der Eingabe/Ausgabe-Schaltung und Pads sind neben jedem Ende jeder Reihe und Spalte der Bereiche 30/40 angeordnet. Jeder Reihe der Bereiche 20/30/40 sind die horizontalen Verbindungsleiter 50 zugeordnet. Jeder Reihe der Bereiche 20/30 oder 20/40 sind vertikale Verbindungsleiter 60 zugeordnet. Jedem Bereich 30/40 sind Bereichszuführungsleiter 70 zugeordnet, um Signale von den horizontalen Leitern 50 zu dem zugeordneten Bereich 30 oder 40 zu bringen. Jedem Bereich 30 oder 40 zugeordnete Eingabeleiter 80 überbringen Signale von den dazugeordneten Leitern 70 zu jenem Bereich 30 oder 40. Ausgabeleiter 90a senden Signalausgaben von jedem Bereich 30 oder 40 als Ausgabe zu benachbarten Leitern 50. Ausgabeleiter 90b senden in ähnlicher Weise Signalausgaben von jedem Bereich 30 oder 40 als Ausgabe zu benachbarten Leitern 60. Programmierbare Logikverbinder ("PLCs") 52 werden bereitgestellt, um sich schneidende Leiter 50 und 70 selektiv miteinander zu verbinden. Die PLCs 62 verbinden in ähnlicher Weise selektiv die sich schneidenden Leiter 50 und 60, und die PLCs 72 verbinden in ähnlicher Weise selektiv die sich schneidenden Leiter 70 und 80.
  • Jeder der Bereiche 30 ist programmierbar, um eine oder mehrere relativ einfache Logikaufgaben mit Signalen durchzuführen, die durch die zugeordneten Leiter 80 an jenen Bereich angelegt werden. Die resultierenden Ausgabesignale werden über Leiter 90 ausgegeben. Durch Verketten mehrerer Logikbereiche 30 mittels der Verbindungsressourcen (z. B. 50, 52, 60, 62, 70, 72, 80, 90) der Vorrichtung können sehr komplexe Logikaufgaben durchgeführt werden. Signale können von Vorrichtung 10 über I/O-Bereiche 20 als Eingabe empfangen oder als Ausgabe gesendet werden.
  • Die Speicherbereiche 40 können in einem oder mehreren von etlichen verschiedenen Modi operieren. Ein Speicherbereich 40 kann beispielsweise am Anfang während der Anfangskonfiguration von Vorrichtung 10 programmiert werden und danach als ROM verwendet werden. In einem derartigen Fall werden die verschiedenen Positionen des Speicherbereichs von Adress-Signalen auf den zugeordneten Drähten 80 adressiert, und die Inhalte der adressierten Positionen werden als Ausgabe über Drähte 90 zur anderweitigen Verwendung auf Vorrichtung 10 oder zur Ausgabe aus Vorrichtung 10 über eine oder mehrere I/O-Bereiche 20 ausgegeben. Als weiteres Beispiel kann ein Speicherbereich 40 als RAM operieren und Daten speichern, die mittels zugeordneter Drähte 80 an Speicherpositionen angelegt werden, die durch "Write Address"-Signale ("Schreibe Adresse"-Signale) an anderen zugeordneten Drähten bestimmt werden, und danach Daten durch "Read address"-Signale ("Lies Adresse"-Signale) an anderen zugeordneten Drähten 80 aus Positionen (über Drähte 90) auslesen. In RAM- oder ROM-Modi kann ein Speicherbereich 40 so konfiguriert werden, daß er als einfacher Speicher, als Assoziativspeicher ("CAM"), als Produkt-Term-("p-Term")-Logik, usw. operiert.
  • Es sei darauf hingewiesen, daß 1 nur eine mögliche "Architektur" programmierbarer Logikvorrichtungen zeigt, in denen die vorliegende Erfindung verwendet werden kann, und daß die Erfindung gleichermaßen in vielen anderen Architekturen programmierbarer Logikvorrich tungen verwendbar ist.
  • Ein erfindungsgemäßer repräsentativer Speicherbereich 40 ist detaillierter in 2 gezeigt. Der Speicherbereich 40 umfaßt eine Matrix 100 aus Speicherzellen. (Eine beispielhafte Ausführungsform einer repräsentativen Speicherzelle 200 ist in 3 gezeigt). Die Matrix 100 kann beispielsweise 4K Bit Speicher und daher 4K Speicherzellen 200 umfassen. Die Speicherzellen 200 in der Matrix 100 sind in einer zweidimensionalen Matrix sich schneidender Reihen und Spalten derartiger Zellen angeordnet. Die Matrix 100 kann beispielsweise 64 Reihen und 64 Spalten Speicherzellen 200 umfassen.
  • Der Speicherbereich 40 umfaßt auch zwei unabhängige Logikschaltungen 110-1 und 110-2 zur Auswahl der Schreibspalte. Jede der Logikschaltungen 110-1 und 110-2 zur Auswahl der Schreibspalte empfängt jeweils eine von zwei Gruppen von Signalen 80-1 und 80-2 von der Verbindungsschaltung 50/60/70/usw. der Vorrichtung 10 (siehe 1). Jede der Logikschaltungen 110-1 und 110-2 zur Auswahl der Schreibspalte kann auch teilweise durch eine jeweilige Gruppe programmierbarer Funktionssteuerungselemente ("FCEs") 120-1 und 120-2 gesteuert werden. Die an jede der Schaltungen 110 angelegten Signale 80 umfassen (1) Spaltenadress-Signale, die der Empfangsschaltung 110 die Auswahl ermöglichen, welche der Spalten in der Matrix 100 zum Schreiben von Daten ausgewählt werden wird, die auch von jener Schaltung 110 erhalten wurden, und (2) Datensignale, die Daten repräsentieren, die in die gewählten Spalten in der Matrix 100 geschrieben werden sollen. Jede Instanz der Bezugsziffer 80 steht somit in der Regel für einen Bus mit mehreren parallelen Drähten (einschließlich mehrerer paralleler Adress-Signaldrähte, und im Fall der mit Elementen 110 verbundenen Busse 80 auch einschließlich mehrerer paralleler Datensignaldrähte). Die Anzahl der Drähte in einem Bus 80 ist dessen Breite, die ein Maß für die Kapazität des Busses und des zugeordneten Schreib-Ports ist. Jeder mit einem Element 110 verbundene Bus 80 kann beispielsweise 16 parallele Drähte umfassen, die für Daten verwendbar sind, obwohl nicht in allen Fällen alle dieser Drähte für Daten verwendet werden können.
  • Die jeder der Schaltungen 110 zugeordneten FCEs 120 sind programmierbar, um die Breite des Datenworts zu steuern, die dieser Schaltkreis 110 an die Matrix 100 anlegt. Die jeder Schaltung 110 zugeordneten FCEs 120 können jegliche der mehreren Wortlängen auswählen, wie ein Bit, zwei Bits, vier Bits, acht Bits oder 16 Bits. Wenn die Vier-Bit-Option gewählt wird, dann werden über den zugeordneten Bus 80 vier Datensignale empfangen und durch die zugeordnete Schaltung 110 weitergeleitet. In der Tat gibt jede der Schaltungen 110 die empfangenen Daten in mehreren parallelen Instanzen aus, d. h. so vielen Instanzen, wie erforderlich sind, um Daten an alle der Spalten der Matrix 100 anzulegen. Die Spaltenauswahlsignale, die jede Schaltung 110 ebenfalls ausgibt, führen die endgültige Auswahl der Spalte(n) in Matrix 100 durch, die die Daten tatsächlich speichert bzw. speichern. Wenn die Ein-Bit-Option ausgewählt wird, wird dieses eine Datenbit an alle 64 Spalten in der Matrix 100 angelegt, aber nur einer Spalte wird es ermöglicht, dieses Datenbit tatsächlich zu speichern. Wenn die Zwei-Bit-Option ausgewählt wird, werden diese beiden Datenbits parallel an jede der 32 Gruppen der beiden Spalten in Matrix 100 angelegt, aber nur einer dieser 32 Gruppen wird es in der Tat ermöglicht, jene Daten zu speichern. Wenn die Vier-Bit-Option ausgewählt wird, werden diese vier Datenbits an jede der 16 Gruppen der vier Spalten in Matrix 100 angelegt, aber wiederum nur einer dieser 16 Gruppen wird es in der Tat ermöglicht, die Daten zu speichern.
  • Das oben beschriebene Merkmal der variablen Breite ermöglicht die Verwendung der Matrix 100 zur effektiven Bereitstellung von Speichern mit jeglichen aus einem weiten Bereich von Breiten und Tiefen, wie 4K×1, 2K×2, 1K×4, 512×8 oder 256×16, sowie Untergruppen dieser Tiefen, wie 2K×1, 1K×2, 512×4 oder 256×8. Wenn die volle Kapazität der Matrix 100 nicht von einer der Schaltungen 110 verwendet wird, steht der Rest der Matrix zur Verwendung durch die andere Schaltung 110 zur Verfügung. Wenn die Schaltung 110-1 beispielsweise nur die Hälfte der Matrix 100 verwendet (z. B. zur Bereitstellung eines Speichers, der 2K×1, 1K×2, 512×4 oder 256×8 ist), steht der Rest der Matrix 100 zur Verwendung durch die Schaltung 110-2 zur Verfügung, um effektiv einen weiteren unabhängig verwendbaren Speicher zu liefern (der wiederum irgendeiner von 2K×1, 1K×2, 512×4 oder 256×8 sein kann). Die in den vorangehenden Sätzen angegebenen Speichergrößen sind lediglich Beispiele, und es sind in gleicher Weise viele andere Speichergrößen möglich.
  • Es ist aus dem Vorhergehenden erkennbar, daß die Ausgabesignale 112 von jeder der Schaltungen 110 sowohl die Spaltenauswahl- als auch die Datensignale umfaßt. Es ist auch zu erkennen, daß jede der Schaltungen 110 diese Signale an alle der Spalten in der Matrix 100 anlegt.
  • Der Speicherbereich 40 umfaßt ferner zwei unabhängige Logikschaltungen 130-1 und 130-2 zur Auswahl der Schreibreihe. Jede der Logikschaltungen 130-1 und 130-2 zur Auswahl der Schreibreihe empfängt jeweils eine von zwei Gruppen von Signalen 80-1 und 80-2 von der Verbindungsschaltung 50/60/70/usw.. Die an jede der Schaltungen 130 angelegten Signale 80 sind Reihenadress-Signale, die der empfangenden Schaltung 130 die Auswahl ermöglichen, welche Reihe in der Matrix 100 Daten schreibt (d. h. speichert), die aus der jeweiligen der Logikschaltungen 110 zur Auswahl der Schreibspalte empfangen wurden. Schaltung 130-1 wählt insbesondere die Reihe in Matrix 100, die die durch Schaltung 110-1 (wobei die Spaltenauswahl auch von Schaltung 110-1 bereitgestellt wird) an der Matrix angelegten Daten speichert, und Schaltung 130-2 wählt die Reihe in der Matrix 100, die die durch Schaltung 110-2 (wobei die Spaltenauswahl auch von Schaltung 110-2 bereitgestellt wird) an der Matrix angelegten Daten speichert. Die Reihenauswahl-Ausgabesignale von jeder der Schaltungen 130-1 und 130-2 werden über Drähte 132-1 beziehungsweise 132-2 an alle Reihen der Matrix 100 angelegt. (Der Einfachheit halber geht die vorliegende Diskussion davon aus, daß jede der Schaltungen 130 nur eine Reihe in der Matrix 100 zur Zeit auswählen kann. Dies ist der Betriebsmodus, der zur Bereitstellung von RAM verwendet wird. In dieser Beschreibung werden nachfolgend andere Modi, wie CAM und p-Term-Logikmodus, als mögliche Erweiterungen des RAM-Modus betrachtet.)
  • Der Speicherbereich 40 umfaßt ferner zwei unabhängige Logikschaltungen 140-1 und 140-2 zur Auswahl der Lesereihe. Jede der Logikschaltungen 140-1 und 14-2 zur Auswahl der Lesereihe empfängt jeweils eine von zwei Gruppen von Signalen 80-1 und 80-2 von der Verbindungsschaltung 50/60/70/usw.. (Obwohl mehrere verschiedene Schaltungen (z. B. 110-1, 130-1, 140-1 und 150-1) gezeigt sind, die mit der gleichen Bezugsziffer (z. B. 80-1) bezeichnete Signale empfangen, sei darauf hingewiesen, daß jede dieser Schaltungen eine jeweilige unterschiedliche Teilmenge der Menge der Signale empfangen kann, die durch jene Bezugsziffer bezeichnet wird.) Die an jede der Schaltungen 140-1 und 140-2 angelegten Signale sind Reihenadress-Signale, die der empfangenden Schaltung 140 die Auswahl ermöglichen, welche Reihe in Matrix 100 Daten an die jeweilige zugeordnete Logikschaltung 150-1 und 150-2 zur Auswahl der Lesespalte ausgibt (nachfolgend detaillierter erörtert). Die Daten in der Reihe, die durch die Ausgabesignale 142-1 von Schaltung 140-1 ausgewählt werden, werden beispielsweise über Drähte 148-1 an Schaltung 150-1 angelegt. Die Daten in der Reihe, die durch die Ausgabesignale 142-2 von Schaltung 140-2 ausgewählt werden, werden in ähnlicher Weise über Drähte 148-2 an Schaltung 150-2 angelegt. (Der Einfachheit halber geht die vorliegende Erörterung wiederum davon aus, daß jede der Schaltungen 140 nur eine Reihe zur Zeit auswählen kann, wie es für den grundlegenden ROM- oder RAM-Betrieb geeignet ist. Andere Modi, in denen jede der Schaltungen 140 mehrere Reihen parallel auswählen kann (z. B. zur Unterstützung von CAM- oder p-Term-Logikoperationen) werden in dieser Beschreibung zu einem späteren Zeitpunkt erwähnt).
  • Die letzten Hauptkomponenten des Speicherbereichs 40 sind zwei unabhängige Logikschaltungen 150-1 und 150-2 zur Auswahl der Lesespalte. In gewisser Hinsicht führen Schaltungen 150 eine Aufgabe durch, die die Umkehrung der von Schaltungen 120 durchgeführten Aufgabe ist. Jede der Schaltungen 150-1 und 150-2 wird teilweise durch die jeweiligen FCEs 160-1 und 160-2 gesteuert, um jegliche der mehreren Datenwortlängen auszuwählen, ähnlich jenen, die durch FCEs 120 auswählbar sind. Jede der Schaltungen 150-1 und 150-2 wird ferner durch die jeweiligen Leseadress-Signale 80-1 und 80-2 gesteuert, um auszuwählen, aus welcher Spalte/welchen Spalten in der Matrix 100 diese Schaltung Daten ausgibt. Die Datenausgabe durch jede der Schaltungen 150-1 und 150-2 wird mittels der Busse 90-1 beziehungsweise 90-2 an Verbindungsschaltung 50/60/70/usw. angelegt. Jeder der Busse 90 umfaßt in der Regel mehrere parallele Datendrähte, wie in dem Datenabschnitt der mit Elementen 110 verbundenen Busse 80. Die Anzahl der Drähte in jedem Bus 90 ist die Breite des Busses und ein Maß für die Kapazität jenes Busses und des zugeordneten Lese-Ports. Jeder Bus 90 kann beispielsweise 16 parallele Datendrähte umfassen, obwohl nicht in allen Fällen alle dieser Drähte verwendet werden können.
  • Wie bereits erwähnt, zeigt 3 eine beispielhafte Ausführungsform einer repräsentativen Speicherzelle 200 in der Matrix 100. Die Datenausgabesignale von Schaltung 110-1 in 2 (für die Spalte in Matrix 100, die die Speicherzelle 200 umfaßt, gezeigt in 3) werden in wahrer beziehungsweise komplementärer Form an die beiden Leiter 112-1D in 3 angelegt, die jene Spalte bedienen (d. h. sich entlang dieser erstrecken). In ähnlicher Weise wird das Spaltenauswahl-Ausgabesignal von Schaltung 110-1 für die Spalte, die die abgebildete Speicherzelle 200 umfaßt, an den Leiter 112-1S angelegt, der sich entlang jener Spalte erstreckt. Ähnliche Leiter 112-2D und 112-2S werden für die Daten- und Spaltenauswahl-Ausgabesignale der Schaltung 110-2 für die Spalte bereitgestellt, die die abgebildete Speicherzelle 200 umfaßt.
  • Das Reihenauswahl-Ausgabesignal von Schaltung 130-1 in 2 (für die Reihe, die die abgebildete Speicherzelle 200 umfaßt) wird an den Leiter 132-1 in 3 angelegt, der jene Reihe bedient (d. h. sich entlang dieser erstreckt). In ähnlicher Weise wird das Reihenauswahl- Ausgabesignal von der Schaltung 130-2 für die Reihe, die die abgebildete Speicherzelle 200 umfaßt, in 3 an den Leiter 132-2 angelegt. Das Reihenauswahl-Ausgabesignal von Schaltung 140-1 für die Reihe, die die abgebildete Speicherzelle 200 umfaßt, wird in 3 an den Leiter 142-1 angelegt, und das entsprechende Ausgabesignal von Schaltung 140-2 wird in 3 an den Leiter 142-2 angelegt.
  • Die Signale an den beiden Drähten 148-1 in 3 (wobei sich die Drähte entlang der gesamten Spalte erstrecken, die die abgebildete Speicherzelle 200 umfaßt) werden an den Abschnitt der Schaltung 150-1 in 2 angelegt, der jene Spalte bedient. Die Signale an den beiden Drähten 148-2 in 3 werden in ähnlicher Weise an den Abschnitt der Schaltung 150-2 angelegt, der genau jene Spalte bedient.
  • Über entweder Schaltungen 110-1 und 130-1 oder Schaltungen 110-2 und 130-2 können Daten in Speicherzelle 200 geschrieben werden. Um beispielsweise unter Verwendung von Schaltungen 110-1 und 130-1 Daten in eine Zelle 200 zu schreiben, legt der Schaltkreis 110-1 die zu schreibenden Daten in wahrer und komplementärer Form an zwei Drähte 112-1D an. (Es kommt nicht darauf an, welcher Draht 112-1D die wahre Form der Daten empfängt und welcher Draht 112-1D die komplementäre Form der Daten empfängt, solange eine konsistente (oder wenigstens bekannte) Polarität verwendet wird). Die Schaltung 110-1 legt zudem ein Gate-Einschaltsignal an einen Draht 112-1S an, und die Schaltung 130-1 legt ein Gate-Einschaltsignal an einen Draht 132-1 an. Die im vorhergehenden Satz genannten Gate-Einschaltsignale schalten alle der Transistoren 210-1, 212-1, 220-1 und 222-1 an. Mindestens ein Paar von Transistoren 210-2/212-2 oder 220-2/222-2 ist abgeschaltet, weil die Schaltungen 110-2 und 130-2 nicht gleichzeitig beide dieselbe Reihe und Spalte auswählen, die durch die Schaltungen 110-1 und 130-1 ausgewählt werden. Weil die Transistoren 210-1, 212-1, 220-1 und 222-1 alle angeschaltet sind, ist der Inverter 230 zwischen den Drähten 112-1D für ein wahres und komplementäres Datensignal angeschlossen. Der Inverter 230, der verglichen mit dem Inverter 240 relativ stark ist, wird daher dazu gebracht, das Inverse der Datensignale an dem linken der Datendrähte 112-1D auszugeben. Der Inverter 240 ist nicht stark genug, um den Inverter 230 daran zu hindern, den Status möglicherweise als Antwort auf diesen äußeren Reiz zu ändern, ist jedoch ausreichend stark, um den Inverter 230 in einem beliebigen Status zu halten, in dem er sich befindet, wenn der äußere Reiz entfernt wird. Eine Speicherzelle 200 (prinzipiell sind Inverter 230 und 240 in einer geschlossenen (oder Rückkopplungs)-Schleifenreihe verbunden) speichert demnach die Daten, die von Schaltung 110-1 an jene Speicherzelle angelegt werden.
  • Alternativ kann eine Speicherzelle 200 Daten von der Schaltung 110-2 mit Hilfe der Reihenauswahl der Schaltung 130-2 speichern. In diesem Fall werden die Daten in wahrer und komplementärer Form an Drähte 112-2D angelegt. An die Drähte 112-2S und 132-2 werden Gate-Einschaltsignale angelegt. Diese Gate-Einschaltsignale schalten alle der Transistoren 210-2, 212-2, 220-2 und 222-2 ein. Mindestens ein Paar von Transistoren 210-1/212-1 oder 220-1/222-1 ist gleichzeitig durch die Signale der Schaltungen 110-1 und 130-1 abgeschaltet. Das Einschalten aller Transistoren 210-2, 212-2, 220-2 und 222-2 verbindet den Inverter 230 zwischen den Drähten 112-2D, wodurch ein Inverterpaar 230 und 240 die Datenausgabe von Schaltung 110-2 empfangen und speichern kann.
  • Die in der Speicherzelle 200 gespeicherten Daten können von einer oder beiden der Schaltungen 150-1 und 150-2 durch Verwendung der Schaltungen 140-1 und/oder 140-2 ausgelesen werden. Damit die Schaltung 150-1 die Daten auslesen kann, legt die Schaltung 140-1 ein Gate-Einschaltsignal an den Draht 142-1 an. Dies schaltet den Transistor 260-1 in 3 an. Wenn das Ausgabesignal des Inverters 230 auch ein Gate-Einschaltsignal ist (Annahme, daß es eine logische 1 ist), wird den Transistor 250-1 ebenfalls angeschaltet. Wenn beide Transistoren 250-1 und 260-1 angeschaltet sind, wird ein Kurzschluss zwischen den Drähten 148-1 erzeugt (die normalerweise auf jeweils unterschiedliche Signalpegel oder Potentiale gesetzt oder vorgespannt sind). Dieser Kurzschlusszustand wird durch die Schaltung 150-1 als Angabe detektiert, daß die Speicherzelle 200 eine logische 1 ausgibt. Wenn das Ausgabesignal des Inverters 230 die entgegengesetzte Polarität hat (Annahme, daß es eine logische 0 ist), wird der Transistor 250-1 nicht angeschaltet, die Drähte 148-1 werden nicht miteinander kurzgeschlossen, und die Schaltung 150-1 detektiert dies als Angabe, daß die Speicherzelle 200 eine logische 0 ausgibt.
  • Damit die Schaltung 150-2 die Speicherzelle 200 auslesen kann, legt die Schaltung 140-2 ein Gate-Einschaltsignal an den Draht 142-2 an. Dies schaltet den Transistor 260-2 an. Wenn das Ausgabesignal des Invertes 230 auch ein Gate-Einschaltsignal ist, wird der Transistor 250-2 ebenfalls angeschaltet. Dies schließt einen Kurzschluss zwischen den Drähten 148-2 (die normalerweise auf jeweils unterschiedliche Signalpegel oder Potentiale gesetzt oder vorgespannt sind). Dieser Kurzschlusszustand wird durch die Schaltung 150-2 als Angabe detektiert, daß Speicherzelle 200 Logisch 1 ausgibt. Wenn andererseits der Inverter 230 eine logische 0 ausgibt, wird der Transistor 250-2 nicht angeschaltet, die Drähte 148-2 werden nicht kurzgeschlossen, und die Schaltung 150-2 detektiert dies als Angabe, daß die Speicherzelle 200 eine logische 0 ausgibt.
  • Es sei darauf hingewiesen, daß, obwohl eine spezielle Speicherzelle 200 zu irgendeiner gegebenen Zeit nur von entweder der Schaltungen 110-1/130-1 oder der Schaltung 110-2/130-2 beschrieben werden kann, jede Speicherzelle 200 gleichzeitig von beiden Schaltungen 140-1/150-1 und Schaltungen 140-2/150-2 gelesen werden kann, falls dies gewünscht ist.
  • Weil alle Spalten und alle Reihen der Speicherzellenmatrix 100 sowohl den Schaltungen 110-1/130-1/140-1/150-1 als auch den Schaltungen 110-2/130-2/140-2/150-2 zur Verfügung stehen, kann die Ausnutzung der Kapazität der Matrix 100 auf viele verschiedene Weisen zwischen diesen beiden Schaltungsgruppen zugewiesen werden. Die Zuweisung wird durch die Programmierung der FCEs 120 und 160 und durch die Weise gesteuert, nach der die Matrix 100 mittels Schaltungen 110, 130, 140 und 160 adressiert wird.
  • Zusätzlich zu einer flexiblerer Zuweisung der Kapazität der Speicherzellenmatrix 100 ermöglichen die hier gezeigten und beschriebenen Schaltungen die Verwendung des Speichers nach beliebigen von mehreren unterschiedlichen Weisen, wie z.B. den Folgenden:
    • 1. Vier-Port-Speicher mit zwei Schreib-Ports und zwei Lese-Ports;
    • 2. Drei-Port-Speicher mit zwei Schreib-Ports und einem Lese-Port oder einem Schreib-Port und zwei Lese-Ports;
    • 3. Echter Dual-Port-Speicher mit zwei Ports, die sowohl lesen als auch schreiben können;
    • 4. Zwei unabhängige Original-Dual-Port-Speicher mit einem Schreib-Port und einem Lese-Port;
    • 5. Zwei unabhängige Ein-Port-Speichern mit einem Port, der sowohl lesen als auch schreiben kann; und
    • 6. Zwei unabhängige ROMs.
  • Die hier gezeigte und beschriebene Speicherschaltung kann man sich somit als bis zu vier Ports umfassend vorstellen, d. h. zwei Schreib-Ports (umfassend Schaltungen 110-1/130-1 und Schaltungen 110-2/130-2) und zwei Lese-Ports (umfassend Schaltungen 140-1/150-1 und Schaltungen 140-2/150-2). Der in der unmittelbar vorangehenden Liste genannte Vier-Port-Betrieb ist der einzige aufgeführte Modus, der alle vier dieser Ports unabhängig verwendet. Die anderen oben aufgeführten Modi werden implementiert, indem verschiedene der Ports miteinander verknüpft werden. 4 zeigt die Speicherzellmatrix 100 mit Lese- und Schreib-Schaltung 110/130/140/150, die auf die vier oben genannten "Ports" abstrahiert werden.
  • Das Aspektverhältnis für jeden der oben genannten Ports kann unabhängig konfiguriert werden. Wenn wir beispielsweise annehmen, daß die Gesamtkapazität der Speicherzellmatrix 4K-Bit ist, kann jeder Port unabhängig als 4K×1, 2K×2, 1K×4, 512×8, oder 256×16 konfiguriert werden, wenn er als Einzelblock betrieben wird. Wenn die Matrix 100 alternativ als zwei gänzlich oder teilweise unabhängige Speicherblöcke verwendet wird, kann jeder Port unabhängig auf verschiedene Untergruppen der obigen Möglichkeiten konfiguriert werden, wie 2K×1, 1K×2, 512×4, 256×8 oder 128×16. Die Grenze zwischen beliebigen dieser zwei unabhängig verwendbaren Abschnitten der Matrix 100 ist effektiv beweglich, so daß ein Abschnitt größer als der andere sein kann. Die Matrix 100 kann beispielsweise zwei unabhängige 256×8-Abschnitte oder einen 448×8- und einen 32×16-Abschnitt unterbringen. Im letzteren Fall werden die Reihen 1–56 zur Implementierung von 448×8 verwendet, und die Reihen 57–64 werden zur Implementierung von 32×16 verwendet. Die beiden Abschnitte können zudem in unterschiedlichen Modi wie beschrieben operieren. Der 448×8-Abschnitt kann beispielsweise ein Ein-Port-Speicher sein, während der 32×16-Abschnitt ein First-In/First-Out-("FIFO")-Speicher sein kann. 5 stellt dieses letzte Beispiel dar.
  • Es ist mit der oben beschriebenen beweglichen Grenze zwischen zwei verwendbaren Abschnitten der Speicherzellmatrix 100 leicht möglich, über eine Ausgabebusbreite zu verfügen, die kein ganzzahliges Vielfaches von zwei ist. Beispielsweise kann in einer 4K Matrix 100 ein 455×9 Speicher implementiert werden. Dies kann wie folgt durchgeführt werden: Die Reihen 1–56 werden von einem ersten Port verwendet, um 448×8 zu implementieren. Die Reihen 58–64 werden von dem zweiten Port verwendet, um 448×1 zu implementieren. Dadurch bleibt Reihe 57 übrig, die von den beiden Ports gemeinsam genutzt werden kann, um die letzten 7×8 für den ersten Port und 1×8 für den zweiten Port mit einem Reserve-Bit zu implementieren. Ohne die oben beschriebene Vier-Port-Fähigkeit kann in einer 4K Dual-Port-Matrix nur ein 256×9-Speicher implementiert werden.
  • Das in dem unmittelbar vorangehenden Absatz erörterte Beispiel ist eine Veranschaulichung des Punkts, daß die beiden Schreib-Ports und/oder die beiden Lese-Ports verknüpft oder zusammen (d. h. parallel) betrieben werden können, um effektiv Schreib- und/oder Lese-Ports mit unterschiedlichen Breiten zu liefern, als normalerweise mit der Verwendung von nur einem oder dem anderen der beiden Schreib- und Lese-Ports verbunden sind (oder in einigen Fällen sogar möglich sind). Um diesen Punkt weiter zu veranschaulichen, ist es, wenn die maximale Breite jedes separaten Schreib- oder Lese-Ports 16 Bit ist (z. B. weil jeder mit einem Element 110/150 verbundene Bus 80/90 ein Maximum von 16 parallelen Datendrähten hat, und weil jedes Element 110/150 eine maximale "×16"-Option hat), dennoch möglich, paralleles Schreiben und/oder Lesen von längeren Worten als 16 Bit durchzuführen (z. B. 20 Bit, 24 Bit oder bis zu 32 Bit). Um beispielsweise 32 Bit parallel zu schreiben, werden beide Elemente 110 (mit den zugehörigen FCEs 120) auf den "×16"-Modus programmiert. Die Hälfte der 32 Bit, die parallel geschrieben werden sollen, werden durch Bus 80-1 an Element 110-1 angelegt, während die andere Hälfte dieser 1432 Bits über Bus 80-2 an Element 110-2 angelegt wird. Die an Elemente 110-1/130-1 angelegten Adress-Signale unterscheiden sich natürlich in ausreichendem Maße von den an Elemente 110-2/130-2 angelegten Adress-Signalen, so daß die 32 Bits alle in unterschiedliche Speicherzellen in Matrix 100 geschrieben werden. Um das 32-Bit-Beispiel fortzuführen, werden zum parallelen Lesen von 32 Bit beide Elemente 150 (unter Verwendung von FCEs 160) auf den "×16"-Modus programmiert. Unter Verwendung von ausreichend verschiedenen Adress-Signalen, die auf der einen Seite an Elemente 140-1/150-1 und auf der anderen Seite an Elemente 140-2/150-2 angelegt werden, werden 16 Bit über Element 150-1 und Bus 90-1 aus Matrix 100 ausgelesen, und (parallel) werden weitere 16 Bit über Element 150-2 und Bus 90-2 aus Matrix 100 ausgelesen. Indem in der durch dieses Beispiel veranschaulichten Weise effektiv zwei Schreib-Ports und/oder zwei Lese-Ports kombiniert werden, können breitere Schreib- und/oder Lese-Ports (d. h. Ports mit höherer Kapazität) bereitgestellt werden.
  • Um die konfliktfreie Verwendung von zwei Speicherabschnitten zu erleichtern, können alle Eingaben 80 an einem Speicherbereich 40 (oder mindestens alle Adress-Signaleingaben) mit programmierbarer Inversion versehen werden, z. B. unter Verwendung der programmierbaren Inversions-Schaltung 300 wie derjenigen, die in 6 gezeigt ist. In 6 wird das Signal auf einem eingehenden Draht 80 (an der linken Seite) direkt auf einen Eingabeanschluss von PLC 320 (z. B. einen Multiplexer) gelegt. Das eingehende Signal wird über den Inverter 310 auch an den anderen Eingabeanschluss von PLC 320 angelegt. Der PLC ist von FCE 330 programmierbar, um eines seiner beiden Eingabesignale über den ausgehenden Draht 80 (an seiner rechten Seite) auszugeben. Demnach kann das Signal des ausgehenden Drahts 80 entweder die wahre oder die komplementäre Version des eingehenden Signals an Draht 80 sein. Mit der Bereitstellung dieser programmierbaren Inversion ist keine externe Adressverschiebung erforderlich, um den Adressraumkonflikt zwischen zwei Ports zu lösen. Beide Ports können beispielsweise extern von dem niedrigstwertigen Bit ("LSB") aufwärts zählen, der zweite Port-Adressbus wird jedoch invertiert, so daß der zweite Port von der Adresse des höchstwertigen Bits abwärts zählt. Solange der Gesamtspeicherraum weniger als oder gleich 4 Kbit ist, gibt es zwischen den beiden Speichern keinen Konflikt.
  • Es sei in Bezug auf den ROM-Betrieb darauf hingewiesen, daß die gesamte Vorrichtung 10 (einschließlich Matrix 100) zusätzlich zu den Schaltungen 110 und 130 für die RAM-Programmierung der Speicherzellmatrix 100 während der normalen Logikoperation von Vorrichtung 10 während der Anfangskonfiguration der Vorrichtung in der konventionellen Weise programmierbar ist, die in keiner der Figuren gezeigt ist. Bei der typischen Verwendung von Matrix 100 als ROM werden die ROM-Daten während jener Anfangskonfiguration von Vorrichtung 10 in Matrix 100 gespeichert. Während der normalen Logikoperation von Vorrichtung 10 können die ROM-Daten danach aus der Matrix 100 unter Verwendung der Schaltungen 140 und 150 ausgelesen werden, wie zuvor in dieser Beschreibung für RAM-Daten beschrieben wurde. Außer daß die Daten ROM-Daten sind und daher nicht durch Verwendung der Schreib-Ports verändert werden, kann der ROM-Betrieb in anderen Worten dieselbe Flexibilität haben, wie oben für den RAM-Betrieb (speziell das Lesen des RAMs) beschrieben ist.
  • Der Speicherbereich 40 kann auch so ausgestattet sein, daß andere Betriebsmodi als die oben beschriebenen RAM- und ROM-Modi unterstützt werden. Der Speicherbereich 40 kann beispielsweise auch so ausgestattet sein, daß eine p-Term-Logik (wie beispielsweise in US-A-6,020,759 von Heile gezeigt ist), und/oder ein Assoziativspeicher ("CAM") bereitgestellt wird (wie beispielsweise in US-Patentanmeldung Nr. 09/292,448, eingereicht am 15. April 1999 von Heile, und US-Patentanmeldung Nr. 09/389,995, eingereicht am 2. September 1999 von Heile, gezeigt ist). Damit die Schaltung nicht unnötig kompliziert wird, verwenden andere Modi, wie p-Term und CAM, vorzugsweise nicht die echte Vier-Port-Fähigkeit von Speicherbereich 40. Stattdessen wird in diesen anderen Modi ein Speicherbereich 40 als zwei unabhängige 2 Kbit-Speicherblöcke ohne effektiv bewegliche Grenze zwischen diesen beiden Blöcken betrieben.
  • 7 stellt eine erfindungsgemäße programmierbare Logikvorrichtung 10 in einem Datenverarbeitungssystem 1002 dar. Das Datenverarbeitungssystem 1002 kann eine oder mehrere der folgenden Komponenten umfassen: einen Prozessor 1004; einen Speicher 1006; eine I/O-Schaltung 1008 und Peripheriegeräte 1010. Diese Komponenten werden durch einen Systembus 1020 gekoppelt und befinden sich als Bestückung auf einer Leiterplatte 1030, die in einem Endanwendersystem 1040 enthalten ist.
  • Das System 1002 kann in vielen verschiedenen Anwendungen verwendet werden, wie als Computernetzwerk, Datennetzwerk, Instrumentierung, Videoverarbeitung, Digitalsignalverarbeitung oder jede andere Anwendung, in der der Vorteil der Verwendung programmierbarer oder umprogrammierbarer Logik erwünscht ist. Die programmierbare Logikvorrichtung 10 kann zur Durchführung einer Vielfalt von unterschiedlichen Logikfunktionen verwendet werden. Die programmierbare Logikvorrichtung 10 kann beispielsweise als Prozessor oder Controller konfiguriert werden, der mit einem Prozessor 1004 zusammenarbeitet. Die programmierbare Logikvorrichtung 10 kann auch in einem Zuteiler verwendet werden, um den Zugriff auf eine gemeinsam genutzte Ressource in dem System 1002 zuzuteilen. In einem anderen Beispiel kann die programmierbare Logikvorrichtung 10 als Schnittstelle zwischen Prozessor 1004 und einer der anderen Komponenten in dem System 1002 konfiguriert werden. Es sei darauf hingewiesen, daß das System 1002 lediglich beispielhaft ist, und daß der wahre Bereich und Geist der Erfindung durch die folgenden Ansprüche wiedergegeben werden soll.
  • Es können verschiedene Technologien zur Implementierung der programmierbaren Logikvorrichtungen 10 mit den Merkmalen dieser Erfindung sowie verschiedene Komponenten dieser Vorrichtungen verwendet werden (z. B. die oben beschriebenen PLCs und die FCEs, die die PLCs steuern). Jede PLC kann beispielsweise ein relativ einfacher programmierbarer Verbinder sein, wie ein Schalter oder mehrere Schalter, um irgendeine von mehreren Eingaben mit einer Ausgabe zu verbinden. Alternativ kann jede PLC ein etwas komplexeres Element sein, das Logik durchführen kann (z. B. durch logisches Kombinieren von mehreren seiner Eingaben) sowie eine Verbindung herstellen kann. Im letzteren Fall kann jede PLC beispielsweise Produkttermlogik sein, die Funktionen wie AND, NAND, OR oder NOR implementiert. Beispiele für Komponenten, die zur Implementierung von PLCs geeignet sind, sind EPROMs, EEPROMs, Schalttransistoren, Transmissionsgitter, Anti-Fuse, Laser-Fuse, Metallbedarfsleitungen, usw. Wie gesagt können die verschiedenen Komponenten von PLCs durch verschiedene programmierbare Funktionssteuerungselemente ("FCEs") gesteuert werden. (Bei bestimmten PLC-Implementierungen (z. B. Fuse-Komponenten und Metallbedarfsleitungen) sind keine separaten FCE-Vorrichtungen erforderlich.) FCEs können auch auf beliebige von mehreren unterschiedlichen Weisen implementiert werden. FCEs können beispielsweise SRAMs, DRAMs, First-In-First-Out-("FIFO")-Speicher, EPROMs, EEPROMs, Funktionssteuerungsregister (z. B. wie in US-A-3,473,160 von Wahlstrom), ferroelektrische Speicher, Fuse-Komponenten, Antifuse-Komponenten oder dergleichen sein. Es ist aus den verschiedenen zuvor genannten Beispielen ersichtlich, daß diese Erfindung sowohl auf nur einmalig programmierbare als auch auf umprogrammierbare Vorrichtungen anwendbar ist.
  • Es sei darauf hingewiesen, daß das Gesagte die Prinzipien dieser Erfindung lediglich veranschaulicht, und daß Fachleute verschiedene Modifikationen vornehmen können. Die Anzahl der verschiedenen Typen von Ressourcen auf einer Vorrichtung 10 kann sich beispielsweise von den Anzahlen unterscheiden, die in den abgebildeten und beschriebenen beispielhaften Ausführungsformen vorliegen. Dies gilt für solche Parameter wie die Anzahlen der Reihen und Spalten der verschiedenen Schaltungstypen, die Anzahlen der verschiedenen Typen der Verbindungsleiter, die Anzahlen und Größen der PLCs, die zur Herstellung von Verbindungen zwischen verschiedenen Typen von Verbindungsleitern bereitgestellt werden, usw. Es sei auch darauf hingewiesen, daß verschiedene Richtungs- und Orientierungsbegriffe, wie "vertikal" und "horizontal", "links" und "rechts", "oben" und "unten", "Reihe" und "Spalte" und dergleichen hier nur der Bequemlichkeit halber verwendet werden, und daß durch die Verwendung dieser Worte keine festgelegten oder absoluten Richtungs- oder Orientierungseinschränkungen beabsichtigt sind. Die erfindungsgemäßen Vorrichtungen können beispielsweise jede gewünschte Orientierung haben. Bei Umorientierung müssen möglicherweise zu ihrer Beschreibung andere Richtungs- oder Orientierungsbegriffe verwendet werden, diese ändern ihre grundlegende Natur jedoch nicht, wie innerhalb des Schutzumfangs dieser Erfindung. Wenn keine zwei Schreib-Ports erforderlich sind, kann die Schaltung für einen der beiden Schreib-Ports gewünschtenfalls wegfallen. Wenn keine zwei Lese-Ports erforderlich sind, kann die Schaltung für einen der beiden Lese-Ports gewünschtenfalls alternativ wegfallen.

Claims (29)

  1. Programmierbare Schaltung, welche umfaßt mehrere Logikkomponenten (30), wobei jede Logikkomponente wenigstens eine programmierbare Schaltung umfaßt; und einen Multi-Port-Speicher (40), welcher mit den mehreren Logikkomponenten gekop pelt ist, wobei der Speicher selektiv konfigurierbar ist, um wenigstens einen Schreib-Port (110-1, 110-2) und wenigstens einen Lese-Port (140-1, 140-2) zu umfassen, wobei die Gesamtzahl an Lese- und Schreib-Ports größer als zwei ist, wobei der Speicher dazu in der Lage ist, mehrere Schreib- und Lese-Operationen gleichzeitig durchzuführen, und dadurch gekennzeichnet ist, daß wenigstens einer der Ports (110-1, 110-2, 140-1, 140-2) mit einer programmierbaren Inversions-Schaltung versehen ist, welche selektiv Signale an den Speicher in einer wahren und komplementären Form (112-1D, 112-2D) liefert.
  2. Schaltung nach Anspruch 1, ferner umfassend mehrere Busse (80, 90), die mit dem wenigstens einen Schreib- und dem wenigstens einen Lese-Port (110-1, 110-2, 140-1, 140-2) des Speichers gekoppelt sind, wobei jeder der mehreren Busse eine vorbestimmte Breite des Busses aufweist.
  3. Schaltung nach Anspruch 1, wobei die Schaltung eine programmierbare Logikvorrichtung ist, welche mehrere programmierbare Logikkomponenten (30) angeordnet in mehreren Dimensionen umfaßt.
  4. Schaltung nach Anspruch 1, wobei der wenigstens eine Lese- und der wenigstens eine Schreibport selektiv programmierbar sind, um einen einzelnen Lese-Port mit größerer Kapazität zu bilden.
  5. Schaltung nach Anspruch 1, wobei der wenigstens eine Lese-Port und der wenigstens eine Schreib-Port selektiv programmierbar sind, um einen einzelnen Schreib-Port mit einer größeren Kapazität zu bilden.
  6. Schaltung nach Anspruch 1, wobei der wenigstens eine Schreib-Port eine Schaltung ist, welche dazu eingerichtet ist, mehrere Informationsbits gleichzeitig zu erhalten.
  7. Schaltung nach Anspruch 1, wobei der wenigstens eine Lese-Port eine Schaltung ist, die dazu eingerichtet ist, mehrere Informationsbits gleichzeitig zu senden.
  8. Schaltung nach Anspruch 1, wobei der Speicher (30) mehrere Speicherzellen (200), den wenigstens einen Schreib-Port (110-1, 110-2) und einen zweiten Schreib-Port (130-1, 130-2), wovon jeder dazu eingerichtet ist, selektiv Daten in eine der Speicherzellen zu schreiben, und den wenigstens einen Lese-Port (140-1, 140-2) sowie einen zweiten Lese-Port (150-1, 150-2) umfaßt, wovon jeder dazu eingerichtet ist, selektiv Daten aus einer der Speicherzellen zu lesen; und wobei die Schaltung ferner eine programmierbare Verbindungsschaltung (50, 60, 70) umfaßt, welche dazu eingerichtet ist, selektiv Signale an die, von den und zwischen den mehreren Logikkomponenten (30) und Speicher (30) zu übertragen.
  9. Schaltung nach Anspruch 8, wobei die Speicherzellen (200) in einer Mehrzahl von sich schneidenden Reihen und Spalten solcher Zellen organisiert sind und wobei jeder der Schreib-Ports umfaßt eine Spaltenauswahlschaltung (110-1, 110-2), welche dazu eingerichtet ist, eine der Spalten zum Datenempfang auszuwählen; eine Reihenauswahlschaltung (130-1, 130-2), welche dazu eingerichtet ist, eine der Reihen zum Datenempfang auszuwählen, wobei gleichzeitige Auswahl einer Reihe und Spalte bewirkt, daß die Speicherzelle (100) an der Schnittstelle jener Reihe und Spalte von dem Schreib-Port gelieferte Daten speichert.
  10. Schaltung nach Anspruch 9, wobei die Spalten- und Reihenauswahlschaltungen (110-1, 130-1) jedes Schreib-Ports getrennt von den Spalten- und Reihenauswahlschaltungen (110-2, 130-2) des anderen Schreib-Ports sind.
  11. Schaltung nach Anspruch 9, wobei die Spalten- und Reihenauswahlschaltungen (110-1, 130-1) jedes Schreib-Ports Verbindungen mit der Verbindungsschaltung (50, 60, 70) aufweisen, die getrennt von den Verbindungen der Spalten- und Reihenauswahlschaltungen (110-2, 130-2) des anderen Schreib-Ports mit der Verbindungsschaltung sind.
  12. Schaltung nach Anspruch 8, wobei jeder Schreib-Port wahre und komplementäre Leiter (112-1D, 112-2D) zur Übertragung von Daten, die in eine Speicherzelle zu schreiben sind, in wahrer bzw. komplementärer Form umfaßt.
  13. Schaltung nach Anspruch 12, wobei jeder der Schreib-Ports ferner eine Switching-Schaltung umfaßt, die dazu eingerichtet ist, eine Speicherzelle, die die Daten auf den wahren und komplementären Leitern jenes Schreib-Ports empfangen soll, selektiv in Reihe zwischen jenen wahren und komplementären Leitern zu verbinden.
  14. Schaltung nach Anspruch 13, wobei die Switching-Schaltung erste und zweite Schalter umfaßt, die jeder Speicherzelle zugeordnet sind, wobei jede Speicherzelle in Reihe zwischen dem ersten und zweiten jener Speicherzelle zugeordneten Schalter verbunden ist, und jede Speicherzelle und ihre zugeordneten ersten und zweiten Schalter in Reihe zwischen den wahren und komplementären Leitern verbunden sind.
  15. Schaltung nach Anspruch 14, wobei die ersten und zweiten jeder Speicherzelle zugeordneten Schalter parallel gesteuert sind.
  16. Schalter nach Anspruch 8, wobei die Speicherzellen in mehreren sich schneidenden Reihen und Spalten solcher Zellen organisiert sind, und wobei jeder der Lese-Ports umfaßt eine Reihenauswahlschaltung, die dazu eingerichtet ist, eine der Reihen als die Reihe zu wählen, aus der Daten gelesen werden; und eine Spaltenauswahlschaltung, die dazu eingerichtet ist, eine der Spalten als die Spalte zu wählen, aus der Daten gelesen werden, wobei gleichzeitige Auswahl einer Reihe und Spalte bewirkt, daß Daten aus der Speicherzelle an der Schnittstelle jener Reihe und Spalte gelesen werden.
  17. Schaltung nach Anspruch 16, wobei die Reihen- und Spaltenauswahlschaltungen jeder Lese-Schaltung getrennt von den Reihen- und Spaltenauswahlschaltungen des anderen Lese-Ports sind.
  18. Schaltung nach Anspruch 17, wobei die Reihen- und Spaltenauswahlschaltungen jedes Lese-Ports Verbindungen mit der Verbindungsschaltung aufweisen, die getrennt zu den Verbindungen der Reihen- und Spaltenauswahlschaltungen des anderen Lese-Ports mit der Verbindungsschaltung sind.
  19. Schaltung nach Anspruch 8, wobei jeder Lese-Port erste und zweite Leiter umfaßt, die auf unterschiedliche erste bzw. zweite Potentiale vorgespannt sind.
  20. Schaltung nach Anspruch 19, wobei jeder Lese-Port ferner eine Switching-Schaltung umfaßt, die jeder Speicherzelle zugeordnet und dazu eingerichtet ist, eine Kurzschlußverbindung zwischen den ersten und zweiten Leitern als Antwort auf die Daten in jener Speicherzelle und Auswahl jener Speicherzelle als die zu lesende Speicherzelle selektiv zu produzieren.
  21. Schaltung nach Anspruch 20, wobei die Switching-Schaltung erste und zweite Schalter umfaßt, die jeder Speicherzelle zugeordnet und miteinander in Reihe zwischen den ersten und zweiten Leitern verbunden sind, wobei der erste Schalter durch die zugeordnete Speicherzelle gesteuert und der zweite Schalter durch den Lese-Port aktiviert ist, wenn jene Speicherzelle gelesen werden soll.
  22. Digitales Verarbeitungssystem, welches umfaßt eine Verarbeitungsschaltung; einen Speicher, der mit der Verarbeitungsschaltung gekoppelt ist; und eine programmierbare Schaltung nach einem der vorhergehenden Ansprüche, die mit der Verarbeitungsschaltung und dem Speicher gekoppelt ist.
  23. Leiterplatte, auf welcher eine programmierbare Schaltungsvorrichtung angeordnet ist, wie sie in Anspruch 1 definiert ist.
  24. Leiterplatte nach Anspruch 23, welche ferner umfaßt einen Speicher, der auf der Leiterplatte angeordnet und mit der programmierbaren Schaltung gekoppelt ist.
  25. Leiterplatte nach Anspruch 23, welche ferner umfaßt eine Verarbeitungsschaltung, welche auf der Leiterplatte angeordnet und mit der integrierten programmierbaren Logik-Schaltungsvorrichtung gekoppelt ist.
  26. Schaltung nach einem der Ansprüche 1 bis 21 mit wenigstens zwei Schreib-Ports und einem Lese-Port.
  27. Schaltung nach einem der Ansprüche 1 bis 21 mit wenigstens zwei Lese-Ports und einem Schreib-Port.
  28. Schaltung nach einem der vorhergehenden Ansprüche, wobei die Signale Daten umfassen, die über den Schreib-Port in den Speicher geschrieben werden sollen.
  29. Schaltung nach einem der vorhergehenden Ansprüche, wobei die Signale Adress-Signale umfassen.
DE60129269T 2000-03-15 2001-03-12 Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung Expired - Lifetime DE60129269T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US18967700P 2000-03-15 2000-03-15
US189677P 2000-03-15
US703914 2000-11-01
US09/703,914 US6400635B1 (en) 2000-03-15 2000-11-01 Memory circuitry for programmable logic integrated circuit devices

Publications (2)

Publication Number Publication Date
DE60129269D1 DE60129269D1 (de) 2007-08-23
DE60129269T2 true DE60129269T2 (de) 2008-04-17

Family

ID=26885403

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60129269T Expired - Lifetime DE60129269T2 (de) 2000-03-15 2001-03-12 Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung

Country Status (4)

Country Link
US (2) US6400635B1 (de)
EP (1) EP1143452B1 (de)
JP (1) JP2001326572A (de)
DE (1) DE60129269T2 (de)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7146441B1 (en) * 1998-03-16 2006-12-05 Actel Corporation SRAM bus architecture and interconnect to an FPGA
US7096324B1 (en) 2000-06-12 2006-08-22 Altera Corporation Embedded processor with dual-port SRAM for programmable logic
US6661733B1 (en) * 2000-06-15 2003-12-09 Altera Corporation Dual-port SRAM in a programmable logic device
US7054986B2 (en) * 2001-03-30 2006-05-30 Nokia Corporation Programmable CPU/interface buffer structure using dual port RAM
KR100421040B1 (ko) * 2001-05-07 2004-03-03 삼성전자주식회사 제어할 수 있는 가상 공급 전원을 이용하여 소비전력 및데이터출력시간이 감소된 반도체 메모리 셀
US7254690B2 (en) * 2003-06-02 2007-08-07 S. Aqua Semiconductor Llc Pipelined semiconductor memories and systems
US7139213B2 (en) * 2003-06-02 2006-11-21 Silicon Aquarius, Inc. Multiple data path memories and systems
US7110304B1 (en) 2004-08-26 2006-09-19 Altera Corporation Dual port memory array using shared write drivers and read sense amplifiers
US20070208968A1 (en) * 2006-03-01 2007-09-06 Anand Krishnamurthy At-speed multi-port memory array test method and apparatus
US7639557B1 (en) 2007-03-05 2009-12-29 Altera Corporation Configurable random-access-memory circuitry
US8102187B2 (en) * 2008-05-02 2012-01-24 Texas Instruments Incorporated Localized calibration of programmable digital logic cells
US8547774B2 (en) * 2010-01-29 2013-10-01 Mosys, Inc. Hierarchical multi-bank multi-port memory organization
US9965208B1 (en) * 2012-02-23 2018-05-08 Micron Technology, Inc. Memory device having a controller to enable and disable mode control circuitry of the controller
US9305614B2 (en) * 2012-12-21 2016-04-05 Cypress Semiconductor Corporation Memory device with internal combination logic
JP2022133577A (ja) * 2021-03-02 2022-09-14 キオクシア株式会社 メモリデバイス、メモリシステム、及びメモリデバイスの製造方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3473160A (en) 1966-10-10 1969-10-14 Stanford Research Inst Electronically controlled microelectronic cellular logic array
US4875196A (en) * 1987-09-08 1989-10-17 Sharp Microelectronic Technology, Inc. Method of operating data buffer apparatus
US5010519A (en) * 1987-11-17 1991-04-23 Mitsubishi Denki Kabushiki Kaisha Dynamic semiconductor memory device formed by 2-transistor cells
US5550782A (en) 1991-09-03 1996-08-27 Altera Corporation Programmable logic array integrated circuits
JP2905647B2 (ja) * 1992-04-30 1999-06-14 三菱電機株式会社 スタティックランダムアクセスメモリ装置
GB2278698B (en) * 1993-05-05 1997-09-03 Hewlett Packard Co Multi-ported data storage device with improved cell stability
US5689195A (en) 1995-05-17 1997-11-18 Altera Corporation Programmable logic array integrated circuit devices
US5566123A (en) 1995-02-10 1996-10-15 Xilinx, Inc. Synchronous dual port ram
US5559450A (en) 1995-07-27 1996-09-24 Lucent Technologies Inc. Field programmable gate array with multi-port RAM
US5715197A (en) 1996-07-29 1998-02-03 Xilinx, Inc. Multiport RAM with programmable data port configuration
US5933023A (en) 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US5901079A (en) * 1997-01-13 1999-05-04 International Business Machines Corporation Skewed memory cell apparatus and method
US6020759A (en) 1997-03-21 2000-02-01 Altera Corporation Programmable logic array device with random access memory configurable as product terms
US6011744A (en) 1997-07-16 2000-01-04 Altera Corporation Programmable logic device with multi-port memory
US6052327A (en) 1997-10-14 2000-04-18 Altera Corporation Dual-port programmable logic device variable depth and width memory array
US6288970B1 (en) 1997-10-16 2001-09-11 Altera Corporation Programmable logic device memory array circuit having combinable single-port memory arrays
US6144573A (en) 1998-06-26 2000-11-07 Altera Corporation Programmable logic devices with improved content addressable memory capabilities

Also Published As

Publication number Publication date
EP1143452A2 (de) 2001-10-10
JP2001326572A (ja) 2001-11-22
EP1143452B1 (de) 2007-07-11
US6400635B1 (en) 2002-06-04
EP1143452A3 (de) 2003-09-03
US20020126562A1 (en) 2002-09-12
US6556502B2 (en) 2003-04-29
DE60129269D1 (de) 2007-08-23

Similar Documents

Publication Publication Date Title
DE4107889C2 (de) Halbleiterspeichereinrichtung und N-Bit-Datenpfad
DE60129269T2 (de) Speicherschaltung für eine programmierbare logische integrierte Schaltungsanordnung
DE69637399T2 (de) Grobkörnig strukturierte integrierte Halbleiterschaltung mit Nachschlagtabellen
DE69822796T2 (de) Nutzerprogrammierbarer prozessor
DE3645224C2 (de)
DE69633370T2 (de) Benutzerprogrammierbares Gatterfeld mit Multiport-RAM
DE69933525T2 (de) Architekturen für programmierbare logische Vorrichtungen
DE69834011T2 (de) Statische Direktzugriffspeicherschaltungen
DE3906895C2 (de)
DE3841944C2 (de)
DE69721342T2 (de) FPGA mit erhöhter Zellnutzung
EP0908893B1 (de) Speicherarchitektur mit Mehrebenenhierarchie
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
EP0012796B1 (de) Speicheranordnung mit Speicherzellen zum gleichzeitigen Einlesen und Auslesen von Information
DE3207210A1 (de) Monolithische speichervorrichtung
DE3618136C2 (de)
DE69534659T2 (de) Architektur und Verbindungsmodel für programmierbare logische Schaltungen
DE60012639T2 (de) Verbindungsressourcen für programmierbare logische integrierte schaltungen
DE2706807A1 (de) Einrichtung und verfahren zum verarbeiten von information in form digitaler signale
DE19651340C2 (de) Halbleiterspeichervorrichtung
WO2004025493A1 (de) Integrierter schaltkreis mit umschaltung durch multiplexer zwischen normalbetrieb und testbetrieb
DE2038123B2 (de) Schaltungsanordnung zur logischen verknuepfung
DE102004006769B3 (de) Auslesevorrichtung
DE1959374B2 (de) Einspeicherungs- und Ausspeicherungsschaltungsanordnung für eine binäre Halbleiter-Speicherzelle
DE3430734C2 (de)

Legal Events

Date Code Title Description
8364 No opposition during term of opposition