DE102004056738B3 - Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung - Google Patents

Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung Download PDF

Info

Publication number
DE102004056738B3
DE102004056738B3 DE102004056738A DE102004056738A DE102004056738B3 DE 102004056738 B3 DE102004056738 B3 DE 102004056738B3 DE 102004056738 A DE102004056738 A DE 102004056738A DE 102004056738 A DE102004056738 A DE 102004056738A DE 102004056738 B3 DE102004056738 B3 DE 102004056738B3
Authority
DE
Germany
Prior art keywords
logic
logic cell
output
bit
inputs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102004056738A
Other languages
English (en)
Inventor
Francisco-Javier Veredas-Ramirez
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102004056738A priority Critical patent/DE102004056738B3/de
Priority to US11/284,697 priority patent/US20060109027A1/en
Application granted granted Critical
Publication of DE102004056738B3 publication Critical patent/DE102004056738B3/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

Bei einer programmierbaren Logikzelle (100b) nimmt ein Ausgang (608a) einen Wert an, welcher abhängig von Werten von Eingängen (609a-d) und von einer booleschen Funktion ist, welche für jede Belegung der Eingänge (609a-d) einen Wert für den Ausgang (608a) bestimmt. Die Logikzelle (100b) umfasst mindestens eine ALU (603) und Zusatzlogik (601, 602, 604, 606, 607, 617, 618), über welche die boolesche Funktion der Logikzelle (100b) konfigurierbar ist. Bei einer bevorzugten Ausführungsform umfasst die Logikzelle (100b) zwei 1-Bit-ALUs (603) und einen Blockgenerator (604) mit vier Konfigurationsbitspeicherzellen. Dabei kann die Logikzelle (100b) derart konfiguriert werden, dass sie jede beliebige boolesche Funktion mit vier Parametern oder zwei beliebige boolesche Funktionen mit zwei Parametern nachbildet oder in einem arithmetischen Modus betrieben wird.

Description

  • 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
    Figure 00030001
    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
    Figure 00030002
    = 216 = 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 216 = 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 610615 und einen Ausgang 616 auf. Die sechs Eingänge 610615 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 612615 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 612615 des Blockgenerators 604 gesteuert werden. Dabei wird über die Eingänge 612615 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 612615 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 15001502 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.

