-
Die
vorliegende Erfindung betrifft eine programmierbare Logikzelle,
welche bei programmierbaren Logikanordnungen, programmierbaren arithmetischen
Einheiten oder bei programmierbaren digitalen Schaltungsanordnungen,
welche entweder als programmierbare Logikanordnung oder als programmierbare
arithmetische Einheit konfigurierbar sind, eingesetzt werden kann.
-
Programmierbare
Logikanordnungen sind typischerweise generische und sehr regelmäßige Architekturen
für logische
Operationen. Eine programmierbare Logikanordnung umfasst nur wenige
Typen von konfigurierbaren Zellen:
- – Logikzellen
- – Signaleingangszellen
- – Signalausgangszellen
- – Kopplungszellen
- – Eingangs-/Ausgangs-Pins
-
Dabei
führen
Logikzellen eine Signalverarbeitung auf der Bitebene aus. Signaleingangszellen nehmen
ein Signal z. B. von einem Verbindungsbus auf, wobei das Signal
zu einem Eingang einer Logikzelle weitergeleitet wird. Eine Signalausgangszelle leitet
ein Ausgangsignal einer Logikzelle z.B. an einen Bus weiter. Kopplungszellen
ermöglichen
beliebige Pfade in einem Verbindungsnetz der Logikanordnung. Eingangs-/Ausgangs-Pins
verbinden die programmierbare Logikanordnung mit der Außenwelt.
-
Programmierbare
Logikanordnungen umfassen eine große Anzahl von Schaltern, welche
von Konfigurationsbits gesteuert werden, was ein Einstellen einer
großen
Anzahl von Signalpfaden ermöglicht.
Das bedeutet, dass eine bestimmte Funktionalität einer programmierbaren Logikanordnung
durch ihre Konfigurationsbits, welche in der Regel in Konfigurationsbitspeicherzellen
gespeichert sind, definiert wird. Gerade bei einer FPGA (frei programmierbare logische
Anordnung) ist die Anzahl von Konfigurationsbits hoch.
-
Typische
FPGA-Strukturen benötigen
ungefähr
200 Bit pro Logikzelle (einschließlich eines kalkulatorischen
Abschnittes der konfigurierbaren Verbindungen). Eine Kette von Konfigurationsbits
bildet ein Konfigurationswort von mehreren Mbit, wobei die genaue
Größe von der
Komplexität
der FPGA abhängt.
-
Die
WO 01/50607 A1 betrifft das Gebiet der PLAs (Programmable Logic
Arrays), FPGAs (Field Programmable Gate Arrays) und PLDs (Programmable
Logic Devices), wobei eine Architektur vorgeschlagen wird, bei welcher
individuelle Logikelemente auf einer Bit-Slice-ALU basieren. Dabei
umfasst ein solches Logikelement einen Funktionsauswahlblock, eine
arithmetische Logikschaltung und einen Ausgangsauswahlblock. Der
Funktionsauswahlblock steuert die arithmetische Logikschaltung und
ist nur über
die arithmetische Logikschaltung mit dem Ausgang des Logikelements
verbunden.
-
Andere
konfigurierbare Logikzellen nach dem Stand der Technik umfassen
eine Nachschlagetabelle ("Look-Up-Table"; LUT), um eine boolesche Funktion
von N Eingängen
und einem Ausgang zu realisieren. In 1 ist
eine solche Logikzelle 100 nach dem Stand der Technik dargestellt.
Die Logikzelle 100 umfasst eine LUT 201 mit vier
Eingängen und
einem Ausgang, wobei der Ausgang über einen Multiplexer 203 konfigurierbar
direkt oder über
ein Flip-Flop 202 zum Ausgang der Logikzelle geschaltet wird.
Der Vorteil einer LUT ist die Tatsache, dass jede theoretisch denkbare
Abbildung zwischen den Eingängen
und dem Ausgang der LUT implementiert werden kann.
-
In 2 ist eine LUT 201 im
Detail dargestellt. Die LUT 201 umfasst 16 Konfigurationsbitspeicherzellen 300,
welche über
Multiplexer 301 zum Ausgang der LUT 201 geschaltet
werden. Dabei erfolgt einer Auswahl, welche Konfigurationsbitspeicherzelle 300 zum
Ausgang der LUT 201 geschaltet wird, über die vier Eingänge A-D
der LUT 201, welche gleichzeitig die Multiplexer 301 steuern.
Durch die LUT 201 ist jede beliebige boolesche Funktion f(A,B,C,D)
konfigurierbar.
-
Es
gibt
verschiedene boolesche Funktionen
mit N Parametern. Da die in
2 durch
die LUT
201 realisierte boolesche Funktion vier Parameter
(A–D)
besitzt, müssen
durch das LUT
201 = 2
16 =
65536 beliebige boolesche Funktionen realisiert werden können. Dies
ist auch möglich,
da die 16 Konfigurationsbitspeicherzellen, welche jeweils mit 0 oder
1 belegt werden können,
auf 2
16 = 65536 verschiedene Arten belegt
werden können.
-
In 3 ist eine programmierbare
arithmetische Einheit 100a nach dem Stand der Technik dargestellt.
Die programmierbare arithmetische Einheit 100a umfasst
eine 1-Bit-ALU 501 und eine Steuerlogik 500 sowie
eine bereits bei 1 erläuterte Ausgangslogik 202, 203.
Die programmierbare arithmetische Einheit 100a verknüpft an den
beiden Eingängen
der programmierbaren arithmetischen Einheit 100a anliegende
Werte mit Hilfe der 1-Bit-ALU 501, wobei über die
Steuerlogik 500 konfiguriert ist, mit welcher arithmetischen
Operation die beiden Eingangswerte verknüpft werden.
-
Auch
mit einer FPGA können
arithmetische logische Funktionen mit Hilfe von LUTs und entsprechender
Zusatzlogik implementiert werden. Nachteiliger Weise erfordert die
Zusatzlogik aber einen großen
Anteil der Fläche
der FPGA. Außerdem
weist die FPGA im Vergleich zu einer ALU große Zeitverzögerungen und einen erhöhten Strombedarf
auf. Das bedeutet, dass eine FPGA beziehungsweise eine Logikzelle, welche
zur Durchführung
von arithmetischen Funktionen verwendet wird, im Vergleich zu einer
ALU Nachteile hinsichtlich des Flächenbedarfs, der Verzögerungszeit
und des Leistungsverbrauchs besitzt. Dies liegt hauptsächlich daran,
dass ein wesentlicher Anteil einer von einer universell einsetzbaren
Logikzelle nach dem Stand der Technik benötigten Fläche für Schaltungsteile der Logikzelle
benötigt wird,
welche bei arithmetischen Funktionen nicht verwendet werden.
-
Daher
ist es eine Aufgabe der vorliegenden Erfindung, eine Logikzelle,
eine programmierbare Logikanordnung, eine programmierbare arithmetische Einheit
und eine programmierbare digitale Schaltungsanordnung, welche als
programmierbare Logikanordnung oder als programmierbare arithmetische Einheit
konfigurierbar ist, bereitzustellen, welche zumindest einige der
vorab beschriebenen Nachteile nicht aufweisen und bei welchen eine
Anzahl von Konfigurationsbits oder Konfigurationsbitspeicherzellen
im Vergleich zum Stand der Technik verringert ist. Dabei soll ein
Ausgang der Logikzelle einen Wert annehmen, welcher abhängig von
Werten von vier Eingängen
der Logikzelle und von einer beliebigen booleschen Funktion ist.
-
Diese
Aufgabe wird erfindungsgemäß durch eine
Logikzelle gemäß Anspruch
1, eine programmierbare Logikanordnung gemäß Anspruch 20, eine programmierbare
arithmetische Einheit gemäß Anspruch
21 und eine programmierbare digitale Schaltungsanordnung gemäß Anspruch
22 gelöst.
Die abhängigen
Ansprüche
definieren bevorzugte und vorteilhafte Ausführungsformen der Erfindung.
-
Im
Rahmen der vorliegenden Erfindung wird eine programmierbare Logikzelle
für eine
programmierbare digitale Schaltungsanordnung bereitgestellt. Dabei
umfasst die Logikzelle zwei 1-Bit-ALUs und eine Zusatzlogik bzw.
eine Zusatzlogikschaltung, welche wiederum eine Schaltungseinheit
aufweist, und ist derart ausgestaltet, dass ein Wert am Ausgang
der Logikzelle einen Funktionswert einer booleschen Funktion aufweist,
wobei Parameter der booleschen Funktion Werten von vier Eingängen der
Logikzelle entsprechen. Dabei sind die vier Eingänge der Logikzelle über die
Zusatzlogik mit Eingängen der
beiden 1-Bit-ALUs verbunden, wobei die Zusatzlogik den jeweiligen
Eingang invertiert oder nicht invertiert. Die Ausgänge der
beiden 1-Bit-ALUs sind über
die Zusatzlogik mit dem Ausgang der Logikzelle verbunden. Die Schaltungseinheit
wird von den vier Eingängen
gesteuert und schaltet entweder einen Wert von einem ihrer höchstens
acht Konfigurationsbitspeicherzellen oder einen Ausgang der beiden 1-Bit-ALUs
zu ihrem Ausgang, wobei der Ausgang der Schaltungseinheit über die
Zusatzlogik mit dem Ausgang der Logikzelle verbunden ist. Zusätzlich ist mindestens
ein Ausgang mindestens einer der beiden 1-Bit-ALUs über die
Zusatzlogik mit dem Ausgang der Logikzelle verbunden. Die boolesche
Funktion der Logikzelle ist dabei über die Zusatzlogik mit Hilfe
der Schaltungseinheit konfigurierbar.
-
Da
die erfindungsgemäße Logikzelle
zwei 1-Bit-ALUs umfasst, können
arithmetische Funktionen von der Logikzelle mit einer geringeren
Verzögerungszeit
als bei einer Logikzelle nach dem Stand der Technik, welche ohne
eine ALU arbeitet, verarbeitet werden.
-
Bei
einer bevorzugten Ausführungsform kann
die Logikzelle jede beliebige boolesche Funktion mit N Parametern
nachbilden, wobei N die Anzahl von Eingängen der Logikzelle ist.
-
Dadurch
kann die Logikzelle erfindungsgemäß zum einen ohne Einschränkung als
LUT und zum anderen in einem arithmetischen Modus eingesetzt werden.
-
Bei
einer anderen bevorzugten Ausführungsform
kann die Logikzelle nur dann jede beliebige Funktion mit N Parametern
(N = Anzahl der Eingänge der
Logikzelle) nachbilden bzw. realisieren, wenn die Reihenfolge der
Eingänge
vorgebbar ist bzw. die Eingänge
permutierbar sind und/oder wenn ein Teil oder alle Eingänge jeweils über die
Zusatzlogik ausgewählt
invertiert oder nicht invertiert werden.
-
Durch
die Vorgabe der Reihenfolge der Eingänge wird die Anzahl der booleschen
Funktionen, welche von der erfindungsgemäßen Logikzelle zu realisieren
ist, stark reduziert. Dabei reduziert die Möglichkeit, jeden Eingang (oder
nur einen Teil der Eingänge)
mittels der Zusatzlogik einem Rest der Logikzelle jeweils invertiert
oder nicht invertiert zuzuführen,
die Anzahl der booleschen Funktionen, welche von dem Rest der Logikzelle
zu realisieren sind, weiter, d.h. die Vorgabe der Reihenfolge und
eine konfigurierbare Invertierbarkeit der Eingänge ergänzt sich in vorteilhafter Weise.
-
Bei
einer bevorzugten Ausführungsform kann
zumindest eine der beiden 1-Bit-ALUs derart ausgestaltet sein, dass
ihr Ausgang einen Wert einer weiteren booleschen Funktion annimmt,
wobei die Parameter der booleschen Funktion die beiden Eingänge dieser
1-Bit-ALU sind. Dabei kann die boolesche Funktion über die
Zusatzlogik konfiguriert werden, d. h. diese 1-Bit-ALU ist in der
Lage, jede theoretisch denkbare boolesche Funktion für zwei Parameter
auszubilden.
-
Indem
eine oder beide 1-Bit-ALUs jede theoretisch denkbare boolesche Funktion
für zwei
Parameter ausbilden können,
wird vorteilhafter Weise durch die 1-Bit-ALUs bereits ein großer Anteil
aller möglichen
booleschen Funktionen für
vier Parameter abgedeckt, so dass die Zusatzlogik entsprechend Fläche sparend
ausfällt.
-
Erfindungsgemäß kann eine
oder beide der 1-Bit-ALUs derart ausgestaltet sein, dass sie nur dann
jede theoretisch denkbare boolesche Funktion für zwei Parameter realisieren kann,
wenn eine Reihenfolge ihrer zwei Eingänge vorgebbar ist.
-
Es
gibt für
zwei Eingänge
zwei mögliche
Reihenfolgen (a, b oder b, a). Man kann zeigen, dass die 1-Bit-ALU
nur 12 von 16 möglichen
booleschen Funktionen mit zwei Parametern realisieren können muss,
wenn die Reihenfolge der Eingänge
vorgebbar ist, was auch als Permutierbarkeit der Eingänge bezeichnet
wird. Dadurch kann die 1-Bit-ALU kompakter, d. h. mit weniger Gattern
beziehungsweise mit einem geringeren Flächenbedarf implementiert werden.
-
Auch
durch Maßnahmen,
die Eingänge
der Logikzelle den 1-Bit-ALUs
konfigurierbar invertiert oder nicht invertiert zuzuführen, wird
vorteilhafter Weise die Anzahl der booleschen Funktionen, welche
die 1-Bit-ALU realisieren muss, (weiter) reduziert, wodurch die
1-Bit-ALU wiederum kompakter implementiert werden kann. Wenn nur
ein Eingang der 1-Bit-ALU konfigurierbar invertierbar ist und die
Eingänge
permutierbar sind, reduziert sich die Anzahl der von der 1- Bit-ALU zu implementierenden
booleschen Funktionen mit zwei Parametern auf 9. Wenn beide Eingänge der
1-Bit-ALU konfigurierbar invertierbar sind und die Eingänge permutierbar
sind, reduziert sich die Anzahl der von der 1-Bit-ALU zu implementierenden booleschen
Funktionen mit zwei Parametern sogar auf 7.
-
Dabei
sei darauf hingewiesen, dass eine kompaktere 1-Bit-ALU auch einen
geringeren Energieverbrauch als eine weniger kompakte 1-Bit-ALU aufweist.
Außerdem
ist eine Verzögerungszeit
einer kompakteren 1-Bit-ALU verglichen mit einer weniger kompakten
1-Bit-ALU in der Regel kürzer.
Umso kompakter die beiden 1-Bit-ALUs aufgebaut sind, umso kompakter
ist auch die erfindungsgemäße Logikzelle
aufgebaut. Deshalb weist auch die erfindungsgemäße Logikzelle dieselben Vorteile
wie die 1-Bit-ALUs hinsichtlich der Laufzeit, des Flächenbedarfs
und des Energieverbrauchs im Vergleich zu einer Logikzelle nach
dem Stand der Technik auf.
-
Im
Rahmen der vorliegenden Erfindung wird auch eine programmierbare
Logikanordnung, eine programmierbare arithmetische Einheit und eine
programmierbare digitale Schaltungsanordnung, welche als programmierbare
Logikanordnung oder als programmierbare arithmetische Einheit konfigurierbar ist,
bereitgestellt, welche jeweils mindestens eine erfindungsgemäße Logikzelle
umfassen.
-
In
dem erfindungsgemäß die programmierbare
Logikanordnung, die programmierbare arithmetische Einheit und die
programmierbare digitale Schaltungsanordnung jeweils mindestens
eine erfindungsgemäße Logikzelle
umfassen, weisen sie genau wie die Logikzelle Vorteile hinsichtlich
der Verzögerungszeit,
des Flächenbedarfs
und des Energieverbrauchs im Vergleich zu programmierbaren Logikanordnung,
programmierbaren arithmetischen Einheiten und programmierbaren digitalen
Schaltungsanordnung nach dem Stand der Technik auf.
-
Die
vorliegende Erfindung wird nachfolgend näher unter Bezugnahme auf die
beigefügte
Zeichnung anhand bevorzugter Ausführungsbeispiele erläutert.
-
1 stellt
eine Logikzelle mit einer Nachschlagetabelle (LUT) nach dem Stand
der Technik dar.
-
2 stellt
die Nachschlagetabelle (LUT) der 1 dar.
-
3 stellt
eine programmierbare arithmetische Einheit nach dem Stand der Technik
dar.
-
4 stellt
eine erste erfindungsgemäße Ausführungsform
einer Logikzelle mit einem Blockgenerator und zwei 1-Bit-ALUs dar.
-
5 stellt
den Blockgenerator der 4 im Detail dar.
-
6 stellt
eine weitere Variante des Blockgenerators der 4 im
Detail dar.
-
7 stellt
eine 1-Bit-ALU dar, wie sie bei der ersten Ausführungsform der Logikzelle einsetzbar
ist.
-
8 stellt
eine Decoderschaltung dar, welche Teil einer erfindungsgemäßen Logikzelle
sein kann.
-
9 stellt
eine Variante einer 1-Bit-ALU dar, wie sie bei der ersten Ausführungsform
der Logikzelle einsetzbar ist.
-
10 stellt
eine zweite Ausführungsform der
erfindungsgemäßen Logikzelle
dar.
-
11 stellt
eine 1-Bit-ALU dar, wie sie bei der zweiten Ausführungsform der Logikzelle einsetzbar
ist.
-
12 stellt
eine dritte Ausführungsform
der erfindungsgemäßen Logikzelle
dar.
-
13 stellt
eine 1-Bit-ALU dar, wie sie bei der dritten Ausführungsform der Logikzelle einsetzbar
ist.
-
14 stellt
eine vierte Ausführungsform der
erfindungsgemäßen Logikzelle
dar.
-
15 zeigt
eine erfindungsgemäße programmierbare
Logikanordnung, welche vier Logikzellen der 4 einsetzt.
-
16 stellt
eine erfindungsgemäße programmierbare
arithmetische Einheit dar, welche vier Logikzellen der 4 einsetzt.
-
17 stellt
eine erfindungsgemäße programmierbare
digitale Schaltungsanordnung dar, welche als programmierbare Logikanordnung
oder als programmierbare arithmetische Einheit konfigurierbar ist
und vier Logikzellen der 4 einsetzt.
-
4 zeigt
eine erste Ausführungsform
einer Logikzelle 100b. Die Logikzelle 100b besitzt
vier Eingänge 609a–d und zwei
Ausgänge 608a–b. Jeder Eingang 609a–d wird
einer Auswahlinvertierlogik 601, 602 zugeführt, welche
jeweils aus einem Inverter 601 und einem Multiplexer 602 besteht
und dafür sorgt,
dass der jeweilige Eingang 609a–d einem Rest der Logikzelle 100b über eine
nicht dargestellte Zusatzlogik der Logikzelle 100b konfigurierbar
invertiert oder nicht invertiert zugeführt wird. Die beiden Eingänge 609a–b werden
invertiert oder nicht invertiert einer ersten (in 4 oben)
1-Bit-ALU 603 zugeführt während über die
Zusatzlogik mit Hilfe von zwei Multiplexern 618 konfigurierbar
ist, ob einer zweiten (in 4 unten)
1-Bit-ALU 603 die Eingänge 609a–b oder
die Eingänge 609c–d invertiert
oder nicht invertiert zugeführt
werden. Ein Blockgenerator 604 weist sechs Eingänge 610–615 und
einen Ausgang 616 auf. Die sechs Eingänge 610–615 setzen
sich aus einem Ausgang 610 der ersten 1-Bit-ALU, einem
Ausgang 611 der zweiten 1-Bit-ALU sowie aus den vier Ausgängen 612–615 der
Multiplexer 602 der Auswahlinvertierlogiken der vier Eingänge 609a–d der Logikzelle 100b zusammen. Über einen
Multiplexer 606 ist über
die Zusatzlogik konfigurierbar, ob der Ausgang 610 der
ersten 1-Bit-ALU oder der Ausgang 616 des Blockgenerators 604 dem
Ausgang 608a gepuffert über
ein Flip-Flop 617 zugeführt
wird. In ähnlicher
Weise ist über
einen Multiplexer 607 über
die Zusatzlogik konfigurierbar, ob der Ausgang 611 der zweiten
1-Bit-ALU gepuffert über ein
Flip-Flop 617 oder der Ausgang 616 des Blockgenerators 604 dem Ausgang 608b zugeführt wird.
Damit wird unter anderem über
die beiden Multiplexer 606, 607 gesteuert, ob
die Logikzelle 100b im Modus für eine arithmetische logische
Einheit oder im Modus für
eine FPGA betrieben wird.
-
Da
die zwei Multiplexer 618 vor der zweiten 1-Bit-ALU von
einem Konfigurationssignal gesteuert werden, sind zur Steuerung
der acht Multiplexer 602 (4-mal), 606, 607, 618 (2-mal) nur sieben Kontrollsignale
notwendig. Die dargestellte Logikzelle 100b kann entweder
als eine programmierbare 4-Bit-Logikzelle
für eine
FPGA, als zwei programmierbare 2-Bit-Logikzellen für eine FPGA oder als zwei unabhängige 1-Bit-ALUs betrieben beziehungsweise
konfiguriert werden. Dabei bildet die Logikzelle 100b bei der
Konfiguration als programmierbare 4-Bit-Logikzelle für eine FPGA
eine Nachschlagetabelle (LUT) mit vier Eingängen und einem Ausgang nach
während
sie bei der Konfiguration als programmierbare zweimal 2-Bit-Logikzelle
für eine
FPGA zwei Nachschlagetabellen (LUTs) mit jeweils zwei Eingängen und
einem Ausgang nachbildet.
-
In 5 ist
der in 4 dargestellte Blockgenerator 604 dargestellt.
Der Blockgenerator 604 ist notwendig, wenn die Logikzelle 100b als
programmierbare 4-Bit-Logikzelle für eine FPGA eingesetzt wird
und mit ihr alle möglichen
booleschen Funktionen mit vier Parametern implementiert werden können. Der
in 5 dargestellte Blockgenerator 604 umfasst
acht Konfigurationsbitspeicherzellen 300 und vier Reihen
von Multiplexern 705, welche über die von den Eingängen 609a–d der Logikzelle 100b abgeleiteten
Eingänge 612–615 des
Blockgenerators 604 gesteuert werden. Dabei wird über die
Eingänge 612–615 gesteuert,
ob eine Konfigurationsbitspeicherzelle 300 (und auch welche)
oder ein Ausgang 610, 611 der beiden 1-Bit-ALUs
zum Ausgang 616 des Blockgenerators 604 geschaltet
wird.
-
Es
hat sich gezeigt, dass an Stelle des in 5 dargestellten
Blockgenerators 604 mit acht Konfigurationsbitspeicherzellen 300 auch
ein in 6 dargestellter Blockgenerator 604' mit nur vier Konfigurationsbitspeicherzellen 300 eingesetzt
werden kann, ohne dass eine Funktionalität einer FPGA, welche Logikzellen
mit dem in 6 dargestellten Blockgenerator 604' einsetzt, dabei
hinter die Funktionalität
einer FPGA zurückfällt, welche
Logikzellen mit dem in 5 dargestellten Blockgenerator 604 einsetzt.
Man kann nachweisen, dass mit der Logikzelle 100b mit dem
in 6 dargestellten Blockgenerator 604' 215 boolesche
Funktionen mit vier Parametern konfigurierbar sind, während theoretisch
216 boolesche Funktionen mit vier Parametern
existieren, wie bereits vorab ausgeführt ist. Des Weiteren kann man
nachweisen, dass die 215 booleschen Funktionen
mit vier Parametern für
die heutigen heuristischen Synthese-Werkzeuge ausreichen, um jede
beliebige kombinatorische Schaltung zu erstellen, welche auch mit
Logikzellen, die alle 216 boolesche Funktionen
mit vier Parametern erzeugen können, erstellbar
sind.
-
Der
in 6 dargestellte Blockgenerator 604' arbeitet im
Prinzip genauso wie der in 5 dargestellte
Blockgenerator 604, d. h. die Eingänge 612–615 steuern,
ob eine der vier Konfigurationsbitspeicherzellen 300 oder
der Ausgang 610 der ersten 1-Bit-ALU oder der Ausgang 611 der
zweiten 1-Bit-ALU zum Ausgang 616 des Blockgenerator 604' geschaltet
wird.
-
In 7 ist
eine der von der Logikzelle 100b eingesetzten 1-Bit-ALU 603 im
Detail dargestellt. Die 1-Bit-ALU 603 umfasst ein NAND-Gatter 1003,
eine AND-Gatter 1004, ein XOR-Gatter 1005, ein XNOR-Gatter 1006 und
einen Volladdierer 1008. Dabei liegen die Eingänge 613a–b der 1-Bit-ALU 603 an dem
NAND-Gatter 1003, an dem AND-Gatter 1004, an dem
XOR-Gatter 1005,
an dem XNOR-Gatter 1006 und an dem Volladdierer 1008 an.
Jeder Ausgang des NAND-Gatters 1003, des AND-Gatters 1004,
des XOR-Gatters 1005, des XNOR-Gatters 106 und
des Volladdierers 1008 sind zusammen mit dem Eingang 613b und
einer logischen 1 1001, und einer logischen 0 1002 über Tri-State-Treiber 11 auf den
Ausgang 610 der 1-Bit-Alu 603 geschaltet. Dabei ist
jeweils nur einer der Tri-State-Treiber 11 durchgeschaltet
während
alle anderen Tri-State-Treiber 11 hochohmig geschaltet
sind.
-
Zur
Konfiguration der 1-Bit-Alu 603 werden neun Konfigurationssignale
benötigt,
welche die in 7 dargestellten neun Tri-State-Treiber 11 steuern.
Zusammen mit den sieben im Zusammenhang mit der 4 beschriebenen
Konfigurationssignalen zur Konfiguration der in 4 dargestellten
Multiplexer ergeben sich somit 25 Konfigurationssignale. Es sind
allerdings bei weitem weniger als die mit den 25 Konfigurationssignalen
möglichen
225 Konfigurationen sinnvoll. Zum Beispiel
sind bei den neun Konfigurationssignalen der 1-Bit-ALU 603 nur
neun Konfigurationen sinnvoll (genau einer der neun Tri-State-Treiber 11 wird
durchgeschaltet). Man kann nachweisen, dass die Anzahl der sinnvollen
Konfigurationen für
die Logikzelle 100b mit zwei 1-Bit-ALUs 603 kleiner
als 25 (32) ist. Aus diesem Grund wird eine
in 8 dargestellte Decoderschaltung 900 eingesetzt, bei
welcher mit fünf
Konfigurationsbitspeicherzellen 300' ein Decoder 902 angesprochen
wird, welcher 25 Ausgangsleitungen aufweist, welche den 25 Konfigurationssignalen
entsprechen. Durch die fünf
Konfigurationsbitspeicherzellen 300' können bis zu 25 (32) Konfigurationen
der 25 Konfigurationssignale gebildet werden, was ausreicht, damit
die Logikzelle 300b uneingeschränkt universell eingesetzt werden
kann, wie es bereits vorab beschrieben wurde. Somit umfasst die
Logikzelle 100b insgesamt neun Konfigurationsbitspeicherzellen,
nämlich
die vier Konfigurationsbitspeicherzellen des Blockgenerators 604' und die fünf Konfigurationsbitspeicherzellen 300' der Decoderschaltung 900.
Im Vergleich zu der in 1 dargestellten Logikzelle 100 nach
dem Stand der Technik, welche die LUT 201 mit 16 Konfigurationsbitspeicherzellen
einsetzt, sind dies 7 Konfigurationsbitspeicherzellen weniger, wobei
die Logikzelle 100 in 1 im Gegensatz
zu der Logikzelle 100b nicht als zwei 1-Bit-ALUs mit insgesamt
zwei Ausgängen konfiguriert
werden kann. Durch die geringere Anzahl von Konfigurationsbitspeicherzellen,
welche zur Konfiguration der Logikzelle 100b geladen werden
müssen,
verringert sich auch vorteilhafter Weise eine Konfigurationszeit
entsprechend.
-
9 stellt
eine weitere Ausführungsform
für die
in der Logikzelle 100b einsetzbaren 1-Bit-ALUs dar. Im
Vergleich zu der in 7 dargestellten 1-Bit-ALU 603 fehlt
bei der 1-Bit-ALU 603' die logische
0 1002, das AND-Gatter 1004 und das XOR-Gatter 1005.
Als Ersatz für
diese fehlenden Bauelemente sind die Ausgänge des NAND-Gatters 1003 und
des XNOR-Gatters 1006 sowie die logische 1 1001 jeweils über einen
Tri-State-Treiber 12 mit
einem Eingang einer Auswahlinvertierlogik 1300, 1301 verbunden,
wobei diese Auswahlinvertierlogik 1300, 1301 über einen
weiteren Tri-State-Treiber 13 mit dem Ausgang 610 der
1-Bit-Alu 603' verbunden
ist. Um nun eine AND-Funktion,
eine XOR-Funktion beziehungsweise eine logische 0 zu realisieren,
wird der entsprechende Tri-State-Treiber 12 des AND-Gatters 1003,
des XNOR-Gatters 1006 beziehungsweise der logischen 1 1001 durchgängig geschaltet
und die Auswahlinvertierlogik 1300, 1301 wird
derart konfiguriert, dass sie invertiert, wobei der Tri-State-Treiber 13 ebenfalls
durchgängig
geschaltet wird. Somit besitzt die 1-Bit-Alu 603' dieselbe Funktionalität wie die
in 7 dargestellte 1-Bit-Alu 603.
-
Es
sollte angemerkt sein, dass erfindungsgemäß noch andere Implementierungen
der in der Logikzelle 100b einsetzbaren 1-Bit-ALUs möglich sind, indem
beispielsweise das NAND-Gatter 1003 beziehungsweise das
XNOR-Gatter 1006 durch ein AND-Gatter beziehungsweise ein XOR-Gatter
ersetzt wird. Genauso könnte
die logische 1 1001 durch eine logische 0 ersetzt werden.
Des Weiteren sei darauf hingewiesen, dass der Volladdierer in den 1-Bit-ALUs 603, 603' nur im arithmetischen
Modus der Logikzelle 100b eine Rolle spielt, wobei der Übertrags(Carry-in)-Eingang 1008a verwendet
wird. Mit anderen Worten wird der Volladdierer bei einer Konfiguration
der 1-Bit-ALU 603, 603' als Nachschlagetabelle nicht benötigt, weshalb
er in 9 bei der 1-Bit-ALU 603' auch nicht mit der Auswahlinvertierlogik 1300, 1301 verbunden
ist.
-
Die
in 9 dargestellten 1-Bit-ALU 603' lässt sich übrigens
durch sieben Konfigurationssignale konfigurieren. Sechs Konfigurationssignale steuern
jeweils einen der drei Tri-State-Treiber 11 und einen der
drei Tri-State-Treiber 12. Das siebente Konfigurationssignal
steuert den Multiplexer 1301, während der Tri-State-Treiber 13 genau
dann durchgeschaltet wird, wenn einer der drei Tri-State-Treiber 12 durchgeschaltet
wird, weshalb er kein eigenes Konfigurationssignal benötigt. Selbstverständlich sind
auch bei der in 9 dargestellten 1-Bit-Alu 603' wie bei der
in 7 dargestellten 1-Bit-Alu 603 neun Konfigurationen
sinnvoll. Zum einen kann einer der sechs Tri-State-Treiber 11, 12 durchgängig geschaltet
sein, was sechs Konfigurationen ergibt, wobei aber zusätzlich für jede Konfiguration,
bei welcher einer der drei Tri-State-Treiber 12 durchgängig geschaltet
ist, die Auswahlinvertierlogik 1300, 1301 invertierend
oder nicht invertierend geschaltet sein kann, was weitere drei Konfigurationen
ergibt.
-
In 10 ist
eine zweite Ausführungsform einer
Logikzelle 100c dargestellt, welche sich nur im Eingangsbereich
und durch die eingesetzten 1-Bit-ALUs 1101 von der in 4 dargestellten
Logikzelle 100b unterscheidet. Während bei der Logikzelle 100b beide
Eingänge
der beiden 1-Bit-ALUs 603 über die jeweilige Auswahlinvertierlogik 601, 602 invertierbar
sind, sind bei der in 10 dargestellten Logikzelle 100c nur
jeweils ein Eingang der beiden 1-Bit-ALUs 1101 über die
jeweilige Auswahlinvertierlogik 601, 602 invertierbar.
Die restlichen Bezugszeichen entsprechen denen der Logikzelle 100b in 4.
-
Da
nicht beide Eingänge
der 1-Bit-ALU in der Logikzelle 100c invertierbar sind,
muss eine für
die Logikzelle 100c einsetzbare 1-Bit-Alu 1101 eine
andere Funktionalität
als die 1-Bit-Alu 603 oder die 1-Bit-Alu 603' aufweisen.
Die 1-Bit-Alu 1101 ist
in 11 dargestellt. Von ihrem Aufbau ähnelt die 1-Bit-ALU 1101 der
in 7 dargestellten 1-Bit-ALU 603, weshalb
hier nur die Unterschiede erläutert
werden. Die 1-Bit-ALU 1101 umfasst
zusätzlich
ein NAND-Gatter 1200 mit invertierten Eingängen und ein
AND-Gatter 1201 mit invertierten Eingängen, wobei die Eingänge dieser
beiden zusätzlichen
Gatter mit den Eingängen 1103a–b der 1-Bit-ALU 1101 verbunden
sind. Die Ausgänge
der zusätzlichen
Gatter 1200, 1201 sind jeweils über einen
Tri-State-Treiber 11 mit dem Ausgang 1102 der
1-Bit-Alu 1101 verbunden.
-
Ein
XOR-Gatter bzw. ein XNOR-Gatter mit invertierten Eingängen wird
bei der 1-Bit-ALU 1101 nicht benötigt, da die Funktion eines
XOR-Gatters bzw. XNOR-Gatters mit invertierten Eingängen gleich der
Funktion eines XOR-Gatters bzw. eines XNOR-Gatters ohne invertierten
Eingängen
ist.
-
Für ein Synthese-Werkzeug
bietet die Logikzelle 100c mit den 1-Bit-ALUs 1101 im
Vergleich zu der Logikzelle 100b mit den 1-Bit-ALUs 603 bzw. 603' keine wesentliche
Einschränkung.
Um beispielsweise mit Hilfe der Logikzelle 100c und der
1-Bit-ALU 1101 eine
AND-Funktion zu realisieren, wobei einer von zwei Eingängen invertiert
ist, muss das Synthese-Werkzeug den zu invertierenden Eingang mit
dem Eingang 609a, welcher über die Auswahlinvertierlogik 601, 602 der
1-Bit-ALU 1101 zugeführt
wird, verbinden, so dass es dann mittels der Auswahlinvertierlogik 601, 602 möglich ist,
den entsprechenden Eingang zu invertieren, wodurch die geforderte AND-Funktion
mit einem invertierten Eingang realisiert ist.
-
12 stellt
eine dritte Ausführungsform
einer Logikzelle 100d dar. Bei der Logikzelle 100d ist keiner
der Eingänge 609a–d invertierbar.
Deshalb ist für
die Logikzelle 100d keine der vorher beschriebenen 1-Bit-ALUs 603, 603', 1101 einsetzbar.
Aus diesem Grund wird in der Logikzelle 100d eine 1-Bit-ALU 1403 eingesetzt,
welche in 13 dargestellt ist. Im Vergleich
zu der 1-Bit-ALU 1101 umfasst die 1-Bit-ALU 1403 zusätzlich einen
Inverter 1500, ein NAND-Gatter 1501 mit einem
invertierten Eingang und ein AND-Gatter 1502 mit einem
invertierten Eingang. Dabei sind der Eingang des Inverters 1500 und
der invertierte Eingang des NAND-Gatters 1501 und des AND-Gatters 1502 mit
demselben Eingang 1401b der 1-Bit-ALU 1403 verbunden. Der Ausgang des
Inverters, der Ausgang des NAND-Gatters 1501 mit invertiertem
Eingang und der Ausgang des AND-Gatters 1502 mit invertiertem
Eingang ist jeweils über
einen Tri-State-Treiber 11 mit dem Ausgang 1402 der
1-Bit-ALU verbunden. Diese drei zusätzlichen Gatter 1500–1502 ersetzen
die fehlende Auswahlinvertierlogik in der Logikzelle 100d.
Ein XOR-Gatter bzw. ein XNOR-Gatter mit einem invertierten Eingang
ist unnötig,
da ein XOR-Gatter bzw. ein XNOR-Gatter mit einem invertierten Eingang
dieselbe Funktionalität
wie ein XNOR-Gatter bzw. XOR-Gatter aufweist. Da die 1-Bit-ALU 1403 14 Tri-State-Treiber 11 aufweist,
gibt es auch 14 Konfigurationssignale und 14 sinnvolle Konfigurationen. Wegen
des Wegfalls der Auswahlinvertierlogiken 601, 602 gilt
auch für
die Logikzelle 100d, dass die Anzahl der sinnvollen Konfigurationen
einschließlich der
1-Bit-ALUs 1403 25 (32) nicht übersteigt.
-
14 zeigt
eine vierte Ausführungsform
einer Logikzelle 100e, welche sich nur im Ausgangsbereich
von der Logikzelle 100b unterscheidet. Bei der Logikzelle 100e ist
vor jeden Ausgang 608a–b
der Logikzelle 100e eine Auswahllogik geschaltet, welche
ein Multiplexer 607 und ein Flip-Flop 617 umfasst.
Die Auswahllogik vor dem Ausgang 608a entscheidet, ob ein
Ausgang des Multiplexers 606 direkt oder gepuffert über das
Flip-Flop 617 mit dem Ausgang 608a verbunden ist. Ähnlich entscheidet
die Auswahllogik vor dem Ausgang 608b, ob der Ausgang 611 der
zweiten 1-Bit-ALU direkt oder über
das Flip-Flop 617 mit dem Ausgang 608b verbunden
ist. Durch eine Pufferung mittels der Flip-Flops 617 liegt der
entsprechende Ausgangswert ungeändert über eine
Taktperiode eines den Flip-Flops 617 zugeführten Takts
am Ausgang der Logikzelle an, was bei einem synchronen Schaltungsentwurf,
für welchen
die Logikzelle eingesetzt wird, vorteilhaft ist. Im Gegensatz zu
der Logikzelle 100b ist der Ausgang 616 des Blockgenerators 604 nur
mit dem Ausgang 608a der Logikzelle 100e verbindbar.
-
In 15 ist
eine programmierbare Logikanordnung 1 mit vier Logikzellen 100b dargestellt. Über eine
Konfigurationsleitung 4 ist jede der vier Logikzellen 100b individuell
konfigurierbar. Bei der programmierbaren Logikanordnung 1 werden
die Logikzellen 100b ausschließlich in ihrer Funktion als
Nachschlagetabelle (LUT) eingesetzt, weshalb nur ein Ausgang jeder
Logikzelle 100b mit einem Ausgang der programmierbaren
Logikanordnung 1 verbunden ist. Da jede Logikzelle 100b durch
neun Konfigurationsbitspeicherzellen konfiguriert wird, wie vorab
ausgeführt ist,
wird die programmierbare Logikanordnung 1 mit 36 (4·9) Konfigurationsbits über die
Konfigurationsleitung 4 konfiguriert.
-
16 stellt
eine programmierbare arithmetische Einheit 2 mit vier Logikzellen 100b dar.
Dabei werden die vier Logikzellen 100b ausschließlich in
einem arithmetischen Modus betrieben, weshalb bei jeder Logikzelle 100b die
beiden Ausgänge
mit jeweils einem Ausgang der programmierbaren arithmetischen Einheit 2 verbunden
sind. Eine Konfiguration der Logikzellen 100b findet über die
Konfigurationsleitung 4 statt. Damit mit der Logikzelle 100b auch übergreifende
arithmetische Operationen durchgeführt werden können, sind
zum einen benachbarte Logikzellen 100b jeweils miteinander
verbunden, wobei ein Übertragsausgang
(Carry-Out) der einen Logikzelle mit einem Übertragseingang (Carry-In)
der anderen Logikzelle verbunden ist, und zum anderen ist der Übertragseingang
der ersten (obersten) Logikzelle mit einem Übertragseingang 6 der
programmierbaren arithmetischen Einheit 2 und der Übertragsausgang
der letzten (untersten) Logikzelle mit einem Übertragsausgang 7 der
programmierbaren arithmetischen Einheit 2 verbunden.
-
17 stellt
eine programmierbare digitale Schaltungsanordnung 3 dar,
welche entweder als programmierbare Logikanordnung oder als programmierbare
arithmetische Einheit konfiguriert werden kann. Die programmierbare
digitale Schaltungsanordnung 3 kann also derart konfiguriert
werden, dass sie entweder wie die programmierbare Logikanordnung 1 oder
wie die programmierbare arithmetische Einheit 2 arbeitet.
Deshalb sind auch beide Ausgänge
jeder Logikzelle 100b mit jeweils einem Ausgang der programmierbaren
digitalen Schaltungsanordnung verbunden. Da sich zwei benachbarte
Logikzellen 100b bei einer Konfiguration der programmierbaren
digitalen Schaltungsanordnung 3 als programmierbare Logikanordnung
meist nicht beeinflussen dürfen,
existiert zwischen zwei benachbarten Logikzellen 100b jeweils
eine Auswahllogik 5. Bei der Konfiguration der programmierbaren
digitalen Schaltungsanordnung 3 als programmierbare Logikanordnung trennt
diese Auswahllogik 5 in der Regel eine Verbindung zwischen
dem Übertragsausgang
der einen Logikzelle und dem Übertragseingang
der anderen Logikzelle. Dagegen verbindet die Auswahllogik 5 bei
der Konfiguration der programmierbaren digitalen Schaltungsanordnung
als übergreifende
programmierbare arithmetische Einheit den Übertragsausgang der einen Logikzelle
mit dem Übertragseingang
der anderen Logikzelle. Aus vergleichbaren Gründen ist auch der Übertragseingang
der ersten (obersten) Logikzelle über die Auswahllogik 5 mit
einem Übertragseingang 6 der
programmierbaren digitalen Schaltungsanordnung 3 verbunden.
Der Übertragsausgang
der letzten (untersten) Logikzelle ist ohne die Auswahllogik 5 mit
einem Übertragsausgang
der programmierbaren digitalen Schaltungsanordnung 3 verbunden.
-
Die
vorliegende Erfindung eignet sich vorzugsweise zum Einsatz bei programmierbaren
logischen Schaltungen, insbesondere zum Einsatz bei FPGAs, PLDs
(programmable logic devives) bzw. PLAs (programmable logic arrays).
Sie ist jedoch nicht auf diesen bevorzugten Anwendungsbereich beschränkt, sondern
kann beispielsweise auch bei einem zumindest teilweise auf Zellen
basierten Schaltungsentwurf eingesetzt werden, wobei insbesondere
die erfindungsgemäße Logikzelle
als spezielle Zelle eingesetzt wird.