-
Die Erfindung betrifft eine Anordnung
von konfigurierbaren Logik Blöcken
(CLB) in kundenspezifischen Schaltkreisen, welche in der Field Programmable
Gate Arrays (FPGA) Technologie gefertigt werden, wobei die CLB aus
einer oder mehreren Lookup-Tabellen
(LUT), aus einem ersten und/oder zweiten Multiplexer und einer CLB-Steuerlogik
bestehen.
-
Seit ihrer Einführung 1980 sind Field Programmable
Logic Devices (FPLD), also die feld-programmierbaren logischen Bauelemente,
ein integraler Bestandteil für
die digitalen Schaltkreisimplementationen.
-
Diese moderne Realisierungs-Variante
für digitale
Schaltungen bietet großer
Vorteile gegenüber dem
konventionellen VLSI Designs auf den Gebieten Fertigungskosten,
zeitnahe Produktbereitstellung auf dem Markt (schnelle Marktreife)
und günstige
Systemmodifikation.
-
Diese FPLD weisen neben programmierbarer
Logik auch komplexe programmierbare Verdrahtung auf. Dadurch ist
die Realisierung mehrstufiger Logik möglich.
-
Die programmierbare Verdrahtung wird üblicherweise
in einer jeweiligen Switch-Matrix ausgeführt, was aber die Komplexität der Verschaltung
begrenzt.
-
So haben sich in den letzten Jahren
die Anwendungen der Feld Programmierbaren Gate Arrays (FPGA) als
ein den FPLD zugehöriger
Technologiebereich besonders stark entwickelt.
-
Da in diesen FPGA beliebig verteilte
kombinatorische Logik-Schaltungen
mit sequenziellen Schaltungsteilen komplex verknüpft sein können, werden hierbei universelle,
skalierbare Schaltungen realisiert.
-
Deshalb ist es in diesem Technologiebereich besonders
vorteilhaft, anwenderprogrammierbare Schaltkreise zu entwerfen und
zu fertigen.
-
Dies zeigt sich besonders deutlich
in der Tendenz, dass beim Stand der Technik gerade Micro-Controller
und Ablaufsteuerungen etc. häufig
als FPGA entwickelt werden.
-
Dabei hat es sich herauskristallisiert,
dass eine überschaubare
Anzahl von großen
Herstellern (z.B. ACTEL, XILINX) ihre zur Programmierung durch den
Anwender angebotenen FPGA als De-Facto-Standards
auf dem Markt eingeführt
haben.
-
Bei diesen angebotenen Schaltkreistypen kann
man solche Grundstrukturen feststellen, bei denen die FPGA aus einem
Array von komplexen Logik Blöcken
besteht. Hierbei sind die Konfigurationen der Logikblöcken selbst,
aber auch die Verbindungen zwischen den Logikblöcken programmierbar.
-
So besteht beim Stand der Technik
ein weitverbreiteter konfigurierbarer Logik Block (CLB) in seinem
kombinatorischem Schaltungsteil aus Lookup-Tabellen (LUT), die vorzugsweise
durch statische RAM realisiert werden. In diesen Lookup-Tabellen werden beliebige
kombinatorische Funktionen umgesetzt, die durch Wahrheits-Tabellen
repräsentiert
werden.
-
Bei diesen Wahrheitstabellen spricht
man auch von Funktionstabellen, die neben ihrer Realisierung durch
Matrixspeicher z.B. auch durch Multiplexer ergänzt oder durch sie alleinig
realisiert werden.
-
Die sequenziellen Funktionen des
konfigurierbaren Logik Blocks (CLB) werden durch eine sequentielle
CLB-Steuerlogik ausgeführt,
deren Speicherelemente D-FF darstellen.
-
In der
EP 0 410 759 A2 wird ein konfigurierbarer
Logikblock beschrieben, der aus einer oder mehreren Lookup-Tabellen
und der CLB-Steuerlogik besteht. Eine Implementierung bedingter
Verzweigungen ist aber nicht vorgesehen, da in den mehrfach vorliegenden
Lookup-Tabellen des CLB eine jeweils gewünschte Funktion vollständig programmiert wird.
Um den auftretenden Nachteil eines hohen Flächenverbrauches auf dem Schaltkreis
bei solchen Lookup-Tabellen,
welche mehrfach als programmierbare Speicher ausgeführt sind,
in dieser Lösung
auszugleichen, ist außerdem
vorgesehen, dass deren Speicherzellen mittels zusätzlicher
Beschaltung auch von anderen Teilen des Logik Arrays genutzt werden.
-
Da die einzelnen CLB im FPGA meist
gitterförmig
angeordnet sind, erfolgt auch eine gitterförmige Verdrahtung dieser CLB.
-
Die o.g. programmierbare Verdrahtung
der CLB' wird durch
Schalter an den Schnittstellen z.B. mit den sogenannten Passtransistoren
ausgeführt.
-
Die FPLD im Allgemeinen und die FPGA
im Besonderen werden bevorzugt für
Anwendungen in der Kommunikationstechnik, in der Prozessrechentechnik,
für industrielle
Gerätesteuerungen
etc. verwendet, da diese Anwendungsbereiche sehr berechnungsintensiv
sind.
-
Einerseits erlangen FPGA auch deswegen eine
so weit verbreitete Bedeutung für
die Implementierung von Signalprozessen und Algorithmen, weil hierbei
diese sehr effektiv als Parallel-Prozesse
ausgeführt
werden können.
-
Anderseits erfordert die Umsetzung
von solchen parallelen Berechnungen in der durch FPGA realisierten
Hardware, dass auch komplexe Berechnungs- bzw. Steuerungsvorgänge, wie
sie z.B. bedingte Verzweigungen darstellen,, eine ebenso komplexe
Realisierung in ihren CLB erfährt.
-
Bei dieser Realisierung der CLB ist
ersichtlich, dass bei bestimmten angewendeten Zellarchitekturen,
die durch häufige
Anwendungen von Standardzell-Gattern (fine-grain) gekennzeichnet
ist, viele Verdrahtungselemente notwendig sind und/oder bei häufiger Verwendung
komplexerer Logik (coarsgrain) auch Logik häufig ungenutzt bleibt.
-
Aus der
JP 09-294 069 A ist bekannt,
dass eine Anordnung von Funktionsblöcken in einer arithmetischen
Einheit eines FPGA gleichzeitig arithmetische Funktionen ausführen können und
logische Verknüpfungen
u.a. in einer "if
then" Form vornehmen. Eine
Minimierung des Flächenaufwandes
für konfigurierbare
Logikblöcke
ist hiermit allerdings nicht möglich.
-
Durch diesen schwer auszubalancierenden Anteil
an nicht ausnutzbaren Logikelementen und/oder zusätzlichen
Verdrahtungselementen ergibt sich bei der Realisierung der Komplexität von Anwender-Schaltungen
in dieser FPGA-Technologie eine effizienzmindernde gegenläufige Tendenz,
die einen etwas höheren
Flächenaufwand
auf dem Schaltkreis, z.B. gegenüber
vergleichbaren VLSI/CPLD-Realisierungen, bedingt.
-
Daraus ergibt sich die erfindungsgemäße Aufgabenstellung,
den Flächenaufwand
für konfigurierbare
Logikblöcke
(CLB) zu minimieren, in dem ihre jeweiligen Bestandteile an die
funktionalen Aufgaben des CLB angepasst werden.
-
So sieht die erfindungsgemäße Lösung der Aufgabenstellung
vor, dass ein CLB eine erste und/oder zweite Lookup-Tabelle enthält, in die
mit ihrer inhaltsbezogenen Adressierbarkeit jeweils die Schaltfunktion
mindestens einer bedingten Verzweigung implementiert ist, bei der
eine "If then else"-Verzweigung generiert
wird, die einen Vergleich von CLB-Eingangsdaten mit einem vorher
in den CLB gespeicherte Vergleichsdatum realisiert.
-
Hierbei ist der Dateneingang des
CLB über einen
Eingangs-Datenbus
einerseits mit einem jeweiligen Bus-Eingang einer ersten und/oder
zweiten Lookup-Tabelle und anderseits zumindest in einem Teil der
Bitbreite des Eingangs-Datenbus mit einem jeweiligen Multiplexer-Steuereingang
des ersten und/oder zweiten Multiplexers und außerdem mit dem ersten Eingang
der CLB-Steuerlogik verbunden.
-
Weiterhin ist ein Steuereingang des
CLB über
einen Steuer-Bus an einen zweiten Eingang der CLB-Steuerlogik angeschlossen.
-
Außerdem ist ein jeweiliger Ergebnis-Ausgang
der ersten und/oder zweiten Lookup-Tabelle dem dritten bzw. vierten
Eingang der CLB-Steuerlogik zugeordnet und es ist ein jeweiliger
Registerdaten-Bus-Ausgang der ersten und/oder zweiten Lookup-Tabelle über einen
ersten und/oder Register-Datenbus
mit einem jeweiligen Bus-Eingang des ersten bzw. zweiten Multiplexers
verbunden.
-
Ein Ausgang des ersten und/oder zweiten Multiplexers
ist mit einem fünften
bzw. sechsten Eingang der CLB-Steuerlogik verbunden und ein Ausgang
der CLB-Steuerlogik bildet einen Ausgang des CLB.
-
So zielt diese erfindungsgemäße Lösung darauf
ab, durch die Implementierung von einer bedingten Verzweigung mit
ihren entsprechenden Schaltfunktion in einer spezielle LUT den Aufwand von
sonst drei weiteren herkömmlichen
LUT in einem CLB zu vermeiden.
-
Auf diese Weise wird ein erheblicher
Teil des Flächenbedarfes
des FPGAs bei der Realisierung der anwenderspezifischen Schaltung
eingespart.
-
Eine besondere Ausführung der
erfindungsgemäßen Lösung der
Aufgabenstellung sieht vor, dass die erste und/oder zweite Lookup-Tabelle
(LUT) mit der in ihr implementierten bedingten Verzweigung durch
eine solche Schaltfunktionen realisiert wird, bei der diese erste
und/oder zweite Lookup-Tabelle jeweils ein erstes bzw. zweites Register
enthält,
in welchem das jeweilige Vergleichsdatum abgelegt wird.
-
Weiterhin weist die LUT jeweils einen
die Eingangsdaten mit den abgelegten Vergleichsdaten vergleichenden
ersten bzw. zweiten Komparator auf, wobei der jeweilige Bus-Eingang
der ersten und/oder zweiten Lookup-Tabelle mit einem jeweiligen
ersten Bus-Eingang des ersten bzw. zweiten Komparators verbunden
ist.
-
Ein jeweiliger Bus-Ausgang des ersten und/oder
zweiten Registers ist mit einem jeweiligen zweiten Bus-Eingang des
ersten bzw. zweiten Komparators und außerdem mit dem jeweiligen Registerdaten-Bus-Ausgang
der ersten und/oder zweiten Lookup-Tabelle verbunden.
-
Außerdem ist ein jeweiliger Ausgang
des ersten/und oder zweiten Komparators mit dem jeweiligen Ergebnis-Ausgang
der ersten und/oder zweiten Lookup-Tabelle geschaltet.
-
Bei dieser besonderen Ausführung der
erfindungsgemäßen Lösung kommt
sehr vorteilhaft zur Geltung, dass bei der Implementierung von mehr
als einer bedingten Verzweigungen in einer LUT eine zusätzliche
Einsparung von Hardware-Ressourcen durch Verringerung der benötigten CLB
erreicht wird.
-
Darüber hinaus wird hierbei günstig sichergestellt,
dass die im LUT abgelegten Vergleichsdaten auch zur Weiterverarbeitung
in den üblichen
Multiplexern eines CLB, die für
die aufbereitende Zusammenarbeit mit der CLB-Steuerung erforderlich
sind, gleichzeitig schon bereitgestellt sind.
-
Dadurch wird sonst erforderliche
zusätzliche Hardware
je verwendeten CLB ebenfalls einspart.
-
Die Erfindung soll nachfolgend anhand
eines Ausführungsbeispieles
näher erläutert werden.
-
In der zugehörigen Zeichnungsfigur ist die Anordnung
des CLB 9 mit den erfindungsgemäß implementierten ersten und
zweiten Lookup-Tabellen (LUT) 2; 12 dargestellt.
-
So ist in dieser Zeichnungsfigur
der CLB 9 mit den enthaltenen ersten und zweiten LUT 2; 12 sowie
der ersten und zweiten Multiplexer 3; 13 und der CLB-Steuerlogik 8 ersichtlich,
wobei in der ersten und zweiten LUT 2; 12 jeweils
die darin enthaltenen ersten beziehungsweise zweiten Register 4; 14 sowie
ebenfalls darin enthaltene ersten beziehungsweise zweite Komparator 6; 16 aufgeführt sind.
-
Vom Dateneingangs 1 des
CLB 9 gelangen die anstehenden Daten über den Eingangs-Datenbus 7 an
den jeweiligen Bus-Eingang des ersten beziehungsweise zweiten LUT 2; 12 und
damit an den jeweiligen ersten Bus-Eingang des ersten beziehungsweise
zweiten Komparators 6; 16.
-
Gleichzeitig gelangen diese Daten
zumindest in einem Teil der Bit-Breite des Einganges-Datenbus 7 an
den jeweiligen Multiplexer-Steuereingang des ersten und/oder zweiten
Multiplexers 3; 13 und außerdem an den ersten Eingang
der CLB-Steuerlogik 8.
-
Vom Steuereingang 10 des
CLB 9 gelangen die Steuerdaten über den Steuer-Datenbus 7 an
den zweiten Eingang der CLB-Steuerlogik 8.
-
Die jeweiligen Vergleichdaten, die
im ersten beziehungsweise zweiten Register 4; 14 gespeichert wurden,
werden an dem jeweiligen zweiten Bus-Eingang des ersten beziehungsweise
zweiten Komparators 6; 16 bereitgestellt.
-
Ebenfalls gelangen diese Daten an
den Registerdaten-Bus-Ausgang
der ersten und/oder zweiten Lookup-Tabelle 2; 12 und
werden über
einen jeweiligen ersten beziehungsweise zweiten Register-Datenbus 5; 15 an
den Bus-Eingang des ersten beziehungsweise zweiten Multiplexers 3; 13 geschalten.
-
Das Ergebnis des jeweiligen Vergleiches
der anstehenden Eingangsdaten mit den gespeicherten Vergleichsdaten
wird am Ausgang des ersten beziehungsweise zweiten Komparators 6; 16 ausgegeben und
gelangt über
den jeweiligen Ergebnis-Ausgang der ersten und/oder zweiten Lookup-Tabelle 2; 12 an den
dritten bzw. vierten Eingang der CLB-Steuerlogik 8.
-
Das am jeweiligen Ausgang des ersten
beziehungsweise zweiten Multiplexers 3; 13 bereitgestellte
Signal wird am fünften
beziehungsweise sechsten Eingang der CLB-Steuerlogik 8 zur
Verfügung
gestellt. Deren Ausgangssignal wird an den Datenausgang 11 des
CLB 9 geschalten.
-
- 1
- Dateneingang
- 2
- erste
Lookup-Tabelle (LUT)
- 3
- erster
Multiplexer
- 4
- erstes
Register
- 5
- erster
Register-Datenbus
- 6
- erster
Komparator
- 7
- Eingangs-Datenbus
- 8
- CLB-Steuerlogik
- 9
- CLB,
konfigurierbarer Logik-Block (Configurable Logic
-
- Block)
- 10
- Steuereingang
- 11
- Datenausgang
- 12
- zweite
Lookup-Tabelle (LUT)
- 13
- zweiter
Multiplexer
- 14
- zweites
Register
- 15
- zweiter
Register-Datenbus
- 16
- zweiter
Komparator
- 17
- Steuer-Datenbus