Claims (22)

  1. Programmierbare Logikzelle, wobei die Logikzelle derart ausgestaltet ist, dass ein Ausgang (608a) der Logikzelle (100b–e) einen Wert annimmt, welcher abhängig von Werten von vier Eingängen (609a–d) der Logikzelle (100b–e) und von einer booleschen Funktion ist, wobei die boolesche Funktion für jede Belegung der Eingänge (609a–d) einen booleschen Wert für den Ausgang (608a) bestimmt, wobei die Logikzelle (100b–e) zwei 1-Bit-ALUs (603; 603'; 1101; 1403) und Zusatzlogik (601, 602, 606, 607, 617, 618, 900, 1601), welche eine Schaltungseinheit (604, 604') aufweist, umfasst, wobei die Zusatzlogik (601, 602, 606, 607, 617, 618, 900, 1601) derart ausgestaltet ist, dass sie jeweils zwei der vier Eingänge (609a–d) der Logikzelle (100b–e) entweder invertiert oder nicht invertiert eingangsseitig mit einer der zwei 1-Bit-ALUs (603; 603'; 1101; 1403) verbindet, wobei die Schaltungseinheit (604, 604') derart ausgestaltet ist, dass sie abhängig von den vier Eingängen (612615) der Logikzelle (100b–e) entweder einen Wert eines der höchstens acht Konfigurationsbitspeicherzellen (300) oder einen Ausgang (610; 611) der zwei 1-Bit-ALUs zum Ausgang der Schaltungseinheit (604; 604') durchschaltet, wobei der Ausgang (616) der Schaltungseinheit (604; 604') über die Zusatzlogik mit dem Ausgang der Logikzelle (100b–e) verbunden ist, und wobei die boolesche Funktion der Logikzelle (100b–e) über die Zusatzlogik (601, 602, 604, 606, 607, 617, 618, 900, 1601) konfigurierbar ist.
  2. Logikzelle nach Anspruch 1, dadurch gekennzeichnet, dass die Logikzelle (100b–e) derart ausgestaltet ist, dass die Logikzelle (100b–e) über die Zusatzlogik derart konfigurierbar ist, dass die boolesche Funktion jeder beliebigen booleschen Funktion mit einer Anzahl von Parametern, welche einer Anzahl von Eingängen (609a–d) der Logikzelle (100b–e) entspricht, entsprechen kann.
  3. Logikzelle nach Anspruch 2, dadurch gekennzeichnet, dass die Logikzelle (100b–e) derart ausgestaltet ist, dass die boolesche Funktion jeder beliebigen booleschen Funktion mit der Anzahl von Parametern entsprechen kann, wenn eine Reihenfolge der Eingänge (609a–d) vorgebbar ist.
  4. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mindestens eine der zwei 1-Bit-ALUs derart ausgestaltet ist, dass der Ausgang der mindestens einen 1-Bit-ALU einen Wert einer weiteren booleschen Funktion abhängig von den zwei Eingängen der mindestens einen 1-Bit-ALU annimmt, und dass die mindestens eine der zwei 1-Bit-ALUs über die Zusatzlogik derart konfigurierbar ist, dass die weitere boolesche Funktion jede beliebige boolesche Funktion mit zwei Parametern sein kann.
  5. Logikzelle nach Anspruch 4, dadurch gekennzeichnet, dass die mindestens eine der zwei 1-Bit-ALU (1403) derart ausgestaltet ist, dass die weitere boolesche Funktion jede beliebige boolesche Funktion mit zwei Parametern sein kann, wenn eine Reihenfolge der zwei Eingänge (609a–b; 609c–d) vorgebbar ist.
  6. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mindestens eine der zwei 1-Bit-ALUs (603) einen Volladdierer (1008), ein XNOR-Gatter (1006), ein XOR-Gatter (1005), ein AND-Gatter (1004) und ein NAND-Gatter (1003) umfasst, welche eingangsseitig jeweils mit den zwei Eingängen (613a–b) der mindestens einen 1-Bit-ALU (603) und ausgangsseitig jeweils über einen Tri-State-Treiber (11) mit dem Ausgang (610) der mindestens einen 1-Bit-ALU (603) verbunden sind, wobei zusätzlich eine logische 1 (1001), eine logische 0 (1002) und einer der zwei Eingänge (613b) der mindestens einen 1-Bit-ALU (603) über jeweils einen Tri-State-Treiber (11) mit dem Ausgang (610) der mindestens einen 1-Bit-ALU (603) verbunden sind, und dass über die Zusatzlogik (900) nur einer der Tri-State-Treiber (11) durchgängig und alle anderen hochohmig geschaltet sind.
  7. Logikzelle nach Anspruch 6, dadurch gekennzeichnet, dass die mindestens eine 1-Bit-ALU (1101) zusätzlich ein eingangsseitig invertiertes AND-Gatter (1201) und ein eingangsseitig invertiertes NAND-Gatter (1200) umfasst, welche eingangsseitig jeweils mit den zwei Eingängen (1103a–b) der mindestens einen 1-Bit-ALU (1103) und ausgangsseitig jeweils über einen Tri-State-Treiber (11) mit dem Ausgang (1102) der mindestens einen 1-Bit-ALU (1102) verbunden sind, und dass über die Zusatzlogik (900) nur einer der Tri-State-Treiber (11) der mindestens einen 1-Bit-ALU (1101) durchgängig und alle anderen hochohmig geschaltet sind.
  8. Logikzelle nach Anspruch 7, dadurch gekennzeichnet, dass die mindestens eine 1-Bit-ALU (1403) zusätzlich ein an einem Eingang invertiertes AND-Gatter (1502) und ein an einem Eingang invertiertes NAND-Gatter (1501) umfasst, welche eingangsseitig jeweils mit den zwei Eingängen (1401a–b) der mindestens einen 1-Bit-ALU (1403) und ausgangsseitig jeweils über einen Tri-State-Treiber (11) mit dem Ausgang (1402) der mindestens einen 1-Bit-ALU (1403) verbunden sind, wobei zusätzlich einer der zwei Eingänge (1401b) der mindestens einen 1-Bit-ALU (1403) invertiert über jeweils einen Tri- State-Treiber (11) mit dem Ausgang (1402) der mindestens einen 1-Bit-ALU (1403) verbunden ist, und dass über die Zusatzlogik (900) nur einer der Tri-State-Treiber (11) der mindestens einen 1-Bit-ALU (1403) durchgängig und alle anderen hochohmig geschaltet sind.
  9. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mindestens eine der zwei 1-Bit-ALUs (603') einen Volladdierer (1008), ein XNOR-Gatter (1006) und ein NAND-Gatter (1003) umfasst, welche eingangsseitig jeweils mit den zwei Eingängen (613a–b) der mindestens einen 1-Bit-ALU (603') verbunden sind, dass das XNOR-Gatter (1006) und das NAND-Gatter (1003) ausgangsseitig zusammen mit einer logischen 1 (1001) über jeweils einen Tri-State-Treiber (12) eingangsseitig mit einer Auswahlinvertierlogik (1300,1301), welche derart ausgestaltet ist, dass ein Eingang der Auswahlinvertierlogik (1300, 1301) konfigurierbar entweder invertiert oder nicht invertiert zu einem Ausgang der Auswahlinvertierlogik (1300, 1301) durchgeschaltet ist, verbunden sind, dass der Volladdierer (1008), einer der zwei Eingänge (613b) der mindestens einen 1-Bit-ALU (603') und die Auswahlinvertierlogik (1300, 1301) über jeweils einen Tri-State-Treiber (11; 13) mit dem Ausgang (610) der mindestens einen 1-Bit-ALU (603') verbunden sind, und dass über die Zusatzlogik (900) höchstens einer der eingangsseitig mit der Auswahlinvertierlogik (1300, 1301) verbundenen Tri-State-Treiber (12) und nur einer der mit dem Ausgang (610) der mindestens einen 1-Bit-ALU (603') verbundenen Tri-State-Treiber (11; 13) durchgängig und alle anderen Tri-State-Treiber (11, 12, 13) hochohmig geschaltet sind, wobei, wenn über die Zusatzlogik (900) einer der eingangsseitig mit der Auswahlinvertierlogik (1300, 1301) verbundenen Tri-State-Treiber (12) durchgeschaltet ist, der ausgangsseitig mit der Auswahlinvertierlogik (1300, 1301) verbundene Tri-State-Treiber (13) durchgeschaltet ist.
  10. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Zusatzlogik für mindestens einen Eingang (609a–d) der Logikzelle (100b–c, e) jeweils eine Auswahlinvertierlogik (601, 602) umfasst, dass die Auswahlinvertierlogik (601, 602) derart ausgestaltet ist, dass sie durch die Zusatzlogik konfigurierbar den entsprechenden Eingang invertiert oder nicht.
  11. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Schaltungseinheit (604, 604') höchstens acht Konfigurationsbitspeicherzellen (300) umfasst.
  12. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Schaltungseinheit (604') vier Konfigurationsbitspeicherzellen (300) umfasst.
  13. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Logikzelle zwei Ausgänge (608a, b) umfasst, dass über die Zusatzlogik (606, 607, 900) konfigurierbar ist, ob jeweils einer der Ausgänge (610, 611; 1102, 611; 1402, 611) der zwei 1-Bit-ALUs (603; 1102; 1402) mit einem der zwei Ausgänge (608a, b) der Logikzelle verbunden ist oder ob der Ausgang (616) der Schaltungseinheit (604; 604') mit einem der Ausgänge (608a, b) verbunden ist.
  14. Logikzelle nach Anspruch 13, dadurch gekennzeichnet, dass, wenn die Zusatzlogik derart konfiguriert ist, dass jeweils einer der Ausgänge (610, 611; 1102, 611; 1402, 611) der zwei 1-Bit-ALUs (603; 1102; 1402) mit einem der zwei Ausgänge (608a, b) der Logikzelle verbunden ist, die Werte der Konfigurationsbitspeicherzellen (300) der Schaltungseinheit (604; 604') die Logikzelle konfigurieren.
  15. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Logikzelle (100b–e) derart ausgestaltet ist, dass Konfigurationen der Logikzelle (100b–e) nicht durch die Konfigurationsbitspeicherzellen (300) der Schaltungseinheit (604) beeinflusst sind.
  16. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mindestens ein Ausgang (608a; 1602; 1603) der Logikzelle (100b; 100e) mit einer Ausgangslogik (607, 617, 1601) versehen ist, dass die Ausgangslogik ein getaktetes Speicherelement (617) umfasst, welchem ein Systemtakt zuführbar ist, so dass der Wert des entsprechenden Ausgangs (608a) der Logikzelle (100b) für eine Systemtaktperiode festliegt.
  17. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass mindestens ein Ausgang (608a; 1602; 1603) der Logikzelle (100b; 100e) mit einer Ausgangslogik (607, 617, 1601) versehen ist, dass die Ausgangslogik ein getaktetes Speicherelement (617), welchem der Systemtakt zuführbar ist, und eine Auswahllogik (607; 1601) umfasst, wobei die Auswahllogik (1601) derart ausgestaltet ist, dass entweder der Wert des entsprechenden Ausgangs (1602; 1603) der Logikzelle (100e) direkt oder über das getaktete Speicherelement (617) zum entsprechenden Ausgang der Logikzelle gelangt.
  18. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Zusatzlogik eine Decoderschaltung (900) umfasst, welche derart ausgestaltet ist, dass Konfigurationsbitspeicherzellen (300') Konfigurationen der Zusatzlogik bewirken, und dass eine Anzahl der Konfigurationsbitspeicherzellen (300') AKBL folgender Gleichung genügt
    Figure 00270001
    wobei AKON die Anzahl der Konfigurationen der Zusatzlogik ist, welche am Ausgang (903) der Decoderschaltung (900) abgreifbar sind.
  19. Logikzelle nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass für mindestens eine der zwei 1-Bit-ALUs (603; 1101; 1403) über die Zusatzlogik (618) konfigurierbar ist, ob sie mit den ihr zugeordneten zwei Eingängen (609c–d) oder mit den der jeweils anderen 1-Bit-ALU zugeordneten zwei Eingängen (609a–b) eingangsseitig verbunden ist.
  20. Programmierbare Logikanordnung, dadurch gekennzeichnet, dass die programmierbare Logikanordnung (1) mindestens eine Logikzelle (100b) nach einem der Ansprüche 1–19 umfasst.
  21. Programmierbare arithmetische Einheit, dadurch gekennzeichnet, dass die programmierbare arithmetische Einheit (2) mindestens eine Logikzelle (100b) nach einem der Ansprüche 1–19 umfasst.
  22. Programmierbare digitale Schaltungsanordnung, welche als programmierbare Logikanordnung oder als programmierbare arithmetische Einheit konfigurierbar ist, dadurch gekennzeichnet, dass die programmierbare digitale Schaltungsanordnung (3) mindestens eine Logikzelle (100b) nach einem der Ansprüche 1–19 umfasst.
DE102004056738A 2004-11-24 2004-11-24 Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung Expired - Fee Related DE102004056738B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102004056738A DE102004056738B3 (de) 2004-11-24 2004-11-24 Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung
US11/284,697 US20060109027A1 (en) 2004-11-24 2005-11-21 Programmable logic cell

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102004056738A DE102004056738B3 (de) 2004-11-24 2004-11-24 Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung

Publications (1)

Publication Number Publication Date
DE102004056738B3 true DE102004056738B3 (de) 2006-05-18

Family

ID=36274027

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004056738A Expired - Fee Related DE102004056738B3 (de) 2004-11-24 2004-11-24 Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung

Country Status (2)

Country Link
US (1) US20060109027A1 (de)
DE (1) DE102004056738B3 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4444860B2 (ja) * 2005-03-10 2010-03-31 富士通株式会社 リコンフィギュラブル回路およびそのコンフィギュレーション方法
US9231594B2 (en) 2011-12-21 2016-01-05 Ecole Polytechnique Federale De Lausanne (Epfl) Non-LUT field-programmable gate arrays
US8836368B2 (en) * 2011-12-21 2014-09-16 Ecole Polytechnique Federale De Lausanne (Epfl) Non-LUT field-programmable gate arrays
RU2610678C1 (ru) * 2015-11-24 2017-02-14 Олег Александрович Козелков Универсальный логический модуль
EA032836B1 (ru) * 2017-06-05 2019-07-31 Белорусский Государственный Университет (Бгу) Многофункциональный логический модуль
EA034452B1 (ru) * 2018-05-08 2020-02-10 Белорусский Государственный Университет (Бгу) Многофункциональный логический модуль
US10482209B1 (en) 2018-08-06 2019-11-19 HLS Logix LLC Field programmable operation block array
US11088693B2 (en) * 2019-07-08 2021-08-10 Hossein Asadi Configurable logic block for implementing a Boolean function
IT202000009358A1 (it) * 2020-04-29 2021-10-29 St Microelectronics Srl Circuito, dispositivo, sistema e procedimento corrispondenti

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001050607A1 (en) * 1999-12-30 2001-07-12 Adaptive Silicon, Inc. Programmable logic device with configurable function cells to perform boolean and arithmetic

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4754412A (en) * 1985-10-07 1988-06-28 Schlumberger Systems & Services, Inc. Arithmetic logic system using the output of a first alu to control the operation of a second alu
US5898602A (en) * 1996-01-25 1999-04-27 Xilinx, Inc. Carry chain circuit with flexible carry function for implementing arithmetic and logical functions
US5943481A (en) * 1997-05-07 1999-08-24 Advanced Micro Devices, Inc. Computer communication network having a packet processor with subsystems that are variably configured for flexible protocol handling
JP2004517386A (ja) * 2000-10-06 2004-06-10 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト 方法および装置
US20030055852A1 (en) * 2001-09-19 2003-03-20 Wojko Mathew Francis Reconfigurable arithmetic logic block array for FPGAs
US7112991B1 (en) * 2003-12-24 2006-09-26 Altera Corporation Extended custom instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001050607A1 (en) * 1999-12-30 2001-07-12 Adaptive Silicon, Inc. Programmable logic device with configurable function cells to perform boolean and arithmetic

Also Published As

Publication number Publication date
US20060109027A1 (en) 2006-05-25

Similar Documents

Publication Publication Date Title
DE69429073T2 (de) Logische struktur und schaltung für schnellen übertrag
DE69031861T2 (de) Programmierbare logische Schaltung mit Multifunktionseingangspin
DE69633370T2 (de) Benutzerprogrammierbares Gatterfeld mit Multiport-RAM
DE69411292T2 (de) Programmierbare logische Schaltung
DE69721343T2 (de) FPGA mit Setz-/Rücksetzleitungen
DE69904241T2 (de) Konfigurierbarer logischer block in einem nutzerprogrammierbaren gatterfeld mit einer vielzwecklogig/speicherschaltung
DE69030257T2 (de) Logisch programmierbare ausdehnungsvorrichtung
DE19639629C2 (de) Programmierbare, monolithische, integrierte Logikschaltung und Verfahren zum Implementieren derselben
DE3645224C2 (de)
DE3687383T2 (de) Programmierbare logische anordnung mit zusaetzlicher gatteranordnung und zusaetzlicher flexibilitaet der ausgangsumsteuerung.
DE69534812T2 (de) Programmierbare logische Vorrichtung, die mehr als eine Konfiguration speichert, und Mittel zum Umschalten der Konfiguration
DE69031832T2 (de) Programmierbare logische gatter
DE102004045527B4 (de) Konfigurierbare Logikschaltungsanordnung
DE69304471T2 (de) Programmierbare logische Vorrichtung
DE102004056738B3 (de) Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung
EP0202456A2 (de) In integrierter Technik hergestellter Logik-Array-Baustein
DE102020111904A1 (de) Logikschaltkreise mit erhöhten arithmetischen dichten
DE69132540T2 (de) Programmierbare logische Schaltung
DE602004006841T2 (de) Elektronischer schaltkreis mit einem feld programmierbarer logischer zellen
DE60012639T2 (de) Verbindungsressourcen für programmierbare logische integrierte schaltungen
DE102020131925A1 (de) Gleitkomma-zerlegungsschaltungsanordnung dynamischergenauigkeit
DE60128598T2 (de) Verfahren und system zur sicheren rekonfigurierung eines gerätes
DE102004056322B4 (de) Logik-Grundzelle und Logik-Grundzellen-Anordnung
DE60038659T2 (de) Verbindungs- und eingangs/ausgangsmittel für programmierbare logische integrierte schaltungen
DE69513278T2 (de) Kombinierte pla- und pal-schaltung

Legal Events

Date Code Title Description
8100 Publication of patent without earlier publication of application
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee