-
Die Erfindung betrifft eine Logik-Grundzelle und eine Logik Grundzellen-Anordnung.
-
Mit dem Aufkommen der Digitaltechnik und der sich sprunghaft entwickelnden Mikroprozessortechnik entstand ein Bedarf nach programmierbarer Logik. Ein PLD (”Programmable Logic Device”) ist ein integrierter Schaltkreis, der vom Anwender mittels Programmierens in seiner Logikfunktion festgelegt wird. Ein PLD ist eine Architektur für digitale Logikoperationen mit einer Mehrzahl von Schaltern, welche eine Vielzahl von Signalpfaden ermöglichen. Die einem PLD anwenderspezifisch zugeordnete Logikfunktion wird mittels Konfigurierens des PLDs festgelegt.
-
Zu den PLDs gehören unter anderem Field-Programmable Gate-Arrays (FPGA), deren Funktionalität ihnen vom Anwender zugeordnet werden kann, Mask-Programmable Gate-Arrays (MPGA, auch ”Structured-ASICs” genannt), welchen mittels Hardwaremäßigen Konfigurierens eine Logikfunktion zugewiesen werden kann. Via-Programmable Gate-Arrays (VPGAs) gehören zu den MPGAs.
-
Grundzellen für ein Field-Programmable Gate Array (FPGAs) und einen Structured-ASIC (sASIC) stellen kombinatorische Funktionalität und Register zur Implementierung eines Designs zur Verfügung. Eine Grundzelle soll eine gute Abbildbarkeit sowohl einfacher als auch komplexer logischer Funktionen gewährleisten, ohne unnötigen Overhead zu erzeugen.
-
Eine digitale Logikzelle bildet n Eingangssignale auf ein Ausgangssignal ab. Die Anzahl der möglichen Abbildungsfunktionen ist
. Eine Schaltungsgruppe als digitale Logikzelle wird gemäß dem Stand der Technik zum Beispiel unter Verwendung von sogenannten Look-up-Tabellen (LUT), anschaulich Nachschlagetabellen, realisiert. Hierfür werden Funktionswerte der Logikfunktion mittels eines Datenwortes von 2
n Bit eingestellt. Mit anderen Worten ist die jeweils ausgewählte Logikfunktion in ein Datenwort kodiert. Entsprechend der ausgewählten Logikfunktion werden n Eingangssignale a
0, a
1, ... a
n-1 miteinander verknüpft. Somit können die Logik-Eingangssignale der Logikfunktion y = f(a
0, a
1, ..., a
n-1) als binäre Adresse angesehen werden.
-
Ein FPGA auf Basis einer Look-up-Tabelle (LUT) ist beispielsweise in [1] offenbart.
-
Eine Logik-Grundzelle für Field-Programmable Gate-Arrays (FPGA) und ”structured-ASICs” stellen kombinatorische Funktionalität zur Implementierung eines Logik-Designs bereit.
-
Aus dem Stand der Technik sind feingranulare und grobgranulare Ansätze für Logik-Grundzellen bekannt.
-
Bei einer feingranularen Grundzelle ist es häufig nicht möglich, alle möglichen
Logikfunktionen von n Eingangssignalen zu realisieren, so dass in manchen Szenarien bereits Logikfunktionen geringer Komplexität über mehrere Grundzellen verteilt realisiert werden müssen. Auf diese Weise werden Interconnect-Ressourcen blockiert, was zu einer wenig effektiven Nutzung von Ressourcen führt. Ferner sind bei solchen feingranularen Grundzellen lange Signalpfade bei komplexeren Funktionen nachteilig. Ferner ist die Software für das Partitionieren solcher feingranularen Grundzellen-Anordnungen aufwendig.
-
Bei einem grobgranularen Ansatz wird eine komplexe Grundzelle realisiert, mittels welcher häufig Logikfunktionen auch mittlerer Komplexität vollständig realisiert werden können. Wenn auf eine solche grobgranulare Grundzelle hingegen ein kurzer Datenpfad abgebildet werden soll, sind große Teile der kombinatorischen Ressourcen der Grundzelle ungenützt, so dass die Abbildung ineffizient ist. Ferner ist die Skalierbarkeit bekannter Grundzellen häufig unbefriedigend, insbesondere wenn eine abzubildende Logikfunktion nicht in eine Grundzelle passt.
-
[2] offenbart eine Logikarray-Vorrichtung mit einem Array von programmierbaren Logikzellen, aufweisend eine Mehrzahl von Eingängen und eine Mehrzahl von Ausgängen und angepasste Verbindungsstrukturen, welche einem Teil der programmierbaren Zelle überlagert sind.
-
Es können Eingänge als Steuereingänge für einen Multiplexer-Baum dienen, siehe [3]. Die Multiplexer können logikbasiert und/oder auf Basis von Transmissions-Gates realisiert werden.
-
Aus [4] ist eine benutzerdefiniert konfigurierbare und programmierbare Logik-Grundzellen-Anordnung bekannt, die auf einer Verschaltung von Look-Up-Tabellen und Multiplexern basiert.
-
[5] beschreibt eine programmierbare Logik-Grundzellen-Anordnung mit 5 Datensignaleingängen sowie einem ersten Logikfunktionsblock und einem zweiten Logikfunktionsblock, implementiert als Look-Up-Tabelle, einem Logikfunktions-Konfigurationseingang sowie einem ersten Multiplexer. An den Datensignalausgängen sind ein Signal an dem Ausgang des ersten Logikfunktionsblocks, ein Signal an dem Ausgang des zweiten Logikfunktionsblocks und ein Signal an dem Ausgang des Multiplexers separat abgreifbar.
-
Aus [6] ist ein feldprogrammierbares Gate-Array (fieldprogrammable Gate-Array, FPGA) bekannt mit einer Decoder-Schaltkreisanordnung zum Erhöhen der Anzahl von Eingängen für jede programmierbare Logik-Zelle. Die Dekoderschaltkreis-Anordnung koppelt die jeweilige gewünschte Look-Up-Tabelle einer jeweiligen Logik-Zelle.
-
Aus [7] ist ein anderes FPGA mit Look-up-Tabellen bekannt.
-
[8] beschreibt eine programmierbare Funktionseinheit eingerichtet zur Verwendung in einem FPGA, wobei in der programmierbaren Funktionseinheit eine sogenannte Ripple-Logik eingesetzt wird.
-
Weiterhin ist aus [9] eine rekonstruierbare Logik-Vorrichtung bekannt mit einer Look-Up-Tabelle.
-
Ferner offenbart [10] den Entwurf integrierter Logik-Schaltkreise unter Verwendung funktionell redundanter Transistornetzwerke.
-
Außerdem ist aus [11] ein Verfahren zum Implementieren eines großen Multiplexers unter Verwendung von FPGA-Look-Up-Tabellen bekannt.
-
Viele aus dem Stand der Technik bekannte Logik-Grundzellen basieren auf der boolschen Logik. Bei solchen Logik-Grundzellen wird ausgenutzt, dass sich eine Funktion f(a
n, a
n-1, ..., a
0) von n + 1 Eingangssignalen a
i gemäß der boolschen Logik folgendermaßen auf zwei Funktionen f
0, f
1 von jeweils n Eingangssignalen a
i zurückführen lässt:
-
Die Zerlegung von f in f1 und f0 gemäß Gleichung (1) wird als sogenannte Shannon-Zerlegung bezeichnet. Hierbei ist a n das logisch Inverse des Datensignals an. Für den Fall n = 2, das heißt für eine Funktion von n + 1 = 3 Eingangssignalen, ist somit die Logik-Gesamtfunktion f als Funktion dreier Eingangssignale auf zwei (einfachere) Logik-Teilfunktionen f0 und f1 von zwei Eingangssignalen zurückgeführt. Jede der Logik-Teilfunktionen f0, f1 kann von einem der Logikfunktionsblöcke einer Logik-Grundzelle realisiert werden.
-
Für den Spezialfall von n + 1 = 4 Eingangssignalen kann unter Verwendung von Gleichung (1) die Logik-Gesamtfunktion auf zwei Funktionen von drei Eingangssignalen zurückgeführt werden, wobei jede Funktion von drei Eingangssignalen unter nochmaliger Anwendung von Gleichung (1) wiederum in zwei Logik-Teilfunktionen mit zwei Eingängen aufgeteilt werden kann. Mit anderen Worten kann eine Logik-Gesamtfunktion von vier Datensignalen in vier Logik-Teilfunktionen zerlegt werden, welche von vier Logikfunktionsblöcken, das heißt zwei Logik-Grundzellen, realisiert werden können. Diese Überlegung lässt sich für eine beliebige Anzahl von Eingangssignalen fortsetzen, zum Beispiel sind zum Realisieren einer Logik-Gesamtfunktion von fünf Datensignalen 2·2·2 = 8 Logikfunktionsblöcke, das heißt vier Logik-Grundzellen mit jeweils zwei Logikfunktionsblöcken erforderlich.
-
Allerdings ist eine Logik-Grundzelle, die gemäß der Shannon-Zerlegung gemäß Gleichung (1) realisiert ist, für manche Anwendungen, die einen hohen Grad an Flexibilität erfordern, nicht gut geeignet.
-
Der Erfindung liegt insbesondere das Problem zugrunde, eine Logik-Grundzelle bereitzustellen, die einen erhöhten Grad an Flexibilität bereitstellt.
-
Das Problem wird durch eine Logik-Grundzelle und durch eine Logik-Grundzellen-Anordnung mit den Merkmalen gemäß den unabhängigen Patentansprüchen gelöst.
-
Bevorzugte Ausgestaltungen der Erfindung ergeben sich aus den abhängigen Patentansprüchen.
-
Gemäß mehreren Ausführungsformen wird eine Logik-Grundzelle bereitgestellt,
- – mit mindestens acht Datensignaleingängen, wobei an jedem Datensignaleingang ein Datensignal bereitstellbar ist;
- – mit einem ersten Logikfunktionsblock, der mit einem ersten Datensignaleingang und einem zweiten Datensignaleingang der Datensignaleingänge gekoppelt ist;
- – mit einem zweiten Logikfunktionsblock, der mit einem dritten Datensignaleingang und einem vierten Datensignaleingang der Datensignaleingänge gekoppelt ist;
- – mit mindestens einem Logikfunktionkonfigurationseingang mittels welchem eine von dem jeweiligen Logikfunktionsblock realisierbare Logik-Teilfunktion aus einer Mehrzahl von realisierbaren Logik-Teilfunktionen zum verknüpfen der an dem jeweiligen Logikfunktionsblock anliegenden Datensignale vorgebbar ist;
- – mit einer ersten Mehrfachfunktionseinrichtung, deren erster Dateneingang mit einem Ausgang des ersten Logikfunktionsblocks und deren zweiter Dateneingang mit einem Ausgang des zweiten Logikfunktionsblocks gekoppelt ist und die selektiv als erster Multiplexer, dessen Steuereingang mit einem fünften Datensignaleingang der Datensignaleingänge gekoppelt ist, oder als dritter Logikfunktionsblock betrieben werden kann;
- – mit einem zweiten Multiplexer, dessen Steuereingang mit einem sechsten Datensignaleingang der Datensignaleingänge gekoppelt ist, dessen erster Dateneingang mit einem siebten Datensignaleingang der Datensignaleingänge gekoppelt ist und dessen zweiter Dateneingang mit einem achten Datensignaleingang der Datensignaleingänge gekoppelt ist, oder mit einer zweiten Mehrfachfunktionseinrichtung, deren erster Dateneingang mit dem siebten Datensignaleingang der Datensignaleingänge gekoppelt ist und deren zweiter Dateneingang mit dem achten Datensignaleingang der Datensignaleingänge gekoppelt ist und die selektiv als zweiter Multiplexer, dessen Steuereingang mit dem sechsten Datensignaleingang der Datensignaleingänge gekoppelt ist, oder als vierter Logikfunktionsblock betrieben werden kann;
- – mit einem mit dem Ausgang des ersten Logikfunktionsblocks gekoppelten ersten Datensignalausgang, mit einem mit dem Ausgang des zweiten Logikfunktionsblocks gekoppelten zweiten Datensignalausgang, mit einem mit einem Ausgang der ersten Mehrfachfunktionseinrichtung gekoppelten dritten Datensignalausgang und mit einem mit einem Ausgang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung gekoppelten vierten Datensignalausgang, an welchen Datensignalausgängen ein Signal an dem Ausgang des ersten Logikfunktionsblocks, ein Signal an dem Ausgang des zweiten Logikfunktionsblocks, ein Signal an dem Ausgang der ersten Mehrfachfunktionseinrichtung und ein Signal an dem Ausgang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung jeweils separat abgreifbar ist.
-
Gemäß mehreren Ausführungsformen wird eine Logik-Grundzelle bereitgestellt,
- – mit mindestens acht Datensignaleingängen, wobei an jedem Datensignaleingang ein Datensignal bereitstellbar ist;
- – mit einem ersten Logikfunktionsblock, der mit einem ersten Datensignaleingang und einem zweiten Datensignaleingang der Datensignaleingänge gekoppelt ist;
- – mit einem zweiten Logikfunktionsblock, der mit einem dritten Datensignaleingang gekoppelt ist;
- – mit mindestens einem Logikfunktionkonfigurationseingang, mittels welchem eine von dem jeweiligen Logikfunktionsblock realisierbare Logik-Teilfunktion aus einer Mehrzahl von realisierbaren Logik-Teilfunktionen zum Verknüpfen der an dem jeweiligen Logikfunktionsblock anliegenden Datensignale vorgebbar ist;
- – mit einem ersten Multiplexer, dessen erster Dateneingang mit einem Ausgang des ersten Logikfunktionsblocks gekoppelt ist, dessen zweiter Dateneingang mit einem Ausgang des zweiten Logikfunktionsblocks gekoppelt ist und dessen Steuereingang mit einem fünften Datensignaleingang der Datensignaleingänge gekoppelt ist, oder mit einer ersten Mehrfachfunktionseinrichtung, deren erster Dateneingang mit dem Ausgang des ersten Logikfunktionsblocks gekoppelt ist und deren zweiter Dateneingang mit dem Ausgang des zweiten Logikfunktionsblocks gekoppelt ist und die selektiv als erster Multiplexer, dessen Steuereingang mit dem fünften Datensignaleingang gekoppelt ist, oder als dritter Logikfunktionsblock betrieben werden kann;
- – mit einem zweiten Multiplexer, dessen Steuereingang mit einem sechsten Datensignaleingang der Datensignaleingänge gekoppelt ist, dessen erster Dateneingang mit einem siebten Datensignaleingang der Datensignaleingänge gekoppelt ist und dessen zweiter Dateneingang mit einem achten Datensignaleingang der Datensignaleingänge gekoppelt ist, oder mit einer zweiten Mehrfachfunktionseinrichtung, deren erster Dateneingang mit dem siebten Datensignaleingang der Datensignaleingänge gekoppelt ist und deren zweiter Dateneingang mit dem achten Datensignaleingang der Datensignaleingänge gekoppelt ist und die selektiv als zweiter Multiplexer, dessen Steuereingang mit dem sechsten Datensignaleingang gekoppelt ist, oder als vierter Logikfunktionsblock betrieben werden kann;
- – mit einem mit dem Ausgang des ersten Logikfunktionsblocks gekoppelten ersten Datensignalausgang, mit einem mit dem Ausgang des zweiten Logikfunktionsblocks gekoppelten zweiten Datensignalausgang, mit einem mit einem Ausgang des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung gekoppelten dritten Datensignalausgang und mit einem mit einem Ausgang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung gekoppelten vierten Datensignalausgang, an welchen Datensignalausgängen ein Signal an dem Ausgang des ersten Logikfunktionsblocks, ein Signal an dem Ausgang des zweiten Logikfunktionsblocks, ein Signal an dem Ausgang des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung und ein Signal an dem Ausgang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung jeweils separat abgreifbar ist;
- – mit einem dritten Multiplexer mit einem ersten Dateneingang, einem zweiten Dateneingang und einem Datenausgang, wobei der erste Dateneingang mit dem Ausgang des ersten Logikfunktionsblocks gekoppelt ist, der zweite Dateneingang mit einem vierten Datensignaleingang der Datensignaleingänge gekoppelt ist und der Datenausgang mit einem Eingang des zweiten Logikfunktionsblocks gekoppelt ist.
-
Gemäß einem Aspekt der Erfindung weist eine Logik-Grundzelle zum Bilden mindestens eines Ausgangssignals aus mindestens drei Eingangssignalen gemäß einer vorgebbaren Logikfunktion eine erste Logikzerlegungseinheit zum Realisieren einer ersten Zerlegung der Logikfunktion in mehrere Logikteilfunktionen sowie eine zweite Logikzerlegungseinheit zum Realisieren einer zweiten Zerlegung der Logikfunktion in mehrere Logikteilfunktionen auf. Die erste Logikzerlegungseinheit und die zweite Logikzerlegungseinheit sind eingerichtet
- • zum Realisieren einer Shannon-Zerlegung, oder
- • zum Realisieren einer iterativen Zerlegung, oder
- • zum Realisieren einer disjunkten Zerlegung.
- • Gemäß einer Ausgestaltung der Erfindung ist die erste Einheit eine Shannon-Zerlegungs-Einheit zum Realisieren einer Shannon-Zerlegung einer Logikfunktion in mehrere Logikteilfunktionen.
-
Eine Logik-Grundzellen-Anordnung enthält eine Mehrzahl von miteinander verschalteten Logik-Grundzellen gemäß hierin beschriebener Ausführungsformen.
-
Ein Aspekt der Erfindung kann darin gesehen werden, zwei Logikfunktionsblöcke und einen ersten Multiplexer oder eine erste Mehrfachfunktionseinrichtung derart miteinander zu verschalten und Datensignale an deren Eingängen derart anzulegen, dass eine Logik-Teilfunktion als Teil einer von einer Logik-Grundzellen-Anordnung aus einer Mehrzahl von Logik-Grundzellen zu realisierenden Logik-Gesamtfunktion realisiert werden kann. An einem Ausgang des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung ist anschaulich ein teilweise verarbeitetes Signal bereitgestellt, welches zum Beispiel einem Eingang eines zweiten Multiplexers oder einer zweiten Mehrfachfunktionseinrichtung einer anderen Logik-Grundzelle der Logik-Grundzellen-Anordnung als ein Eingangssignal bereitgestellt werden kann. Eines oder mehrere Eingangssignale für einen zweiten Multiplexer oder eine zweite Mehrfachfunktionseinrichtung einer Logik-Grundzelle einer Logik-Grundzellen-Anordnung kann oder können von einer anderen Logik-Grundzelle, welche eine andere Logik-Teilfunktion der Logik-Gesamtfunktion erfüllt, bereitgestellt werden.
-
Indem die Logik-Grundzelle derart eingerichtet ist, dass ein Signal an dem Ausgang des ersten Logikfunktionsblocks, ein Signal an dem Ausgang des zweiten Logikfunktionsblocks und ein Signal an dem Ausgang des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung an ersten bis dritten Datensignalausgängen jeweils separat abgreifbar sind, können diese teilverarbeiteten Signale jeweils separat anderen Komponenten einer komplexeren Schaltung bereitgestellt bzw. zugeführt werden. Wird eine Logik-Teilfunktion, wie sie von jedem der Logikfunktionsblöcke aus Datensignalen generiert wird, an anderer Stelle einer solchen komplexeren Schaltung benötigt, so sind hierfür keine separaten Ressourcen erforderlich. Genauso sind keine separaten Ressourcen erforderlich, wenn an einer beliebigen Stelle der Schaltung das Ausgangssignal des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung benötigt wird, da dieses an dem dritten Datensignalausgang separat abgegriffen werden kann. Diese teilverarbeiteten Signale können anderen Komponenten der Schaltung mit geringem Aufwand zugeführt werden. Das Abgreifen von Ausgangssignalen der Logikfunktionsblöcke, welche simultan als Eingangssignale des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung dienen, ermöglicht somit eine optimierte Ausnutzung von Logik-Ressourcen und führt zu einem hohen Maß an Flexibilität sowie einer geringen erforderlichen Chipfläche.
-
Somit ist es mit einer Logik-Grundzelle gemäß verschiedenen Ausführungsformen der Erfindung bzw. mit einer darauf basierend gebildeten Logik-Grundzellen-Anordnung ermöglicht, simultan Logikfunktionen hoher Komplexität zwecks besserer Verarbeitbarkeit auf Logikfunktionen geringerer Komplexität zurückzuführen und Logik-Zwischenergebnisse an den Ausgängen der Einzelkomponenten der Logik-Grundzelle separat zur Bereitstellung an andere Ressourcen abzugreifen. Die Signale an den drei Datensignalausgängen können somit an externen Anschlüssen der Logik-Grundzelle abgegriffen werden.
-
Ferner kann eine z. B. sehr komplizierte bzw. von einer großen Zahl von Eingangssignalen abhängige Logik-Gesamtfunktion mittels einer Logik-Grundzelle gemäß verschiedenen Ausführungsformen der Erfindung in eine Mehrzahl von weniger komplizierten bzw. von einer geringeren Zahl von Eingangssignalen abhängigen Logik-Teilfunktionen aufgeteilt werden, wobei die Logik-Teilfunktionen von unterschiedlichen Logik-Grundzellen realisiert werden können. Dadurch ist eine komplexe Logik-Grundfunktion auf mehrere einfachere Logik-Teilfunktionen zurückgeführt, welche in einer modularen Verschaltung einzelner Logik-Grundzellen realisierbar ist.
-
Anders ausgedrückt kann durch eine Verschaltung von Logik-Grundzellen miteinander eine beliebige komplizierte Logik-Gesamtfunktion, die abhängig von einer Vielzahl von Eingangssignalen ist, auf einfachere Logik-Teilfunktionen einer geringeren Zahl von Eingängen zurückgeführt werden, indem basierend auf der boolschen Logik eine vorzugsweise halbleitertechnologische Schaltungsarchitektur geschaffen wird.
-
Die Grundzelle realisiert eine gute Abbildbarkeit sowohl einfacher als auch komplexerer Logik-Funktionen, ohne einen unnötigen Overhead zu erzeugen. Somit ist anschaulich eine partitionierungsverbesserte bzw. partitionierungsoptimierte Grundzelle geschaffen, die in einem FPGA oder einem Structured ASICs Verwendung finden kann.
-
Somit ist eine Logik-Grundzelle bereitgestellt, mittels welcher eine lückenlose verbesserte Partitionierbarkeit für Logikfunktionen von n Eingängen ermöglicht ist, wobei mittels der isolierten Abgreifbarkeit von teilweise verarbeiteten Signalen an Ausgängen der Logikfunktionsblöcke ein hohes Maß an Flexibilität und Benutzerfreundlichkeit erreicht ist. Wenn eine Funktion von n Eingängen in genau einer Logik-Grundzelle realisiert werden kann, ist es gemäß Ausführungsformen der Erfindung ermöglicht, eine Funktion von (n + 1) Eingängen mit höchstens zwei Logik-Grundzellen bzw. eine Funktion von (n + i) Eingängen mit höchstens 2i Logik-Grundzellen zu realisieren. Hierbei ist eine Logik-Grundzelle vorzugsweise derart realisiert, dass ihre Kombinatorik ebenfalls skaliert ist. Eine Grundzelle mit einer kombinatorischen Funktion von n Eingängen kann auch innerhalb der Grundzelle aus zwei Funktionen von (n – 1) Eingängen aufgebaut sein, welche zwei Funktionen mittels der beiden Logikfunktionsblöcke realisiert werden.
-
Es ist anzumerken, dass die Logik-Ergebnisse der Logik-Teilfunktionen der Logikfunktionsblöcke nicht nur Eingängen des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung bereitgestellt sind, sondern es ist auch ermöglicht, Ausgangssignale gemäß diesen Logik-Teilfunktionen unabhängig abzugreifen. Somit sind solche Unterfunktionen auch einzeln verfügbar.
-
Die Auswahl einer Logik-Teilfunktion (zum Beispiel UND-Verknüpfung, ODER-Verknüpfung, Exklusiv-ODER-Verknüpfung, Nicht-UND-Verknüpfung, Nicht-ODER-Verknüpfung, Nicht-Exklusiv-ODER-Verknüpfung, etc.) eines Logikfunktionsblocks erfolgt vorzugsweise mittels Konfigurierens des oder der Logikfunktionkonfigurationseingänge des jeweiligen Logikfunktionsblocks, In der schaltungstechnischen Realisierung kann ein Logikfunktionsblock miteinander verschaltete Transistoren aufweisen, wobei mittels Anlegens von Logikfunktionssignalen an die Logikfunktionkonfigurationseingänge der Logikfunktionsblöcke bestimmte Pfade innerhalb der Transistoren durchgeschaltet werden können, so dass Eingangssignale gemäß diesen ausgewählten Pfaden gemäß einer vorgebbaren Logik-Teilfunktion verarbeitbar sind.
-
Im Weiteren wird die Logik-Grundzelle basierend auf der boolschen Logik erläutert. Anschaulich wird eine Aussage der boolschen Logik als Grundlage für eine Schaltungsarchitektur verwendet, welche sich in einer Logik-Grundzelle gemäß Ausführungsformen der Erfindung niederschlägt.
-
Eine Funktion f(a
n, a
n-1, ..., a
0) von n + 1 Eingangssignalen a
i lässt sich gemäß der boolschen Logik folgendermaßen auf zwei Funktionen f
0, f
1 von jeweils n Eingangssignalen a
i zurückführen:
-
Hierbei ist
das logisch Inverse des Datensignals an. Für den Fall n = 2, das heißt für eine Funktion von n + 1 = 3 Eingangssignalen, ist somit die Logik-Gesamtfunktion f als Funktion dreier Eingangssignale auf zwei Logik-Teilfunktionen f
0 und f
1 mit zwei Eingangssignalen zurückgeführt. Jede der Logik-Teilfunktionen f
0, f
1 kann von einem der Logikfunktionsblöcke einer Logik-Grundzelle realisiert werden.
-
Für den Spezialfall von n + 1 = 4 Eingangssignalen kann unter Verwendung von Gleichung (2) die Logik-Gesamtfunktion auf zwei Funktionen von drei Eingangssignalen zurückgeführt werden, wobei jede Funktion von drei Eingangssignalen unter nochmaliger Anwendung von Gleichung (2) wiederum in zwei Logik-Teilfunktionen mit zwei Eingängen aufgeteilt werden kann. Mit anderen Worten kann eine Logik-Gesamtfunktion von vier Datensignalen in vier Logik-Teilfunktionen zerlegt werden, welche von vier Logikfunktionsblöcken, das heißt zwei Logik-Grundzellen gemäß Ausführungsformen der Erfindung, realisiert werden können. Diese Überlegung lässt sich für eine beliebige Anzahl von Eingangssignalen fortsetzen, zum Beispiel sind zum Realisieren einer Logik-Gesamtfunktion von fünf Datensignalen 2·2·2 = 8 Logikfunktionsblöcke, das heißt vier Logik-Grundzellen mit jeweils zwei Logikfunktionsblöcken erforderlich. Diese Überlegungen veranschaulichen den modularen Aufbau einer Logik-Grundzellen-Anordnung gemäß Ausführungsformen der Erfindung.
-
Bei der Logik-Grundzelle kann der erste Datensignaleingang mit dem dritten Datensignaleingang und/oder der zweite Datensignaleingang mit dem vierten Datensignaleingang gekoppelt sein. Gemäß dieser Verschaltung werden zwei Datensignale gemäß der ersten Logik-Teilfunktion von dem ersten Logikfunktionsblock verarbeitet und werden dieselben zwei Datensignale gemäß der zweiten Logik-Teilfunktion von dem zweiten Logikfunktionsblock verarbeitet. Das Verknüpfen der Ausgangssignale der beiden Logikfunktionsblöcke ermöglicht dann das Generieren einer komplexeren Logikverarbeitung der beiden Datensignale mit zusätzlichen Datensignalen.
-
Gemäß einem weiteren Aspekt der Erfindung ist ein zweiter Multiplexer oder eine zweite Mehrfachfunktionseinrichtung bereitgestellt, deren Steuereingang mit einem sechsten Datensignaleingang der Datensignaleingänge gekoppelt ist, deren erster Dateneingang mit einem siebten Datensignaleingang der Datensignaleingänge gekoppelt ist und deren zweiter Dateneingang mit einem achten Datensignaleingang der Datensignaleingänge gekoppelt ist. Eine Logik-Grundzelle weist somit mindestens acht Datensignaleingänge auf.
-
Eine Logik-Grundzelle gemäß verschiedenen Ausführungsformen der Erfindung enthält somit einen zusätzlichen zweiten Multiplexer oder eine zusätzliche zweite Mehrfachfunktionseinrichtung, der/die von den übrigen Komponenten der Logik-Grundzelle elektrisch entkoppelt sein kann. Die zweite Mehrfachfunktionseinrichtung oder der zweite Multiplexer bildet eine freie Ressource, die (je nach Verschaltung, zum Beispiel unter Verwendung des Ausgangssignals des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung oder unter Verwendung von Signalen, die dem Multiplexer oder der Mehrfachfunktionseinrichtung aus anderen Logik-Grundzellen der erfindungsgemäßen Logik-Grundzellen-Anordnung bereitgestellt sind) für beliebige Logik-Aufgaben benutzerdefiniert verwendbar ist.
-
Ein Aspekt der Erfindung ist das Koppeln von zwei Logikfunktionsblöcken und des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung einer ersten Logik-Grundzelle mit einem zweiten Multiplexer oder einer zweiten Mehrfachfunktionseinrichtung einer zweiten Logik-Grundzelle.
-
Es können beliebig komplexe Logikfunktionen mit nur geringem Zusatzaufwand aufgebaut werden. Für das Realisieren einer Logik-Gesamtfunktion nicht benutzte bzw. nicht erforderliche kombinatorische Ressourcen bleiben frei und können durch andere Funktionen belegt werden. Mit anderen Worten ist es bei der Verschaltung von Logik-Grundzellen zum Bilden einer Logik-Grundzellen-Anordnung möglich, solche Komponenten der Logik-Grundzellen, welche für eine spezielle Anwendung nicht benötigt werden, nicht ungenutzt brach liegen zu lassen, sondern für andere Funktionen eines Schaltkreises mitzuverwenden. Dadurch ist eine optimale Nutzbarkeit der Ressourcen eines Logik-Schaltkreises ermöglicht. Somit ist eine sehr gute Auslastung der Logik-Kombinatorik bei sehr hoher Skalierbarkeit erreicht.
-
Anders ausgedrückt ist die Logik-Grundzelle aufgebaut aus den miteinander verschalteten beiden Logikfunktionsblöcken und dem ersten Multiplexer oder der ersten Mehrfachfunktionseinrichtung einerseits sowie dem zweiten Multiplexer oder der zweiten Mehrfachfunktionseinrichtung andererseits. Diese zwei Teilblöcke der Logik-Grundzelle können voneinander elektrisch isoliert vorgesehen sein. Die Logik-Grundzelle weist von ihrer externen Betrachtung her gesehen eine Vielzahl von Dateneingängen auf, welche als Eingänge der Logikfunktionsblöcke und des Multiplexers oder der Mehrfachfunktionseinrichtung vorgesehen sind.
-
Ferner weist die Logik-Grundzelle mindestens vier, vorzugsweise genau vier unabhängige kombinatorische Ausgänge und zwei zu zwei unabhängigen kombinatorischen Ausgängen negierte kombinatorische Ausgänge und mindestens einen sequentiellen Ausgang auf. Die vier unabhängigen kombinatorischen Ausgänge entsprechen den Ausgängen der Multiplexer oder Mehrfachfunktionseinrichtungen und den Ausgängen der Logikfunktionsblöcke. Die negierten kombinatorischen Ausgänge sind die zusätzlichen negierten Ausgänge der Multiplexer oder Mehrfachfunktionseinrichtungen. Der sequentielle Ausgang kann wahlweise einer der sechs kombinatorischen Ausgänge, die in einem Register um einen Takt verzögert wurden, sein. Natürlich können statt des einen auch zwei, drei, vier, fünf oder sechs Register verwendet werden, die in beliebiger Weise mit den kombinatorischen Ausgangssignalen belegt werden können.
-
Daher ist anschaulich ein universell einsetzbares Bauelement geschaffen, dem lediglich von außen zu verarbeitende Datensignale zugeführt werden, die gemäß der Verschaltung innerhalb der Logik-Grundzelle und zwischen einer Mehrzahl von Logik-Grundzellen einer Logik-Grundzellen-Anordnung definiert ist.
-
Ein wichtiger Aspekt der Erfindung kann darin gesehen werden, dass ein (freier) Multiplexer oder eine (freie) Mehrfachfunktionseinrichtung einer Logik-Grundzelle gemeinsam mit Logikblöcken aus anderen Logik-Grundzellen verwendet werden kann, wodurch die erreichbare Logik-Komplexität erhöht wird. Andere Komponenten der Logik-Grundzelle der/des so verschalteten Multiplexers/Mehrfachfunktionseinrichtung können dann in andere Logik-Funktionen eingebunden werden, so dass ein hohes Maß an Designfreiheit mit einer effizienten und platzsparenden Ausnutzung der Ressourcen der Logik-Grundzelle kombiniert sind.
-
Zumindest einer der Logikfunktionsblöcke der Logik-Grundzelle kann einen mit zumindest einem Teil der Datensignaleingänge des jeweiligen Logikfunktionsblocks gekoppelten ersten Signalpfad mit einer Mehrzahl von Transistoren eines ersten Leitungstyps aufweisen, wobei die Transistoren derart miteinander verschaltbar sind, dass sie die von dem jeweiligen Logikfunktionsblock realisierbare Logik-Teilfunktion aus allen möglichen realisierbaren Logik-Teilfunktionen zum Verknüpfen der an dem jeweiligen Logikfunktionsblock anliegenden Datensignalen realisieren können, so dass ein das Ergebnis der Logik-Teilfunktion repräsentierendes Ausgangssignal bereitgestellt wird. Ferner kann zumindest einer der Logikfunktionsblöcke einen mit zumindest einem Teil der Datensignaleingänge des jeweiligen Logikfunktionsblocks gekoppelten zweiten Signalpfad mit einer Mehrzahl von Transistoren eines zu einem ersten Leitungstyp komplementären zweiten Leitungstyps aufweisen, wobei die Transistoren derart miteinander verschaltbar sind, dass sie eine zu der von den Transistoren des ersten Signalpfads inverse Logik-Teilfunktion von allen möglichen Logik-Teilfunktionen zur logischen Verknüpfung der zwei Datensignale realisieren, so dass ein das Ergebnis der Logik-Teilfunktion repräsentierendes Ausgangssignal bereitgestellt ist.
-
Gemäß dieser Ausgestaltung wird für einen Logikfunktionsblock eine universell konfigurierbare Logikzelle verwendet, mittels welcher an den Datensignaleingängen bereitstellbare Datensignale miteinander gemäß einer vorgebbaren Logikfunktion verknüpfbar sind. Die Transistoren des ersten Leitungstyps (zum Beispiel n-MOS-Transistoren oder p-MOS-Transistoren) und die Transistoren des zweiten Leitungstyps (zum Beispiel p-MOS-Transistoren oder n-MOS-Transistoren) können z. B. in CMOS-Technologie realisiert werden. Bei dieser Ausgestaltung der Logikfunktionsblöcke sind weder Look-up-Tabellen noch Gatter-Anordnungen zur Realisierung einer beliebigen Logik-Grundfunktion erforderlich. Mit dem dadurch bereitgestellten Transistornetzwerk, das aus den beiden Signalpfaden mit zueinander komplementären Transistortypen gebildet ist, kann mittels Vorgebens der Verschaltung der Transistoren jede beliebige aller möglichen Logikfunktionen für die jeweilige Zahl von Eingangssignalen realisiert werden. Mathematisch können die aus der boolschen Logik resultierenden Produktterme einer Logikfunktion als Serienpfade der n-Kanal-Transistoren bzw. p-Kanal-Transistoren gebildet werden. Jeweils einander ausschließende Produktterme können unter Verwendung eines Schalters zusammengefasst werden. Diese Ausgestaltung der Logikfunktionsblöcke zeichnet sich durch eine hohe Störsicherheit aus. Ferner ist nur eine geringe Chipfläche zum Realisieren der Logikoperation erforderlich, und dies bei einer sehr geringen Verlustleistung und einer hohen Schaltgeschwindigkeit. Darüber hinaus ist eine hohe Störsicherheit und eine flexible Skalierbarkeit für eine beliebige Zahl von Dateneingängen und Datenausgängen ermöglicht.
-
Gemäß einer Ausgestaltung der Erfindung kann zumindest einer der Logikfunktionsblöcke in der Struktur eines Programmable Logic Device (PLD), eines Field-Programmable Gate-Array (FPGA), eines maskenprogrammierten Application-Specific Integrated Circuit (mASIC), als Logik-Gatter oder Anordnung mehrerer Logik-Gatter oder als Look-Up-Tabelle gebildet sein. Erfindungsgemäß kann im Prinzip jede beliebige Ausgestaltung für die Logikfunktionsblöcke gewählt werden. Im Falle der Ausgestaltung eines Logikfunktionsblocks als Look-Up-Tabelle kann beispielsweise die aus [1] bekannte Architektur in der Logik-Grundzelle der Erfindung implementiert werden. Im Falle der Realisierung eines Logikfunktionsblocks als maskenprogrammierter Application-Specific Integrated Circuit bzw. als ”structured ASIC” kann eine gewünschte Logik-Teilfunktion eines Logikfunktionsblocks mittels Festverdrahtens von Transistoren innerhalb des Logikfunktionsblocks realisiert werden.
-
Mit anderen Worten kann unter Verwendung von Vias oder anderen Kopplungselementen ein bestimmter Signalpfad bzw. mehrere Signalpfade innerhalb der Transistor-Anordnung eines solchen ”structured ASIC” ausgewählt werden, wodurch eine feste Logikfunktion dem Logikfunktionsblock zugeordnet ist.
-
An dem mindestens einen Logikfunktionkonfigurationseingang kann dem jeweiligen Logikfunktionsblock die realisierbare Logik-Teilfunktion unveränderlich vorgegeben werden. Gemäß dieser Ausgestaltung erfüllt der Logikfunktionsblock stets die ihm fest und unveränderlich zugewiesene Logik-Teilfunktion, da diese mittels Anlegens vorgegebener Signale (oder Betriebsspannungen) an den Logikkonfigurationseingängen fest eingestellt ist. Die vorgegebene Logik-Teilfunktion kann auch festverdrahtet mittels Kurzschließens oder entsprechender Hardware-mäßiger Kopplung der Transistoren des Logikfunktionsblocks realisiert werden. Dann können an die in festgelegter Weise miteinander verschalteten Transistoren über einen oder mehrere Anschlüsse des Logikfunktionsblocks vorgegebene elektrische Potentiale (z. B. Betriebsspannung, Massepotential) angelegt werden.
-
Bei fest vorgegebener Logik-Teilfunktion eines Logikfunktionsblocks kann eine mit dem mindestens einen Logikfunktionkonfigurationseingang gekoppelte Speicher-Einrichtung vorgesehen sein, in welcher die Information zum Vorgeben der realisierbaren Logik-Teilfunktion speicherbar ist. Somit ist in einer solchen Speicher-Einrichtung ein Datenwort speicherbar, in welchem die Logik-Teilfunktion des Logikfunktionsblocks kodiert ist, zum Beispiel als binäres Datenwort.
-
Alternativ zu der beschriebenen Ausgestaltung kann an dem mindestens einen Logikfunktionkonfigurationseingang dem jeweiligen Logikfunktionsblock die realisierbare Logik-Teilfunktion mittels eines anlegbaren Signals variabel vorgegeben sein. Bei dieser Ausgestaltung eines Logikfunktionsblocks kann dieser jede beliebige Logikfunktion durchführen, welche der Logik-Grundzelle mittels eines (zum Beispiel zeitlich) veränderlichen elektrischen Potentials an Steuereingängen von Transistoren innerhalb des Logikfunktionsblocks vorgegeben ist. In diesem Szenario kann der Logikfunktionsblock als variable Logikkomponente in der übergeordneten Logik-Grundzelle bzw. der dieser übergeordneten Logik-Grundzellen-Anordnung verschaltet werden, was eine flexible Schaltungsarchitektur ermöglicht.
-
Die Logik-Grundzelle ist vorzugsweise zum Verarbeiten von digitalen Datensignalen eingerichtet, welche einen logischen Wert ”1” oder ”0” aufweisen.
-
Ferner kann bei der Logik-Grundzelle mindestens ein den ersten und zweiten Logikfunktionsblöcken und den ersten und zweiten Multiplexern oder Mehrfachfunktionseinrichtungen nachgeschaltetes Register zum Abgreifen von an Ausgängen der Logik-Grundzelle bereitgestellten Signalen vorgesehen sein. Um eine externe Anlegbarkeit von Signalen an die Logik-Grundzelle bzw. eine externe Abgreifbarkeit von Signalen von der Logik-Grundzelle zu ermöglichen, ist den Ausgängen der Multiplexer oder Mehrfachfunktionseinrichtung vorzugsweise ein Register (beispielsweise unter Verwendung von Flip-Flops) nachgeschaltet, so dass anschaulich ein Register-zu-Register-Pfad zwischen Eingangssignalen und Ausgangssignalen geschaffen ist, wodurch ein standardisiertes Schaltungsdesign erleichtert ist.
-
Im Weiteren wird die Logik-Grundzellen-Anordnung, die Logik-Grundzellen aufweist, näher beschrieben. Ausgestaltungen der Logik-Grundzelle gelten auch für die Logik-Grundzellen aufweisende Logik-Grundzellen-Anordnung und umgekehrt.
-
Bei der Logik-Grundzellen-Anordnung ist vorzugsweise der Ausgang des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung einer ersten Logik-Grundzelle mit dem ersten Dateneingang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung einer zweiten Logik-Grundzelle gekoppelt. Ferner kann der Ausgang des ersten Multiplexers oder der ersten Mehrfachfunktionseinrichtung einer dritten Logik-Grundzelle mit dem zweiten Dateneingang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung der zweiten Logik-Grundzelle gekoppelt sein.
-
Gemäß dieser Ausgestaltung kann unter Verwendung von Logikfunktionsblöcken samt erstem Multiplexer oder erster Mehrfachfunktionseinrichtung von zwei Logik-Grundzellen und einem zweiten Multiplexer oder einer zweiten Mehrfachfunktionseinrichtung einer dritten Logik-Grundzelle eine Logikfunktion von vier Variablen verarbeitet werden. Jeder Logikfunktionsblock innerhalb der ersten und zweiten Logik-Grundzelle kann eine Funktion von zwei Variablen verarbeiten, wobei mittels Weiterverarbeitens der Ausgabesignale der beiden Logikfunktionsblöcke mittels des zugehörigen ersten Multiplexers oder der zugehörigen ersten Mehrfachfunktionseinrichtung in jeder der ersten und zweiten Logik-Grundzellen gemäß Gleichung (2) eine Verarbeitung einer Logik-Teilfunktion von drei Variablen ermöglicht ist. Gemäß der beschriebenen Verschaltung werden die Ausgabesignale der Funktion von jeweils drei Variablen der ersten und zweiten Logik-Grundzellen in den Dateneingängen des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung der dritten Logik-Grundzelle zusammengeführt, so dass eine Logikfunktion von mindestens vier Variablen verarbeitet werden kann. Diese Anordnung der ersten bis dritten Logik-Grundzellen kann als eine Basisstruktur einer Logik-Grundzellen-Anordnung aufgefasst werden, wobei wiederum eine Mehrzahl solcher Basisstrukturen miteinander verschaltet werden können, um noch komplexere Logikfunktionen, d. h. Logikfunktionen mit fünf und mehr Datensignalen miteinander zu verknüpfen.
-
Zumindest ein Dateneingang des zweiten Multiplexers oder der zweiten Mehrfachfunktionseinrichtung der ersten und/oder der dritten Logik-Grundzelle kann von einer Kopplung mit anderen Logikzellen frei sein. Ferner kann der erste und/oder der zweite Logikfunktionsblock und/oder der erste Multiplexer oder die erste Mehrfachfunktionseinrichtung der zweiten Logik-Grundzelle von einer Kopplung mit anderen Logik-Grundzellen frei sein. Zumindest ein Teil des/der mindestens einen von einer Kopplung mit anderen Logik-Grundzellen freien Logikfunktionsblocks und/oder Multiplexers oder Mehrfachfunktionseinrichtung kann mit einem zusätzlichen Schaltkreis derart verschaltet werden, dass diese mindestens eine Komponente zu der Funktionalität des zusätzlichen Schaltkreises beitragen kann. Das heißt, dass von den ersten und zweiten und dritten Logik-Grundzellen jeweils nur ein Teil der Komponenten zur Durchführung der beabsichtigten Logikfunktion verwendet werden kann, wohingegen die restlichen Ressourcen nicht für die Logikfunktion benötigt werden und daher für andere Anwendungen zur Verfügung gestellt sind. Anders ausgedrückt kann zur Verknüpfung der Ausgangssignale der ersten Multiplexer oder der ersten Mehrfachfunktionseinrichtungen der ersten und dritten Logik-Grundzelle ein freier zweiter Multiplexer oder eine freie zweite Mehrfachfunktionseinrichtung der zweiten Logik-Grundzelle verwendet werden, deren Restblöcke von einer Logik-Funktionalität frei bleiben. Ebenso bleiben die zweiten Multiplexer oder Mehrfachfunktionseinrichtungen der ersten und dritten Logik-Grundzelle von einer Logikfunktion in Rahmen der Logik-Grundzellen-Anordnung frei und können für andere Anwendungen verwendet werden. Dadurch ist eine verbesserte bzw. optimierte Ressourcenausnutzung ermöglicht.
-
Die Logik-Grundzelle und die Logik-Grundzellen-Anordnung können als integrierter Schaltkreis realisiert sein.
-
Ein Aspekt der Erfindung kann darin gesehen werden, dass eine Logik-Grundzelle derart eingerichtet bzw. verschaltet wird, dass sie die oben bezugnehmend auf Gleichung (2) beschriebene Shannon-Zerlegung durchführt, allerdings ergänzt um mindestens eine zusätzliche Zerlegung (z. B. eine iterative Zerlegung oder eine disjunkte Zerlegung), so dass die Flexibilität der erfindungsgemäßen Grundzelle durch das Hinzunehmen von mindestens einer zusätzlichen Zerlegung signifikant erhöht ist.
-
Mit den mindestens zwei Zerlegungen, die in der erfindungsgemäßen Grundzelle ermöglicht sind, nämlich mit der Shannon-Zerlegung und mindestens einer zusätzlichen Zerlegung, wird eine lückenlose Partitionierbarkeit einer logischen Funktion von n Eingängen ermöglicht. Wenn eine Funktion von n Eingängen (d. h. eine Funktion, die von n gemäß einer vorgebbaren Logikfunktion, z. B. UND-Verknüpfung, zu verknüpfenden Datensignalen abhängt) in einer Basiszelle realisiert werden kann, ist es erfindungsgemäß möglich, eine Funktion von mindestens (n + 1) Eingängen mit zwei Basiszellen und eine Funktion von mindestens (n + i) Eingängen mit 2i Basiszellen zu realisieren. Eine Basiszelle ist derart gestaltet, dass ihre Kombinatorik ebenfalls skaliert ist. Eine Grundzelle mit einer kombinatorischen Funktion von n Eingängen kann aus zwei Funktionsblöcken von (n – 1) Eingängen aufgebaut sein, wobei diese Unterfunktionen auch einzeln verfügbar sein können. Auf diese Weise können beliebig komplexe logische Funktionen nahezu ohne Zusatzaufwand konstruiert werden. Nicht benutzte kombinatorische Ressourcen bleiben frei und können durch andere Funktionen belegt werden. Erfindungsgemäß ist nahezu eine optimale Auslastung der Kombinatorik eines logischen Zellexifeldes möglich. Kombinatorik und Register einer Zelle können gemeinsam, aber auch völlig unabhängig voneinander benutzt werden, was die Flexibilität der erfindungsgemäßen Zelle weiter erhöht.
-
Ein Aspekt der Erfindung basiert auf der Zerlegung von logischen Funktionen. Eine solche Zerlegung kann in einer sASIC-Grundzelle mit maximaler Flexibilität im Aufbau logisch komplexer Funktionen realisiert sein.
-
Um eine Logikfunktion zu realisieren, d. h. um eine logische Verknüpfung von n Datensignalen zum Bilden eines Ausgangssignals durchzuführen, wird erfindungsgemäß eine solche Zerlegung der Logikfunktion in mehrere einfachere Logikteilfunktionen mit geringerem Komplexitätsgrad vorgenommen, dass die Zusammensetzung der Logikteilfunktionen im Ganzen die Logikfunktion realisiert. Die Art und Weise der Zerlegung beinhaltet erfindungsgemäß nicht nur die Shannon-Zerlegung gemäß Gleichung (1), sondern mindestens eine zusätzliche Zerlegung, die zum Realisieren von manchen Logikfunktionen günstiger ist als die Shannon-Zerlegung. Je nach der im speziellen Anwendungsfall zu realisierenden Logikfunktion kann dann selektiv auf die Ressourcen einer Shannon-Zerlegungs-Einheit und/oder einer Einheit zum Realisieren der mindestens einen zusätzlichen Zerlegung zurückgegriffen werden, je nachdem ob z. B. eine besonders platzsparende oder eine besonders schnelle oder ressourcenschonende Konfiguration angestrebt wird.
-
In einer Logik-Grundzelle gemäß verschiedenen Ausführungsformen der Erfindung ist eine Shannon-Zerlegungs-Einheit vorgesehen, mittels welcher eine Funktion f von n + 1 Variablen in zwei Teilfunktionen f1 und f0 zurückgeführt werden kann, die jeweils nur von n Variablen abhängen. Dieses Prinzip entspricht in mathematischer Darstellung Gleichung (1).
-
Die beiden Funktionen f1, f0 lassen sich als Abbildung IBn → IB auffassen, da ihr Definitionsbereich die Dimensionalität n hat.
-
Mit der Shannon-Zerlegung, die gemäß verschiedenen Ausführungsformen der Erfindung mittels der Shannon-Zerlegungs-Einheit realisiert ist, steht eine jederzeit anwendbare Lösung für den allgemeinen Fall zur Verfügung, mit der eine komplexe Logikfunktion von n + 1 Variablen auf mehrere Logikteilfunktionen mit einer geringeren Anzahl von Variablen zurückgeführt werden kann. Würde jedoch – wie gemäß dem Stand der Technik in einer Logik-Grundzelle lediglich die Shannon-Zerlegung als einzige Zerlegung angeboten, kann es für bestimmte Anwendungen vorkommen, dass keine ausreichend niedrige Gatterlaufzeit oder keine ausreichend geringe Anzahl an Gattern ermöglicht ist. Eine solche niedrige Gatterlaufzeit oder eine minimale Anzahl von Gattern ist jedoch bei bestimmten Anwendungen vorteilhaft. Die Shannon-Zerlegung allein liefert jedoch Schaltkreise der Tiefe O(n) und kann demnach in manchen Fällen suboptimale Resultate liefern.
-
Aus diesem Grunde ist gemäß verschiedenen Ausführungsformen der Erfindung in einer Logik-Grundzelle nicht nur eine Shannon-Zerlegungs-Einheit zum Realisieren der oben beschriebenen Shannon-Zerlegung vorgesehen, sondern es ist zusätzlich mindestens eine Einheit zum Realisieren einer zusätzlichen Zerlegung einer Logikfunktion in mehrere Logikteilfunktionen bereitgestellt. Je nachdem, ob z. B. die Gatterlaufzeit minimiert werden soll oder ob die Anzahl der erforderlichen Gatter minimiert werden soll, kann als zusätzliche Zerlegung z. B. eine iterative Zerlegung oder eine disjunkte Zerlegung verwendet werden. Es ist jedoch auch jede andere mathematische Zerlegung möglich, mittels welcher eine Logikfunktion auf weniger komplexe Logikfunktionen zurückgeführt werden kann.
-
Die iterative Zerlegung lässt sich durch Gleichung (3) darstellen: f:IBn+1 → IB:f(an, an-1, ..., a1, a0) = f0(f1(Q), R) (3) wobei: Q, R ⊆ {an, an-1, ..., a1, a0} ∧ Q ∩ R = 0 (4)
-
In Gleichungen (3), (4) stellt f eine Funktion von n + 1 Variablen an, an-1, ..., a0 dar, die zurückgeführt wird auf eine Funktion f0, die wiederum von einer Funktion f1(Q) und von R abhängt. Q und R sind jeweils Mengen, von denen jede eine oder eine Mehrzahl der Variablen ai mit i = 0, 1 ..., n als Elemente aufweist.
-
Es gilt die Beziehung: f0:IB|R|+1 → IB und f1:IB|Q| → IB (5)
-
Die rekursive Anwendung der iterativen Zerlegung liefert anschaulich Schaltkreise einer Pipeline-artigen Struktur und benötigt bei O(n) Tiefe nur n Gatter. Die iterative Zerlegbarkeit ist keine generelle Eigenschaft einer boolschen Funktion.
-
In einer schaltungstechnischen Realisierung kann eine iterative Zerlegung dadurch realisiert werden, dass ein Ausgang von einem Logikfunktionsblock, in dem eine erste Logikteilfunktion realisiert wird, beispielsweise mit dem Eingang eines Multiplexers gekoppelt wird, dessen Ausgang dann mit einem zweiten Logikfunktionsblock gekoppelt sein kann. Der zweite Eingang des Multiplexers führt dabei auf einen Dateneingang und der dritte Eingang des Multiplexers steuert die Auswahl zwischen dem Datensignaleingang und dem Ausgang des ersten Logikfunktionsblocks. Unter Verwendung der iterativen Zerlegung kann insbesondere die Anzahl der erforderlichen Gatter gering gehalten werden.
-
Die erfindungsgemäße Kombination der iterativen Zerlegung mit der Shannon-Zerlegung stellt sicher, dass auch in einem Szenario, in dem eine Logikfunktion einer iterativen Zerlegung nicht zugänglich ist bzw. für die eine iterative Zerlegung nicht gewünscht wird oder nicht vorteilhaft ist, in jedem Fall eine stets mögliche Realisierung mittels der Shannon-Zerlegung erfolgen kann.
-
Im Weiteren wird bezugnehmend auf Gleichungen (6), (7) eine disjunkte Zerlegung als weiteres Beispiel für eine Zerlegung beschrieben, die in einer Logik-Grundzelle gemäß verschiedenen Ausführungsformen der Erfindung zusätzlich zu der Shannon-Zerlegung realisiert sein kann. Die disjunkte Zerlegung basiert auf der Zerlegung gemäß Gleichung (6): f:IBn+1 → IB:f(an, an-1, ..., a1, a0) = f0(f1(Q1), f2(Q2)) (6) wobei Q1 ∪ Q2 = {an, an-1, ..., a1, a0) ∧ Q1 ∩ Q2 = 0 (7)
-
Bei der disjunkten Zerlegung wird eine Funktion f von n + 1 Variablen ai auf eine Funktion f0 zurückgeführt, die von weniger komplexen Teilfunktionen f1, f2 abhängt, wobei f1 von einer Teilmenge der Variablen ai abhängt, und f2 von einer anderen Teilmenge der Variablen ai abhängt.
-
Wenn man die Disjunktivität nicht voraussetzt, so lässt sich jede boolsche Funktion gemäß (6), (7) zerlegen. Die Forderung der Disjunktivität ermöglicht es jedoch, Schaltkreise der Tiefe O(log n) zu konstruieren, was zu einer besonders kurzen Gatterlaufzeit führt.
-
Anschaulich ist bei der Architektur einer Logik-Grundzelle gemäß verschiedenen Ausführungsformen der Erfindung der Gedanke ausgenützt, dass beim Vorsehen einer Shannon-Zerlegung und mindestens einer anderen zusätzlichen Zerlegung (insbesondere einer disjunkten Zerlegung und/oder einer iterativen Zerlegung) die Flexibilität beim Schaltkreisdesign wesentlich erhöht werden kann, und Parameter wie Gatterlaufzeit und Gatteranzahl optimiert werden können. Es ist möglich, dass komplette logische Funktionen oder einzelne Teile davon in anderen logischen Funktionen wiederverwendet werden, weshalb jeder kombinatorische Pfad in einer Logik-Grundzelle als Ausgang derselben bereitstellbar ist. Über einen strukturellen Multiplexer kann ein beliebiger kombinatorischer Pfad innerhalb einer Grundzelle mit dem Eingang eines Zellen-internen Registers verbunden werden. Um Register und Kombinatorik unabhängig voneinander betreiben zu können, kann ein kombinatorischer Leerpfad zum Register vorgesehen werden, der über den gleichen strukturellen Multiplexer geschaltet werden kann. Auf diese Weise können z. B. die Register benachbarter Zellen zu einem Schieberegister verbunden werden, ohne dass die kombinatorischen Ressourcen der beteiligten Zellen belegt werden.
-
Die mindestens eine zusätzliche Zerlegung in der Logik-Grundzelle kann eine iterative Zerlegung sein. Diese schaltungstechnische Realisierung basiert insbesondere auf der mathematischen Darstellung von Gleichungen (4), (5).
-
Die iterative Zerlegung kann mittels des ersten Logikfunktionsblocks realisiert werden, mit mindestens zwei Datensignaleingängen, an denen mindestens zwei Eingangssignale anlegbar sind, und mit einem Datensignalausgang zum Bereitstellen einer Logik-Verknüpfung der mindestens zwei Eingangssignale gemäß einer vorgebbaren Logikteilfunktion. Ferner kann die iterative Zerlegung mittels eines dritten Multiplexers realisiert werden, mit einem ersten und mit einem zweiten Datensignaleingang und mit einem Datensignalausgang, wobei der Datensignalausgang des ersten Logikfunktionsblocks mit dem ersten Datensignaleingang des dritten Multiplexers gekoppelt ist, und wobei ein zusätzliches Eingangssignal an dem zweiten Datensignaleingang des Multiplexers bereitstellbar ist. Die beschriebene Ausgestaltung der Logik-Grundzelle mit realisierter iterativer Zerlegung weist anschaulich eine Pipeline-artige Struktur aus dem ersten Logikfunktionsblock und dem nachgeschalteten dritten Multiplexer auf, wodurch eine schaltungstechnische Realisierung von Gleichungen (4), (5) geschaffen ist.
-
Die mindestens eine zusätzliche Zerlegung kann eine disjunkte Zerlegung sein. Diese schaltungstechnische Realisierung basiert insbesondere auf der mathematischen Darstellung von Gleichungen (6), (7).
-
Eine schaltungstechnische Realisierung der disjunkten Zerlegung ist mittels des ersten Logikfunktionsblocks, des zweiten Logikfunktionsblocks und eines dritten Logikfunktionsblocks realisierbar, wobei der erste Logikfunktionsblock eine erste Logikteilfunktion von mindestens zwei Eingangssignalen realisiert, wobei der zweite Logikfunktionsblock eine zweite Logikteilfunktion von mindestens zwei der Eingangssignalen realisiert und wobei der dritte Logikfunktionsblock eine Logikverknüpfung der Ausgangsignale des ersten und des zweiten Logikfunktionsblocks realisiert.
-
Indem zum Verknüpfen der Ausgangsignale von zwei Logikfunktionsblöcken, in welchen jeweils eine Logikteilfunktion realisiert ist, kein reiner Multiplexer verwendet wird, sondern wiederum ein Logikfunktionsblock, kann die Verknüpfung gemäß (6), (7) realisiert werden.
-
Die disjunkte Zerlegung kann mittels der ersten Mehrfachfunktions-Einrichtung realisiert werden, die selektiv eine Multiplex-Funktionalität von mindestens zwei Eingangssignalen oder die Funktionalität des Bildens einer Logikteilfunktion von mindestens zwei Eingangssignalen realisiert. Insbesondere kann der oben beschriebene dritte Logikfunktionsblock durch die erste Mehrfachfunktions-Einrichtung realisiert sein, die zwischen einer ersten Anwendung als Multiplexer und einer zweiten Anwendung als Logikfunktionsblock geschaltet werden kann.
-
Die Shannon-Zerlegung kann mittels des ersten Logikfunktionsblocks, des zweiten Logikfunktionsblocks und des ersten Multiplexers realisiert werden, wobei der erste Logikfunktionsblock eine erste Logikteilfunktion von mindestens zwei Eingangssignalen realisiert, wobei der zweite Logikfunktionsblock eine zweite Logikteilfunktion von mindestens zwei Eingangssignalen realisiert und wobei der erste Multiplexer die Ausgangssignale der beiden Logikfunktionsblöcke miteinander und mit einem zusätzlichen Eingangssignal verknüpft.
-
Mit dieser schaltungstechnischen Konfiguration kann die basierend auf Gleichung (1) beschriebene Shannon-Zerlegung erfindungsgemäß umgesetzt werden.
-
Vorzugsweise ist die Logik-Grundzelle zum Realisieren einer iterativen Zerlegung und einer disjunkten Zerlegung, d. h. zum Realisieren beider dieser Zerlegungen, eingerichtet. Gemäß dieser Ausgestaltung ist ein besonders hohes Maß an Flexibilität erreicht, indem neben der Shannon-Zerlegung sowohl eine iterative Zerlegung als auch eine disjunkte Zerlegung von der Logik-Grundzelle unterstützt wird, so dass bedarfsweise eine geringe Gatterlaufzeit oder eine geringe Gatteranzahl zum Realisieren einer bestimmten Logikfunktion möglich ist, und dennoch jede beliebige Logikfunktion von einer so ausgestalteten Logik-Grundzelle realisiert werden kann.
-
Bei der Logik-Grundzelle kann zwischen dem Multiplexer und der Mehrfachfunktions-Einrichtung mittels eines unveränderlichen Hardware-Elements umgeschaltet werden und die Funktion der Mehrfachfunktions-Einrichtung ebenfalls durch ein unveränderliches Hardware-Element realisiert werden. Zwischen Multiplexer und der Mehrfachfunktions-Einrichtung kann somit mittels eines unveränderlichen Hardware-Elements gewählt sein. Mittels Vorsehens von Komponenten der Logik-Grundzelle als unveränderliche Hardware-Elemente können statische Multiplexer als strukturelle Multiplexer realisiert werden, wodurch Transistoren eingespart werden können und die erforderliche Chipfläche zum Ausbilden der Logik-Grundzelle verringert wird. Insbesondere kann ein Multiplexer und/oder die Mehrfachfunktions-Einrichtung mittels einer Mehrzahl von Metallisierungsebenen und/oder mittels Vias fest vorgebbar realisiert werden.
-
Die Logik-Grundzelle kann als Application-Specific Integrated Circuit eingerichtet sein, und kann insbesondere als Programmable Logic Device (PLD), als Field-Programmable Gate Array (FPGA) oder als maskenprogrammierter Application-Specific Integrated Circuit eingerichtet sein.
-
Die Logik-Grundzelle der Erfindung kann auch als CMOS-Logik-Grundzelle realisiert sein.
-
Jeder der Logikfunktionsblöcke der erfindungsgemäßen Logik-Grundzelle ist vorzugsweise derart eingerichtet, dass er eine vorgegebene Logikfunktion realisiert. Dies kann z. B. dadurch realisiert werden, dass jeder der Logikfunktionsblöcke als ein Logik-Gatter oder eine Anordnung mehrerer Logik-Gatter vorgesehen ist, oder als eine Look-up-Tabelle.
-
An mindestens einem Logikfunktionskonfigurationseingang der erfindungsgemäßen Logik-Grundzelle kann einem jeweiligen Logikfunktionsblock die von ihm realisierbare Logikteilfunktion unveränderlich vorgegeben sein. Gemäß dieser Ausgestaltung wird die Logik eines jeweiligen Logikfunktionsblocks fest eingestellt, d. h. beispielsweise mittels konstanter Steuersignale justiert, so dass beispielsweise in dem Logikfunktionsblock enthaltene Transistoren in einer ganz bestimmten Weise geschaltet werden, so dass innerhalb des Logikfunktionsblocks nur bestimmte Datenpfade ermöglicht sind und dadurch die angestrebte Logikfunktion realisiert wird.
-
Alternativ zu der beschriebenen Ausgestaltung kann bei der Logik-Grundzelle an mindestens einem Logikfunktionskonfigurationseingang dem jeweiligen Logikfunktionsblock die realisierbare Logikteilfunktion mittels eines anlegbaren Signals variabel vorgegeben werden. In diesem Falle können die Transistor-Gates in einem Logikfunktionsblock beispielsweise dadurch angesteuert werden, dass veränderliche elektrische Signale an Logikfunktionskonfigurationseingängen bereitgestellt werden, so dass gemäß einer speziell einstellbaren Logik nur bestimmte Pfade innerhalb des Logikfunktionsblocks ermöglicht sind, was eine Realisierung einer vorgebbaren Logikfunktion ermöglicht.
-
Die Ausgestaltungen, die bezugnehmend auf die erfindungsgemäße Logik-Grundzelle beschrieben sind, gelten auch für die mehrere Logik-Grundzellen aufweisende Logik-Grundzellen-Anordnung.
-
Ausführungsbeispiele der Erfindung sind in den Figuren dargestellt und werden im Weiteren näher erläutert.
-
Es zeigen:
-
1 eine Logik-Grundzellen-Anordnung zur Veranschaulichung von Ausführungsformen der Erfindung,
-
2 einen Logikfunktionsblock gemäß einer ersten Ausführungsform,
-
3 einen Logikfunktionsblock gemäß einer zweiten Ausführungsform,
-
4 eine Logik-Grundzelle zur Veranschaulichung von Ausführungsformen der Erfindung.
-
5 eine Logik-Grundzelle gemäß einem Ausführungsbeispiel der Erfindung,
-
6A, 6B schematische Ansichten von Multiplexern, die mittels unveränderlich vorgegebener Hardware-Elemente realisiert sind,
-
7 eine Logik-Grundzellen-Anordnung gemäß einem Ausführungsbeispiel der Erfindung,
-
8 eine Logik-Grundzelle gemäß einem Ausführungsbeispiel der Erfindung,
-
9 eine Logik-Grundzelle gemäß einem Ausführungsbeispiel der Erfindung,
-
10 eine Logik-Grundzelle gemäß einem Ausführungsbeispiel der Erfindung.
-
Gleiche oder ähnliche Komponenten in unterschiedlichen Figuren sind mit gleichen Bezugsziffern versehen.
-
Die Darstellungen in den Figuren sind schematisch und nicht maßstäblich.
-
Im Weiteren wird bezugnehmend auf 1 eine Logik-Grundzellen-Anordnung 100 beschrieben.
-
Die Logik-Grundzellen-Anordnung ist aus einer ersten Logik-Grundzelle 101, einer zweiten Logik-Grundzelle 102 und einer dritten Logik-Grundzelle 103 gebildet, welche in der in 1 gezeigten Weise miteinander verschaltet sind.
-
Die erste Logik-Grundzelle 101 enthält erste bis sechste Datensignaleingänge 106 bis 111, wobei an dem ersten Datensignaleingang 106 ein Datensignal a, an einem zweiten Datensignaleingang 107 ein zweites Datensignal b und an einem dritten Datensignaleingang 108 ein Datensignal c bereitgestellt ist. Die vierten bis sechsten Dateneingänge 109 bis 111 sind gemäß 1 von einem Datensignal frei.
-
Ferner enthält die erste Logik-Grundzelle 101 einen ersten Logikfunktionsblock 104 und einen zweiten Logikfunktionsblock 105, von denen jeder mit dem ersten Datensignaleingang 106 und mit dem zweiten Datensignaleingang 107 gekoppelt ist. Es sind bei jedem der Logikfunktionsblöcke 104, 105 vier Logikfunktionkonfigurationseingänge 114, 115 vorgesehen, mittels welchen eine von einem jeweiligen Logikfunktionsblock 104, 105 realisierbare Logik-Teilfunktion aus einer Mehrzahl von realisierbaren Logik-Teilfunktionen zum Verknüpfen der Datensignale a, b ausgewählt werden kann. Diese realisierte Logik-Teilfunktion ist in ersten bis vierten Logikkonfigurationssignalen cfg0, cfg1, cfg2, cfg3 kodiert, wobei gemäß dem beschriebenen Ausführungsbeispiel die an den Logikfunktionkonfigurationseingängen 114 bereitgestellten Logikkonfigurationssignale von jenen unterschiedlich sind, die an den Logikfunktionkonfigurationseingängen 115 bereitgestellt sind.
-
Ferner ist ein erster Multiplexer 112 vorgesehen, dessen erster Dateneingang 116 mit einem Ausgang des ersten Logikfunktionsblocks 104 gekoppelt ist, dessen zweiter Dateneingang 117 mit einem Ausgang des zweiten Logikfunktionsblocks 105 gekoppelt ist und dessen Steuereingang 118 mit dem dritten Datensignaleingang 108 gekoppelt ist, mittels welchem an den Steuereingang 118 das dritte Datensignal c angelegt ist.
-
Ferner ist ein zweiter Multiplexer 113 vorgesehen, dessen Steuereingang 118 mit dem vierten Datensignaleingang 109 gekoppelt ist, dessen erster Dateneingang 116 mit dem fünften Datensignaleingang 110 gekoppelt ist und dessen zweiter Dateneingang 117 mit dem sechsten Datensignaleingang 111 gekoppelt ist.
-
Wie in 1 gezeigt, ist der interne Aufbau, das heißt die Struktur der zweiten Logik-Grundzelle 102 mit dem inneren Aufbau der ersten Logik-Grundzelle 101 im Wesentlichen identisch. Allerdings kann der interne Aufbau unterschiedlicher Logik-Grundzellen einer erfindungsgemäßen Logik-Grundzellen-Anordnung abweichend von 1 auch unterschiedlich sein. So sind zum Beispiel bei der dritten Logik-Grundzelle 103 für die beiden Logikfunktionsblöcke 104, 105 jeweils zwei separate Datensignaleingänge vorgesehen. Der erste Logikfunktionsblock 104 weist erste und zweite Datensignaleingänge 106, 107 auf, wohingegen der zweite Logikfunktionsblock 105 siebte und achte Datensignaleingänge 119, 120 aufweist. Anders ausgedrückt können an den ersten und zweiten Datensignaleingangspaaren 106, 107 und 119, 120 unterschiedliche Signale bereitgestellt werden.
-
Wie ferner in 1 gezeigt, sind die an den Eingängen der unterschiedlichen Logik-Grundzellen 101 bis 103 angelegten Signale unterschiedlich, was für die Funktionalität der Logik-Grundzellen-Anordnung 100 wesentlich ist.
-
Im Weiteren wird die Verschaltung der Logik-Grundzellen 101 bis 103 miteinander beschrieben.
-
Der Ausgang des ersten Multiplexers 112 der ersten Logik-Grundzelle 101 ist mit dem ersten Datensignaleingang 116 des zweiten Multiplexers 113 der dritten Logik-Grundzelle 103 gekoppelt. Ferner ist der Ausgang des ersten Multiplexers 112 der zweiten Logik-Grundzelle 102 mit dem zweiten Dateneingang 117 des zweiten Multiplexers 113 der dritten Logik-Grundzelle 103 gekoppelt.
-
Gemäß dem in 1 gezeigten Betriebszustand der Logik-Grundzellen-Anordnung 100 ist an die jeweils ersten Datensignaleingänge 106 der ersten und zweiten Logik-Grundzellen 101, 102 jeweils ein Signal a angelegt. An den zweiten Datensignaleingang 107 der ersten und zweiten Logik-Grundzellen 101, 102 ist gemäß 1 ein zweites Datensignal b angelegt. An dem dritten Datensignaleingang 108 der ersten und zweiten Logik-Grundzellen 101, 102 ist jeweils ein drittes Datensignal c angelegt. Die vierten bis sechsten Datensignaleingänge 109 bis 111, welche mit den zweiten Multiplexern 113 der ersten und zweiten Logik-Grundzellen 101, 102 gekoppelt sind, sind in dem gezeigten Betriebszustand von Signalen frei. Die Multiplexer 113 der ersten und zweiten Logik-Grundzellen 101, 102 sind bei dem in 1 gezeigten Betriebszustand nicht verwendet, so dass sie Ressourcen darstellen, die für andere auf einem Schaltkreis erforderlichen Logikoperationen verwendet werden können.
-
Im Gegensatz dazu sind bei der dritten Logik-Grundzelle die ersten bis dritten sowie die siebten und achten Datensignaleingänge 106 bis 108, 119, 120 von einem Datensignal frei. An den ersten und zweiten Logikfunktionkonfigurationseingängen 114, 115 der dritten Logik-Grundzelle 103 sind keine Signale angelegt. Mit anderen Worten sind die Logikfunktionsblöcke 104, 105 sowie der erste Multiplexer 112 der dritten Logik-Grundzelle 103 gemäß dem Betriebszustand von 1 nicht verwendet, so dass diese als Ressourcen für andere auf einem Schaltkreis durchzuführenden Aufgaben zur Verfügung stehen. Für die Funktionalität der Logik-Grundzellen-Anordnung 100 ist in der dritten Logik-Grundzelle 103 lediglich der zweite Multiplexer 113 maßgeblich, mittels welchem Ausgangssignale der ersten Multiplexer 112 der ersten und zweiten Logik-Grundzellen 101, 102 weiterverarbeitet werden. An dem Steuereingang 118 des zweiten Multiplexers 113 der dritten Logik-Grundzelle 103 ist ein viertes Datensignal d angelegt.
-
Im Weiteren wird die Funktionalität der in 1 gezeigten Logik-Grundzellen-Anordnung 100 beschrieben.
-
Mittels der Logik-Grundzellen-Anordnung 100 wird eine logische Verknüpfung der vier Datensignalen a, b, c, d zu einer Logik-Gesamtfunktion f(d, c, b, a) gemäß folgender Gleichung vorgenommen: f(d, c, b, a) = d·(c·f0(b, a) ∨ c·f1(b, a)) ∨ d·(c·f2(b, a) ∨ c·f3(b, a)) (8)
-
Mittel Anlegens der Logikfunktionssignale cfg0, cfg1, cfg2, cfg3 an die ersten bzw. zweiten Logikkonfigurationseingänge 114, 115 eines jeweiligen Logikfunktionsblocks 104, 105 wird die von dem jeweiligen Logikfunktionsblock 104, 105 durchgeführte Logikoperation f0 bis f3 vorgegeben. Mit anderen Worten bildet die Konfigurationsinformation cfg0, cfg1, cfg2, cfg3 ein Datenwort, mittels welchem jede beliebige aller denkbaren Logikoperationen zum Verknüpfen von zwei Datensignalen a, b von jedem der Logikfunktionsblöcke 104, 105 vorgenommen werden kann.
-
Abweichend von dem in 1 gezeigten Ausführungsbeispiel kann auch eine andere Anzahl von Konfigurationsbits an die Logik-Funktionsblöcke 104, 105 angelegt werden. Auch können an unterschiedliche Logikfunktionsblöcke 104, 105 einer Logik-Grundzelle oder an unterschiedliche Logik-Grundzellen unterschiedliche Konfigurationsbits angelegt werden und somit unterschiedliche Logikfunktionen ausgewählt werden.
-
Gemäß dem in 1 gezeigten Ausführungsbeispiel wird in dem ersten Logikfunktionsblock 104 der ersten Logik-Grundzelle 101 eine logische Verknüpfung f0(a, b) der beiden Eingangssignale a, b durchgeführt und das Ergebnis dieser Logikoperation dem ersten Dateneingang 116 des ersten Multiplexers 112 der ersten Logik-Grundzelle 101 zugeführt. In ähnlicher Weise werden gemäß der Funktionalität des zweiten Logikfunktionsblocks 105 das erste Datensignal a und das zweite Datensignal b miteinander derart verknüpft, dass an dem Ausgang des zweiten Logikfunktionsblocks 105 der ersten Logik-Grundzelle 101 ein Logikergebnis f1(a, b) bereitgestellt ist. Mittels der Funktionalität des ersten Multiplexers 112 der ersten Logik-Grundzelle 101 werden die beiden Logik-Teilfunktionen f0, f1 unter Verwendung des an dem Steuereingang 118 des ersten Multiplexers 112 bereitgestellten dritten Datensignals c einer solchen logischen Verknüpfung unterzogen, dass an dem Ausgang des ersten Multiplexers 112 die Logik-Teilfunktion fI(a, b, c) bereitgestellt ist.
-
An einem ersten Abgreif-Ausgang 121 (der auch als erster Datensignalausgang bezeichnet werden kann) ist ein Signal an dem Ausgang des jeweils ersten Logikfunktionsblocks 104 einer jeweiligen Logik-Grundzelle 101 bis 103 abgreifbar. An einem zweiten Abgreif-Ausgang 122 (der auch als zweiter Datensignalausgang bezeichnet werden kann) ist ein Signal an dem Ausgang des jeweils zweiten Logikfunktionsblocks 105 einer jeweiligen Logik-Grundzelle 101 bis 103 abgreifbar. Ferner ist an einem dritten Abgreif-Ausgang 123 (der auch als dritter Datensignalausgang bezeichnet werden kann) ein Signal an dem Ausgang des jeweils ersten Multiplexers 112 einer jeweiligen Logik-Grundzelle 101 bis 103 abgreifbar.
-
In ähnlicher Weise wird aufgrund der Funktionalität der ersten und zweiten Logikfunktionsblöcke 104, 105 der zweiten Logik-Grundzelle 102 an deren Ausgängen Logik-Teilfunktionen f2, f3 bereitgestellt und den Dateneingängen 116, 117 des ersten Multiplexers 112 der zweiten Logik-Grundzelle 102 zugeführt. Diese Logik-Teiltunktion f2, f3 werden unter Verwendung des dritten Datensignals c an dem Steuereingang 118 des ersten Multiplexers 112 der zweiten Logik-Grundzelle derart miteinander logisch verknüpft, dass an dem Ausgang des Multiplexers 112 eine Logik-Teilfunktion fII(a, b, c) bereitgestellt ist.
-
Anschaulich repräsentiert die Logik-Teilfunktion fI den Ausdruck in der Klammer des ersten Terms in Gleichung (8), wohingegen fII in Gleichung (8) den Ausdruck in der Klammer des zweiten Terms repräsentiert. Unter Verwendung des vierten Datensignals d, welches an dem Steuereingang 118 des zweiten Multiplexers 113 der dritten Logik-Grundzelle 103 bereitgestellt ist, werden die Logik-Teilfunktionen fI und fII miteinander derart verknüpft, dass an dem Ausgang des zweiten Multiplexers 113 der dritten Logik-Grundzelle 103 das Logik-Gesamtsignal f(a, b, c, d) gemäß Gleichung (8) bereitgestellt ist.
-
Es ist anzumerken, dass abweichend von der in 1 gezeigten Verschaltung es alternativ auch möglich ist, dass das Bilden der Gesamtfunktion f(a, b, c, d) aus den Teilfunktionen fI(a, b, c) und fII(a, b, c) sowie aus dem Datensignal d nicht unter Verwendung der beiden Logik-Grundzellen 101, 102 sowie des freien zweiten Multiplexers 113 der dritten Logik-Grundzelle 103 erfolgen muss, sondern dass diese Logikoperation unter Verwendung nur der Ressourcen der beiden Logik-Grundzellen 101, 102 erfolgen kann. In diesem Fall werden die Ausgänge der ersten Multiplexer 112 der beiden Logik-Grundzellen 101, 102 mit den beiden Dateneingängen von einem der beiden zweiten Multiplexer 113 von einer der beiden Logik-Grundzellen 101, 102 verschaltet. Das Datensignal d wird dann an dem Steuereingang dieses zweiten Multiplexers 113 bereitgestellt. Mit dieser Verschaltung (anschaulich eine Rückkopplung einer Logik-Grundzelle 101, 102 auf sich selbst) ist es möglich, dass eine Funktion der Komplexität (n + 1) wirklich nur unter Verwendung von Ressourcen von genau zwei Logik-Grundzellen der Komplexität n unter Vermeidung des Belegens eines externen zweiten Multiplexers einer anderen Logik-Grundzelle realisiert wird.
-
Im Weiteren wird bezugnehmend auf 2 ein Logikfunktionsblock 200 gemäß einer bevorzugten Ausführungsform beschrieben.
-
Es ist anzumerken, dass abweichend von dem in 2 gezeigten Logikfunktionsblock 200 im Prinzip jeder beliebige Logikfunktionsblock zum Verknüpfen zweier Datensignale a0, a1 verwendet werden kann. Die Datensignale a0, a1 aus 2 entsprechen anschaulich den Datensignalen a, b aus 1.
-
Der erste Datensignaleingang 201 aus 1 entspricht im Wesentlichen dem ersten Datensignaleingang 106 aus 1, wohingegen der zweite Datensignaleingang 202 aus 2 dem zweiten Datensignaleingang 107 aus 1 entspricht. Der globale Ausgang 209 aus 2 entspricht im Wesentlichen dem Ausgang eines jeweiligen Logikfunktionsblocks 104, 105.
-
Mit anderen Worten ist in 2 ein Beispiel für die innere Struktur eines Logikfunktionsblocks 104, 105 dargestellt.
-
Der Logikfunktionsblock 200 weist einen ersten Datensignal-Eingang 201 und einen zweiten Datensignal-Eingang 202 auf, an denen zwei Datensignale a0 bzw. a1 bereitgestellt sind. Der Logikfunktionsblock 200 enthält eine mit den Datensignal-Eingängen 201, 202 gekoppelte erste Signalpfad-Einheit 203 mit einer Mehrzahl von n-MOS-Transistoren 204 (n-Leitungstyp), wobei die n-MOS-Transistoren 204 derart miteinander verschaltet sind, dass sie eine erste Logik-Teilfunktion von einer Mehrzahl von Logik-Teilfunktionen zur Logik-Verknüpfung der zwei Datensignale a0, a1 realisieren, so dass ein das Ergebnis der ersten Logik-Teilfunktion repräsentierendes Ausgangssignal an Ausgang 207 bereitgestellt wird. Ferner enthält der Logikfunktionsblock 200 eine mit den Datensignal-Eingängen 201, 202 gekoppelte zweite Signalpfad-Einheit 205 mit einer Mehrzahl von p-MOS-Transistoren 206 (des p-Leitungstyps, welcher zu dem n-Leitungstyps komplementär ist). Die p-MOS-Transistoren 206 sind miteinander derart verschaltet, dass sie eine zweite Logik-Teilfunktion von einer Mehrzahl unterschiedlicher Logik-Teilfunktionen zur Logik-Verknüpfung der zwei Datensignale a0, a1 realisieren, so dass ein das Ergebnis der zweiten Logik-Teilfunktion repräsentierendes Ausgangssignal an Ausgang 207 bereitgestellt wird, wobei das Ergebnis der zweiten Logik-Teilfunktion invers zu dem Ergebnis der ersten Logik-Teilfunktion ist. Zwischen Ausgang 207 und einem globalen Ausgang 209, der mit einem Dateneingang 116 oder 117 eines nachgeschalteten Multiplexers 112 gekoppelt sein kann, ist eine Weiterverarbeitungs-Einheit 208 geschaltet, mittels welcher Ausgangssignale weiterverarbeitet werden können, zum Bereitstellen eines weiterverarbeiteten Ausgangssignals an dem globalen Ausgang 209. An dem globalen Signalausgang 209 des Logikfunktionsblocks 200 ist das Ausgangssignal f(a0, a1) bereitgestellt, welches die Logik-Verknüpfung der Eingabesignale a0, a1 entsprechend der ausgewählten Logik darstellt und bereits einer (optionalen) Weiterverarbeitung unterzogen worden ist.
-
Wie ferner in 2 gezeigt, ist den Signalpfad-Einheiten 203, 205 jeweils ein erstes Logikfunktionssignal c0 und ein zweites Logikfunktionssignal c1 bereitgestellt, welche Logikfunktionssignale mittels der ersten und zweiten Logikfunktionkonfigurationseingänge 114, 115 aus 1 dem jeweiligen Logikfunktionsblock 200, 104, 105 bereitgestellt sind. Mittels Vorgebens dieser Logikfunktionssignale c0, c1 werden die Transistoren 204 bzw. 206 der Signalpfad-Einheit 203 bzw. 205 derart angesteuert, dass die Signale a0, a1 von den Signalpfad-Einheiten 203 bzw. 205 entsprechend der ersten Logikfunktion bzw. der zweiten Logikfunktion miteinander verknüpft werden. Somit wird anschaulich mittels Vorgebens der logischen Werte der Logikfunktionssignale c0, c1 eine ganz bestimmte Logikfunktion ausgewählt.
-
Im Weiteren wird die der Funktionalität eines bevorzugten Ausführungsbeispiels des Logikfunktionsblocks der erfindungsgemäßen Logik-Grundzelle zugrundliegende theoretische Basis basierend auf der boolschen Logik beschrieben.
-
Eine boolsche Funktion lässt sich in der kanonisch-konjunktiven Normalform als ODER-Verknüpfung der Produktterme ihrer n Eingänge ausdrücken (in 2 beispielsweise ist n = 2, da zwei Eingangssignale a1, a0 bereitgestellt sind). Diesen n Eingängen sind 2n Produktterme zugeordnet.
-
Auf Standard-CMOS-Logik angewendet werden die Produktterme für den logischen Wert ”1” einer Funktion als Serienpfad von p-Kanal-Transistoren realisiert (in 2 beispielsweise: p-Kanal-Transistoren 206). Der Logik-Wert ”0” wird entsprechend als Serienpfad aus n-Kanal-Transistoren realisiert (in 2: n-MOS-Transistoren 204). Entsprechend kann jede Logik-Funktion, gemäß welcher an n Eingängen bereitgestellte Signale miteinander Logik-verknüpft werden, aus 2n Produkttermen zusammengesetzt werden, indem anschaulich Produktterme zu- oder abgeschaltet werden.
-
Für zwei Eingänge a
0 und a
1 (wie in
2) gilt:
mit
ki = {0, 1} mit i = 0, 1, ...7 (11)
-
Jede Funktion y = f(a0, a1) wird gebildet, indem vier Werte der Schaltkoeffizienten oder Logikfunktionsvariablen k0 bis k7 auf einen Wert logisch ”1” und die restlichen auf einen Wert logisch ”0” gesetzt werden. Da in CMOS-Logik die p-Kanal-Transistoren mit einem elektrischen Potential ”0” am Steuer- oder Gate-Anschluss öffnen, die n-Kanal-Transistoren hingegen bei einem elektrischen Potential mit einem Wert ”1”, lassen sich die Produktterme in Gleichungen (9), (10) zu einander ausschließenden Paaren ordnen. In Gleichungen (9), (10) schließen sich die jeweils ersten Produktterme gegenseitig logisch aus, ebenso die jeweils zweiten, die jeweils dritten und die jeweils vierten.
-
Für die Schaltkoeffizienten k
i gilt die Beziehung:
-
Aus Gleichungen (10), (11), (12) ergibt sich nach Zusammenfassen zu vier unabhängigen Schaltvariablen c
0, c
1, c
2, c
3:
mit
ci = {0, 1} mit i = 0, 1, ... 3 (15)
-
Anschaulich entspricht Gleichung (13) den Pfad von p-MOS-Transistoren 206 in 2, wohingegen Gleichung (14) dem Pfad von n-MOS-Transistoren 204 in 2 entspricht. Allerdings sind in 2 nur zwei statt vier Logikfunktionsvariablen gezeigt.
-
Im Weiteren wird bezugnehmend auf 3 eine halbleitertechnologische Realisierung der Funktion gemäß Gleichungen (13), (14) auf Basis von Transistoren als möglicher Logikfunktionsblock 104, 105 für eine Logik-Grundzelle 101 bis 103 der Logik-Grundzellen-Anordnung aus l beschrieben.
-
Bei dem Logikfunktionsblock
300 aus
3 ist an einem ersten Datensignal-Eingang
201 ein erstes Datensignal a
0 bereitgestellt. Ferner wird an einem zweiten Datensignal-Eingang
202 ein zweites Datensignal a
1 bereitgestellt. Mittels eines ersten Inverter-Schaltkreises
301 wird aus dem ersten Datensignal a
0 das dazu komplementäre Signal
gebildet. Der erste Datensignal-Eingang
201 ist mit dem Gate-Bereich eines ersten n-MOS-Inverter-Transistors
302 gekoppelt. Ferner ist der erste Datensignal-Eingang
201 mit dem Gate-Anschluss eines ersten p-MOS-Inverter-Transistors
303 gekoppelt. Ein erster Source-/Drain-Bereich des ersten p-MOS-Inverter-Transistors
303 ist auf das elektrische Versorgungspotential
307 gebracht. Der zweite Source-/Drain-Bereich des ersten p-MOS-Inverter-Transistors
303 ist mit einem ersten Source-/Drain-Bereich des ersten n-MOS-Inverter-Transistors
302 gekoppelt, dessen zweiter Source-/Drain-Bereich auf das elektrische Massepotential
308 gebracht ist.
-
Ferner ist ein zweiter Inverter-Schaltkreis
304 vorgesehen, mittels welchen aus dem zweiten Datensignal a
1 dessen logisch komplementäres Signal
gebildet wird. Der zweite Datensignal-Eingang
202 ist mit den Gate-Anschlüssen eines zweiten n-MOS-Inverter-Transistors
305 und eines zweiten p-MOS-Inverter-Transistors
306 gekoppelt, welche Transistoren
305,
306 den zweiten Inverter-Schaltkreis
304 bilden. Ein erster Source-/Drain-Bereich des zweiten p-MOS-Inverter-Transistors
306 ist mit dem ersten Source-/Drain-Bereich des ersten p-MOS-Inverter-Transistors
303 gekoppelt, wohingegen der zweite Source-/Drain-Anschluss des zweiten p-MOS-Inverter-Transistors
306 mit einem ersten Source-/Drain-Anschluss des zweiten n-MOS-Inverter-Transistors
305 gekoppelt ist. Der zweite Source-/Drain-Anschluss des zweiten n-MOS-Inverter-Transistors
305 ist auf das elektrische Massepotential
308 gebracht.
-
Wie in
3 gezeigt, werden die Datensignale und deren logisch komplementäre Werte einer Signalpfad-Einheit
309 bereitgestellt. An einem ersten Signalpfad-Eingang
310 ist das Signal
bereitgestellt. An einem zweiten Signalpfad-Eingang
311 ist das Signal
bereitgestellt. An einem dritten Signalpfad-Eingang
312 ist das Signal a
0 bereitgestellt. An einem vierten Signalpfad-Eingang
313 ist das Signal a
1 bereitgestellt.
-
Die Signalpfad-Einheit 309 ist gebildet aus ersten bis zwölften p-MOS-Logik-Transistoren 314 bis 325 und aus ersten bis zwölften n-MOS-Logik-Transistoren 326 bis 337. Die ersten bis zwölften p-MOS-Logik-Transistoren 314 bis 325 bilden eine erste Signalpfad-Teileinheit, wohingegen die ersten bis zwölften n-MOS-Logik-Transistoren 326 bis 337 eine zweite Signalpfad-Teileinheit bilden.
-
An einem ersten Logikfunktions-Eingang 338 ist ein erstes Logikfunktionssignal c0 angelegt. An einem zweiten Logikfunktions-Eingang 339 ist ein zweites Logikfunktionssignal c1 bereitgestellt. An einem dritten Logikfunktions-Eingang 340 ist ein drittes Logikfunktionssignal c2 bereitgestellt. An einem vierten Logikfunktions-Eingang 341 ist ein viertes Logikfunktionssignal c3 bereitgestellt.
-
Der vierte Logikfunktions-Eingang 341 ist mit dem Gate-Anschluss des neunten p-MOS-Logik-Transistors 322 und mit dem Gate-Anschluss des ersten n-MOS-Logik-Transistors 326 gekoppelt. Der dritte Logikfunktions-Eingang 340 ist mit den Gate-Anschlüssen des zehnten p-MOS-Logik-Transistors 323 und des zweiten n-MOS-Logik-Transistors 327 gekoppelt. Der zweite Logikfunktions-Eingang 339 ist mit den Gate-Anschlüssen des elften p-MOS-Logik-Transistors 324 und des dritten n-MOS-Logik-Transistors 328 gekoppelt. Der erste Logikfunktions-Eingang 338 ist mit den Gate-Anschlüssen des zwölften p-MOS-Logik-Transistors 325 und des vierten n-MOS-Logik-Transistors 329 gekoppelt.
-
Der erste Datensignal-Eingang 310 ist mit dem Gate-Anschluss des fünften n-MOS-Logik-Transistors 330, des sechsten p-MOS-Logik-Transistors 319, des siebten n-MOS-Logik-Transistors 332 und des vierten p-MOS-Logik-Transistors 317 gekoppelt. Der zweite Datensignal-Eingang 311 ist mit den Gate-Anschlüssen des neunten n-MOS-Logik-Transistors 334, des zehnten n-MOS-Logik-Transistors 335, des dritten p-MOS-Logik-Transistors 316 und des achten p-MOS-Logik-Transistors 321 gekoppelt. Der dritte Datensignal-Eingang 312 ist mit den Gate-Anschlüssen des fünften p-MOS-Logik-Transistors 318, des sechsten n-MOS-Logik-Transistors 331, des siebten p-MOS-Logik-Transistors 320 und des achten n-MOS-Logik-Transistors 333 gekoppelt. Der vierte Datensignal-Eingang 313 ist mit den Gate-Anschlüssen des ersten p-MOS-Logik-Transistors 314, des zweiten p-MOS-Logik-Transistors 315, des elften n-MOS-Logik-Transistors 336 und des zwölften n-MOS-Logik-Transistors 337 gekoppelt.
-
Erste Source-/Drain-Anschlüsse der ersten bis vierten p-MOS-Logik-Transistoren 314 bis 317 sind auf das elektrische Potential der Versorgungsspannung 307 gebracht. Der zweite Source-/Drain-Anschluss des ersten p-MOS-Logik-Transistors 314 ist mit einem ersten Source-/Drain-Anschluss des fünften p-MOS-Logik-Transistors 318 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des neunten p-MOS-Logik-Transistors 322 gekoppelt ist. Der zweite Source-/Drain-Anschluss des zweiten p-MOS-Logik-Transistors 315 ist mit einem ersten Source-/Drain-Anschluss des sechsten p-MOS-Logik-Transistors 319 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des zehnten p-MOS-Logik-Transistors 323 gekoppelt ist. Der zweite Source-/Drain-Anschluss des dritten p-MOS-Logik-Transistors 316 ist mit einem ersten Source-/Drain-Anschluss des siebten p-MOS-Logik-Transistors 320 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des elften p-MOS-Logik-Transistors 324 gekoppelt ist. Der zweite Source-/Drain-Anschluss des vierten p-MOS-Logik-Transistors 317 ist mit einem ersten Source-/Drain-Anschluss des achten p-MOS-Logik-Transistors 321 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des zwölften p-MOS-Logik-Transistors 325 gekoppelt ist.
-
Die zweiten Source-/Drain-Anschlüsse der neunten bis zwölften p-MOS-Logik-Transistoren 322 bis 325 sind mit dem Ausgang 207 und mit ersten Source-/Drain-Anschlüssen der ersten bis vierten n-MOS-Logik-Transistoren 326 bis 329 gekoppelt. Der zweite Source-/Drain-Anschluss des ersten n-MOS-Logik-Transistors 326 ist mit einem ersten Source-/Drain-Anschluss des fünften n-MOS-Logik-Transistors 330 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des neunten n-MOS-Logik-Transistors 334 gekoppelt ist. Der zweite Source-/Drain-Anschluss des zweiten n-MOS-Logik-Transistors 327 ist mit einem ersten Source-/Drain-Anschluss des sechsten n-MOS-Logik-Transistors 331 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des zehnten n-MOS-Logik-Transistors 335 gekoppelt ist. Der zweite Source-/Drain-Anschluss des dritten n-MOS-Logik-Transistors 328 ist mit einem ersten Source-/Drain-Anschluss des siebten n-MOS-Logik-Transistors 332 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des elften n-MOS-Logik-Transistors 336 gekoppelt ist. Ferner ist der zweite Source-/Drain-Anschluss des vierten n-MOS-Logik-Transistors 329 mit einem ersten Source-/Drain-Anschluss des achten n-MOS-Logik-Transistors 333 gekoppelt, dessen zweiter Source-/Drain-Anschluss mit einem ersten Source-/Drain-Anschluss des zwölften n-MOS-Logik-Transistors 337 gekoppelt ist. Die zweiten Source-/Drain-Anschlüsse der neunten bis zwölften n-MOS-Logik-Transistoren 334 bis 337 sind miteinander gekoppelt und auf das elektrische Massepotential 308 gebracht.
-
An dem Ausgang 207 ist das Ausgangssignal yint bereitgestellt.
-
Aus dem Ausgangssignal yint an dem Ausgang 207 wird unter Verwendung eines dritten Inverter-Schaltkreises 342 das Logik-Inverse y0 gebildet, das an einem globalen Ausgang 345 bereitgestellt ist. Das Ausgangssignal yint wird durch den dritten Inverter-Schaltkreis 342 geführt, gebildet aus einem dritten n-MOS-Inverter-Transistor 343 und einem dritten p-MOS-Inverter-Transistor 344. Der Ausgang 207 ist mit den Gate-Anschlüssen der Transistoren 344, 343 gekoppelt. Ein erster Source-/Drain-Anschluss des dritten p-MOS-Inverter-Transistors 344 ist auf das elektrische Versorgungspotential 307 gebracht. Der zweite Source-/Drain-Anschluss des dritten p-MOS-Inverter-Transistors 344 ist mit einem ersten Source-/Drain-Anschluss des dritten n-MOS-Inverter-Transistors 343 gekoppelt, dessen zweiter Source-/Drain-Anschluss auf das elektrische Massepotential 308 gebracht ist. Der zweite Source-/Drain-Anschluss des dritten p-MOS-Inverter-Transistors 344 und der erste Source-/Drain-Anschluss des dritten n-MOS-Inverter-Transistors 343 sind mit dem globalen Ausgang 345 gekoppelt.
-
Im Weiteren wird die Funktionalität des Logikfunktionsblocks 300 beschrieben.
-
Die Signalpfad-Einheit
309 führt anschaulich die Logikoperationen mit den Eingabesignalen
a
0 und a
1 durch. Die Funktionalität von Gleichung (13) wird anschaulich von den in
3 gezeigten Weise verschalteten p-MOS-Transistoren
314 bis
325 durchgeführt, wohingegen die Logikoperation gemäß Gleichung (14) anschaulich durch die n-MOS-Transistoren
326 bis
337 durchgeführt wird. Zwischen den Datensignal-Eingängen
201,
202 und den Signalpfad-Eingängen
310 bis
313 sind die beiden Inverter-Schaltkreise
301,
304 vorgesehen, um die komplementären Signale
zu generieren. Zwischen Ausgang
207 und dem globalen Ausgang
345 ist der treibende Inverter-Schaltkreis
342 geschaltet. Für den Logikfunktionsblock
300 mit zwei Eingängen
201,
202 werden gemäß dem beschriebenen Ausführungsbeispiel dreißig Transistoren benötigt, nämlich die zwölf p-MOS-Logik-Transistoren
314 bis
325, die zwölf n-MOS-Logik-Transistoren
326 bis
337 und die sechs Transistoren
302,
303,
305,
306,
343,
344. Die Anzahl der Konfigurationsbits bzw. der Logikfunktionssignale ist vier (c
0, c
1, c
2, c
3).
-
Es ist anzumerken, dass anstelle von vier gemeinsamen Logikfunktionssignalen c0 bis c3 alternativ auch die zwölf p-MOS-Logik-Transistoren 314 bis 325 mit vier separaten Logikfunktionssignalen betrieben werden können und die zwölf n-MOS-Logik-Transistoren 326 bis 337 mit vier separaten, von c0 bis c3 unterschiedlichen Logikfunktionssignalen betrieben werden können.
-
Im Weiteren wird bezugnehmend auf 4 eine Logik-Grundzelle 400 beschrieben.
-
Die Logik-Grundzelle 400 ist gebildet aus ersten und zweiten Logikfunktionsblöcken 104, 105, einem ersten Multiplexer 112 und einem zweiten Multiplexer 113. Bei der Logik-Grundzelle 400 sind erste bis achte Datensignaleingänge 401 bis 408 dargestellt, an denen Datensignale x0 bis x7 bereitgestellt werden können. An Datensignaleingängen 401, 402 des ersten Logikfunktionsblocks 104 sind erste und zweite Datensignale x0, x1 bereitstellbar. Der Ausgang des ersten Logikfunktionsblocks 104 ist mit einem ersten Dateneingang 116 des ersten Multiplexers 112 gekoppelt und ist ferner mit einem Eingang eines ersten Registers 412 einer Registerstufe 411 gekoppelt, welche erste Stufe 411 den Multiplexern 112, 113 sowie den Logikfunktionsblöcken 104, 105 nachgeschaltet ist. Das Logiksignal y0, das aus einer logischen Verknüpfung der ersten und zweiten Datensignale x0, x1 gemäß der Funktionalität des ersten Logikfunktionsblocks 104 generiert wird, wird an einem Ausgang als y0 bereitgestellt. Ferner wird es nach Durchlaufen des ersten Registers 412 an einem Ausgang dieses Registers 412 als yreg0 bereitgestellt und ist somit abgreifbar. Das Signal y0 kann beliebig weiterverarbeitet werden.
-
Der zweite Datensignaleingang 117 des ersten Multiplexers 112 ist mit einem Ausgang des zweiten Logikfunktionsblocks 105 gekoppelt, so dass an dem zweiten Dateneingang 117 die Logikverknüpfung von dritten und vierten Datensignalen x2, x3 abgreifbar sind, welche an dritten und vierten Datensignaleingängen 403, 404 dem zweiten Logikfunktionsblock 105 bereitgestellt sind. Die Ausgangssignale der ersten und zweiten Logikfunktionsblöcke 104, 105 werden unter Verwendung des ersten Multiplexers 112, welchem an einem Steuereingang 118 ein fünftes Datensignal x4 über einen fünften Datensignaleingang 405 bereitgestellt ist, Logik-verknüpft. Das daraus resultierende Logik-Signal am Ausgang des ersten Multiplexers 112 wird direkt als Signal y1 bereitgestellt und wird unabhängig davon einem zweiten Register 413 zugeführt, an dessen Ausgang das Signal als yreg1 abgreifbar ist. Ferner ist das Logikergebnis an dem Ausgang des zweiten Logikfunktionsblocks 105 direkt als Signal y2 zur Weiterverarbeitung oder Weiterverwendung bereitgestellt und andererseits nach Durchlaufen eines dritten Registers 414 an dessen Ausgang als yreg2 bereitgestellt.
-
Mittels eines zweiten Multiplexers 113, welcher von dem ersten Multiplexer 112 sowie den Logikfunktionsblöcken 104, 105 elektrisch entkoppelt ist, können sechste bis achte Datensignale x5 bis x7, die an den Dateneingängen 116, 117 beziehungsweise an dem Steuereingang 118 des zweiten Multiplexers 113 über sechste bis achte Datensignaleingänge 406 bis 408 bereitgestellt werden, in dem zweiten Multiplexer 113 logisch verarbeitet werden. Das Ergebnis dieser Logik-Verarbeitung ist einerseits als Logiksignal y3 direkt abgreifbar und andererseits nach Durchlaufen eines vierten Registers 415 als yreg3 abgreifbar. Die ersten bis vierten Register 412 bis 415 werden mittels eines an einem Takteingang 416 bereitgestellten Taktsignals clk getaktet.
-
Im Weiteren wird die Funktionalität der in 4 gezeigten Logik-Grundzelle 400 erläutert.
-
Die in dem ersten Logikfunktionsblock 104 realisierte Logikfunktion f0 sowie die in dem zweiten Logikfunktionsblock 105 realisierte Logikfunktion f1 können mittels Look-up-Tabellen oder anderen Realisierungen implementiert sein. Die konkrete Funktion f0 und f1 wird mittels der 4Bit-Konfigurationsworte cfg0 und cfg1 bestimmt, welche an ersten und zweiten Logikfunktionkonfigurationseingängen 409, 410 der ersten beziehungsweise zweiten Logikfunktionsblöcke 104, 105 bereitgestellt sind.
-
Unter Verwendung der Randbedingungen x0 = x2 = a und x1 = x3 = b sowie x4 = c ist an dem ersten Multiplexer 112 die dreiwertige Funktion y = f(c, b, a) realisiert. Dennoch bleiben die beiden Teilfunktionen f0 und f1 als y0 und y2 am Ausgang der Logik-Grundzelle 400 abgreifbar und können für eine Weiterverknüpfung mit anderen logischen Eingängen in einer anderen Basiszelle beziehungsweise Logik-Grundzelle verwendet werden.
-
Mit Hilfe des zweiten Multiplexers 113 kann jede beliebige Funktion von vier Eingängen realisiert werden, indem die Ausgänge y3* und y3** als Eingänge einer dritten Logik Grundzelle verwendet werden (x5 = y3* und x6 = y3**). Mit x7 = d ist der achte Datensignaleingang 408 belegt. Dann ist die in Gleichung (2) beschriebene Funktion f(d, c, b, a) mit der Logik-Grundzelle 400 realisierbar.
-
Eine Funktion von vier Eingängen lässt sich somit unter Verwendung von zwei Basiszellen oder Logik-Grundzellen realisieren. Innerhalb der dritten Zelle wird lediglich ein zweiter Multiplexer 113 verwendet. Es ist zu betonen, dass die eigentlichen logischen Ressourcen einer Zelle frei bleiben und für andere Anwendungen genutzt werden können.
-
Hinsichtlich der Anzahl der Eingänge der logischen Funktion innerhalb der Logik-Grundzelle kann anstelle einer dreiwertigen Funktion nach dem gleichen Prinzip auch eine vier- oder höherwertige Funktion realisiert werden. Ebenso ist die Anzahl und die Art der Register 412 bis 415 innerhalb der Registerstufe 411 variabel. Zum Beispiel kann ein Teil der Register 412 bis 415 gemäß 4 weggelassen werden. In 4 wird eine maximale Flexibilität zur Verfügung gestellt. Der Fall, das alle Funktionen der Logik-Grundzelle als kombinatorische und als Registerausgänge tatsächlich gebraucht werden, ist in praktischen Anwendungsszenarien nicht immer gegeben. Da Register in der Regel keine kleinen Bausteine sind, ist es zum Einsparen von Ressourcen und Platzbedarf möglich, mit einer kleineren Anzahl von Registern als in 4 auszukommen und die kombinatorischen Ausgänge entsprechend zu multiplexen.
-
Eine Logik-Grundzelle mit allen denkbaren Kombinationen von kombinatorischen und sequentiellen Ausgängen der Grundzelle ist bereitgestellt, wenn die Grundzelle nach dem beschriebenen Prinzip aufgebaut ist. Alle möglichen Eingangsbelegungen der Grundzelle, die mittels Zusammenfassens von Eingängen entstehen, sind mit der Erfindung ebenfalls realisiert, auch dann, wenn die Grundzelle eine Funktion von mehr als drei Eingängen realisiert.
-
Die erfindungsgemäße Logik-Grundzelle findet Einsatzmöglichkeiten überall dort, wo programmierbare oder konfigurierbare Logikstrukturen Anwendung finden. Besonders vorteilhaft ist die Erfindung in einem Gate-Array einsetzbar. Mit einem klassischen FPGA ist jede Verzweigung über einen Multiplexer oder über einen Schalter steuerbar, der von der eingeprägten Ladung einer Speicherzelle gesteuert wird.
-
Wird statt des FPGAs ein Mask-Programmable-Gate-Array (MPGA) als Struktur angenommen, ergibt sich zum Beispiel ein Feld von acht horizontalen Leitungen, die von acht vertikalen Leitungen in einer anderen Metalllage überkreuzt werden. An den Kreuzungspunkten kann mit einem Via, dass heißt mit einer im Wesentlichen orthogonal sich erstreckenden Kopplungsstruktur, eine elektrische Kopplung hergestellt werden. Somit lassen sich alle denkbaren Kombinationen zwischen Ein- und Ausgängen leicht und im Layout sehr kompakt herstellen. Zur logischen Konfiguration und zur logischen Verdrahtung genügt eine einzige, variable Maskenebene (zum Beispiel ”Via1”). In Hinblick auf die Kosten für einen Maskensatz in künftigen Technologiegenerationen stellt eine Realisierung als MPGA eine besonders vorteilhafte Realisierung dar.
-
Im Weiteren wird bezugnehmend auf 5 eine Logik-Grundzelle 500 gemäß einem Ausführungsbeispiel der Erfindung beschrieben.
-
Bei der Logik-Grundzelle 500 sind erste bis neunte Datensignaleingänge 501 bis 509 vorgesehen. Der erste Datensignaleingang 501 ist mit einem ersten Eingang eines ersten Logikfunktionsblocks 510 gekoppelt, dem mittels des ersten Datensignaleingangs 501 ein erstes Datensignal x0 bereitgestellt ist. An einem zweiten Datensignaleingang 502 ist ein zweites Datensignal x1 bereitgestellt, das einem ersten Dateneingang eines ersten Multiplexers 512 bereitgestellt ist. Der Datenausgang des ersten Multiplexers 512 ist mit einem zweiten Signaleingang des ersten Logikfunktionsblocks 510 gekoppelt, wobei der Ausgang des ersten Logikfunktionsblocks 510 mit einem ersten Signaleingang eines zweiten Multiplexers 513 gekoppelt ist. Der erste Logikfunktionsblock 510 realisiert die Logikteilfunktion f0(x1~, x0). x1~ ist das Ausgangssignal des ersten Multiplexers 512. Der Signalausgang des ersten Logikfunktionsblocks 510 ist außerdem mit einem ersten Dateneingang eines dritten Multiplexers 514 gekoppelt. Ferner ist der Signalausgang des dritten Multiplexers 514 mit einem ersten Datensignalausgang 518 gekoppelt, an welchem das Ausgangssignal y0 bereitgestellt ist. Der Signalausgang des ersten Logikfunktionsblocks 510 ist ferner mit einem zweiten Datensignalausgang 519 der Logik-Grundzelle 500 gekoppelt und ist mit einem ersten Signaleingang eines fünften Multiplexers 516 gekoppelt. Der Signalausgang des dritten Multiplexers 514 ist mit einem zweiten Signaleingang des fünften Multiplexers 516 gekoppelt. Einem dritten Signaleingang des fünften Multiplexers 516 ist ein an einem dritten Datensignaleingang 503 bereitgestelltes drittes Signal x2 bereitgestellt. Ein viertes Datensignal x3 ist an einem vierten Datensignaleingang 504 bereitgestellt, der mit einem zweiten Dateneingang des zweiten Multiplexers 513 gekoppelt ist. Der zweite Multiplexer 513 verknüpft die an seinen Dateneingängen bereitgestellten Signale zum Bilden von x2~ (dem Ausgangssignal des zweiten Multiplexers 513). Die Logikteilfunktion, die mittels des zweiten Logikfunktionsblocks 511 realisiert wird, ist f1(x4, x2~).
-
Das Ausgangssignal des zweiten Logikfunktionsblocks 511 ist dem zweiten Datensignaleingang des ersten Multiplexers 512 bereitgestellt und mit dem zweiten Datensignaleingang des dritten Multiplexers 514 gekoppelt. Ein an einem sechsten Datensignaleingang 506 bereitgestelltes Signal x5 ist mit einem Steuereingang des dritten Multiplexers 514 gekoppelt. Ein Datensignalausgang des zweiten Logikfunktionsblocks 511 ist mit einem vierten Signaleingang des fünften Multiplexers 516 gekoppelt. Ferner ist an einem siebten Datensignaleingang 507 ein Signal x6 bereitgestellt, das einem ersten Dateneingang eines vierten Multiplexers 515 bereitstellbar ist. Der zweite Signaleingang des vierten Multiplexers 515 ist mit einem achten Datensignaleingang 508 gekoppelt, an dem ein Signal x7 bereitgestellt ist. Ein an einem neunten Datensignaleingang 509 bereitgestelltes Signal x8 ist einem Steuereingang des vierten Multiplexers 515 bereitgestellt, wobei der Signalausgang des vierten Multiplexers 515 mit einem fünften Signaleingang des fünften Multiplexers 516 gekoppelt ist. Ein erster Signalausgang des fünften Multiplexers 516 ist mit einem Signaleingang eines Flip-Flops 517 gekoppelt, dem an einem Steuereingang ein Taktsignal clk bereitgestellt ist. An einem Ausgang des Flip-Flops 517, der einen dritten Datensignalausgang 520 der Logik-Grundzelle 500 bildet, ist ein Signal yreg bereitgestellt. Der Signalausgang des vierten Multiplexers 515 ist mit einem vierten Datensignalausgang 521 gekoppelt, an dem ein Ausgangssignal y2 bereitgestellt ist. Der Datensignalausgang des zweiten Logikfunktionsblocks 511 ist mit einem fünften Datensignalausgang 522 gekoppelt, an dem das Ausgangssignal y3 bereitgestellt ist.
-
Die Logik-Grundzelle aus 5 realisiert beispielsweise die Shannon-Zerlegung, indem die Ausgangssignale der ersten und zweiten Logikfunktionsblöcke 510, 511 mittels des dritten Multiplexers 514 gemultiplext werden, und somit mit dem Signal x5 verknüpft werden.
-
Eine iterative Zerlegung ist beispielsweise mittels der Verschaltung des ersten Logikfunktionsblocks 510 und des zweiten Multiplexers 513 realisiert, da das Ausgangssignal des ersten Logikfunktionsblocks 510 (f0(x1~, x0)) dem Signaleingang des zweiten Multiplexers 513 bereitgestellt wird, wodurch eine Pipeline-artige Struktur gebildet wird.
-
In einer Ausgestaltung, bei welcher der dritte Multiplexer 514 als Mehrfachfunktions-Einrichtung eingerichtet ist, so dass er selektiv als Multiplexer oder als Logikfunktionsblock mit einer Funktionalität ähnlich wie die der Logikfunktionsblöcke 510, 511 betrieben werden kann, ist eine disjunkte Zerlegung realisierbar, wenn der dritte Multiplexer 514 in dem Funktionsmodus als Logikfunktionsblock betrieben wird.
-
Die in 5 gezeigte Logik-Grundzelle 500 kann mit beliebigen anderen Logik-Grundzellen verschaltet werden, indem Eingänge 501 bis 509 bzw. Ausgänge 518 bis 522 der Logik-Grundzelle 500 mit Eingängen bzw. Ausgängen von anderen Logik-Grundzellen verschaltet werden. Logikteilfunktionen, wie beispielsweise f0(xl~, x0) können direkt an Datensignalausgänge (hier dem zweiten Datensignalausgang 519 y1) bereitgestellt werden. Ferner ist ein Register bereitgestellt, wozu ein Flip-Flop dienen kann.
-
Bei dem in 5 gezeigten Ausführungsbeispiel der erfindungsgemäßen Logik-Grundzelle 500 sind die Multiplexer 512, 513 und 516 als strukturelle Multiplexer anzusehen, da sie zur logischen Funktion der Logik-Grundzelle 500 nur insofern beitragen, als sie zwischen unterschiedlichen möglichen Pfaden auswählen. Diese Abgrenzung gegenüber den funktionalen Multiplexern, nämlich den dritten und vierten Multiplexern 514, 515 ist besonders für die Realisierung der Logik-Grundzelle 500 in einem structured ASIC (MPGA) von Bedeutung, da statische Multiplexer mit unveränderlicher Multiplex-Funktionalität in einem solchen Fall als Via- oder Metall-programmierte Kammstrukturen ausgelegt werden können.
-
Im Weiteren werden bezugnehmend auf 6A, 6B zwei Ausführungsformen für Multiplexer beschrieben, die als unveränderliche Hardware-Elemente realisiert werden.
-
In 6A ist ein Via-programmierter Multiplexer 600 gezeigt, bei dem Leiterbahnen in einer n-ten Metallisierungsebene 601 ausgeführt sind, wobei auf den Leiterbahnen Signale x0, x1 bzw. x2 bereitstellbar sind. Mittels eines variabel anbringbaren Vias 603 kann die n-te Metallisierungsebene 601 mit einer (n – 1)-ten Metallisierungsebene 602 gekoppelt werden, wodurch eine statische Multiplexer-Funktionalität realisiert wird.
-
Bei dem in 6B gezeigten Metall-programmierten Multiplexer 610 sind wiederum Leiterbahnen in der n-ten Metallisierungsebene 601 gezeigt, auf denen Signale x0, x1 bzw. x2 geführt werden können, wobei mittels Koppelns von nur einer dieser Leiterbahnen mit einem Ausgang y die gewünschte Multiplexer-Funktionalität einmal fest einstellbar ist.
-
Anders ausgedrückt zeigen 6A und 6B einen Via-programmierten Multiplexer 600 und einen Metall-programmierten Multiplexer 610. Durch diese Realisierung können die in 5 gezeigten Multiplexer 512, 513, 516 ohne zusätzliche Transistoren und somit in verringerter Dimension gebildet werden.
-
Der Via-programmierte Multiplexer 600 und der Metall-programmierte Multiplexer 610 sind Ausgestaltungen der statischen Multiplexer 512, 513, 516, deren Multiplexer-Funktionalität einmalig fest vorgegeben und Hardware-mäßig konfiguriert wird, und danach nicht mehr geändert wird.
-
Somit ist in 6A ein Via-programmierter 3:1 Multiplexer 600 und in 6B ein Metall-programmierter 3:1 Multiplexer 610 dargestellt.
-
Die Multiplexer 514, 515 aus 5 dienen der Abbildung von Shannon-zerlegten Funktionen: im Falle des Multiplexers 514 innerhalb der Logik-Grundzelle 500 und im Falle des Multiplexers 515 zur Verknüpfung mehrerer Grundzellen, nämlich der in 5 gezeigten Logik-Grundzelle 500 und mindestens einer in 5 nicht gezeigten anderen Logik-Grundzelle, die als Ausgangssignale die an den siebten und achten Datensignaleingängen 507, 508 bereitgestellten Signale x6, x7 generieren.
-
Im Weiteren wird bezugnehmend auf 7 eine Logik-Grundzellen-Anordnung 700 gemäß einem Ausführungsbeispiel der Erfindung beschrieben.
-
Die Logik-Grundzellen-Anordnung 700 enthält eine erste erfindungsgemäße Logik-Grundzelle 701, eine zweite erfindungsgemäße Logik-Grundzelle 702 und eine dritte erfindungsgemäße Logik-Grundzelle 703, welche miteinander verschaltet sind. Es ist anzumerken, dass die Logik-Grundzellen 701 bis 703 in 7 nur schematisch und nur teilweise gezeigt sind, so dass insbesondere nicht alle Komponenten und Zerlegungen der Logik-Grundzelle 701 bis 703 in 7 gezeigt sind.
-
Es sind bei der Logik-Grundzellen-Anordnung 700 erste bis siebte Datensignaleingänge 704 bis 710 vorgesehen, an denen Signale a bis g bereitgestellt sind. Wie in 7 schematisch angedeutet ist, wird mittels der ersten Logik-Grundzelle 701 eine Funktion von drei Datensignalen c, b, a, nämlich f0(c, b, a) realisiert. Mittels der zweiten Logik-Grundzelle 702 wird eine Funktion f1(c, b, a) der drei Datensignale a, b, c realisiert. Mittels der dritten Logik-Grundzelle 703 wird eine Funktion f2(g, f, e) der Datensignale g, f, e bzw. eine Funktion f3(d, c, b, a) der vier Datensignale d, c, b, a realisiert. An einem ersten Datensignalausgang 711 ist die Funktion f2 bereitgestellt, an einem zweiten Datensignalausgang 312 ist die Funktion f3 dargestellt.
-
Ferner ist in 7 ein Multiplexer 713 in der dritten Logik-Grundzelle 703 dargestellt, in welcher Ausgangssignale der ersten und der zweiten Logik-Grundzellen 701, 702 miteinander Logik-verknüpft werden.
-
Anders ausgedrückt ist in 7 die Bildung einer Funktion f3 von vier Eingangssignalen aus zwei Grundzellen 701, 702 und dem Multiplexer 713 der dritten Logik-Grundzelle 703 gezeigt. Als Multiplexer 713 kann alternativ auch ein freier Multiplexer aus der ersten Logik-Grundzelle 701 oder aus der zweiten Logik-Grundzelle 702 verwendet werden.
-
Bei der Basiskomplexität von n Eingängen pro Logik-Grundzelle werden zum Darstellen einer logischen Funktion von n + k Eingängen mit Hilfe der Shannon-Zerlegung 2k Logik-Grundzellen benötigt. Alternativ können einige logische Funktionen aber auch gemäß Gleichungen (3), (4), (5) dargestellt werden. Dazu wird dann zum Beispiel der logische Pfad über die ersten und zweiten Multiplexer 512, 513 aus 5 genutzt. Der dadurch erreichbare Vorteil wird deutlich, wenn die folgende Funktion exemplarisch betrachtet wird: f(e, d, c, b, a) = e ⊕ d ⊕ c ⊕ b ⊕ a (16)
-
Diese Funktion von fünf Eingängen e, d, c, b, a kann unter Verwendung von Gleichung (1) unter Verwendung von vier Logik-Grundzellen Shannon-zerlegt realisiert werden, wenn man von der Verwendung gemeinsamer Teilfunktionen absieht. e ⊕ d ⊕ c ⊕ b ⊕ a = fS(fS(f1(a, b, c), f2(a, b, c), d), fS(f3(a, b, c), f4(a, b, c), d)), e) (17)
-
Wenn jedoch gemäß Gleichungen (3), (4), (5) eine iterative Zerlegung verwendet wird, so werden zum Realisieren dieser Funktionen lediglich zwei Logik-Grundzellen benötigt: e ⊕ d ⊕ c ⊕ b ⊕ a = f⊕(f⊕(f⊕(f⊕(e, d), c), b), a) (18)
-
In diesem Falle verläuft der kritische Pfad durch vier Gatter.
-
Der dritte Datensignaleingang 503, an dem das Signal x2 bereitgestellt ist, bildet denjenigen kombinatorischen Eingang, mittels welchem das Register 517 direkt erreicht werden kann, ohne kombinatorische Ressourcen zu belegen.
-
Das Register 517 selbst kann mehr als einen Ausgang haben. Abgesehen von einem sequentiellen Ausgang und dessen logisch entgegengesetzten Potential können zusätzliche Registersignale am Ausgang anliegen. Die Registerfunktion selbst kann konfigurierbar ausgelegt werden.
-
Im Weiteren wird bezugnehmend auf 8 eine Logik-Grundzelle 800 gemäß einem Ausführungsbeispiel der Erfindung beschrieben.
-
Die in 8 gezeigte Logik Grundzelle 800 unterscheidet sich von der in 5 gezeigten Logik-Grundzelle 500 im Wesentlichen dadurch, dass die Funktional-Multiplexer 514, 515 aus 1 durch einen ersten Doppelausgang-Multiplexer 801 bzw. durch einen zweiten Doppelausgang-Multiplexer 802 ersetzt sind. Der erste Doppelausgang-Multiplexer 801 weist zusätzlich zu dem in 5 gezeigten Datensignalausgang des dritten Multiplexers 514 einen zusätzlichen Datensignalausgang auf, an dem das zu dem an dem ersten Datensignalausgang bereitgestellten Ausgangsignal komplementäre Signal bereitgestellt wird. Dieses wird dem fünften Multiplexer 516 zugeführt und ist ferner an dem ersten Datensignalausgang 518 bereitgestellt. Darüber hinaus ist ein sechster Datensignalausgang 803 geschaffen, an dem das Ausgangssignal des ersten Doppelausgang-Multiplexers 801 bereitgestellt ist.
-
Der vierte Multiplexer 515 aus 5 ist durch einen zweiten Doppelausgang-Multiplexer 802 ersetzt, an dessen Ausgängen nicht nur das Ausgangssignal des vierten Multiplexers 515, sondern zusätzlich an einem zusätzlichen Datensignalausgang des zweiten Doppelausgang-Multiplexers 802 das zu dem Ausgangssignal logisch inverse Signal bereitgestellt ist. Das Ausgangssignal und das dazu inverse Ausgangssignal werden dem fünften Multiplexer 516 zugeführt. Ferner sind die beiden Signale an dem vierten Datensignalausgang 521 und an einem siebten Datensignalausgang 804 bereitgestellt.
-
Die in
8 gezeigte Realisierung der Erfindung ergibt sich, indem die funktionalen Multiplexer
514,
515 aus
5 durch die ersten und zweiten Doppelausgang-Multiplexer
801,
802 ersetzt werden, die derart ausgelegt sind, dass sie ihr Ergebnis stets negiert und zusätzlich nicht negiert ausgeben. Das hat den Vorteil, dass auch gemeinsame Teilfunktionen, die sich nur im Vorzeichen unterscheiden, nur einmal berechnet werden müssen, wenn die Shannon-Zerlegung benutzt wird. Dies geht aus (19) hervor:
-
Da die ersten und zweiten Doppelausgang-Multiplexer 801, 802 sowohl das logische Ergebnis g(an-1 ... a0) als auch die Negation davon simultan bereitstellen, kann mit dem nächsten Multiplexer die Parity-Funktion direkt erzeugt werden, indem der Steuereingang desselben mit an belegt wird.
-
Gleichung (16) lässt sich in diesem Fall folgendermaßen zerlegen:
-
Für die Zerlegung gemäß Gleichung (20) werden zwei Zellen mit einem kritischen Pfad benötigt, welcher durch ein Gatter und drei Multiplexer verläuft.
-
Zum Unterstützen auch disjunkter Zerlegungen kann anstelle des zweiten Doppelausgang-Multiplexers 802 wiederum eine vollständig konfigurierbare logische Grundzelle bereitgestellt werden, die alle Funktionen von zwei Eingängen realisieren kann, darüber hinaus aber auch als 2:1-Multiplexer betrieben werden kann. Dadurch ist ein Maximum an Flexibilität bei der Abbildung logischer Funktionen erreicht. Insbesondere lassen sich dann auch disjunkte Zerlegungen gemäß Gleichungen (6), (7) effizienter umsetzen. e ⊕ d ⊕ c ⊕ b ⊕ a = f⊕(f⊕(a, b, c), f⊕(d, e)) (21)
-
Diese Zerlegung lässt sich ebenfalls mit zwei Logik-Grundzellen realisieren. Der kritische Pfad verläuft in diesem Fall nur durch zwei Gatter und einen Multiplexer.
-
Im Weiteren wird bezugnehmend auf 9 eine Logik-Grundzelle 900 gemäß einem Ausführungsbeispiel der Erfindung beschrieben.
-
Entsprechend der obigen Beschreibung ist bei der Logik-Grundzelle 900 der zweite Doppelausgang-Multiplexer 802 aus 8 durch eine Multifunktions-Einrichtung 901 ersetzt, die in einem Multiplex-Betriebszustand als Multiplexer betrieben werden kann und die in einem Logikfunktions-Betriebszustand eine beliebig auswählbare Logikfunktion zum Verknüpfen der an ihren Eingängen bereitgestellten Eingangssignale (x6, x7) bewerkstelligt.
-
Größtmögliche logische Flexibilität ist vor allen Dingen im Hinblick auf die Integration der Grundzelle in den Standard-Toolflow wesentlich. Mit der erfindungsgemäßen Logik-Grundzelle können ASIC-Netzlisten, die auf Grundgattern beruhen, direkt weiterverwendet werden.
-
Selbstverständlich kann auch abweichend von 9 der erste Doppelausgang-Multiplexer 801 durch eine Multifunktions-Einrichtung ersetzt werden, womit auf jedem Komplexitätsniveau einer logischen Funktion disjunkte Zerlegungen ermöglicht sind. Auch der erste Logikfunktionsblock 510 und der zweite Logikfunktionsblock 511 können durch eine Multifunktions-Einrichtung ersetzt werden. Multiplexer 513, 514 bzw. 801, 802 können entweder einfache Multiplexer sein (siehe 5), Multiplexer mit invertiertem/nicht-invertiertem Ausgang (siehe 8) oder Logikzellen, die jede Funktion von zwei Eingängen und eine invertierte und nicht invertierte Multiplexerfunktion realisieren können. Es ist aber auch eine Ausprägung der Erfindung möglich, in welcher der erste Logikfunktionsblock 510 in 5 ganz fehlt. Seine Funktion kann beispielsweise von einer Außenbeschaltung von Multiplexer 515 übernommen werden. Genauso kann auf den Multiplexer 515 dann verzichtet werden, wenn die Eingänge des Multiplexers 514 mit Hilfe von zwei zusätzlichen strukturellen Multiplexern für Eingänge der Zelle erreicht sind.
-
Die ersten und zweiten Logikfunktionsblöcke 510, 511 können in jeder beliebigen Kombination zur Realisierung der Multiplexer 514, 515 bzw. 801, 802 bzw. 801, 901 stehen und entweder Logikzellen sein, die jede Funktion von zwei Eingängen realisieren, oder Logikzellen, die jede Funktion von zwei Eingängen und eine invertierte oder nicht invertierte 2:1 Multiplexerfunktion realisieren können.
-
Von der Erfindung erfasst sind ferner Logik-Grundzellen, die mehr als zwei kombinatorische Logikfunktionsblöcke 510, 511 enthalten, die über mehr als einen Multiplexer wie den Multiplexer 801 aus 8 verfügen, bzw. die mehr als einen freien Multiplexer oder keinen freien Multiplexer wie Multiplexer 802 in 8 enthalten. In logisch höher komplexen Zellen können die Multiplexer, wie diskutiert, insbesondere in drei Varianten realisiert sein. Auch für die Realisierung der kombinatorischen Zellen 510, 511 sind alle Varianten möglich.
-
Auch wenn die kombinatorischen Grundzellen korrespondierend zu den Logikfunktionsblöcken 510, 511 nicht alle möglichen, sondern nur einige Funktionen von zwei Eingängen realisieren, sich aber in einer Struktur wie in 5, 8 oder 9 oder einer diskutierten Variante davon befinden, ist das von dieser Erfindung mit umfasst.
-
10 zeigt eine Logik-Grundzelle 1000 gemäß einem Ausführungsbeispiel der Erfindung.
-
Die Logik-Grundzelle 1000 entspricht in ihrer Struktur im Wesentlichen der Logik-Grundzelle 900 aus 9 mit dem Unterschied, dass der erste Doppelausgang-Multiplexer 801 durch eine erste Multifunktions-Einrichtung 1001 ersetzt ist. Eine zweite Multifunktions-Einrichtung 1002 entspricht in ihrer Struktur der Multifunktions-Einrichtung 901 aus 9.
-
Die erste Multifunktions-Einrichtung 1001 und die zweite Multifunktions-Einrichtung 1002 können denselben oder einen unterschiedlichen Aufbau haben, anders ausgedrückt können die erste Multifunktions-Einrichtung 1001 und die zweite Multifunktions-Einrichtung 1002 eingerichtet sein zum Realisieren der gleichen Art einer Zerlegung der Logikfunktion in mehrere Logikteilfunktionen (Shannon-Zerlegung, iterative Zerlegung oder disjunkte Zerlegung), alternativ können die erste Multifunktions-Einrichtung 1001 und die zweite Multifunktions-Einrichtung 1002 jedoch auch jeweils eine andere Art einer Zerlegung realisieren, insbesondere:
- • erste Multifunktions-Einrichtung 1001: Shannon-Zerlegung,
zweite Multifunktions-Einrichtung 1002: Shannon-Zerlegung;
- • erste Multifunktions-Einrichtung 1001: Shannon-Zerlegung,
zweite Multifunktions-Einrichtung 1002: iterative Zerlegung;
- • erste Multifunktions-Einrichtung 1001: Shannon-Zerlegung,
zweite Multifunktions-Einrichtung 1002: disjunkte Zerlegung;
- • erste Multifunktions-Einrichtung 1001: iterative Zerlegung,
zweite Multifunktions-Einrichtung 1002: Shannon-Zerlegung;
- • erste Multifunktions-Einrichtung 1001: iterative Zerlegung,
zweite Multifunktions-Einrichtung 1002: iterative Zerlegung;
- • erste Multifunktions-Einrichtung 1001: iterative Zerlegung,
zweite Multifunktions-Einrichtung 1002: disjunkte Zerlegung;
- • erste Multifunktions-Einrichtung 1001: disjunkte Zerlegung,
zweite Multifunktions-Einrichtung 1002: Shannon-Zerlegung;
- • erste Multifunktions-Einrichtung 1001: iterative Zerlegung,
zweite Multifunktions-Einrichtung 1002: disjunkte Zerlegung;
- • erste Multifunktions-Einrichtung 1001: disjunkte Zerlegung,
zweite Multifunktions-Einrichtung 1002: disjunkte Zerlegung.
-
Die Logik-Grundzelle 1000 gemäß 10 stellt somit hinsichtlich der Aufteilung der beiden Zerlegungseinheiten den allgemeinsten Fall dar.
-
In diesem Dokument ist folgende Veröffentlichung zitiert:
- [1] US 6,529,040 B1
- [2] US 6,331,789 B2
- [3] Wannemacher, M ”Das FPGA-Kochbuch”, Abb. 7.36: Logikblock (CLB) der XC4000-Familien, 1. Auflage, International Thomson Publishing Company, Bann, 1998, S. 197
- [4] US 2003/0206036 A1
- [5] US 2002/0043988 A1
- [6] EP 0 701 328 A2
- [7] EP 1 150 431 A1
- [8] US 5,386,156
- [9] WO 02/093745 A2
- [10] US 2002/0162078 A1
- [11] US 6,505,337 B1