-
Die
vorliegende Erfindung betrifft programmierbare, multifunktionale,
digitale integrierte Logikmatrixschaltungen der Art, die als anwenderprogrammierbare
Gate-Arrays (FPGAs) bekannt sind, und insbesondere Verbesserungen
in der Struktur der konfigurierbaren Logikzellen solcher FPGAs sowie der
direkten Zellen-Zellen-Verbindungen und des Verbindungsbusnetzwerks
solcher FPGAs, die zum Verbessern der Zellennutzung und -funktionalität zum Ausführen von
Logikfunktionen ausgelegt sind. Die Erfindung betrifft auch FPGAs,
die für
den Anwender zugängliche
Speicherelemente darin enthalten, um eine gewisse Speicherfähigkeit
zur Verwendung durch die Logikzellen der FPGA-Bauelemente zu integrieren.
-
Eine
digitale Logik kann unter Verwendung von beliebigen von mehreren
erhältlichen
integrierten Schaltungsarchitekturen implementiert werden, einschließlich festverdrahteten
anwendungsspezifischen integrierten Schaltungen (ASICs), masken- oder
schmelzverbindungsprogrammierten kundenspezifischen Gate-Arrays (CGAs), einer
programmierbaren Matrixlogik (PALs), programmierbaren Logikmatrizes
(PLAs) und anderen programmierbaren Logikbauelementen (PLDs), die
typischerweise die Technologie nicht-flüchtiger EPROM- oder EEPROM-Speicherzellen
zur Konfiguration durch den Anwender verwenden, und anwenderprogrammierbaren
Gate-Arrays (FPGAs), die im Allgemeinen SRAM-Konfigurations-Bits
verwenden, die während jedes
Einschaltens des Chips gesetzt werden. Unter diesen verschiedenen
Architekturen sind gewöhnlich jene
mit einer anwenderprogrammierbaren, löschbaren und wiederprogrammierbaren
Fähigkeit
gegenüber
jenen mit fester oder nur einmalig programmierbarer Funktionalität bevorzugt.
FPGAs sind in der Lage, große,
sehr komplexe Logikfunktionen zu implementieren, die nicht in eine
Zweiebenen-Produktsummenform umgewandelt werden müssen, um
in diese Bauelemente programmiert zu werden. Die SRAM-gesteuerten
Schalter ermöglichen
nicht nur, dass verschiedene Funktionen geladen werden, um ein Bauelement
sehr leicht zu rekonfigurieren, sondern sind auch für eine Hochgeschwindigkeitsoperation
optimiert.
-
Eine
breite Vielfalt von FPGAs stehen nun zur Verfügung, die sich in der Komplexität von ihren Komponentenlogikzellen
sowie in den Verbindungsbetriebsmitteln, die vorgesehen sind, unterscheiden. FPGAs
sind beispielsweise im US-Pat. Nr. 4 706 216; 4 758 985; 5 019 736;
5 144 166; 5 185 706; 5 231 588; 5 258 688; 5 296 759; 5 343 406;
5 349 250; 5 352 940; 5 408 434; und vielen anderen offenbart.
-
Eine
typische FPGA-Architektur besteht aus einer zweidimensionalen Anordnung
oder Matrix von konfigurierbaren Logikzellen, die durch eine programmierbare
Verbindungsstruktur, die sowohl aus direkten Verbindungen zwischen
benachbarten Logikzellen als auch einem Netzwerk von Busleitungen und
Verbindungsschaltern, die zwischen den Zeilen und Spalten von Zellen
in der Matrix verteilt sind, besteht, selektiv miteinander verbunden
werden können.
Um den Umfang der Matrix verbindet ein Satz von Eingangs/Ausgangs-Kontaktstellen mit
dem Busnetzwerk, den Umfangslogikzellen oder beiden, wobei ermöglicht wird,
dass Signale in den und aus dem Chip übertragen werden. Jede einzelne
Logikzelle ist programmiert, um eine relativ einfache Logikfunktion
auszuführen.
Jede Logikzelle umfasst typischerweise eine Eingangs- und Ausgangsauswahllogik
(MUX), eine kombinatorische Logik, eine oder mehrere Speicherelemente
(Flip-Flop-Register) für eine
synchrone Operation und möglicherweise
ein oder mehrere interne Rückführungsleitungen
zum Ausführen
einer sequentiellen Logik. Die kombinatorische Logik in den Zellen
von einigen FPGAs liegt in Form von Logikgattern mit fester Funktion,
möglicherweise
mit auswählbaren
Eingangskonfigurationen, vor. Eine bevorzugte FPGA-Zelle verwendet
jedoch einen Nachschlagetabellenspeicher (konfigurierter SRAM),
um eine breitere Vielfalt von Logikfunktionen vorzusehen. Die Speicherzellen
der Nachschlagetabelle speichern einen Satz von Datenbits, deren
Werte der Wahrheitstabelle für
eine spezielle Funktion entsprechen. Ein Satz von Eingangssignalen,
die auf den Adressenleitungen des Speichers dargestellt werden,
bewirkt, dass der Speicher ein Ein-Bit-Ausgangssignal liefert, das
der Wert ist, der an der Adresse gespeichert ist, die durch diese Eingangssignale
festgelegt wird. Daher implementiert der Nachschlagetabellenspeicher
eine Funktion, die durch die gespeicherten Wahrheitswerte im Speicher
festgelegt ist. Die Verbindungsstruktur sieht direkte Verbindungen
zwischen jeder Zelle und ihren nächsten
Nachbarn in derselben Zeile oder Spalte der Matrix vor. Das US-Pat.
Nr. 5 296 759 sieht zusätzlich
Verbindungen mit diagonal benachbarten Zellen in einer Richtung
vor. Zusätzlich
zu den direkten Zellen-Zellen-Verbindungen
sieht ein Satz von "lokalen" Busleitungen Verbindungen
zwischen den Zellen und einem Busleitungsnetzwerk vor. Regelmäßig beabstandete
konfigurierbare Schalter, die Zwischenverstärkereinheiten genannt werden,
verbinden die kurzen lokalen Bussegmente mit längeren Expressbussen. Die Zwischenverstärker sind
normalerweise in Zeilen und Spalten ausgerichtet, wodurch die gesamte
Matrix in Blöcke
von Zellen unterteilt wird. Eine übliche Anordnung organisiert
Gruppen von 64 Logikzellen zu 8 × 8-Blöcken, die jeweils einen zugehörigen Satz
von lokalen Bussegmenten aufweisen. Im Gegensatz zu den lokalen
Bussegmenten erstrecken sich die Expressbusse über mehr als einen Block von
Zellen über
die Zwischenverstärker,
was ermöglicht,
dass Signale zwischen verschiedenen Blöcken von Zellen geleitet werden.
Die Expressbusleitungen greifen auf die Logikzellen nur über die
lokalen Bussegmente zu, wobei Signallaufzeitverzögerungen auf den Expressleitungen
verringert werden.
-
FPGA-Entwickler
machen weiterhin Verbesserungen bei einem Versuch, die Geschwindigkeit und
Funktionsflexibilität
der Bauelemente zu steigern. Es ist beispielsweise ein Konstruktionsziel,
die Funktionsfähigkeiten
der einzelnen Logikzellen zu erhöhen,
während
gleichzeitig die Zellen klein und einfach gehalten werden, was eine
Haupteigenschaft der FPGA-Architektur ist. Ein weiterer Bereich,
der eine Verbesserung benötigt,
ist die Gesamtzellennutzung der Schaltung. Aufgrund einer Anzahl
von Kompromissen und Ineffizienzen in dem Busleitungsnetzwerk und
der Zellen-Bus-Schnittstelle werden FPGA-Zellen insbesondere häufig nur
als "Drahtzellen" zum Leiten von Signalen
zwischen anderen Zellen verwendet, was rechtwinklige Wendungen, Überkreuzungsverbindungen
und eine Signalausgangsverzweigung vorsieht. Eine solche Signalleitweglenkung
ist eine ineffiziente Verwendung von Logikzellen. Idealerweise würde die
Leitweglenkung nur durch die direkten Verbindungen und das Busleitungsnetzwerk
vorgesehen werden, während
die Logikzellen nur für
die Logik verwendet werden würden. Aufgrund
der relativen Einfachheit der von einzelnen Zellen durchgeführten Funktionen
stellen einige Konstruktionen auch Zellen bereit, die zum Ausführen von
speziellen Funktionen wie z. B. Decodier- und schnellen Übertragungsoperationen
reserviert sind. Wenn die spezielle Funktion nicht erforderlich
ist, wird diese Zelle leider verschwendet. Die Zellenkonstruktion
selbst kann zur Gesamtnutzung von Zellen in einer Matrix beitragen.
Vorzugsweise weisen die Zellen eine Spiegel- und Drehsymmetrie bezüglich der
Funktionen auf, die für
ihre mehreren Eingänge und
Ausgänge
verfügbar
sind, was den Bedarf für
die Signalwendung verringert und die Funktionsanordnung der Matrix
von Zellen vereinfacht. Schließlich besteht
bei den meisten FPGAs ein Bedarf für einen für den Anwender zugänglichen
Direktzugriffsspeicher (RAM). Verschiedene Hersteller verwenden
unterschiedliche Methoden, um diesen erforderlichen Ein-Chip-Speicher
vorzusehen. Altera stellt beispielsweise einen RAM an der Außenkante
der Matrix bereit, während
Actel abwechselnde Bänder
von Logikzellen und eines RAM bereitstellt. Xilinx ermöglicht,
dass der Nachschlagetabellenspeicher innerhalb der Logikzellen durch
den Anwender während der
Bauelementoperation aktualisiert wird, um die von diesen Zellen
bereitgestellten Funktionen zu ändern.
-
Eine
Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines
FPGA mit erhöhter
Logikzellenfunktionalität,
verbesserter Zellennutzung, effizienterer Signalleitweglenkung durch
das Busleitungsnetzwerk und direkten Zellen-Zellen-Verbindungen und
einer integrierten, für
den Anwender zugänglichen
Speicherfähigkeit
in dem Bauelement.
-
Ein
FPGA gemäß dem Oberbegriff
von Anspruch 1 ist aus
US 5 442
306 bekannt.
-
Die
Aufgabe wird durch ein FPGA nach Anspruch 1 gelöst, in dem jede Logikzelle
eine kombinatorische Logik in Form von einem Paar von Strukturen,
die als Nachschlagetabellen, für
den Anwender zugängliche
Speicherelemente oder beide funktionieren können, umfasst. Diese Strukturen
sind beide durch einen gemeinsamen Satz von Eingängen adressierbar, deren Ausgänge selektiv
für denselben Satz
von Ausgängen
verfügbar
sind, wobei ein Ausgang einen selektiven Zugriff auf ein Register
aufweist, und wobei noch ein weiterer Eingang in die Zelle selektiv
eines oder das andere Speicherelement-Ausgangssignal ausgeben kann,
um beide Speicherelemente effektiv zu einem einzelnen gröberen, vollständig adressierbaren
Speicherelement zu kombinieren. Zwei der Speicherelement-Adresseneingänge können Eingangssignale
empfangen, die von irgendwelchen von vier direkten Verbindungseingängen oder
einem lokalen Buseingang auswählbar sind.
-
1 ist
eine schematische Draufsicht auf eine FPGA-Schaltung.
-
2 ist
eine schematische Draufsicht auf vier Logikzellen der FPGA-Schaltung
von 1, die direkte Verbindungen zwischen Zellen darstellt.
-
3 ist
eine schematische Draufsicht auf vier Logikzellen einer FPGA-Schaltung,
die ein alternatives Ausführungsbeispiel
von direkten Zellen-Zellen-Verbindungen darstellt.
-
4 ist
eine schematische Draufsicht auf einen 4 × 4-Block von Logikzellen der
FPGA-Schaltung von 1 mit einem Busleitungsnetzwerk
und einem RAM.
-
5 ist
ein schematischer Logikebenen-Schaltplan einer Logikzelle der FPGA-Schaltung von 1.
-
6 ist
ein schematischer Schaltplan einer Zellen-Bus-Schnittstelle für die Logikzelle von 5.
-
7 und 8 sind
schematische Logikebenen-Schaltpläne von zwei alternativen Logikzellen-Ausführungsbeispielen
einer FPGA-Schaltung.
-
9 und 10 sind
schematische Drauf sichten auf Teile der FPGA-Schaltung von 1,
die eine Takt- und Rücksetzsignalverteilung
zeigen.
-
11 ist
eine schematische Draufsicht auf vier Blöcke von Zellen von 4,
die die versetzte Anordnung der Zwischenverstärker-Schalteinheiten in der
FPGA-Schaltung darstellt.
-
12 ist
eine schematische Draufsicht auf einen 3 × 3-Satz von Blöcken von
Zellen des FPGA von 1 und 4, die die
Anordnung von zweckorientierten Funktionselementen (DFE) wie z.
B. einem RAM an den Ecken von jedem Block zwischen den Zeilen und
Spalten von Zwischenverstärkern darstellt.
-
13 ist
ein schematischer Logikebenen-Schaltplan eines RAM und der RAM-Bus-Schnittstelle
für die
FPGA-Schaltung.
-
14 ist
eine schematische Draufsicht auf einen Teil einer FPGA-Schaltung,
die acht Blöcke
von Logikzellen und ihre zugeordneten RAM-Blöcke enthält, welche ein alternatives
Verbindungsschema des RAM mit dem Busnetzwerk zu dem in 4 gezeigten
darstellt.
-
15 ist
eine vergrößerte Ansicht
des RAM-Blocks in dem gestrichelten Kreis 150 in 14.
-
16 ist
ein teilweises schematisches Diagramm eines Satzes von Logikzellen
am Umfang der FPGA-Schaltung von 1, welches
die Anschlussfähigkeit
von Zellen an einen Satz von E/A-Kontaktstellen für die Schaltung
darstellt.
-
17 ist
ein schematischer Logikebenen-Schaltplan einer Eckenlogikzelle des
FPGA und der Zellen-Kontaktstellen-Schnittstelle gemäß einem Ausführungsbeispiel.
-
18 ist
ein teilweises schematisches Diagramm eines Satzes von Logikzellen
am Umfang der FPGA-Schaltung von 1, welches
eine alternative Anschlussfähigkeit
solcher Zellen an E/A-Kontaktstellen der Schaltung zu der in 16 gezeigten
darstellt.
-
19 ist
ein schematischer Logikebenen-Schaltplan einer Zellen-Kontaktstellen-Schnittstellenzusammenfassung
der in 18 gezeigten Anschlussfähigkeit.
-
20 und 21 sind
schematische Logikebenen-Schaltpläne von Zellen-Kontaktstellen-Schnittstellen
für zwei
Arten von E/A-Kontaktstellen gemäß einem
dritten Verbindungsausführungsbeispiel.
-
Mit
Bezug auf 1 umfasst eine integrierte Schaltung
eines anwenderprogrammierbaren Gate-Arrays (FPGA) eine Matrix oder
eine zweidimensionale Anordnung von mehreren Zeilen und Spalten
von programmierbaren Logikzellen 11. Jede der einzelnen
Logikzellen 11 kann konfiguriert oder programmiert werden,
um eine festgelegte Logikfunktion auszuführen. Die Zellen sind zusammen
sowohl direkt mit benachbarten Zellen, wie in 2 oder 3 zu
sehen, als auch über
ein Netzwerk von Busleitungen mit Verbindungsschaltern, wie in 4 zu
sehen, verbunden, um eine komplexere Gesamtlogikfunktion des gesamten
FPGA-Bauelements oder
-Chips zu erzielen, welche eine Zusammensetzung der viel einfacheren
Funktionen ist, die von jeder der einzelnen Zellen vorgesehen werden.
Somit muss in FPGA-Bauelementen die Funktion nicht als Zweiebenen-Produktsumme
berechnet werden, da die Verbindungsstruktur es möglich macht,
ein Ausgangssignal von irgendeiner Logikzelle einem Eingang irgendeiner anderen
Logikzelle zuzuführen,
wodurch eine Kette von Logikzellen gebildet wird, die eine Funktion
mit vielen Logikebenen erzeugen kann.
-
Das
Muster von lokalen und Expressbusleitungen und ihrer Verbindungs-Zwischenverstärkerschalter
in dem Busnetzwerk von 11 unterteilt die Grundmatrix
von Logikzellen in kleinere geradlinige Blöcke von Zellen. Der in 1 zu
sehende Satz von gestrichelten Linien 13 stellt diese unterteilte
Anordnung dar, in der Gruppen von 16 Logikzellen zu quadratischen
4 × 4-Blöcken von
Zellen organisiert sind. Jeder Block 15 weist seinen eigenen
Satz von zugeordneten lokalen Bussegmenten auf, die für diese
spezielle Gruppe von Logikzellen reserviert sind, wie nachstehend
mit Bezug auf 4 und 11 zu sehen
ist, während
sich Expressbusleitungen über mehr
als einen Block erstrecken, um Signale zwischen den verschiedenen
Blöcken
von Logikzellen zu leiten. Obwohl die in 1 gezeigte
Schaltung 32 Zeilen und Spalten von Zellen (insgesamt 1024
Logikzellen) aufweist, die als 8 × 8-Matrix von 4 × 4-Zellenblöcken organisiert
sind, können
andere Bauelemente typischerweise nicht mehr als 16 Zeilen und Spalten
von Zellen oder nicht weniger als 64 (oder mehr) Zeilen und Spalten
von Zellen aufweisen. Die Blöcke 15 von
Logikzellen 11 müssen
nicht über
das gesamte FPGA-Bauelement dieselbe Größe aufweisen. Verschiedene
Quadranten des Bauelements können
beispielsweise quadratische 4 × 4-,
6 × 6- oder
8 × 8-Blöcke oder
rechteckige 4 × 6-,
4 × 8-,
6 × 8-,
6 × 12-
oder 8 × 16-Blöcke usw.
enthalten.
-
Die
FPGA-Schaltung weist auch Eingangs/Ausgangs-(E/A)Kontaktstellen 17 auf,
die mit den Busleitungen und mit den Logikzellen entlang des Umfangs
der Matrix von Zellen verbunden sind, was ermöglicht, dass Signale zu und
von dem Chip übertragen
werden. Die Einzelheiten der Eingangs/Ausgangs-Kontaktstellen-Verbindungen
werden nachstehend mit Bezug auf 16–21 erörtert.
-
2 zeigt
die direkten Zellen-Zellen-Verbindungen für ein Ausführungsbeispiel der Schaltung.
Jede Logikzelle 11 weist einen ersten Satz von identischen
A-Ausgängen
und einen zweiten Satz von identischen B-Ausgängen auf. Die A-Ausgänge von
irgendeiner Zelle sind mit allen vier angrenzenden nächsten benachbarten
Logikzellen in derselben Zeile oder Spalte wie die Ausgabezelle
verbunden. Ebenso sind die B-Ausgänge von der Zelle auch mit allen
vier nächsten
benachbarten Zellen verbunden. jede Logikzelle weist auch einen
Satz von A-Eingängen
(mit An, Ae, As, Aw bezeichnet)
auf, die Signale empfangen, die von den jeweiligen A-Ausgängen der vier
nächsten
benachbarten Zellen ausgegeben werden. Schließlich weist jede Logikzelle
einen Satz von B-Eingängen
(hier als Bn, Be,
Bs, Bw bezeichnet)
auf, die Signale empfangen, die von den jeweiligen B-Ausgängen der
vier nächsten
benachbarten Zellen ausgegeben werden. Somit sind zwischen beliebigen zwei
benachbarten Zellen in derselben Zeile oder Spalte vier Verbindungssignalwege
vorhanden, wobei zwei Wege in jede Richtung verlaufen.
-
3 zeigt
direkte Zellen-Zellen-Verbindungen für ein alternatives Ausführungsbeispiel
einer FPGA-Schaltung. Bei diesem Ausführungsbeispiel weist jede Logikzelle 12 einen
ersten Satz von identischen A-Ausgängen und einen zweiten Satz
von identischen B-Ausgängen
auf. Die A-Ausgänge
von irgendeiner Zelle sind mit allen vier angrenzenden nächsten benachbarten
Logikzellen in derselben Zeile oder Spalte wie die Ausgabezelle
verbunden, aber die B-Ausgänge
von der Zelle sind mit den vier diagonal angrenzenden benachbarten
Zellen verbunden. Jede Logikzelle weist auch einen Satz von A-Eingängen (mit
An, Ae, As, Aw bezeichnet),
die Signale empfangen, die von den jeweiligen A-Ausgängen der
vier nächsten
benachbarten Zellen in derselben Zeile oder Spalte wie die Empfangszelle
ausgegeben werden, und einen Satz von B-Eingängen (mit Bnw,
Bne, Bse, Bsw bezeichnet), die Signale empfangen, die
von den jeweiligen B-Ausgängen
der vier diagonal angrenzenden benachbarten Zellen ausgegeben werden,
auf. Somit steht jede Logikzelle mit allen acht benachbarten Zellen
in Verbindung, und zwischen beliebigen zwei Zellen sind zwei Verbindungssignalwege
vorhanden, wobei einer in jede Richtung verläuft.
-
4 zeigt
die Zellen-Bus-Verbindungen in der FPGA-Schaltung. Die 4 × 4-Gruppe von Logikzellen 11 in
einem einzelnen Block weist Busleitungen auf, die zwischen den Zeilen
und Spalten von Zellen verteilt sind. Insbesondere können fünf Sätze von drei
vertikalen Busleitungen 19 benachbart zu jeder Spalte von
Logikzellen und fünf
Sätze von
drei horizontalen Busleitungen 21 benachbart zu jeder Zeile von
Logikzellen vorhanden sein. Jeder Satz von drei Busleitungen umfasst
eine lokale Busleitung 23 und zwei Expressbusleitungen 25.
Die Logikzellen 11 sind nur mit den lokalen Busleitungen 23 direkt
verbunden, wobei der Zugang zu den Expressbusleitungen 25 über die
lokalen Busleitungen an Verbindungs-Zwischenverstärkereinheiten 27,
die sich am Umfang jedes Blocks von Zellen befinden, indirekt ist. Wie
nachstehend mit Bezug auf 11 erläutert wird,
weisen die Zwischenverstärker 27 Busverbindungen
auf, die derart versetzt sind, dass jede Expressbusleitung nur nach
jeweils 8 Zellen anstatt jeweils 4 Zellen auf einen Zwischenverstärker trifft. Jede
Logikzelle 11 weist 10 bidirektionale Datenbusleitungen 29 auf,
die die Logikzelle mit den 5 horizontalen lokalen Busleitungen und
mit den 5 vertikalen lokalen Busleitungen benachbart zur jeweiligen
Zeile und Spalte von Zellen, in denen sich diese spezielle Logikzelle
befindet, verbinden. Diese 10 bidirektionalen Leitungen 29 (in 6 als
V0–V4
und H0–H4
bezeichnet) stehen mit ihrer entsprechenden Logikzelle in einer
Weise in Verbindung, die nachstehend mit Bezug auf 6 genauer
beschrieben wird, um Datensignalwege vorzusehen, über die
Zelleneingangssignale (in 5 und 6 AL, BL, CL und
DL) und Zellenausgangssignale (L in 5 und 6)
zwischen den Logikzellen und dem Busnetzwerk übertragen werden können.
-
Mit
Bezug auf 5 weist ein Ausführungsbeispiel
einer Logikzelle in dem FPGA der vorliegenden Erfindung vier Sätze von
Eingängen,
einschließlich
jenen, die als A-Eingänge bezeichnet
sind (direkte Verbindungen An, Ae, As, Aw von
benachbarten Zellen und einem lokalen Buseingang AL),
einen zweiten Satz, der als B-Eingänge bezeichnet ist (direkte
Verbindungen Bn, Be,
Bs, Bw von den benachbarten
Zellen und einem lokalen Buseingang BL),
einen dritten lokalen Buseingang, der als CL bezeichnet
ist und einen vierten lokalen Buseingang, der als DL bezeichnet
ist, auf. Die Logikzelle weist auch drei Sätze von Ausgängen auf,
einschließlich
A-Ausgängen
und B-Ausgängen,
die mit den jeweiligen A-Eingängen und
B-Eingängen
der vier benachbarten Zellen verbunden sind, und auch einschließlich eines
lokalen Busausgangs L. Die A- und B-Ausgänge und die direkten A- und
B-Eingänge
sind wie vorstehend mit Bezug auf 2 beschrieben
verbunden. Die lokalen Buseingänge
(AL, BL, CL, DL) und der lokale
Busausgang (L) einer Zelle sind mit den zehn benachbarten horizontalen
und vertikalen lokalen Busleitungen 23 über Verbindungssignalwege 29 wie
vorher mit Bezug auf 4 beschrieben und genauer in
der in 6 gezeigten Weise verbunden. Insbesondere verläuft in 6 jeder
der lokalen Bus-Verbindungssignalwege (H0–H4 und V0–V4) durch ein entsprechendes
Durchgangsgatter 31 zu einer von fünf Zwischensignalleitungen 330 –334 innerhalb der Zelle. Jede Zwischensignalleitung 330 –334 kann durch die Durchgangsgatter 31 mit
einem von zwei lokalen Bus-Verbindungssignalwegen
gekoppelt werden, wobei einer von ihnen von einer entsprechenden
vertikalen Busleitung (über
die Wege V0–V4)
und der andere von einer horizontalen Busleitung (über die Wege
H0–H4)
stammt. Jede dieser fünf
Zwischensignalleitungen 330 –334 ist wiederum mit vier Buseingangs-Auswahlmultiplexern 35A –35D verbunden. Somit weist jeder Multiplexer 35A –35D fünf
Eingänge auf,
einen für
jede Zwischensignalleitung 330 –334 . Der Ausgang jedes Multiplexers 35A –35D bildet die vier lokalen Buseingänge (AL, BL, CL,
DL) der Zelle. Daher kann irgendeine der
zehn benachbarten lokalen Busleitungen, mit denen die Logikzelle
verbunden ist, Eingangssignale zu irgendeinem der vier lokalen Buseingänge liefern,
wie durch die Durchgangsgatter 31 und die Auswahl der Multiplexer 35A –35D konfiguriert. Der lokale Busausgang
L für die Logikzelle
steht auch mit den fünf
Zwischensignalleitungen 330 –334 über
einen Satz von Durchgangsgattern 37 in Verbindung. Daher
kann der Ausgang L verbunden werden, um Ausgangssignale zu irgendeiner
der zehn benachbarten lokalen Busleitungen zu liefern, wie durch
die Durchgangsgatter 37 und 31 konfiguriert. Falls
erwünscht,
kann der Ausgang L sowohl mit einer horizontalen Busleitung als auch
einer vertikalen Busleitung gleichzeitig verbunden werden, indem
beide entsprechenden Verbindungsdurchgangsgatter 31 freigegeben
werden. Obwohl üblicherweise
eine der Zwischensignalleitungen 33 durch ein Durchgangsgatter 37 zur
Verwendung des lokalen Busausgangs L ausgewählt wird und die anderen vier
Zwischensignalleitungen 33 durch die Multiplexer 35A –35D zum Empfang von lokalen Buseingangssignalen
ausgewählt
werden (und die entsprechenden Ausgangsdurchganggatter 37 gesperrt
werden), hat der Anwender die Wahl, die Ausgangsdurchgangsgatter 37 und
die Eingangsauswahlmultiplexer 35A –35D zu konfigurieren, um einen Rückführungsweg
vom lokalen Busausgang L zu irgendeinem der lokalen Buseingänge AL, BL oder DL vorzusehen, wenn zusätzliche Rückführungswege erforderlich sind.
(Wie in 5 zu sehen, ermöglicht die
interne Zellenstruktur bereits die Auswahl der Rückführung gegen den lokalen CL-Buseingang durch den Multiplexer 39).
-
Wenn
man zu 5 zurückkehrt,
kann die interne Logik jeder Logikzelle zwei 8-Bit-Nachschlagetabellen
(L.U.T.s) 45 und 47 enthalten, die durch die A-,
B- und C-Eingänge
adressiert werden. Die Nachschlagetabellen bestehen typischerweise
aus statischen RAM-Speicherzellen, die als Festwertspeicher betrieben
werden, d. h. die während
der anfänglichen
Konfiguration des FPGA-Bauelements belegt werden und während des
Betriebs nicht dynamisch umprogrammiert werden. Der Satz von A-Eingängen (An, Ae, As,
Aw, AL) wird von
einem Multiplexer 41 empfangen und einer von ihnen wird
ausgewählt. Der
ausgewählte
Ausgang dieses A-Multiplexers wird mit dem a0-Adresseneingang
der ersten L.U.T. 45 und dem a1-Adresseneingang
der zweiten L.U.T. 47 verbunden. Der Satz von B-Eingängen (Bn, Be, Bs, Bw, BL) wird ebenso
durch einen B-Eingangs-Auswahlmultiplexer 43 ausgewählt und
der ausgewählte Ausgang
wird mit dem a0-Adresseneingang der zweiten L.U.T. 47 und
dem a1-Adresseneingang
der ersten L.U.T. 45 verbunden. Ein dritter Multiplexer 39 empfängt den
lokalen Buseingang CL und ein internes Rückführungssignal
auf der Rückführungsleitung 40 und
gibt eines von ihnen an die a2-Adresseneingänge der
ersten und der zweiten L.U.T. 45 und 47 aus. Die
Logikzelle verwendet die zwei 8-Bit-Nachschlagetabellen 45 und 47,
um eine breite Vielfalt einer kombinatorischen Logik bereitzustellen.
Die SRAM-Speicherzellen der zwei L.U.T.s 45 und 47 speichern
einen Satz von Datenbits, deren Werte der Wahrheitstabelle für eine spezielle
Logikfunktion entsprechen. Wenn ein Satz von Eingangssignalen an jedem
der drei Adresseneingänge
(a0–a2) der L.U.T.s dargestellt wird, lesen die
zwei Tabellen die jeweiligen Bitwerte, die an den Adressen gespeichert
sind, die durch diese Eingangssignale festgelegt werden. Somit liefert
jede L.U.T. 45 und 47 an ihrem jeweiligen Ausgang 49 und 51 ein
Ein-Bit-Ausgangssignal, das eine spezielle Funktion des Satzes von
Eingangssignalen ist, wobei die vom Speicher implementierte Funktion
durch die gespeicherten Wahrheitswerte festgelegt ist.
-
Die
Ausgänge 49 und 51 der
Nachschlagetabellen 45 und 47 verzweigen sich
zu einer Anzahl von Signalwegen, die sowohl zu den A- und B-Ausgängen der
Zelle als auch zum lokalen Busausgang L führen. Insbesondere sind die
Ausgänge 49 und 51 der
L.U.T.s mit jeweiligen Datenleitungen 52 und 53 verbunden,
die durch jeweilige erste und zweite Ausgangsmultiplexer 54 und 55 mit
den Ausgangsleitungen 56 und 57 gekoppelt werden
können,
die Ausgangssignale zu den jeweiligen A- und B-Ausgängen liefern.
Die L.U.T.-Ausgänge 49 und 51 stehen
auch mit jeweiligen zweiten Datenleitungen 59 und 60 in Verbindung,
die zu noch einem dritten Ausgangsmultiplexer 61 führen. Das
Steuersignal für
den Multiplexer 61 wird vom lokalen Buseingang DL oder von einem Signal mit festem Logikpegel
("0" oder "1") abgeleitet, wie durch einen Multiplexer 62 ausgewählt. Wenn
das "0"-Logiksignal ausgewählt wird, überträgt der dritte
Ausgangsmultiplexer 61 das Ausgangssignal der ersten Nachschlagetabelle 45,
das über
die zweite Datenleitung 59 empfangen wird, zu seinem Ausgang 63,
wenn jedoch das "1"-Logiksignal ausgewählt wird, überträgt der dritte Ausgangsmultiplexer 61 das
Ausgangssignal der zweiten Nachschlagetabelle 47, das über die
andere, zweite Datenleitung 60 empfangen wird, zu seinem
Ausgang 63. wenn der lokale Buseingang DL ausgewählt wird,
ist die Steuerung des dritten Ausgangsmultiplexers 61 dynamisch.
Tatsächlich
wirken die zwei 8-Bit-Nachschlagetabellen 45 und 47 dann
zusammen als einzelne 16-Bit-Nachschlagetabelle, wobei der lokale
Buseingang DL als vierter Adresseneingang
zum Zugreifen auf das gewünschte
Datenbit, das in der kombinierten Nachschlagetabelle gespeichert
ist, wirkt. Der ausgewählte
dritte Multiplexerausgang 63 ist in zwei parallele Wege
aufgeteilt, wobei einer ein kombinatorischer Weg 65 ohne
Register und der andere ein Weg mit Register, der einen Flip-Flop 66 enthält, ist. Ein
vierter Ausgangsmultiplexer 67 verbindet einen dieser zwei
Wege mit seinem Ausgang 69. Der vierte Multiplexerausgang 69 teilt
sich auch in mehrere parallele Wege auf. Einer dieser Wege 70 führt zum
ersten Ausgangsmultiplexer 54 für eine mögliche Auswahl und Kopplung
mit den A-Ausgängen
der Zelle, und ein anderer dieser Wege 71 führt zum
zweiten Ausgangsmultiplexer 55 für eine mögliche Auswahl und Kopplung
mit den B-Ausgängen
der Zelle. Ein dritter Weg führt
durch einen Ausgangspuffer 73 zu einer Ausgangsleitung 75,
die Ausgangssignale zum lokalen Busausgang L der Zelle liefert.
Der Ausgangspuffer 73 kann ein Puffer mit drei Ausgangszuständen sein,
der durch ein Freigabesignal gesteuert wird, das von noch einem
weiteren Multiplexer 74 geliefert wird. Auswählbare Optionen
umfassen ein "1"-Logiksignal, bei
dem der Puffer 73 immer freigegeben wird, und zwei dynamische
Ausgangsfreigabesignale OEH und OEV, die von zweckorientierten Busleitungen
empfangen werden. Ein vierter Weg für den vierten Multiplexerausgang 69 ist
ein Rückführungsweg 40,
der zum Eingangsmultiplexer 39 für eine mögliche Auswahl anstelle des
lokalen Buseingangs CL führt.
-
Die
Zellenstruktur ergibt eine beträchtliche Flexibilität, während eine
relative Einfachheit und kompakte Größe beibehalten werden. Die
A- und B-Eingangsmultiplexer 41 und 43 sehen eine
vollständige
Symmetrie bezüglich
der vier nächsten
benachbarten Zellen vor. Ebenso sieht die Eingangsschaltung des
lokalen Busses von 6 eine vollständige Identität von Optionen
für alle
zehn der lokalen Busverbindungen der Zelle vor. Am Ausgangsende
der Zelle sind die A- und B-Ausgänge
mit entsprechenden Optionen versehen. Die A-Ausgänge können mit dem Ausgangssignal
der ersten Nachschlagetabelle 45 versehen werden, entweder
ohne Register über
die direkte Signalleitung 52 oder mit Register über die
zweite Signalleitung 59, das Register 66 und die
Signalleitung 70. Oder sie können mit dem Ausgangssignal
der zweiten Nachschlagetabelle 47 über die zweite Signalleitung 60 und
die Signalleitung 70, wieder entweder mit Register oder
ohne Register, versehen werden. Oder sie können mit Register oder ohne
Register mit dem Ausgangssignal der kombinierten 16-Bit-L.U.T. versehen
werden, wenn der lokale Buseingang DL durch
den Multiplexer 62 ausgewählt wird, um als vierter Adresseneingang
zu wirken. Ebenso können
die B-Ausgänge mit
dem Ausgangssignal der zweiten Nachschlagetabelle 47, der ersten
Nachschlagetabelle 45 oder der kombinierten 16-Bit-Nachschlagetabelle
versehen werden, und beliebige dieser Ausgänge können entweder mit Register
oder ohne Register sein. Dieselben Optionen stehen auch für den lokalen
Busausgang L der Zelle zur Verfügung.
-
Zusätzlich zu
den symmetrischen und flexiblen Eingangs- und Ausgangsauswahloptionen
führt die
Zellenstruktur zu einem relativ schnellen Durchsatz von den Eingängen zu
den direkten Zellen-Zellen-Ausgängen
der Zelle. Aufgrund der Einfachheit der Zelle können nicht mehr als drei Schaltungselemente
zwischen einem Eingang und einem Ausgang der Zelle vorhanden sein.
Insbesondere verlaufen die A-, B-, C- und D-Eingangssignale nur
durch eine Auswahlschaltung, nämlich
irgendeinen der Multiplexer 41, 43, 39 und 62,
bevor sie einen Adresseneingang a0, a1, a2 oder den Steuereingang
des Multiplexers 61 erreichen, die gemeinsam den Zugriff
auf die Datenbits steuern, die in den Nachschlagetabellen 45 und 47 gespeichert
sind. Ebenso kann auf der Ausgangsseite der Nachschlagetabellen 45 und 47 ein
auf den Nachschlagetabellen-Ausgangsleitungen 49 und 51 geliefertes
Signal nur durch einen Multiplexer 54 oder 55 verlaufen,
um die A- oder B-Ausgänge
der Zelle zu erreichen.
-
7 zeigt
eine alternative Logikzelle gemäß der vorliegenden
Erfindung. Die Zelle umfasst einen Satz von Eingangsmultiplexern 41', 43', 39' und 62', die A-, B-,
C- und D-Eingänge empfangen und
auswählen.
Die A-Eingänge
umfassen wie in 5 direkte Zellen-Zellen-Eingänge An, Ae, As und Aw von angrenzenden nächsten benachbarten Logikzellen
in derselben Zeile oder Spalte wie die fragliche Zelle, und umfassen
auch einen lokalen Buseingang AL. Die B-Eingänge können auch
dieselben wie in 5 sein oder können alternativ
Zellen-Zellen-Eingänge
Bnw, Bne, Bse und Bsw von diagonal
benachbarten Logikzellen zusätzlich
zum lokalen Buseingang BL umfassen. Somit
können
die B-Eingänge den
in 3 gezeigten Zellen-Zellen-Verbindungen entsprechen.
Der Eingangsmultiplexer 39' wählt entweder
einen lokalen Buseingang CL oder ein "-1"-Logiksignal aus.
Sein Ausgang 42' ist
mit einem Eingang eines UND-Gatters 44' verbunden. Ein Multiplexer 38' wählt entweder
ein Rückführungssignal
auf der Rückführungsleitung 34', einen lokalen
Buseingang DL oder ein "1"-Logiksignal
aus und übergibt
das ausgewählte
Signal an seinem Ausgang 40' dem
anderen Eingang des UND-Gatters 44'. Folglich kann das UND-Gatter 44' entweder den
lokalen Buseingang CL oder DL oder
ein Rückführungssignal
an seinem Ausgang 46' durchlassen
oder kann die lokalen Buseingänge
CL und DL (oder
den Eingang CL mit dem Rückführungssignal) logisch kombinieren
(UND), um die UND-Verknüpfung
dieser zwei Eingangssignale zu bilden. Die Zelle mit dem UND-Gatter 44' sieht die Fähigkeit
vor, ein Element eines Matrixmultiplizierers in einer einzelnen
Zelle zu implementieren. Wie in 5 stehen
die ausgewählten
Ausgänge
der Eingangsmultiplexer 41' und 43' mit zwei der
Adresseneingänge
a0 und a1 von zwei
8-Bit-Nachschlagetabellen 45' und 47' in Verbindung.
Der Ausgang 46' des UND-Gatters 44' ist mit einem
dritten Adresseneingang a2 der Nachschlagetabellen 45' und 47' verbunden.
-
Wie
in 5 sind die Ausgänge der Nachschlagetabellen 45' und 47' über die
Ausgangsmultiplexer 54' und 55' mit jeweiligen
A- und B-Ausgängen der
Logikzelle verbunden. Die Tabellen 45' und 47' sind auch mit einem dritten Multiplexer 61' verbunden,
der durch ein festes "0"- oder "1"-Steuersignal oder durch den lokalen
Buseingang DL gesteuert wird, wie durch
noch einen weiteren Multiplexer 62' ausgewählt. wenn der lokale Buseingang
DL ausgewählt wird, kombinieren sich
die zwei Nachschlagetabellen 45' und 47' wie vorher effektiv zu einer einzelnen
16-Bit-Tabelle, wobei der lokale Buseingang DL als
vierter Adresseneingang wirkt. Der ausgewählte Ausgang des dritten Multiplexers 61' steht mit einer Auswahlschaltung
mit Register/ohne Register in Verbindung, die aus einem Signalweg 65' ohne Register, einem
Flip-Flop-Register 66' in
einem Signalweg mit Register und einem Multiplexer 67', der einen
dieser zwei Signalwege auswählt,
besteht. Der resultierende Ausgang 69' ist über die Multiplexer 54' und 55' mit den A-
und B-Ausgängen der
Zelle und über
einen Ausgangspuffer 73' mit
dem lokalen Busausgang L der Zelle verbunden. Wieder kann der Ausgangspuffer 73' ein Puffer
mit drei Ausgangszuständen
sein, der auf ein Ausgangsfreigabesignal reagiert, das von einem
Multiplexer 74' ausgewählt wird. 7 stellt
auch dar, dass die Ausgangspufferschaltung 73' auch eine Ausgangspolaritätssteuerung über noch
einen weiteren Multiplexer 72' umfassen kann.
-
Mit
Bezug auf 8 verwendet eine weitere alternative
Logikzelle gemäß der vorliegenden
Erfindung zwei statische 8 × 1-RAMs,
die während
der Operation des Bauelements durch Liefern einer Schreibfreigabe
und eines Datenzugriffs zur Zelle vom Busnetzwerk beschreibbar sind.
Dies ermöglicht,
dass die Zellen als Ein-Chip-Speicher verwendet werden, oder ermöglicht alternativ,
dass Logikfunktionen, die normalerweise durch im voraus belegte
und feste Nachschlagetabellen ausgeführt werden, während der
Operation z. B. durch das Bauelement selbst infolge einer gewissen
Funktion, die von anderen Zellen im FPGA-Bauelement ausgeführt wird, dynamisch geändert werden.
Bei diesem Ausführungsbeispiel
sind die Eingangsmultiplexer 41'', 43'' und 39'' mit
den direkten A-, B- und C- und den lokalen Buseingängen und
der Rückführungsleitung 40'' und mit den Adresseneingängen a0, a1 und a2 der SRAMs 45'' und 47'' in derselben Weise wie in 5 verbunden.
Die Ausgänge 49'' und 51'' der
SRAMs 45'' und 47'' teilen sich jeweils in einen Weg 64'' und 65'' ohne
Register und einen Weg mit Register, der einen Flip-Flop 66'' und 68'' enthält, die
zu Ausgangsmultiplexern 54'' bzw. 55'' führen, auf. Die Ausgänge der
Multiplexer 54'' und 55'' führen entlang Signalwegen 56'' und 57'' zu
den direkten A- und B-Zellen-Zellen-Ausgängen der
Logikzelle und führen auch
entlang zweiter Signalwege 59'' und 60'' zu einem Ausgangsauswahlmultiplexer 61'' des lokalen Busses, der von einem
durch einen Multiplexer 62'' ausgewählten Signal
gesteuert wird. Diese Wahl umfasst feste logisch niedrige ("0") und logisch hohe ("1")
und dynamische lokale Buseingangssignale DH und
DV, die jeweils von horizontalen und vertikalen
lokalen Bussen erhalten werden. Wenn ein dynamisches lokales Buseingangssignal
DH oder DV ausgewählt wird,
um den Ausgangsmultiplexer 61'' zu
steuern, dann wirkt dieses Eingangssignal effektiv als vierter Adresseneingang
für einen
kombinierten 16-Bit-SRAM, der aus den zwei 8-Bit-SRAMs 45'' und 47'' besteht. Der ausgewählte Ausgang 69'' aus dem Ausgangsmultiplexer 61'' ist mit einer Rückführungsleitung 40'' verbunden, die zum Eingangsmultiplexer 39'' führt, und ist auch über einen
Puffer 73'' mit einem lokalen
Busausgang L verbunden. Wie vorher kann der Puffer 73'' eine Ausgangsfreigabesteuerung
von einem lokalen Bus OEH oder OEV über
einen Multiplexer 74'' aufweisen.
Alternativ kann die Schaltung zwischen den SRAM-Ausgängen 49'' und 51'' und
den direkten A- und B-Ausgängen und
dem lokalen Busausgang L wie in 5 sein.
-
Der
Schreibzugriff auf die SRAMs 45'' und 47'', der für dieses Zellenausführungsbeispiel
einzigartig ist, wird durch eine Leitung 84'' DATA_IN,
die mit dem FPGA-Busnetzwerk
und mit Dateneingängen
d0 der zwei SRAMs 45'' und 47'' verbunden ist, durch Adresseneingänge a0–a2 und durch eine Schreibfreigabeschaltung,
die ein Schreibfreigabesignal WE zu einem der SRAMs 45'' und 47'' liefert,
vorgesehen. Die Schreibfreigabeschaltung umfasst zwei UND-Gatter 76'' und 77'' mit
jeweils drei Eingängen 78''–80'' und
jeweils mit einem Ausgang, der mit dem Schreibfreigabeeingang in
einen der SRAMs 45'' und 47'' gekoppelt ist. Einer der UND-Gatter-Eingänge 78'' empfängt dasselbe Steuersignal,
das vom Multiplexer 62'' ausgewählt wird,
wie der Ausgangsmultiplexer 61'' des
lokalen Busses. Das heißt,
der Eingang 78'' empfängt selektiv
entweder feste logisch niedrige ("0")
oder hohe ("1") oder dynamische
lokale Buseingangssignale DH oder DV. Der Eingang 78'' wird
vor der Ankunft am UND-Gatter 76'' invertiert, wird
jedoch nicht vor der Ankunft am anderen UND-Gatter 77'' invertiert. Somit empfängt nur
einer der SRAMs 45'' und 47'' auf einmal ein Schreibfreigabesignal.
Wenn der Eingang 78'' auf einem niedrigen Logikpegel
liegt, wird der linke SRAM 45'' freigegeben,
wenn jedoch der Eingang 78'' auf einem hohen Logikpegel
liegt, wird der rechte SRAM 47'' freigegeben.
Die Verwendung desselben Steuersignals für die Ausgangsmultiplexer 61'' des lokalen Busses stellt sicher,
dass die von der Leitung 84'' DATA_IN geschriebenen
Daten am lokalen Busausgang L überprüft werden
können.
Der zweite UND-Gatter-Eingang 79'' liefert
ein invertiertes TAKT-Signal zu den UND-Gattern 76'' und 77'',
um sicherzustellen, dass die zu schreibenden Eingangsdaten auf der Leitung 84'' korrekt hergestellt werden, bevor
das Schreibfreigabesignal WE zum ausgewählten SRAM 45'' und 47'' geliefert
wird. Der dritte UND-Gatter-Eingang 80'' liefert
das Schreibfreigabesignal WE selbst über einen Multiplexer 82'', der ermöglicht, dass das Schreiben
für diese
Logikzelle selektiv gesperrt wird (durch ein festes niedriges Logikeingangssignal "0").
-
Mit
Bezug auf 9 und 10 empfängt das
Flip-Flop-Register (oder die Flip-Flop-Register) 66, 66', 66'' und 68'' in
jeder Zelle (5, 6 bzw. 8)
ein TAKT-Eingangssignal und ein RÜCKSETZ-(oder Setz-)Eingangssignal. 9 zeigt
die Taktverteilungsschaltung für
ein FPGA der vorliegenden Erfindung. Es können mehrere globale Taktleitungen
CK0–CK7
vorhanden sein, die Taktsignale liefern, die sich in der Frequenz,
Phase oder beiden voneinander unterscheiden können. Andere mögliche Taktverteilungsanordnungen
können
irgendeine andere Anzahl von Taktleitungen, die teilweise die Multiplexer 88 belegen,
usw. umfassen. Jede Spalte von Logikzellen 11 kann mit
ihrem eigenen Taktauswahlmultiplexer 88 mit Eingängen, die
jeweils mit einigen oder allen der globalen Taktleitungen CK0–CK7 verbunden
sind, versehen sein. Somit kann jede Spalte von Logikzellen 11 mit
einem anderen Taktsignal gegenüber
den anderen Spalten von Logikzellen 11 versehen werden.
Der Ausgang jedes Taktauswahlmultiplexers 88 bildet eine
Hauptspaltenleitung 92 zum Verteilen des ausgewählten Taktsignals
zu jeder der Zellen in dieser Spalte. Die Spalte von Logikzellen
kann in Sektoren von jeweils 4 oder 8 oder allgemeiner N Zellen
unterteilt sein. In 9 ist zu sehen, dass ein Sektor 14 aus
4 Zellen besteht. Für
jeden Sektor von Zellen ist eine Taktpolaritätsauswahl- und Verteilungsfreigabeschaltung 94,
die von der Hauptspaltenleitung 92 abzweigt, vorgesehen.
Diese Schaltung 94 umfasst einen ersten Multiplexer 106 mit
einem Eingang, der mit der Hauptspaltenleitung 92 verbunden
ist, zum Empfangen eines Taktsignals und einem weiteren Eingang,
der ein festes hohes ("1") Logiksignal empfängt. Wenn
das Taktsignal durch den Multiplexer 106 ausgewählt wird,
dann wird dieses Signal zum entsprechenden Sektor 14 von
Logikzellen 11 verteilt, wenn jedoch das feste Signal ausgewählt wird,
dann wird kein Taktsignal zu diesem Sektor 14 geliefert.
Die Schaltung 94 umfasst ferner einen gegabelten Signalweg (105 und 107),
der zu einem zweiten Multiplexer 108 führt. Ein Eingang des zweiten
Multiplexers kommt direkt vom Ausgang 105 des ersten Multiplexers 106, während der
andere Eingang zuerst durch einen Inverter 107 verläuft. Der
zweite Multiplexer 108 ermöglicht somit, dass die Polarität des Taktsignals
für den
entsprechenden Sektor ausgewählt
wird, wodurch ermöglicht
wird, dass andere Sektoren in derselben Spalte von Logikzellen 11 das
Taktsignal mit der entgegengesetzten Polarität empfangen. Schließlich können einige
Sektoren von Zellen im Gegensatz zum obersten Satz von Sektoren,
die am nächsten
zu den globalen Taktleitungen CK0–CK7 liegen, alternativ ein direktes
A-Ausgangssignal 110 von einer Zelle in einem benachbarten
Sektor von Zellen in derselben Spalte empfangen.
-
In 10 kann
die Polarität
eines RÜCKSETZ-Signals,
das von einer globalen RÜCKSETZ-Leitung 114 geliefert
wird, um Spaltenleitungen 115 zurückzusetzen, ebenso durch Sektoren
von Logikzellen mittels einer Rücksetzpolaritätsauswahl- und Verteilungsfreigabeschaltung 116,
die in derselben Weise wie die Taktschaltungen 94 konstruiert
ist, festgelegt werden.
-
Mit
Bezug auf 11 sind die Logikzellen 11 zu
4 × 4-Blöcken 15 von
Zellen organisiert, an deren Grenzen 13 sich ein Satz von "Zwischenverstärker" genannten Verbindungsschaltern 27 für das Busnetzwerk
befindet. Wie vorher erwähnt,
umfasst das Busnetzwerk Sätze
von horizontalen Busleitungen 21, die zwischen den Zeilen
von Logikzellen 11 verlaufen, und Sätze von vertikalen Busleitungen 19,
die zwischen den Spalten von Logikzellen 11 verlaufen. Jeder
Satz von Busleitungen 19 oder 21 umfasst eine lokale
Busleitung 23, die auf einen einzelnen Block 15 von
Zellen begrenzt ist, und zwei Expressbusleitungen 25, die
sich durch die Zwischenverstärker 27 über mehrere
Blöcke
von Zellen erstrecken. Der Einfachheit halber ist nur ein Satz von
drei Busleitungen 23 und 25 für jede Zeile und Spalte von
Zellen 11 dargestellt. Wie auch vorher erwähnt, sind
jedoch normalerweise fünf
Sätze von
drei Busleitungen 19 und 21 für jede Zeile und Spalte von
Zellen 11 vorhanden, wie in 4 zu sehen.
Die Zwischenverstärker 27 ermöglichen,
dass lokale Busleitungen 23 mit Expressbusleitungen 25 verbunden
werden. Nur lokale Busleitungen stehen direkt mit den Logikzellen 11 in
Verbindung. Die Zwischenverstärker 27 weisen
eine versetzte Anordnung auf, wobei irgendein Zwischenverstärker 27 eine
auswählbare
Verbindung zwischen einer lokalen Busleitung 23 und nur
einer der zwei Expressbusleitungen 25 in dem Satz vorsieht
und wobei aufeinanderfolgende Zwischenverstärker 27 mit abwechselnden
Expressbusleitungen in dem Satz in Verbindung stehen. Somit trifft
jede Expressbusleitung 25 alle acht Zeilen oder Spalten
von Zellen 11 anstatt alle vier Zeilen oder Spalten auf
einen Zwischenverstärker 27,
während
jede lokale Busleitung 23 alle vier Zeilen oder Spalten
von Zellen 11 auf einen Zwischenverstärker 27 trifft. Jede
lokale Busleitung 23 in einem Block 15 von Zellen 11 ist
mit jeder ihrer entsprechenden Expressbusleitungen 25 an entgegengesetzten
Enden des Blocks 15 verbindbar. Eine bequeme Weise zum
Anordnen der Zwischenverstärker 27,
um die gewünschte
versetzte Anordnung zu erhalten, besteht darin, dass eine gesamte Zeile
oder Spalte von Zwischenverstärkern 27 mit entsprechenden
Expressbusleitungen in den jeweiligen Sätzen von drei Busleitungen
verbindbar ist (z. B. alle mit den am weitesten links liegenden
oder obersten Expressleitungen verbunden) und die nächstfolgende
Zeile oder Spalte von Zwischenverstärkern 27, im Abstand
von vier Logikzellen, alle mit den entgegengesetzten entsprechenden
Expressleitungen in dem Satz verbindbar ist (z. B. alle mit den am
weitesten rechts liegenden oder untersten Expressleitungen verbunden)
und so weiter. 11 zeigt auch, dass zusätzliche
Schalter 81 dort angeordnet sein können, wo sich Zeilen und Spalten
von Busleitungen schneiden, um zu ermöglichen, dass Signale zwischen
Zeilen und Spalten von Busleitungen um 90° gewendet werden. Diese Schalter 81 verbinden
lokale Busleitungen mit anderen lokalen Busleitungen und Expressbusleitungen
mit anderen Expressbusleitungen.
-
Mit
Bezug auf 12 befinden sich an den Ecken
jedes Blocks 15 von Logikzellen 11 in den Zwischenräumen, die
an den Schnittpunkten von Zeilen und Spalten von Zwischenverstärkern 27,
die die Blöcke 15 begrenzen,
vorgesehen sind, zweckorientierte Funktionselemente 83 (DFE),
die Speicherstrukturen wie z. B. Blöcke von Direktzugriffsspeichern (RAM)
sein können,
oder andere zweckorientierte oder spezialisierte Schaltungen wie
z. B. Multiplizierer, Schieberegister, eine digitale oder analoge
Logik mit fester Funktion, Mikrosteuereinheiten, Vergleicher und
Analog-Digital- oder Digital-Analog-Wandler. Da sich die Eckenzwischenräume natürlicherweise
aus der Blockorganisation der Zellen und ihrer zugehörigen Busleitung
und Zwischenverstärker
ergeben, geschieht die Anordnung einer zweckorientierten Speicherlogik
in solchen Zwischenräumen
wenig oder nicht auf Kosten der Siliziumfläche für das gesamte Bauelement.
-
Jedes
zweckorientierte Funktionselement 83 kann ein RAM-Block oder eine andere
Speicherstruktur (wie z. B. ein nicht-flüchtiger Speicher) sein, der als
32 4-Bit-Datenworte
für insgesamt
128 Bits pro Block organisiert ist, wie in 4 und 13 zu
sehen. Mit Bezug auf 13 kann jeder RAM-Block 83 einen
SRRM 85 mit fünf
synchronen Adresseneingängen
a0–a4, die Adressensignale von Adressenleitungen 860 –864 über
einen Satz von Flip-Flop-Registern 87 empfangen,
und mit vier bidirektionalen Datenanschlüssen d0–d3 umfassen. Die Datenanschlüsse d0–d3 sind mit jeweiligen Datenleitungen 890 –893 verbunden, von denen jede wiederum
mit einem Paar von Eingangs- und Ausgangspuffern 90 und 91 verbunden
ist. Die Eingangspuffer 90 sind über Flip-Flops 93 mit
Datenleitungen 950 –953 verbunden. Die Ausgangspuffer 91 sind
direkt mit den Datenleitungen 950 –953 verbunden. Ein Schreibfreigabesignal
WE wird von einer Schreibfreigabeleitung 96 über ein
Flip-Flop-Register 97 empfangen.
Der Registerausgang Q des Flip-Flops 97 ist über eine
erste Verzweigung mit einem Schreibfreigabe-Eingangsanschluss des
SRAM 85 und über
eine zweite Verzweigung 99 über jeweilige Seitenverzweigungen 990 –993 mit den Dreizustands-Steuereingängen der
Eingangspuffer 90 für
jeden Datenanschluss d0–d3 verbunden.
Ein Ausgangsfreigabesignal OE wird auch von einer Ausgangsfreigabeleitung 102 über ein Flip-Flop-Register 103 empfangen.
Der Ausgang 104 des Registers 103 steht mit einem
ersten Eingang eines UND-Gatters 101 in Verbindung, während eine dritte
Verzweigung 100 des Ausgangs des Flip-Flop-Registers 97 mit einem
komplementären zweiten
Eingang des UND-Gatters 101 verbunden ist. Der Ausgang 105 des
UND-Gatters 101 ist über jeweilige
Seitenverzweigungen 1050 –1053 mit den Dreizustands-Steuereingängen der
Ausgangspuffer 91 für
jeden Datenanschluss d0–d3 verbunden.
-
Zum
Schreiben von Daten in den SRAM 85 wird folglich eine 5-Bit-Adresse
synchron von den Ausgängen
der Register 87 an den Adressenanschlüssen 90 –94 empfangen und ein Schreibfreigabesignal
wird auch synchron am Schreibfreigabeanschluss WE des SRAM 85 über die
erste Verzweigung 98 vom Flip-Flop-Register 97 empfangen.
Das Schreibfreigabesignal gibt auch die Eingangspuffer 90 über die
Seitenverzweigungen 990 –993 frei und sperrt die Ausgangspuffer 91 über das
UND-Gatter 101 und die Seitenverzweigungen 1050 –1053 . Daher werden die auf den Datenleitungen 950 –953 empfangenen Datenbits über die
Eingangspuffer 90 und die Datenleitungen 890 –893 zu den jeweiligen Datenanschlüssen d0–d3 übertragen
und an der Adresse, die an den Adressenanschlüssen a0–a4 empfangen wird, in den SRAM 85 geschrieben.
Um gespeicherte Daten aus dem SRAM 85 zu lesen, werden
eine Adresse und ein Ausgangsfreigabesignal OE synchron über die
Register 87 und 103 an den Adressenanschlüssen a0–a4 bzw. am UND-Gatter 101 empfangen.
Das Schreibfreigabesignal WE, das vom Register 97 übertragen
wird, ist niedrig, wobei die Eingangspuffer 90 über die
Verzweigungsleitungen 990 –993 gesperrt werden und ermöglicht wird,
dass das UND-Gatter 101 die Ausgangspuffer 91 über die Verzweigungsleitungen 1050 –1053 freigibt. An der empfangenen Adresse
gespeicherte Daten werden über
die Datenanschlüsse
d0–d3 zu den Datenleitungen 950 –953 ausgegeben. Als Alternative kann der RAM-Block 83 geeignet
modifiziert werden, so dass die Schreibfreigabe- und Ausgangsfreigabesignale im aktiven
Zustand niedrig sind.
-
Wenn
man zu 4 zurückkehrt,
kann der RAM-Block 83 von 13 mit
dem Busnetzwerk derart verbunden sein, dass jede der fünf Adressenleitungen 86 mit
einer anderen der fünf
vertikalen lokalen Busleitungen 23 entsprechend einer Spalte
von Zellen 11 verbunden ist, die Schreibfreigabe- und Ausgangsfreigabeleitungen 96 und 102 mit
zwei vertikalen Expressbusleitungen 25 entsprechend eben dieser
Spalte von Zellen verbunden sind, und jede der vier Datenleitungen 95 mit
einer anderen horizontalen lokalen Busleitung entsprechend jeder
der vier Zeilen von Zellen 11 in der 4 × 4-Gruppe von Zellen benachbart
zu diesem RAM-Block 83 verbunden ist. Andere Verbindungsschemen
sind auch möglich.
-
Alternativ
können
anstelle der in 4 und 13 gezeigten
Anordnung die RAM-Blöcke 83 mit dem
Busnetzwerk in der in 14 und 15 zu
sehenden Weise verbunden sein. 14 zeigt
acht der 4 × 4-Blöcke 15 von
Logikzellen 11 zusammen mit einigen der vertikalen und
horizontalen Expressbusleitungen 19 und 21, die
zwischen den Zeilen und Spalten von Zellen 11 in und zwischen
den Blöcken 15 verlaufen.
Wendeschalter 81 verbinden ausgewählte vertikale und horizontale
Busleitungen 19 und 21 miteinander, wo sie sich
schneiden. In der unteren rechten Ecke jedes Blocks 15 von
Logikzellen 11 befindet sich ein RAM-Block 83.
Wie in 15 zu sehen, kann jeder RAM-Block 83 ein
SRAM mit doppeltem Anschluss mit einem Schreibfreigabeanschluss WE, Schreibadressenanschlüssen Ain und Dateneingangsanschlüssen Din für
Schreiboperationen in den SRAM und mit einem Lesefreigabeanschluss OE, separaten Leseadressenanschlüssen Aout und separaten Datenausgangsanschlüssen Dout für
das Lesen von Daten aus dem SRAM sein. Somit können Lese- und Schreiboperationen unabhängig und
sogar gleichzeitig auf separaten Adressen- und Datenleitungen stattfinden.
-
Wenn
man zu 14 zurückkehrt, wird eine 6-Bit-Schreibadresse (WRITE
ADDR.) entsprechend einem Satz von Stellen im RAM, in die 8 Datenbits geschrieben
werden sollen, vom Busnetzwerk oder von externen Kontaktstellen
des Bauelements empfangen. Es ist zu sehen, dass zwei der sechs
Bits in einen herkömmlichen
2-Zu-4-Bit-Decodierer 171 eingegeben werden. Der Decodierer 171 aktiviert
einen und nur einen seiner vier Ausgänge 173 in Abhängigkeit
davon, welchen der vier möglichen
Zwei-Bit-Eingangswerte er empfängt.
Jeder der vier Decodiererausgänge 173 ist
mit einem Eingang von einem von vier ODER-Gattern 175 verbunden.
Ein globales Schreibfreigabesignal WE wird
am anderen Eingang der vier ODER-Gatter 175 empfangen.
Die ODER-Gatter-Ausgänge 177 stehen
mit vertikalen Expressbusleitungen 19 entsprechend jeder
der vier Spalten von Blöcken 15 und
ihren entsprechenden Spalten von RAM-Blöcken 83 in
Verbindung. Der Schreibfreigabeanschluss WE dieser RAM-Blöcke ist mit diesen speziellen
vertikalen Expressbusleitungen verbunden, um ein decodiertes Schreibfreigabesignal
von den entsprechenden ODER-Gatter-Ausgängen 177 zu
empfangen. Für
eine beliebige Kombination der zwei Schreibadressenbits wird folglich
eine der vier Spalten von RAM-Blöcken 83 für eine Schreiboperation
aktiviert, wenn das globale Schreibfreigabesignal WE aktiv ist. Die anderen vier Schreibadressenbits
in der 6-Bit-Adresse
stehen mit horizontalen Expressbusleitungen 21 und dann über Wendeschalter 81 mit
vertikalen Busleitungen 19, die mit Schreibadressenanschlüssen Ain jedes RAM-Blocks 83 verbunden
sind, in Verbindung. Acht Dateneingangsleitungen Din(0)–Din(7) sind über horizontale Busse 19 benachbart
zu jeder Zeile von Logikzellen 11 mit den Dateneingangsanschlüssen Din der RAM-Blöcke 83 verbunden,
wobei jeder RAM-Block 83 vier parallele Dateneingangssignale
von entweder Din(0)–Din(3) oder
Din(4)– Din(7) empfängt. Somit sind zwei Zeilen von
RAM-Blöcken
erforderlich, um einzelne Datenbytes in irgendeine gegebene Adresse
zu schreiben.
-
Ebenso
wird für
Leseoperationen eine 6-Bit-LESEADRESSE geliefert, wobei zwei der Adressenbits
mit einem weiteren 2-Zu-4-Bit-Decodierer 172 verbunden
sind, welcher vier Ausgangssignale 174, eines für jede RAM-Spalte,
liefert, und wobei die vier restlichen Adressenbits über horizontale
Expressbusleitungen 21 und Wendeschalter 81 mit
vertikalen Expressbusleitungen 19 verbunden sind, die zu
Leseadressenanschlüssen
der RAM-Blöcke 83 führen. wieder
werden alle acht RAM-Blöcke
mit vier Adressenbits versehen, aber nur eine Spalte von RAM-Blöcken wird
mit einem Lesefreigabesignal versehen, das von den zwei Adressenbits,
die in den Decodierer 172 eingegeben werden, abgeleitet
wird. Acht Datenausgangsleitungen Dout(0)–Dout(7) sind über horizontale Expressbusleitungen
mit den Datenausgangsanschlüssen
Dout in zwei Zeilen von RAM-Blöcken 83 verbunden.
-
Eine
wertvolle Anordnung sieht eine Spiegelsymmetrie zwischen den Lese-
und Schreibadressenanschlüssen
Ain und Aout in
benachbarten Spalten von RAM-Blöcken 83 vor.
Dies verringert die erforderliche Anzahl von vertikalen Busbetriebsmitteln, die
für Adressensignale
verwendet werden, um ungefähr
die Hälfte,
wenn ein RAM-Element mit doppeltem Anschluss konstruiert wird. Man
beachte, dass sich in 14 die ersten zwei Spalten von
RAM-Blöcken
gemeinsame Leseadressenleitungen 176 teilen. Ebenso teilen
sich die letzten zwei Spalten von RAM-Blöcken gemeinsame Leseadressenleitungen 178.
Die zweite und die dritte Spalte von RAM-Blöcken teilen sich gemeinsame
Schreibadressenleitungen 179. In größeren Gruppen von Speicherblöcken wie
z. B. jenen mit acht oder sechzehn Spalten von RAM-Blöcken und
3-Zu-8- oder 4-Zu-16-Bit-Decodierern
würde die
Verwendung von vertikalen Busbetriebsmitteln von Leseadressenleitungen
in einer Spalte von Logikblöcken 15 zu
Schreibadressenleitungen in der nächsten Spalte von Logikblöcken 15 abwechseln.
-
Die
zweckorientierten Funktionselemente an den Ecken von jedem Block
von Logikzellen könnten auch
spezialisierte Logikstrukturen wie z. B. Multiplizierer sein. Ein
4 × 4-Multiplizierer kann
beispielsweise mit dem Busnetzwerk in derselben Weise wie der SRAM
mit doppeltem Anschluss, der in 14 und 15 zu
sehen ist, verbunden sein, wobei ein Satz von Adresseneingängen gegen
einen Vier-Bit-Operanden ausgetauscht ist und der andere Satz von Adresseneingängen gegen
einen zweiten Vier-Bit-Operanden ausgetauscht ist. Der Acht-Bit-Produkt-Ausgang
des Multiplizierers ersetzt die zwei Vier-Bit-Dateneingangs- und
-Datenausgangsleitungen des RAM.
-
Mit
Bezug auf 16 können die Logikzellen 11 an
der Kante der Matrix mit den Eingangs/Ausgangs-(E/A)Kontaktstellen 17 in
einer beliebigen einer Anzahl von Weisen verbunden sein. Eine hier
gezeigte Weise verbindet jede Logikzelle, z. B. die Zelle 112,
mit drei benachbarten E/A-Kontaktstellen 117–119 über E/A-Leitungen 121–123 und
verbindet auch jede E/A-Kontaktstelle, z. B. die Kontaktstelle 118,
mit drei benachbarten Logikzellen 111–113 über E/A-Leitungen 122, 124 und 125.
Eine Ausnahme für dieses
Schema tritt gewöhnlich
an den Ecken der Matrix und an den Enden der Zeile von Kontaktstellen auf.
Somit ist die Endkontaktstelle 131 mit nur zwei Logikzellen 134 und 135 über E/A-Leitungen 132 und 133 verbunden.
Die Eckenlogikzelle 135 ist mit vier E/A-Kontaktstellen
verbunden, nämlich
den Kontaktstellen 130 und 131 in einer Zeile
von E/A-Kontaktstellen und den Kontaktstellen 139 und 140 in
der anderen Zeile von Kontaktstellen, über E/A-Leitungen 132 und 136–138.
Andere Anordnungen sind möglich.
-
Ein
Detail des Eckenverbindungsschemas ist in 17 gezeigt.
Verbindungen für
andere Logikzellen und E/A-Kontaktstellen
sind analog. Die spezielle Logikzelle 135, die in 17 zu
sehen ist, ist die Zelle der unteren rechten Ecke der Matrix, d.
h. die Zelle in der unteren Zeile und der am weitesten rechts liegenden
Spalte in 1. Wie in 16 zu sehen,
steht diese spezielle Zelle 135 mit den zwei am weitesten
rechts liegenden E/A-Kontaktstellen 139 und 140 in
der unteren Zeile von Kontaktstellen und mit den zwei untersten
E/A-Kontaktstellen 130 und 131 in
der rechten Zeile von Kontaktstellen der Schaltung in Verbindung.
Die Zelle 135 in 17 ist wie
alle anderen Zellen in der Matrix mit einem Satz von benachbarten
vertikalen und horizontalen Busleitungen 19 und 21 entweder
direkt mit lokalen Bussen 23 oder indirekt mit Expressbusleitungen 25 über die lokalen
Busse 23 und Zwischenverstärkerschalter 27 verbunden.
Wie in 4 und 6 können die Verbindungen zwischen
der Zelle 135 und den 5 horizontalen und 5 vertikalen lokalen
Busleitungen 23 über einen
Satz von zehn bidirektionalen Datenbusleitungen 29 hergestellt
werden. Die Eckenzelle 135 stellt auch direkte Verbindungen
mit der nächsten
benachbarten Zelle (nicht dargestellt) wie in 2 her.
Da jedoch der Zelle 135 Nachbarn rechts von ihr und unter ihr
fehlen, werden die vier unbenutzten direkten A- und B-Eingänge (AE,
BE, AS und BS) und die vier unbenutzten direkten A- und
B-Ausgänge
(zwei A und zwei B) zum Erleichtern der Verbindungen mit den E/A-Kontaktstellen
und mit gewissen Expressbusleitungen 25 verwendet.
-
Insbesondere
steht jede der 5 horizontalen Expressleitungen 25, die
nicht auf die End-Zwischenverstärkereinheiten 27 trifft,
mit einem Paar von S-Zu-1-Multiplexern 141 und 143 und
einem Paar von fünfgliedrigen
Sätzen
von Schaltern 145 und 147 in Verbindung. Ebenso
sind die 5 vertikalen Expressleitungen 25, die nicht auf
End-Zwischenverstärkereinheiten 27 treffen,
welche die Spalte von Busleitungen abschließen, mit Multiplexern 142 und 144 und Sätzen von
Schaltern 146 und 148 verbunden. Die Ausgänge der
Multiplexer 141 und 142 stehen mit jeweiligen
direkten B-Eingängen
BE und BS und auch mit
Ausgangssignalwegen 153 und 154 in Verbindung,
die zu E/A-Kontaktstellen
führen.
Die Ausgänge
der Multiplexer 143 und 144 sind nur mit Ausgangssignalwegen 155 und 156 verbunden,
die zu E/A-Kontaktstellen führen.
Die Sätze
von Schaltern 145 und 146 verbinden die direkten
B-Ausgänge
der Zelle 135 mit den 10 horizontalen und vertikalen Expressleitungen 25,
die nicht durch Zwischenverstärker 27 abgeschlossen
sind. Die Sätze
von Schaltern 147 und 148 verbinden Eingangssignalwege 169 und 170 von
E/A-Kontaktstellen mit denselben 10 horizontalen und vertikalen
Expressleitungen 25. Die Eingangssignalwege 169 und 170 stehen
ebenfalls mit jeweiligen direkten A-Eingängen AE und
AS der Zelle 135 in Verbindung.
-
Die
Ausgangssignalwege 151, 153 und 155 auf
der rechten Seite verlaufen jeweils zu den untersten zwei Kontaktstellen 130 und 131 in
der rechten Zeile von Kontaktstellen und zur am weitesten rechts liegenden
Kontaktstelle 139 in der unteren Zeile von Kontaktstellen
in 16. Die Ausgangssignalwege 152, 154 und 156 auf
der unteren Seite verlaufen jeweils zu den am weitesten rechts liegenden
zwei Kontaktstellen 139 und 140 in der unteren
Zeile von Kontaktstellen und der untersten Kontaktstelle 131 in der
rechten Zeile von Kontaktstellen in 16. Somit ist
jeder der Ausgangssignalwege 151–156 selektiv mit
irgendeiner von drei verschiedenen Kontaktstellen von den vier verfügbaren Kontaktstellenverbindungen
verbindbar. Die Signalwege 155 und 156 können auch
verwendet werden, um ein Dreizustands-Freigabesignal zu einem Ausgangspuffer
zwischen den Wegen 151–154 und
den E/A-Kontaktstellen zu liefern. Die Eingangssignalwege 169 und 170 sind
ebenso mit den E/A-Kontaktstellen verbindbar. Leitende Leitungen 161, 163 und 165 stehen
mit jeweiligen Kontaktstellen 130, 131 und 139 in
Verbindung, während
leitende Leitungen 162, 164 und 166 mit
jeweiligen Kontaktstellen 131, 139 und 140 in
Verbindung stehen, die in 16 zu
sehen sind. Die Eingangsauswahlmultiplexer 167 und 168 verbinden
jeweils eine ausgewählte
leitende Leitung 161–166 mit den
Eingangssignalwegen 169 und 170.
-
Mit
Bezug auf 18 und 19 kann
die Anzahl von E/A-Kontaktstellen
von einer Kontaktstelle 17 pro Umfangslogikzelle 11 in 16 auf
drei Kontaktstellen 17' pro
Paar von Umfangslogikzellen 12, die hier gezeigt sind,
oder auch auf nicht weniger als zwei Kontaktstellen pro Umfangslogikzelle,
falls erwünscht,
erhöht
werden. In 18 können die E/A-Kontaktstellen 180, 181, 183, 184 usw.
direkt gegenüber
einer der Nicht-Ecken-Umfangslogikzellen 187–190 mit
drei Umfangslogikzellen und mit ihren zugehörigen Busleitungen wie in 16 verbunden werden.
Die E/A-Kontaktstelle 181 ist beispielsweise mit den Umfangslogikzellen 187–189 und
den zugehörigen
Busleitungen verbindbar, wie nachstehend mit Bezug auf 19 zu
sehen ist. Zusätzliche E/A-Kontaktstellen 182, 185 usw.,
die nicht direkt gegenüber
einer Umfangslogikzelle liegen, sondern gegenüber den Zwischenräumen zwischen
den Logikzellen 188 und 189 bzw. den Logikzellen 190 und 191 angeordnet
sind, sind mit den zwei nächsten
Umfangslogikzellen über
die diesen zugeordneten Busleitungen indirekt verbindbar, wie in 19 zu
sehen ist. Ebenso ist jede Nicht-Ecken-Umfangslogikzelle 187–190 usw.
mit vier E/A-Kontaktstellen verbindbar. Die Zelle 188 ist
beispielsweise mit den E/A-Kontaktstellen 180–183 verbindbar.
Die Eckenzellen 191 usw. stehen mit sechs E/A-Kontaktstellen 184–186 und 192–194 in
Verbindung, drei von jeder Zeile von Kontaktstellen.
-
Wie
in 19 zu sehen ist, ist die E/A-Kontaktstelle 181 mit
einem Eingangspuffer 201 verbunden, dessen Ausgang 202 sich
in drei Eingangsleitungen 203–205 aufteilt, die
zu direkten Zelleneingängen 206–208 der
Logikzellen 187–189 führen. Der
Ausgang 202 des Puffers ist auch über programmierbare Schalter 209 mit
bidirektionalen Signalleitungen 210–212 verbindbar, die
zu Zwischenverstärker-Schalteinheiten 27 an
den Enden von horizontalen Busleitungen 21, die jeder von
drei Zeilen von Logikzellen zugeordnet sind, welche die Zellen 187–189 enthalten,
führen.
Der E/A-Kontaktstelle 181 ist ein Ausgangsmultiplexer 213 zugeordnet. Dieser
Multiplexer 213 ist mit den bidirektionalen Signalleitungen 210–212 von
den drei Zeilen von horizontalen Busleitungen 21 verbunden,
die den Logikzellen 187–189 zugeordnet sind,
und ist auch mit Zellenausgangsleitungen 214–216 verbunden,
die von den direkten Zellenausgängen 217–219 der
Logikzellen 187–189 kommen.
Jede dieser Signalleitungen 210–212 und 217–219 steht
mit den Eingängen
des Multiplexers 213 in Verbindung, der höchstens
einen von ihnen zur Übertragung über einen
Ausgangspuffer 220 zur E/A-Kontaktstelle 181 auswählt. Die E/A-Kontaktstellen 180 und 183 direkt
gegenüber den
Zellen 187 und 189 sind in einer Weise identisch zur
E/A-Kontaktstelle 181 verbunden.
-
Eine
zusätzliche
E/A-Kontaktstelle 182 befindet sich zwischen den E/A-Kontaktstellen 181 und 183.
Während
die E/A-Kontaktstellen 181 und 183 direkt gegenüber den
Umfangslogikzellen 188 und 189 angeordnet sind,
ist die Kontaktstelle 182 nicht gegenüber irgendeiner Logikzelle
angeordnet, sondern ist vielmehr gegenüber dem Zwischenraum zwischen den
Zeilen, der den Zellen 188 und 189 zugeordnet ist
und die horizontalen Busleitungen 21, die der Zelle 189 zugeordnet
sind, enthält,
angeordnet. Die E/A-Kontaktstelle 182 ist mit einem Eingangspuffer 221 verbunden,
dessen Ausgang über
programmierbare Schalter 222 mit bidirektionalen Signalleitungen 223 und 224 verbindbar
ist. Diese Signalleitungen 223 und 224 koppeln
auch über
einen Ausgangsmultiplexer 225 mit einem Ausgangspuffer 226,
der mit der E/A-Kontaktstelle 182 verbunden ist. Die bidirektionalen
Signalleitungen 223 und 224 sind mit den Signalleitungen 210 verbunden,
die zu und von den End-Zwischenverstärker-Schalteinheiten 27 für die horizontalen
Busleitungen 21, die den Zellen 188 und 189 zugeordnet
sind, führen.
-
Mit
Bezug auf 20 und 21 ist
noch ein weiteres Ausführungsbeispiel
einer Eingangs/Ausgangs-Schnittstelle für FPGAs der vorliegenden Erfindung
für zwei
der E/A-Kontaktstellen 230 und 231 gezeigt.
Für eine
leichte Betrachtung der Vielzahl von Signalwegen zeigt 20 nur
die Wege, die einer E/A-Kontaktstelle 231 zugeordnet sind,
welche unmittelbar gegenüber
einer Logikzelle 228 angeordnet ist. Dieses Schema wiederholt
sich für
jede Zelle 227, 228, 229 usw. um den
Umfang der Matrix von Zellen in dem FPGA-Bauelement. Ebenso zeigt 21 nur
die Wege, die einer E/A-Kontaktstelle 230 zugeordnet sind,
die gegenüber
einer Position zwischen zwei Logikzellen 227 und 228 angeordnet ist.
Dieses Schema wiederholt sich auch um den Umfang des FPGA, obwohl
gewöhnlich
diese zweiten E/A-Kontaktstellen 230 nur
an jeder zweiten verfügbaren
Position zwischen den Zellen zu finden sind. Beide Arten von E/A-Kontaktstellen,
jene direkt gegenüber
Logikzellen und jene gegenüber
zwischen den Zellenpositionen, sind normalerweise zusammen in einem
FPGA zu finden, wie in dem zweiten Ausführungsbeispiel der E/A-Schnittstelle
in 19 zu sehen.
-
Wie
in 20 und 21 zu
sehen, weisen die E/A-Kontaktstellen 231 und 230 Pull-up-Transistoren 232 und 252 auf,
deren Gates durch ein vom Anwender konfigurierbares Bit (PULL-UP)
gesteuert werden. Die Hauptfunktion dieser Transistoren 232 und 252 besteht
darin, eine logische "1" zu unbenutzten Kontaktstellen
zu liefern. Wenn er durchgesteuert ist, ist ein Transistor 232 oder 252 ungefähr äquivalent
zu einem Widerstand von 10 K zu Vcc. Jede
Kontaktstelle 231 und 230 weist einen mit dieser verbundenen
Eingangspuffer 234 bzw. 254 auf und weist auch
einen ebenfalls mit dieser verbundenen Ausgangspuffer 233 bzw. 253 auf.
Die Eingangspuffer 234 und 254 weisen einen auswählbaren
Schwellenpegel, entweder TTL oder CMOS, auf, der durch ein vom Anwender
konfigurierbares Bit (TTL/CMOS) festgelegt wird. Die Ausgangspuffer 233 und 253 weisen
auswählbare
Ansteuerpegel auf, die durch ein weiteres vom Anwender konfigurierbares
Bit (HALBE/VOLLE ANSTEUERUNG) gesteuert werden. Die Ansteuerpegel
unterscheiden sich in ihren Gleichstromentnahmefähigkeiten. Alternativ könnten die Puffer
eine steuerbare, schnelle oder langsame Ausgangsspannungsänderungsgeschwindigkeit
bei derselben vollen Gleichstromentnahmefähigkeit aufweisen. Halbe Ansteuerung
oder eine langsame Ausgangsspannungsänderungsgeschwindigkeit, von denen
beide Rauschen und Erdungsprellen verringern, wird für Ausgangssignale,
die hinsichtlich der Geschwindigkeit nicht kritisch sind, empfohlen.
Ein Konfigurationsbit eines "OFFENEN
KOLLEKTORS" aktiviert
oder deaktiviert selektiv das aktive Hochsetzen des Ausgangspuffers 233 oder 253.
Das Freigabesignal (TRI-STATE) für
die Dreizustands-Ausgangspuffer 233 und 253 wird
durch Multiplexer 235 und 255 von einer Anzahl
von Optionen ausgewählt. Die
Optionen umfassen typischerweise feste Logikpegel "0" und "1",
wobei der Puffer entweder immer ansteuert oder nie ansteuert, und
eine Anzahl von dynamischen Signalen, die in der Matrix erzeugt
werden. Die primären
E/A-Kontaktstellen 231 direkt gegenüber einer Umfangslogikzelle 228 weisen
drei dynamische Signalauswahlmöglichkeiten
(ZELLE 1, ZELLE 2, ZELLE 3) auf, die den drei verfügbaren Ausgangszellen 227, 228 und 229 zugeordnet
sind, während
die sekundären
E/A-Kontaktstellen 230,
die sich in einer Position zwischen Zellen befinden, zwei dynamische
Signalauswahlmöglichkeiten
(ZELLE 1, ZELLE 2) aufweisen, die ihren zwei verfügbaren Ausgangszellen 227 und 228 zugeordnet
sind. Die dynamischen Signale können
innerhalb der jeweiligen Zellen selbst erzeugt werden oder können durch
die Busleitungen 247, 248 oder 249, die
diesen Zellen zugeordnet sind, geliefert werden.
-
Mit
Bezug nun nur auf 20 steht die E/A-Kontaktstelle 231 über einen
Ausgangsauswahlmultiplexer 237 und den Ausgangspuffer 233 mit Busleitungen 247, 248 und 249,
die drei benachbarten Umfangslogikzellen 227, 228 und 229 (als
ZELLE 1, ZELLE 2 bzw. ZELLE 3 bezeichnet) zugeordnet sind, durch
Leitungen 241–244 in
Verbindung. Man beachte, dass zwei Signaloptionen von den Busleitungen 248 erhältlich sind,
die der Zelle 228 unmittelbar gegenüber der Kontaktstelle 231 zugeordnet
ist, während
nur eine Signaloption von den benachbarten Busleitungen 247 und 249 erhältlich ist.
Der Ausgangsauswahlmultiplexer 237 empfängt auch ein direktes Zellenausgangssignal 245 von
der Logikzelle 228. Die E/A-Kontaktstelle 231 ist über den
Eingangspuffer 234 mit einem direkten Zelleneingang 250 in
die Logikzelle 228 verbunden und ist auch über vom
Anwender konfigurierbare Schalter 251 mit demselben Satz
von Leitungen 241–244 verbunden, die
zu den Busleitungen 247–249 führen.
-
Mit
Bezug auf 21 steht die Kontaktstelle 230,
die gegenüber
der Position zwischen den Zellen 227 und 228 angeordnet
ist, über
einen Ausgangsauswahlmultiplexer 257 und einen Ausgangspuffer 253 mit
Busleitungen 247 und 248, die den Zellen 227 und 228 zugeordnet
sind, durch Leitungen 261 und 262 in Verbindung.
Der Multiplexer 257 empfängt auch direkte diagonale
Zellenausgangssignale 263 und 264 von den Zellen 227 und 228.
Die E/A-Kontaktstelle 230 ist über den Eingangspuffer 254 mit
direkten diagonalen Zelleneingängen 265 und 266 von Zellen 227 und 228 verbunden
und ist auch über
vom Anwender konfigurierbare Schalter 267 mit den Leitungen 261 und 262 verbunden,
die zu den Bussen 247 und 248 führen.
-
Andere
E/A-Schnittstellenkonfigurationen für das FPGA-Bauelement als die in 16–21 gezeigten
sind möglich.