DE102020111904A1 - Logikschaltkreise mit erhöhten arithmetischen dichten - Google Patents

Logikschaltkreise mit erhöhten arithmetischen dichten Download PDF

Info

Publication number
DE102020111904A1
DE102020111904A1 DE102020111904.6A DE102020111904A DE102020111904A1 DE 102020111904 A1 DE102020111904 A1 DE 102020111904A1 DE 102020111904 A DE102020111904 A DE 102020111904A DE 102020111904 A1 DE102020111904 A1 DE 102020111904A1
Authority
DE
Germany
Prior art keywords
lut
input
circuits
logic cell
integrated circuit
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.)
Pending
Application number
DE102020111904.6A
Other languages
English (en)
Inventor
Sergey Gribok
Gregg Baeckler
Martin Langhammer
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE102020111904A1 publication Critical patent/DE102020111904A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0175Coupling arrangements; Interface arrangements
    • H03K19/017581Coupling arrangements; Interface arrangements programmable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5306Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
    • 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/1778Structural details for adapting physical parameters
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Logic Circuits (AREA)

Abstract

Es werden integrierte Schaltkreise mit programmierbaren Logikbereichen bereitgestellt. Die programmierbaren Logikbereiche können in kleinere Logikeinheiten organisiert sein, die manchmal als eine Logikzelle bezeichnet werden. Eine Logikzelle kann vier Nachschlagetabellen (LUTs) mit 4 Eingängen enthalten, die an eine Addiererübertragskette gekoppelt sind. Jede der vier LUTs mit 4 Eingängen kann zwei LUTs mit 3 Eingängen und einen Auswahlmultiplexer enthalten. Die Übertragskette kann bei drei oder mehr Volladdierschaltkreise enthalten. Die Ausgänge der LUTs mit 3 Eingängen können direkt mit Eingängen der Volladdierschaltkreise in der Übertragskette verbunden sein. Durch Bereitstellen mindestens der gleichen Anzahl oder mehr an Volladdierschaltkreisen wie die Gesamtanzahl an LUTs mit 4 Eingängen in der Logikzelle wird die arithmetische Dichte der Logik erhöht.

Description

  • Stand der Technik
  • Dies betrifft integrierte Schaltkreise, wie zum Beispiel programmierbare integrierte Schaltkreise.
  • Programmierbare integrierte Schaltkreise, wie programmierbare Logikvorrichtungen (PLDs) können von einem Benutzer programmiert werden, um eine gewünschte benutzerdefinierte Logikfunktion zu implementieren. In einem typischen Szenario verwendet ein Logikdesigner computerunterstützte Designwerkzeuge (CAD-Werkzeuge), um einen benutzerdefinierten Logikschaltkreis zu konstruieren. Wenn der Designprozess abgeschlossen ist, erzeugen die Werkzeuge Konfigurationsdaten. Die Konfigurationsdaten werden in Arbeitsspeicherelemente eines programmierbaren integrierten Schaltkreises geladen, um die Vorrichtung zu konfigurieren, die Funktionen des benutzerdefinierten Logikschaltkreises durchzuführen. Insbesondere konfigurieren die Konfigurationsdaten programmierbare Zwischenverbindungen, programmierbare Leitschaltkreise und programmierbare Logikschaltkreise in den programmierbaren integrierten Schaltkreisen.
  • Programmierbare Logikvorrichtungen enthalten programmierbare Logikverschaltung, die in Logikeinheiten organisiert ist, die manchmal als adaptive Logikmodule bezeichnet werden. Ein herkömmliches adaptives Logikmodul enthält vier Nachschlagetabellen mit 4 Eingängen, nur einen oder zwei Addierer und zugehörige Leitverschaltung. Das Aufweisen nur eines Paars von Addierern deckelt die arithmetische Dichte des ALM. In einem arithmetischen Modus ist die Menge der Leitverschaltung auch im Vergleich zur Anzahl der Addierer unverhältnismäßig groß (d. h., bestehende PLDs enthalten zu viel Routing, während sie nur Arithmetik mit geringer Genauigkeit unterstützen). Die eingeschränkten arithmetischen Dichten von herkömmlichen programmierbaren Vorrichtungen erschweren derartigen Vorrichtungen, mit anderen Arten von Rechenvorrichtungen, wie Grafikverarbeitungseinheiten und anwendungsspezifischen Standardprodukten, zu konkurrieren.
  • In diesem Zusammenhang ergeben sich die hierin beschriebenen Ausführungsformen.
  • Figurenliste
    • 1 ist ein Diagramm eines veranschaulichenden programmierbaren integrierten Schaltkreises nach einer Ausführungsform.
    • 2 ist ein Diagramm eines veranschaulichenden programmierbaren Logikblocks nach einer Ausführungsform.
    • 3 ist ein Diagramm eines adaptiven Logikmoduls, das einen 3:2-Komprimierer implementiert, um eine Dreifachaddition zu unterstützen.
    • 4 ist ein Diagramm eines adaptiven Logikmoduls, das nur eine Zweifachaddition unterstützt.
    • 5 ist ein Schaltkreisdiagramm einer veranschaulichenden Logikzelle, die mehr als zwei Volladdierschaltkreise enthält, um eine erhöhte arithmetische Dichte nach einer Ausführungsform bereitzustellen.
    • 6 ist eine Tabelle, die veranschaulicht, wie eine vorzeichenlose 6-mal-6-Multiplikation nach einer Ausführungsform berechnet werden kann.
    • 7A ist ein Diagramm, das veranschaulicht, wie eine erste Gruppe von Logikzellen konfiguriert werden kann, um ein erstes teilweises Ergebnis nach einer Ausführungsform zu berechnen.
    • 7B ist ein Diagramm, das veranschaulicht, wie eine zweite Gruppe von Logikzellen konfiguriert werden kann, um ein zweites teilweises Ergebnis nach einer Ausführungsform zu berechnen.
    • 7C ist ein Diagramm, das veranschaulicht, wie eine dritte Gruppe von Logikzellen konfiguriert werden kann, um ein drittes teilweises Ergebnis nach einer Ausführungsform zu berechnen.
    • 7D ist ein Diagramm, das veranschaulicht, wie eine vierte Gruppe von Logikzellen konfiguriert werden kann, um ein viertes teilweises Ergebnis nach einer Ausführungsform zu berechnen.
    • 7E ist ein Diagramm, das veranschaulicht, wie eine endgültige Gruppe von Logikzellen konfiguriert werden kann, um das Endprodukt durch Kombinieren des ersten, zweiten, dritten und vierten teilweisen Ergebnisses nach einer Ausführungsform zu berechnen.
    • 8 ist ein Diagramm einer veranschaulichenden Logikzelle, die nur drei zwei Volladdierschaltkreise enthält, um eine erhöhte arithmetische Dichte nach einer Ausführungsform bereitzustellen.
  • Ausführliche Beschreibung
  • Die vorliegenden Ausführungsformen betreffen programmierbare integrierte Schaltkreise (z. B. ein feldprogrammierbares Gatearray oder „FPGA“) und genauer programmierbare integrierte Schaltkreise, die Logikzellen enthalten, von denen jede mehr als zwei Volladdierschaltkreise enthalten. In einer geeigneten Anordnung kann eine Logikzelle mindestens drei Volladdierer enthalten. In einer anderen geeigneten Anordnung kann eine Logikzelle vier Volladdierer enthalten. Falls gewünscht, kann eine Logikzelle mehr als vier Volladdierer enthalten. Jede Logikzelle kann vier Nachschlagetabellenschaltkreise (LUT-Schaltkreise) mit 4 Eingängen enthalten, von denen jeder in zwei LUT-Schaltkreise mit 3 Eingängen zerlegt ist. Die Ausgänge der zerlegten LUTs mit 3 Eingängen können direkt zu den verschiedenen Addierern in der Zelle geleitet sein. In bestimmten Ausführungsformen müssen einige der Addierer in der Logikzelle nicht unbedingt verwendet werden und können umgangen werden. Derartige Arten von Logikzellen können ausgelegt sein, eine Zweifach-, Dreifach- oder gar Vierfachaddition zu unterstützen und können verwendet werden, um Multiplizierer (z. B. entweder Multiplizierer mit geringer Genauigkeit oder Multiplizierer mit hoher Genauigkeit) effizient zu implementieren.
  • Mit einer derartigen Konfiguration kann die arithmetische Dichte einer Logikzelle um mehr als 20-100 % erhöht werden, abhängig von der Anwendung, mit minimalen Kosten. Deshalb bietet eine programmierbare Logikvorrichtung unter Verwendung einer solchen Art von Logikzellen eine Verbesserung der Computerfunktionalität, indem sie kostenoptimiert und mit modernen FPGA-Architekturen rückwärtskompatibel ist, während sie eine erhöhte arithmetische Dichte und Flexibilität zum effektiveren und effizienteren Implementieren von Additionen, Multiplikationen und anderen numerischen Funktionen bereitstellt.
  • Es ist für Fachleute ersichtlich, dass die vorliegenden Ausführungsbeispiele ohne einige oder alle dieser spezifischen Details ausgeführt werden können. In anderen Fällen wurden wohlbekannte Vorgänge nicht im Detail beschrieben, um die vorliegenden Ausführungsformen nicht unnötig zu verschleiern.
  • 1 zeigt ein Diagramm einer veranschaulichenden programmierbaren integrierten Schaltkreisvorrichtung. Wie in 1 gezeigt, kann die Vorrichtung 10 Eingabe/Ausgabe(E/A)-Elemente 12 zum Steuern von Signalen von der Vorrichtung 10 weg und zum Empfangen von Signalen von anderen Vorrichtungen über Eingabe-Ausgabe-Pins 14 aufweisen. Zwischenverbindungsressourcen 16, wie globale und lokale vertikale und horizontale leitende Leitungen und Busse, können verwendet werden, um Signale auf der Vorrichtung 10 zu lenken. Die Zwischenverbindungsressourcen 16 enthalten feste Zwischenverbindungen (leitende Leitungen) und programmierbare Zwischenverbindungen (d. h. programmierbare Verbindungen zwischen jeweiligen festen Zwischenverbindungen). Die Zwischenverbindungsressourcen 16 können hierin manchmal als Zwischenverbindungen bezeichnet werden (z. B. Zwischenverbindungen, die aus Kombinationen von festen Zwischenverbindungen und programmierbaren Zwischenverbindungen gebildet sind).
  • Die Zwischenverbindungen 16 können verwendet werden, um Bereiche von programmierbarer Logik, wie programmierbare Logikbereiche 18, miteinander zu verbinden. Die programmierbaren Logikbereiche 18 können manchmal als Logikanordnungsblöcke oder programmierbare Schaltkreisbereiche bezeichnet werden. Die programmierbaren Logikbereiche 18 können kombinatorische und sequenzielle Logikverschaltung enthalten. Beispielsweise können die programmierbaren Logikbereiche 18 Nachschlagetabellen, Register und Multiplexer enthalten. Die programmierbaren Logikbereiche 18 können ausgelegt sein, eine oder mehrere benutzerdefinierte Logikfunktionen durchzuführen.
  • Die programmierbaren Logikbereiche 18 beinhalten programmierbare Elemente 20. Die programmierbaren Elemente 20 können auf einer beliebigen geeigneten programmierbaren Technologie beruhen, wie Sicherungen, Antisicherungen, elektrisch programmierbarer schreibgeschützter Arbeitsspeichertechnologie, Arbeitsspeicherzellen mit wahlfreiem Zugriff, maskenprogrammierten Elementen usw. Als ein Beispiel können die programmierbaren Elemente 20 aus Arbeitsspeicherzellen gebildet sein. Während der Programmierung werden Konfigurationsdaten unter Verwendung der Pins 14 und der Eingabe-Ausgabe-Verschaltung 12 in die Arbeitsspeicherzellen geladen. Die Arbeitsspeicherzellen sind üblicherweise Arbeitsspeicherzellen mit wahlfreiem Zugriff (RAM-Zellen). Da die RAM-Zellen mit Konfigurationsdaten beladen sind, werden sie manchmal als Konfigurations-RAM-Zellen (CRAM) bezeichnet.
  • Die programmierbaren Elemente 20 können verwendet werden, um statische Steuerausgangssignale zum Steuern des Zustands von Logikkomponenten in der programmierbaren Logik 18 bereitzustellen. Die Ausgangssignale, die von den Elementen 20 generiert wurden, werden üblicherweise an Gates von Metall-Oxid-Halbleiter(MOS)-Transistoren (manchmal auch als Durchgangsgatter-Transistoren bezeichnet) angelegt.
  • Die Verschaltung von Vorrichtung 10 kann unter Verwendung einer beliebigen geeigneten Architektur organisiert sein. Als ein Beispiel kann die Logik 18 der programmierbaren Vorrichtung 10 in einer Reihe von Zeilen und Spalten von größeren programmierbaren Logikbereichen organisiert sein, von denen jeder mehrere kleinere Logikbereiche beinhaltet. Die Logikressourcen von Vorrichtung 10 können durch die Zwischenverbindungsressourcen 16 miteinander verbunden sein, wie durch zugehörige vertikale und horizontale Leiter. Diese Leiter können globale leitende Spuren, die im Wesentlichen die Gesamtheit der Vorrichtung 10 umspannen, Teilspuren wie Halbspuren oder Viertelspuren, die einen Teil der Vorrichtung 10 umspannen, abgestufte Spuren mit einer bestimmten Länge (die z. B. hinreichend sind, um mehrere Logikflächen zu verbinden), kleinere lokale Spuren oder eine beliebige andere geeignete Zwischenverbindungsressourcenanordnung enthalten. Falls gewünscht, kann die Logik der Vorrichtung 10 in mehr Ebenen oder Schichten angeordnet sein, in denen mehrere große Bereiche miteinander verbunden sind, um noch größere Logikabschnitte zu bilden. Andere Vorrichtungsanordnungen können Logik verwenden, die nicht in Zeilen und Spalten angeordnet ist.
  • Ein veranschaulichender programmierbarer Logikbereich 18, der eine Gruppe mehrerer kleinerer Logikbereiche 34 enthält, ist in 2 gezeigt. Der programmierbare Logikbereich 18, manchmal als ein Logikanordnungsblock (LAB) bezeichnet, kann eine zugehörige Eingangsauswahlverschaltung 36 und eine Ausgangsauswahl- und Ansteuerungsverschaltung 38 aufweisen. Die Eingangsauswahlverschaltung 36 kann über eine erste Gruppe von horizontalen Zwischenverbindungen 16H-1 und eine erste Gruppe von vertikalen Zwischenverbindungen 16V-1 Eingangssignale empfangen. Beispielsweise können die Zwischenverbindungen 16H-1 dem programmierbaren Logikblock 18 Eingangssignale von anderen programmierbaren Logikblöcken 18 in derselben Zeile oder von den Eingabe/Ausgabe-Pins 14 bereitstellen, wohingegen die Zwischenverbindungen 16V-1 dem programmierbaren Logikblock 18 Eingangssignale von anderen Logikblöcken 18 in derselben Spalte oder von den Pins 14 bereitstellen können. Die Eingangsauswahlverschaltung 36 kann ausgelegt sein (z. B. durch Programmieren von CRAM-Bits, die mit der Eingangsauswahlverschaltung 36 assoziiert sind), eines oder mehrere der Eingangssignale auszuwählen, um es dem programmierbaren Logikblock 18 bereitzustellen.
  • Wie in 2 gezeigt, kann der programmierbare Logikblock 18 kleinere Bereiche von programmierbarer Logik 34 enthalten. Die kleineren programmierbaren Logikbereiche 34 innerhalb jedes programmierbaren Logikbereichs 18 werden manchmal als adaptive Logikmodule (ALMs), Logikelemente (LEs) oder Logikzellen bezeichnet. Eine Logikzelle 34 kann die Eingangssignale empfangen, die von der Eingangsauswahlverschaltung 36 ausgewählt sind, und kann benutzerdefinierte Funktionen an den Eingangssignalen durchführen, um Ausgangssignale zu erzeugen. Die von jeder Logikzelle 34 empfangenen Eingangssignale können von anderen Logikzellen 34 empfangene Eingangssignalabschnitte überlappen (z. B. einige der von einem ersten Logikbereich 34 empfangenen Eingangssignale können auch von einem zweiten Logikbereich 34 empfangen werden). Es kann eine beliebige geeignete Anzahl von Logikzellen 34 innerhalb des Logikblocks 18 geben.
  • Die Ausgangssignale können der Ausgangsauswahl- und Ansteuerungsverschaltung 38 über Ausgabepfade 40 bereitgestellt werden. Die Ausgangsauswahl- und Ansteuerungsverschaltung 38 kann über die Pfade 40 Ausgangssignale empfangen und kann ausgelegt sein, die Ausgangssignale einer zweiten Gruppe von horizontalen Zwischenverbindungen 16H-2 und einer zweiten Gruppe von vertikalen Zwischenverbindungen 16V-2 bereitzustellen. Falls gewünscht kann die Ausgangsauswahlverschaltung 38 ausgelegt sein, eine oder mehrere der Zwischenverbindungen 16H-2 oder 16V-2 zu trennen (z. B. durch Nichtbereitstellen eines Ausgangssignals oder durch Bereitstellen einer hochohmigen Ausgabe). Falls gewünscht kann die Ausgangsauswahlverschaltung 38 ausgelegt sein, mehreren Zwischenverbindungen ein bestimmtes Ausgangssignal bereitzustellen. Beispielsweise kann es wünschenswert sein, ein Ausgangssignal von einem bestimmten Logikelement 34 zu zwei verschiedenen Bereichen des integrierten Schaltkreises 10 zu leiten. In diesem Szenario kann die Ausgangsauswahl- und Ansteuerungsverschaltung 38 dieses Ausgangssignal zwei verschiedenen Zwischenverbindungen mit verschiedenen Längen bereitstellen.
  • In einigen Anordnungen kann die Eingangsauswahlverschaltung 36 LAB-Eingangsmultiplexer (LIMs) enthalten, die verwendet werden können, um Signale von einem horizontalen Kanal, einem vertikalen Kanal und lokalen Ausgängen von einem oder mehreren Logikelementen 34 auszuwählen und eine Gruppe von LAB-Spuren anzusteuern. Die Eingangsauswahlverschaltung 36 kann auch Logikelement-Eingangsmultiplexer (LEIMs) enthalten, die verwendet werden können, um Signale von einer Gruppe von LAB-Spuren auszuwählen und die ausgewählten Signale zu den Logikelementen 34 zu treiben. Die Ausgangsauswahlverschaltung 38 kann Treibereingangsmultiplexer (DIMs) enthalten, die verwendet werden können, um Signale von einem horizontalen Kanal, einem vertikalen Kanal und lokalen Ausgängen von einer oder mehreren Logikzellen auszuwählen und Drähte anzusteuern, die aus diesem Logikblock 18 stammen, und zu anderen Logikblöcken 18 zu leiten.
  • 3 ist ein Diagramm eines adaptiven Logikmoduls (ALM) 300, das einen 3:2-Komprimierer implementiert, um eine Dreifachaddition zu unterstützen. Wie in 3 gezeigt, enthält das ALM 300 vier Nachschlagetabellen (LUTs) mit 4 Eingängen 302, eine Übertragskette mit nur zwei Addierern 304-1 und 304-2 und eine Registerverschaltung 306. Das ALM 300 empfängt sechs Eingaben datena, datenb, datenc, datend, datene0 und datene1. Eine erste LUT 302-1 ist ausgelegt, die Eingaben datena, datenb, datenc und datene0 zu empfangen; eine zweite LUT 302-1 ist auch ausgelegt, die Eingaben datena, datenb, datenc und datene0 zu empfangen; eine dritte LUT 302-3 ist ausgelegt, die Eingaben datena, datenb, datend und daten e1 zu empfangen; und eine vierte LUT 302-4 ist auch ausgelegt, die Eingaben datena, datenb, datend und daten e1 zu empfangen.
  • Der erste Addierer 304-1 weist einen ersten Addierereingang, der mit dem Ausgang der ersten LUT 302-1 verbunden ist, einen zweiten Addierereingang, der ein Signal gemeinsamen arith ein von einem vorangehenden ALM empfängt, einen Übertragseingang, der ein Signal übertrag_ein vom vorangehenden ALM empfängt, einen Summenausgang, der mit der Registerverschaltung 306 verbunden ist, und einen Übertragsausgang auf. Der zweite Addierer 304-2 weist einen ersten Addierereingang, der mit dem Ausgang der ersten LUT 302-3 verbunden ist, einen zweiten Addierereingang, der mit dem Ausgang der zweiten LUT 302-2 verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 304-1 verbunden ist, einen Summenausgang, der mit der Registerverschaltung 306 verbunden ist, und einen Übertragsausgang auf, an dem ein Signal übertrag_aus einem nachfolgenden ALM bereitgestellt wird. Die vierte LUT 302-4 weist einen Ausgang auf, an dem ein Signal gemeinsamen_arith_aus in das nachfolgende ALM eingespeist wird. Die Registerverschaltung 306 ist dann an eine allgemeine Leitverschaltung innerhalb der programmierbaren Vorrichtung gekoppelt.
  • Mit einer derartigen Konfiguration ist das ALM 300 in einem gemeinsam genutzten arithmetischen Modus betreibbar, um eine Dreifachaddition zu unterstützen (d. h., um die Addition von drei verschiedenen Eingangswörtern zu unterstützen). Insbesondere können die LUTs 302-1, 302-2, 302-3 und 302-4 kollektiv als ein 3:2-Komprimierer dienen, bevor die Signale an die Zwei-Addierer-Übertragskette geleitet werden. Dreifachadditionen können mehrfache Additionen in einem rekursiven Reduktionsbaum in der Hälfte der Anzahl von Knoten eines typischen Zweifachaddierer implementieren. Eines der Probleme einer Dreifachaddition ist jedoch, dass die Anzahl an Eingängen (d. h. 3 pro Bit) die Maximalanzahl überschreitet, die mit einer typischen zu 50 % geleerten Eingangskreuzschiene unterstützt werden kann.
  • 4 ist ein Diagramm eines adaptiven Logikmoduls (ALM) 400, das nur eine Zweifachaddition unterstützt. Wie in 4 gezeigt, enthält das ALM 400 eine Eingangsauswahlverschaltung 401, vier LUT-Schaltkreise mit 4 Eingängen 402-1, 402-2, 402-3 und 402-4, eine Übertragskette mit nur zwei Addierern 404-1 und 404-2 und eine zugehörige Multiplexing- und Registerverschaltung 406. Die Eingangsauswahlverschaltung 401 ist ausgelegt, acht Eingangsbits zu empfangen, und leitet vier Eingangsbits selektiv an jede der LUTs mit 4 Eingängen 402 weiter.
  • Der erste Addierer 404-1 weist einen ersten Addierereingang, der mit dem Ausgang der ersten LUT 402-1 verbunden ist, einen zweiten Addierereingang, der mit dem Ausgang der zweiten LUT 402-2 verbunden ist, einen Übertragseingang, der ein Signal übertrag ein von einem vorangehenden ALM empfängt, einen Summenausgang, der mit der Multiplexing- und Registerverschaltung 406 verbunden ist, und einen Übertragsausgang auf. Der zweite Addierer 404-2 weist einen ersten Addierereingang, der mit dem Ausgang der dritten LUT 402-3 verbunden ist, einen zweiten Addierereingang, der mit dem Ausgang der vierten LUT 402-4 verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 404-1 verbunden ist, einen Summenausgang, der mit der Multiplexing- und Registerverschaltung 406 verbunden ist, und einen Übertragsausgang auf, an dem ein Signal übertrag aus einem nachfolgenden ALM bereitgestellt wird. Die Multiplexing- und Registerverschaltung 406 ist dann an eine allgemeine Leitverschaltung innerhalb der programmierbaren Vorrichtung gekoppelt.
  • Mit einer derartigen Konfiguration können Eingaben in die zwei Addierer nur von den LUTs in der gleichen Hälfte des ALM kommen (d. h., der Addierer 404-1 empfängt nur Signale von den LUTs 402-1 und 402-2, wohingegen der Addierer 404-2 nur Signale von den LUTs 402-3 und 402-4 empfängt). Als Ergebnis kann nur eine Zweifachaddition (d. h. eine Addition von zwei verschiedenen Eingabewörtern) vom ALM 400 unterstützt werden.
  • Nach einer Ausführungsform ist 5 ein Schaltkreisdiagramm einer veranschaulichenden Logikzelle 500, die mehr als zwei Volladdierschaltkreise enthält, um eine erhöhte arithmetische Dichte bereitzustellen. Die Logikzelle 500 kann einer Logikzelle 34 der in Verbindung mit 2 beschriebenen Art ähnlich sein. Die Logikzelle 500 kann ausgelegt sein, acht Eingangssignale A, B, C0, C1, D0, D1, E und F zu empfangen.
  • Wie in 5 gezeigt, kann die Logikzelle 500 vier Nachschlagetabellen(LUT)-Schaltkreise mit 4 Eingängen enthalten, von denen jeder in zwei LUT-Schaltkreise mit 3 Eingängen (von denen jeder hier manchmal als eine „3-LUT“ bezeichnet wird) und einen Auswahlmultiplexingschaltkreis 510 zerlegt ist. Eine erste LUT mit 4 Eingängen kann zum Beispiel eine erste 3-LUT 502-1a, eine zweite 3-LUT 502-1b und einen zugehörigen Multiplexer 510-1 enthalten, der ausgelegt ist, Signale von den LUTs 502-1a und 502-1b zu empfangen; eine zweite LUT mit 4 Eingängen kann eine erste 3-LUT 502-2a, eine zweite 3-LUT 502-2b und einen zugehörigen Multiplexer 510-2 enthalten, der ausgelegt ist, Signale von den LUTs 502-2a und 502-2b zu empfangen; eine dritte LUT mit 4 Eingängen kann eine erste 3-LUT 502-3a, eine zweite 3-LUT 502-3b und einen zugehörigen Multiplexer 510-3 enthalten, der ausgelegt ist, Signale von den LUTs 502-3a und 502-3b zu empfangen; und eine vierte LUT mit 4 Eingängen kann eine erste 3-LUT 502-4a, eine zweite 3-LUT 502-4b und einen zugehörigen Multiplexer 510-4 enthalten, der ausgelegt ist, Signale von den LUTs 502-4a und 502-4b zu empfangen.
  • Die Eingangssignale A und B können in jede der 3-LUTs eingespeist werden. Der dritte Eingang der LUTs 502-1a und 502-1b kann ausgelegt sein, Signal D0 zu empfangen; der dritte Eingang der LUTs 502-2a und 502-2b kann ausgelegt sein, Signal C0 zu empfangen; der dritte Eingang der LUTs 502-3a und 502-3b kann ausgelegt sein, Signal D1 zu empfangen; und der dritte Eingang der LUTs 502-4a und 502-4b kann ausgelegt sein, Signal C1 zu empfangen. Der Auswahlmultiplexer 510-1 kann durch das Eingangssignal C0 gesteuert werden; der Auswahlmultiplexer 510-2 kann durch das Eingangssignal D0 gesteuert werden; der Auswahlmultiplexer 510-3 kann durch das Eingangssignal C1 gesteuert werden; und der Auswahlmultiplexer 510-4 kann durch das Eingangssignal D1 gesteuert werden. Es gibt keine Multiplexer an den Eingängen der LUTs 502, was die Komplexität der Logikzelle 500 reduziert.
  • Es ist anzumerken, dass, während der Multiplexer 510-1 durch ein Eingangssignal C0 gesteuert wird, die 3-LUTs 502-1a und 502-1b, die ihn speisen, ausgelegt sind, ein anderes Eingangssignal D0 zu empfangen. Gleichermaßen, während der Multiplexer 510-2 durch ein Eingangssignal D0 gesteuert wird, sind die 3-LUTs 502-2a und 502-2b, die ihn speisen, ausgelegt, ein anderes Eingangssignal C0 zu empfangen. Ein derartiges Austauschen der Eingangsverbindungsmuster kann auch helfen, den Bedarf an zusätzlichen Multiplexern an en LUT-Eingängen zu reduzieren.
  • Die Logikzelle 500 kann ferner Auswahlmultiplexer 512-1, 512-2, 512-3, 514, eine Übertragskette 503, Ausgangsmultiplexer 516-1, 516-2, 516-3 und 516-4 und eine zugehörige Registerverschaltung 506 enthalten, die an allgemeine Leitverschaltung innerhalb der Vorrichtung 10 gekoppelt ist (siehe 1). Der Multiplexer 512-1 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 510-1 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 510-2 gekoppelt ist, einen Steuereingang, der ein Eingangssignal E empfängt, und einen Ausgang aufweisen. Der Multiplexer 512-2 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 510-3 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 510-4 gekoppelt ist, einen Steuereingang, der ein Eingangssignal E empfängt, und einen Ausgang aufweisen. Der Multiplexer 512-3 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 510-3 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 510-4 gekoppelt ist, einen Steuereingang, der ein Eingangssignal F empfängt, und einen Ausgang aufweisen. Der Multiplexer 514 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 512-1 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 512-2 gekoppelt ist, einen Steuereingang, der ein Eingangssignal F empfängt, und einen Ausgang aufweisen.
  • Die Übertragskette 503 kann Volladdierschaltkreise 504-1, 504-2, 504-3 und 504-4 enthalten. Jeder der Volladdierschaltkreise weist drei Eingangsanschlüsse (z. B. zwei normale Eingangsports und einen Übertrags-Eingangsport) und zwei Ausgangsanschlüsse (z. B. einen Summenport und einen Übertrags-Ausgangsport) auf. Der Volladdierer 504-1 kann einen ersten Addierereingang, der an einen gemeinsam genutzten Ausgangspfad 520-4b' gekoppelt ist, der direkt von der LUT 502-4b einer vorangehenden Logikzelle 500 geleitet ist, einen zweiten Addierereingang, der über einen direkten Verbindungspfad 520-1a direkt mit dem Ausgang der LUT 502-1a verbunden ist, einen Übertragseingang, der ein Signal übertrag_ein von der vorangehenden Logikzelle empfängt, einen Summenausgang und einen Übertragsausgang aufweisen. Bei diesem Beispiel wird angenommen, dass mehrere Logikzellen 500 sequenziell in einer Kette verbunden sein können, sodass die Übertragskette Übertragssignale von einer Logikzelle an die nächste weiterleitet.
  • Der Volladdierer 504-2 kann einen ersten Addierereingang, der über einen direkten Verbindungspfad 520-1b direkt mit dem Ausgang der LUT 502-1b verbunden ist, einen zweiten Addierereingang, der über einen direkten Verbindungspfad 520-2a direkt mit dem Ausgang der LUT 502-2a verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 504-1 verbunden ist, einen Summenausgang und einen Übertragsausgang aufweisen. Der Volladdierer 504-3 kann einen ersten Addierereingang, der über einen direkten Verbindungspfad 520-2b direkt mit dem Ausgang der LUT 502-2b verbunden ist, einen zweiten Addierereingang, der über einen direkten Verbindungspfad 520-3a direkt mit dem Ausgang der LUT 502-3a verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 504-2 verbunden ist, einen Summenausgang und einen Übertragsausgang aufweisen. Der Volladdierer 504-4 kann einen ersten Addierereingang, der über einen direkten Verbindungspfad 520-3b direkt mit dem Ausgang der LUT 502-3b verbunden ist, einen zweiten Addierereingang, der über einen direkten Verbindungspfad 520-4a direkt mit dem Ausgang der LUT 502-4a verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 504-3 verbunden ist, einen Summenausgang und einen Übertragsausgang aufweisen. Die Ausgabe der LUT 502-4b kann über einen direkten Leitpfad 520-4b direkt in eine nachfolgende Logikzelle 500 in der Kette eingespeist werden.
  • Der Ausgangsmultiplexer 516-1 kann ausgelegt sein, aus dem Eingangssignal A, der Summenausgabe des Volladdierers 504-1 und der Ausgabe des Multiplexers 512-1 auszuwählen. Der Ausgangsmultiplexer 516-2 kann ausgelegt sein, zwischen der Summenausgabe des Volladdierers 504-2 und der Ausgabe des Multiplexers 514 auszuwählen. Der Ausgangsmultiplexer 516-3 kann ausgelegt sein, zwischen der Summenausgabe des Volladdierers 504-3 und dem Eingangssignal B auszuwählen. Der Ausgangsmultiplexer 516-4 kann ausgelegt sein, zwischen der Summenausgabe des Volladdierers 504-4 und der Ausgabe des Multiplexers 512-3 auszuwählen.
  • Mit einer derartigen Konfiguration kann die 4-Bit-Übertragskette 503 weiterhin wie ein 2-Bit-Ripple-Carry-Addierer arbeiten, aber ist einer 3-Bit- oder 4-Bit-Addition fähig und auch fähig, Soft-Multiplizierer zu implementieren. Die direkten Verbindungspfade 520-1a, 520-1b, 520-2a, 520-2b, 520-3a, 520-3b, 520-4a und 520-4b vom Ausgang der 3-LUTs 502 zu den Volladdierern 504 ermöglichen der Logikzelle 500, die erhöhe Anzahl von internen Volladdierern zu verwenden und zu nutzen, um verbesserte arithmetische Dichten mit minimalen Kosten bereitzustellen.
  • Nach einigen Ausführungsformen können eine oder mehrere Logikzellen 500 der in Verbindung mit 5 beschriebenen Art verwendet werden, um Soft-Multiplizierer auf einem programmierbaren integrierten Schaltkreis 10 zu implementieren. 6 zeigt eine Tabelle 600, die veranschaulicht, wie eine vorzeichenlose 6-mal-6-Multiplikation berechnet werden kann. Die zwei 6-Bit-Eingaben sind A und B, wobei A Bits {a5, a4, a3, a2, a1, a0} enthält und wobei B Bits {b5, b4, b3, b2, b1, b0} enthält. Wie in Tabelle 600 gezeigt, repräsentiert Zeile 601 das Produkt von A*b0; Zeile 602 repräsentiert das Produkt von A*b1, das um eine Bitposition nach links verschoben ist; Zeile 603 repräsentiert das Produkt von A*b2, das um eine weitere Bitposition nach links verschoben ist; Zeile 604 repräsentiert das Produkt von A*b3, das um eine weitere Bitposition nach links verschoben ist; Zeile 605 repräsentiert das Produkt von A*b4, das um noch eine Bitposition nach links verschoben ist; Zeile 606 repräsentiert das Produkt von A*b5, das um noch eine weitere Bitposition nach links verschoben ist.
  • Zeile 607 repräsentiert ein erstes teilweises Ergebnis {s7, s6, ..., s1, s0}, das sich aus der Summe der Bits in den Zeilen 601 und 602 ergibt. Zeile 608 repräsentiert ein zweites teilweises Ergebnis {t7, t6, ..., t1, t0}, das sich aus der Summe der Bits in den Zeilen 603 und 604 ergibt. Zeile 909 repräsentiert ein drittes teilweises Ergebnis {u7, u6, ..., u1, u0}, das sich aus der Summe der Bits in den Zeilen 605 und 606 ergibt.
  • 7A ist ein Diagramm, das veranschaulicht, wie eine erste Gruppe von Logikzellen 700-1 konfiguriert werden kann, um das erste teilweise Ergebnis {s7:s0} zu berechnen. Wie in 7A gezeigt, kann die erste Logikzellengruppe 700-1 zwei Logikzellen 500-1 und 500-2 enthalten, die in Reihe verbunden sind. Insbesondere kann die Logikzelle 500-1 eine erste 3-LUT 502, die ausgelegt ist, das Produkt der Bits a0*b0 zu implementieren, eine zweite 3-LUT 502, die ausgelegt ist, das Produkt der Bits a0*b1 zu implementieren, eine dritte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a1*b0 zu implementieren, eine vierte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a1*b1 zu implementieren, eine fünfte 3-LUT 502, die ausgelegt ist, das Produkt a2*b0 zu implementieren, eine sechste 3-LUT 502, die ausgelegt ist, das Produkt von a2*b1 zu implementieren, eine siebente 3-LUT 502, die ausgelegt ist, das Produkt von a3*b0 zu implementieren, und eine achte 3-LUT 502 enthalten, die ausgelegt ist, das Produkt von a3*b1 zu implementieren. Es ist anzumerken, dass nur die direkten Verbindungspfade gezeigt sind, die die 3-LUTs 502 mit den Volladdierern 504 verknüpfen; die Multiplexer sind weggelassen, um ein Verschleiern der vorliegenden Ausführungsformen zu vermeiden. Obwohl jede der 3-LUTs 502 insgesamt drei verfügbare Eingänge aufweist, empfangen zumindest einige der in 7A gezeigten 3-LUTs Eingangssignale an nur zwei der drei Eingänge. Dies hilft, den Bedarf an zusätzlichen Eingangsmultiplexern an den Eingängen der LUTs 502 zu eliminieren.
  • Mit einer derartigen Konfiguration kann die Ausgabe des Volladdierers 504-1 in der Zelle 500-1 s0 sein, was einfach das niederwertigste Bit (LSB) „out0“ der endgültigen Multipliziererausgabe ist. Die Ausgabe des Volladdierers 504-2 in der Zelle 500-1 kann s1 sein, was das zweite LSB „out1“ der endgültigen Multipliziererausgabe ist. Die Ausgabe des Addierers 504-3 in der Zelle 500-1 kann gleich s2 sein und die Ausgabe des Addierers 504-4 in der Zelle 500-1 kann gleich s3 sein. Es ist anzumerken, dass jede der LUTs mit 3 Eingängen 502 nur zwei Eingabebits empfängt (der 3. Eingang kann z. B. beim Implementieren dieses bestimmten Multiplizierers nicht verwendet werden).
  • Die Logikzelle 500-2 kann eine erste 3-LUT 502, die ausgelegt ist, das Produkt der Bits a4*b0 zu implementieren, eine zweite 3-LUT 502, die ausgelegt ist, das Produkt der Bits a4*b1 zu implementieren, eine dritte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a5*b0 zu implementieren, und eine vierte 3-LUT 502 enthalten, die ausgelegt ist, das Produkt der Bits a5*b1 zu implementieren. Die verbleibenden vier 3-LUTs 502 können nicht verwendet werden und können deshalb ausgelegt sein, logische Nullen auszugeben. Mit einer derartigen Konfiguration kann die Ausgabe des Volladdierers 504-1 in der Zelle 500-2 gleich s4 sein; die Ausgabe des Volladdierers 504-2 in der Zelle 500-2 kann gleich s5 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-2 kann gleich s6 sein und die Ausgabe des Addierers 504-4 in der Zelle 500-2 kann gleich s7 sein. Es ist anzumerken, dass zumindest einige der LUTS mit 3 Eingängen 502 im Leerlauf sein können (die fünfte bis achte LUT führen z. B. beim Implementieren dieses bestimmten Multiplizierers keine Berechnung durch).
  • 7B ist ein Diagramm, das veranschaulicht, wie eine erste Gruppe von Logikzellen 700-2 konfiguriert werden kann, um das zweite teilweise Ergebnis {t7:t0} zu berechnen. Wie in 7B gezeigt, kann die zweite Logikzellengruppe 700-2 zwei Logikzellen 500-3 und 500-4 enthalten, die in Reihe verbunden sind. Insbesondere kann die Logikzelle 500-3 eine erste 3-LUT 502, die ausgelegt ist, das Produkt der Bits a0*b2 zu implementieren, eine zweite 3-LUT 502, die ausgelegt ist, das Produkt der Bits a0*b3 zu implementieren, eine dritte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a1*b2 zu implementieren, eine vierte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a1*b3 zu implementieren, eine fünfte 3-LUT 502, die ausgelegt ist, das Produkt a2*b2 zu implementieren, eine sechste 3-LUT 502, die ausgelegt ist, das Produkt von a2*b3 zu implementieren, eine siebente 3-LUT 502, die ausgelegt ist, das Produkt von a3*b2 zu implementieren, und eine achte 3-LUT 502 enthalten, die ausgelegt ist, das Produkt von a3*b3 zu implementieren.
  • Mit einer derartigen Konfiguration kann die Ausgabe des Volladdierers 504-1 in der Zelle 500-3 gleich t0 sein; die Ausgabe des Volladdierers 504-2 in der Zelle 500-3 kann gleich t1 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-3 kann gleich t2 sein; und die Ausgabe des Addierers 504-4 in der Zelle 500-3 kann gleich t3 sein.
  • Die Logikzelle 500-4 kann eine erste 3-LUT 502, die ausgelegt ist, das Produkt der Bits a4*b2 zu implementieren, eine zweite 3-LUT 502, die ausgelegt ist, das Produkt der Bits a4*b3 zu implementieren, eine dritte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a5*b2 zu implementieren, und eine vierte 3-LUT 502 enthalten, die ausgelegt ist, das Produkt der Bits a5*b3 zu implementieren. Die verbleibenden vier 3-LUTs 502 können nicht verwendet werden bzw. im Leerlauf sein und können deshalb ausgelegt sein, logische Nullen auszugeben. Mit einer derartigen Konfiguration kann die Ausgabe des Volladdierers 504-1 in der Zelle 500-4 gleich t4 sein; die Ausgabe des Volladdierers 504-2 in der Zelle 500-4 kann gleich t5 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-4 kann gleich t6 sein und die Ausgabe des Addierers 504-4 in der Zelle 500-4 kann gleich t7 sein.
  • 7C ist ein Diagramm, das veranschaulicht, wie eine dritte Gruppe von Logikzellen 700-3 konfiguriert werden kann, um das dritte teilweise Ergebnis {u7:u0} zu berechnen. Wie in 7C gezeigt, kann die dritte Logikzellengruppe 700-3 zwei Logikzellen 500-5 und 500-6 enthalten, die in Reihe verbunden sind. Insbesondere kann die Logikzelle 500-5 eine erste 3-LUT 502, die ausgelegt ist, das Produkt der Bits a0*b4 zu implementieren, eine zweite 3-LUT 502, die ausgelegt ist, das Produkt der Bits a0*b5 zu implementieren, eine dritte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a1*b4 zu implementieren, eine vierte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a1*b5 zu implementieren, eine fünfte 3-LUT 502, die ausgelegt ist, das Produkt a2*b4 zu implementieren, eine sechste 3-LUT 502, die ausgelegt ist, das Produkt von a2*b5 zu implementieren, eine siebente 3-LUT 502, die ausgelegt ist, das Produkt von a3*b4 zu implementieren, und eine achte 3-LUT 502 enthalten, die ausgelegt ist, das Produkt von a3*b5 zu implementieren.
  • Mit einer derartigen Konfiguration kann die Ausgabe des Volladdierers 504-1 in der Zelle 500-5 gleich u0 sein; die Ausgabe des Volladdierers 504-2 in der Zelle 500-5 kann gleich u1 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-5 kann gleich u2 sein; und die Ausgabe des Addierers 504-4 in der Zelle 500-5 kann gleich u3 sein.
  • Die Logikzelle 500-6 kann eine erste 3-LUT 502, die ausgelegt ist, das Produkt der Bits a4*b4 zu implementieren, eine zweite 3-LUT 502, die ausgelegt ist, das Produkt der Bits a4*b5 zu implementieren, eine dritte 3-LUT 502, die ausgelegt ist, das Produkt der Bits a5*b4 zu implementieren, und eine vierte 3-LUT 502 enthalten, die ausgelegt ist, das Produkt der Bits a5*b5 zu implementieren. Die verbleibenden vier 3-LUTs 502 können nicht verwendet werden bzw. im Leerlauf sein und können deshalb ausgelegt sein, logische Nullen auszugeben. Mit einer derartigen Konfiguration kann die Ausgabe des Volladdierers 504-1 in der Zelle 500-6 gleich u4 sein; die Ausgabe des Volladdierers 504-2 in der Zelle 500-6 kann gleich u5 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-6 kann gleich u6 sein und die Ausgabe des Addierers 504-4 in der Zelle 500-6 kann gleich u7 sein.
  • 7D ist ein Diagramm, das veranschaulicht, wie eine vierte Gruppe von Logikzellen 700-4 konfiguriert werden kann, um das vierte teilweise Ergebnis {v7:v0} zu berechnen. Das vierte teilweise Ergebnis kann als eine Funktion einer Teilmenge des zweiten teilweisen Ergebnisses und einer Teilmenge des dritten teilweisen Ergebnisses berechnet werden (siehe Abschnitt 650 in 6). Wie in 7D gezeigt, kann die vierte Logikzellengruppe 700-4 zwei Logikzellen 500-7 und 500-8 enthalten, die in Reihe verbunden sind. Insbesondere kann die Logikzelle 500-7 eine erste 3-LUT 502, die sich im Leerlauf befindet (und eine logische „0“ ausgibt), eine zweite 3-LUT 502, die einfach Bit t2 weiterleitet, eine dritte 3-LUT 502, die einfach Bit u0 weiterleitet, eine vierte 3-LUT 502, die Bit t3 weiterleitet, eine fünfte 3-LUT 502, die Bit u1 weiterleitet, eine sechste 3-LUT 502, die Bit t4 weiterleitet, eine siebente 3-LUT 502, die Bit t4 weiterleitet, und eine achte 3-LUT 502 enthalten, die eine logische „1“ ausgibt. Es ist anzumerken, dass jede der LUTs mit 3 Eingängen 502 in der Logikzellengruppe 700-4 nur maximal ein Eingabebit empfängt (der 2. und der 3. Eingang können z. B. beim Implementieren dieses bestimmten Multiplizierers nicht verwendet werden). Das Empfangen von Eingangssignalen an nur einem von den drei insgesamt verfügbaren Eingängen hilft dabei, den Bedarf an zusätzlichen Eingangsmultiplexern an den Eingängen der LUTs 502 zu eliminieren.
  • Mit einer derartigen Konfiguration wird die Summenausgabe des Volladdierers 504-1 in der Zelle 500-7 nicht verwendet; die Ausgabe des Volladdierers 504-2 in der Zelle 500-7 kann gleich v0 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-7 kann gleich v1 sein; und die Ausgabe des Addierers 504-4 in der Zelle 500-7 kann gleich v2 sein.
  • Die Logikzelle 500-8 kann eine erste 3-LUT 502, die sich im Leerlauf befindet (oder eine logische „0“ ausgibt), eine zweite 3-LUT 502, die einfach Bit t5 weiterleitet, eine dritte 3-LUT 502, die einfach Bit u3 weiterleitet, eine vierte 3-LUT 502, die Bit t6 weiterleitet, eine fünfte 3-LUT 502, die Bit u4 weiterleitet, eine sechste 3-LUT 502, die Bit t7 weiterleitet, eine siebente 3-LUT 502, die Bit u5 weiterleitet, und eine achte 3-LUT 502 enthalten, die eine logische „0“ ausgibt oder nicht verwendet wird. Mit einer derartigen Konfiguration wird die Summenausgabe des Volladdierers 504-1 in der Zelle 500-8 nicht verwendet; die Ausgabe des Volladdierers 504-2 in der Zelle 500-8 kann gleich v3 sein; die Ausgabe des Addierers 504-3 in der Zelle 500-8 kann gleich v4 sein; die Summenausgabe des Addierers 504-4 in der Zelle 500-8 kann gleich v5 sein; und die Übertragsausgabe des Addierers 504-4 in der Zelle 500-8 kann gleich v6 sein.
  • Wie oben in zumindest dem Beispiel von 7D veranschaulicht, weisen die 3-LUTs 502 die Option auf, konstante Nullen oder Einsen auszugeben. Diese Fähigkeit ermöglicht der Übertragskette, ein Addierbit selektiv zu überspringen. Beispielsweise wird der Volladdierer 504-1 in der Logikzelle 500-8 durch Leiten der Übertragsausgabe vom Addierer 504-4 in der vorangehenden Logikzelle 500-7 durch den Volladdierer 504-1 in der Logikzelle 500-8, was kein zusätzliches Multiplexing erfordert, effektiv übersprungen (d. h., der Summenausgangsport dieses Volladdierers wird nicht verwendet oder ignoriert). Da keine zusätzliche Multiplexingsteuerung erforderlich ist, kann das Überspringen von Bits ausschließlich über die Maskenprogrammierung der 3-LUTS steuernd sein. Durch selektives Überspringen von Bits auf diese Weise ist eine Logikzelle fähig, zwei, drei oder vier Bits zu summieren. Anders ausgedrückt kann ein beliebiger oder mehrere der vier Volladdierer in der Übertragskette 503 (siehe 5) übersprungen werden (z. B. kann nur einer der vier Volladdierer aktiv sein, nur zwei der vier Volladdierer können aktiv sein, nur drei der vier Volladdierer können aktiv sein oder alle vier der Volladdierer können aktiv sein).
  • 7E ist ein Diagramm, das veranschaulicht, wie eine endgültige Gruppe von Logikzellen 700-5 konfiguriert werden kann, um das Endmultiplikationsprodukt durch Kombinieren des ersten, zweiten, dritten und vierten teilweisen Ergebnisses zu berechnen. Wie in 7E gezeigt, kann die endgültige Logikzellengruppe 700-5 drei Logikzellen 500-9, 500-10 und 500-11 enthalten, die in Reihe verbunden sind. Insbesondere kann die Logikzelle 500-9 eine erste 3-LUT 502, die sich im Leerlauf befindet (und eine logische „0“ ausgibt), eine zweite 3-LUT 502, die einfach Bit s2 weiterleitet, eine dritte 3-LUT 502, die einfach Bit t0 weiterleitet, eine vierte 3-LUT 502, die Bit s3 weiterleitet, eine fünfte 3-LUT 502, die Bit t1 weiterleitet, eine sechste 3-LUT 502, die Bit s4 weiterleitet, eine siebente 3-LUT 502, die Bit v0 weiterleitet, und eine achte 3-LUT 502 enthalten, die eine logische „1“ ausgibt. Es ist anzumerken, dass jede der LUTs mit 3 Eingängen 502 in der endgültigen Logikzellengruppe 700-5 nur maximal ein Eingabebit empfängt (der 2. und der 3. Eingang können z. B. beim Implementieren dieses bestimmten Multiplizierers nicht verwendet werden).
  • Mit einer derartigen Konfiguration wird die Summenausgabe des Volladdierers 504-1 in der Zelle 500-9 nicht verwendet; die Summenausgabe des Volladdierers 504-2 in der Zelle 500-9 kann gleich out2 sein; die Summenausgabe des Addierers 504-3 in der Zelle 500-9 kann gleich out3 sein; und die Summenausgabe des Addierers 504-4 in der Zelle 500-9 kann gleich out4 sein.
  • Die Logikzelle 500-10 kann eine erste 3-LUT 502, die sich im Leerlauf befindet (oder eine logische „0“ ausgibt), eine zweite 3-LUT 502, die einfach Bit s5 weiterleitet, eine dritte 3-LUT 502, die einfach Bit v1 weiterleitet, eine vierte 3-LUT 502, die Bit s6 weiterleitet, eine fünfte 3-LUT 502, die Bit v2 weiterleitet, eine sechste 3-LUT 502, die Bit s7 weiterleitet, eine siebente 3-LUT 502, die Bit v3 weiterleitet, und eine achte 3-LUT 502 enthalten, die eine logische „0“ ausgibt oder nicht verwendet wird. Mit einer derartigen Konfiguration wird die Summenausgabe des Volladdierers 504-1 in der Zelle 500-10 nicht verwendet; die Summenausgabe des Volladdierers 504-2 in der Zelle 500-10 kann gleich out5 sein; die Summenausgabe des Addierers 504-3 in der Zelle 500-10 kann gleich out6 sein; und die Summenausgabe des Addierers 504-4 in der Zelle 500-10 kann gleich out7 sein. Es ist anzumerken, dass das Addierbit 504-1 der Logikzelle 500-10 übersprungen wird (z. B. durch Setzen ihrer Eingänge auf logische „0“ und logische „1“ und Weiterleiten ihres Übertragseingangssignals).
  • Die Logikzelle 500-11 kann eine erste 3-LUT 502 enthalten, die Bit v4 weiterleitet, eine zweite 3-LUT 502, die sich im Leerlauf befindet (z. B. eine logische „0“ ausgibt), eine dritte 3-LUT 502, die Bit v5 weiterleitet, eine vierte 3-LUT 502, die Bit v6 weiterleitet, eine fünfte 3-LUT 502, die Bit u6 weiterleitet, und eine sechste 3-LUT 502, die Bit u7 weiterleitet. Die verbleibende siebente und achte 3-LUT 502 sind ausgelegt, eine logische „0“ auszugeben (d. h. werden nicht verwendet). Mit einer derartigen Konfiguration kann die Summenausgabe des Volladdierers 504-1 in der Zelle 500-11 gleich out8 sein; die Summenausgabe des Volladdierers 504-2 in der Zelle 500-11 kann gleich out9 sein; die Summenausgabe des Addierers 504-3 in der Zelle 500-11 kann gleich out10 sein; und die Summenausgabe des Addierers 504-4 in der Zelle 500-11 kann gleich out11 sein.
  • Die Multiplizierer-Ausgabebits {out11:out0}, die unter Verwendung der fünf Logikzellengruppen 700, die in 7A-7E gezeigt sind, auf diese Weise generiert wurden, sind nur illustrativ. Falls gewünscht, kann der Gesamtmultiplizierer optional fraktal gepackt sein, was bedeutet, dass nachfolgende Multiplizierer auf einer nicht unterbrochenen Übertragskette gestapelt sein können, die sich über mehrere Logikblöcke 18 erstreckt (siehe 2). Eine etwaige nicht verwendete Logikzelle innerhalb eines Logikblocks 18 kann für andere Logikfunktionen eingesetzt oder zugewiesen werden. Ein Beispiel einer derartigen reservierten Logikfunktion ist die Vorzeichenberechnung für vorzeichenbehaftete Skalarprodukte.
  • Die in 5-7 gezeigten Ausführungsformen, in denen eine Logikzelle 500 mindestens vier Volladdierschaltkreise 504 enthält, um eine erhöhte arithmetische Dichte (z. B. eine 2-fache arithmetische Dichte im Vergleich zu herkömmlichen ALM-Designs mit nur zwei Addierern) bereitzustellen, sind nur veranschaulichend und sollen den Geltungsbereich der vorliegenden Ausführungsformen nicht einschränken. Nach einer weiteren geeigneten Anordnung ist 8 ein Diagramm einer veranschaulichenden Logikzelle 800, die nur drei zwei Volladdierschaltkreise enthält. Wie in 8 gezeigt, enthält die obere Hälfte der Zelle 800 zwei LUTs mit 4 Eingängen (jeder mit nur einer direkten Verbindung mit einem entsprechenden Volladdierer, um eine 1-fache arithmetische Dichte zu bieten), wohingegen die untere Hälfte der Zelle 800 vier LUTs mit 3 Eingängen verwendet, während sie eine 2-fache arithmetische Dichte bereitstellt. Die Logikzelle 800 kann einer Logikzelle 34 der in Verbindung mit 2 beschriebenen Art ähnlich sein. Die Logikzelle 800 kann ausgelegt sein, acht Eingangssignale A, B, C0, C1, D0, D1, E und F zu empfangen.
  • Wie in 8 gezeigt, kann die Logikzelle 500 vier Nachschlagetabellen(LUT)-Schaltkreise mit 4 Eingängen enthalten, von denen jeder in zwei LUT-Schaltkreise mit 3 Eingängen (von denen jeder hier manchmal als eine „3-LUT“ bezeichnet wird) und einen Auswahlmultiplexingschaltkreis 510 zerlegt ist. Die ersten zwei LUTs mit 4 Eingängen können beispielsweise 4-LUT 802-1 und 802-2 enthalten; eine dritte LUT mit 4 Eingängen kann eine erste 3-LUT 802-3a, eine zweite 3-LUT 802-3b und einen zugehörigen Multiplexer 810-1 enthalten, der ausgelegt ist, Signale von den LUTs 802-3a und 802-3b zu empfangen; und eine vierte LUT mit 4 Eingängen kann eine erste 3-LUT 802-4a, eine zweite 3-LUT 802-4b und einen zugehörigen Multiplexer 810-2 enthalten, der ausgelegt ist, Signale von den LUTs 802-4a und 802-4b zu empfangen.
  • Die Eingangssignale A und B können in jede der oberen zwei 4-LUTs und jede der unteren vier 3-LUTs eingespeist werden. Der dritte Eingang der LUTs 802-1 und 802-2 können ausgelegt sein, Signal C0 zu empfangen, wohingegen der vierte Eingang der LUTs 802-1 und 802-2 ausgelegt sein können, Signal D0 zu empfangen. Der dritte Eingang der LUTs 802-3a und 802-3b können ausgelegt sein, Signal D1 zu empfangen, wohingegen der dritte Eingang der LUTs 802-4a und 802-4b ausgelegt sein können, Signal C1 zu empfangen. Der Auswahlmultiplexer 810-1 kann durch das Eingangssignal C1 gesteuert werden, wohingegen der Auswahlmultiplexer 810-2 durch das Eingangssignal D1 gesteuert werden kann.
  • Die Logikzelle 800 kann ferner Auswahlmultiplexer 812-1, 812-2, 812-3, 814, eine Übertragskette 803, Ausgangsmultiplexer 816-1, 816-2, 816-3 und 816-4 und eine zugehörige Registerverschaltung 806 enthalten, die an allgemeine Leitverschaltung innerhalb der Vorrichtung 10 gekoppelt ist (siehe 1). Der Multiplexer 812-1 kann einen ersten (0) Eingang, der an den Ausgang der 4-LUT 802-1 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang der 4-LUT 802-2 gekoppelt ist, einen Steuereingang, der ein Eingangssignal E empfängt, und einen Ausgang aufweisen. Der Multiplexer 812-2 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 810-1 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 810-2 gekoppelt ist, einen Steuereingang, der ein Eingangssignal E empfängt, und einen Ausgang aufweisen. Der Multiplexer 812-3 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 810-1 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 810-2 gekoppelt ist, einen Steuereingang, der ein Eingangssignal F empfängt, und einen Ausgang aufweisen. Der Multiplexer 814 kann einen ersten (0) Eingang, der an den Ausgang des Multiplexers 812-1 gekoppelt ist, einen zweiten (1) Eingang, der an den Ausgang des Multiplexers 812-2 gekoppelt ist, einen Steuereingang, der ein Eingangssignal F empfängt, und einen Ausgang aufweisen.
  • Die Übertragskette 803 kann nur drei Volladdierschaltkreise 804-1, 804-2 und 804-3 enthalten. Jeder der Volladdierschaltkreise weist drei Eingangsanschlüsse (z. B. zwei normale Eingangsports und einen Übertrags-Eingangsport) und zwei Ausgangsanschlüsse (z. B. einen Summenport und einen Übertrags-Ausgangsport) auf. Der Volladdierer 804-1 kann einen ersten Addierereingang, der an einen gemeinsam genutzten Ausgangspfad 820-4b' gekoppelt ist, der direkt von der LUT 802-4b einer vorangehenden Logikzelle 800 geleitet ist, einen zweiten Addierereingang, der über einen Verbindungspfad 820-1a direkt mit dem Ausgang der LUT 802-1 verbunden ist, einen Übertragseingang, der ein Signal übertrag_ein von der vorangehenden Logikzelle empfängt, einen Summenausgang und einen Übertragsausgang aufweisen.
  • Bei diesem Beispiel wird angenommen, dass mehrere Logikzellen 800 in einer Kette in Reihe verbunden sein können, sodass die Übertragskette Übertragssignale von einer Logikzelle an die nächste weiterleitet.
  • Der Volladdierer 804-2 kann einen ersten Addierereingang, der über einen direkten Verbindungspfad 820-2 direkt mit dem Ausgang der 4-LUT 802-2 verbunden ist, einen zweiten Addierereingang, der über einen direkten Verbindungspfad 820-3a direkt mit dem Ausgang der LUT 802-3a verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 804-1 verbunden ist, einen Summenausgang und einen Übertragsausgang aufweisen. Der Volladdierer 804-3 kann einen ersten Addierereingang, der über einen direkten Verbindungspfad 820-3b direkt mit dem Ausgang der LUT 802-3b verbunden ist, einen zweiten Addierereingang, der über einen direkten Verbindungspfad 820-4a direkt mit dem Ausgang der LUT 802-4a verbunden ist, einen Übertragseingang, der mit dem Übertragsausgang des Addierers 504-2 verbunden ist, einen Summenausgang und einen Übertragsausgang aufweisen, an dem ein Signal übertrag aus an eine nachfolgende Logikzelle 800 in der Kette weitergeleitet wird. Die Ausgabe der LUT 802-4b kann über einen direkten Leitpfad 820-4b direkt in eine nachfolgende Logikzelle 800 in der Kette eingespeist werden.
  • Der Ausgangsmultiplexer 816-1 kann ausgelegt sein, zwischen der Summenausgabe des Volladdierers 804-1 und der Ausgabe des Multiplexers 812-1 auszuwählen. Der Ausgangsmultiplexer 816-2 kann ausgelegt sein, zwischen dem Eingangssignal A und der Ausgabe des Multiplexers 814 auszuwählen. Der Ausgangsmultiplexer 816-3 kann ausgelegt sein, zwischen der Summenausgabe des Volladdierers 804-2 und dem Eingangssignal B auszuwählen. Der Ausgangsmultiplexer 816-4 kann ausgelegt sein, zwischen der Summenausgabe des Volladdierers 804-3 und der Ausgabe des Multiplexers 812-3 auszuwählen.
  • Mit einer derartigen Konfiguration kann die 3-Bit-Übertragskette 503 weiterhin wie ein 2-Bit-Ripple-Carry-Addierer arbeiten, aber ist fähig, eine 3-Bit- oder 4-Bit-Addition zu unterstützen und auch Soft-Multiplizierer zu implementieren. Die direkten Verbindungspfade 820-3a, 820-3b, 820-4a und 820-4b vom Ausgang der 3-LUTs 502 zu den Volladdierern 504 ermöglichen der Logikzelle 800, die erhöhe Anzahl von internen Volladdierern zu verwenden und zu nutzen, um verbesserte arithmetische Dichten mit minimalen Kosten bereitzustellen. Falls gewünscht kann ein beliebiger oder mehrere der drei Volladdierer in der Übertragskette 803 übersprungen werden (z. B. kann nur einer der drei Volladdierer verwendet werden, nur zwei der drei Volladdierer können verwendet werden oder alle drei der Volladdierer können verwendet werden).
  • Die Beispiele von 5-8, in denen eine Logikzelle mit drei Volladdierschaltkreisen (wobei die Anzahl von Volladdierschaltkreisen nur einer weniger als die Anzahl von 4-LUTs in der Logikzelle ist) oder vier Volladdierschaltkreisen (wobei die Anzahl von Volladdierschaltkreisen gleich der Anzahl von LUTs mit 4 Eingängen in der Logikzelle ist oder gleich der Hälfte der Anzahl von LUTs mit 3 Eingängen in der Logikzelle ist) bereitgestellt wird, sind nur veranschaulichend. Im Allgemeinen kann eine Logikzelle mit mehr als zwei Volladdierern, drei oder mehr Volladdierern, vier oder mehr Volladdierern, fünf oder mehr Volladdierern, sechs oder mehr Volladdierern, sieben oder mehr Volladdierern, acht oder mehr Volladdierern oder einer beliebigen geeigneten Anzahl von Volladdierern bereitgestellt werden, um die gewünschte arithmetische/rechnerische Dichte bereitzustellen. Die Anzahl von Volladdierern kann mindestens gleich oder mehr als ein Drittel der Gesamtanzahl an LUTs mit 3 Eingängen in der Logikzelle, mindestens gleich oder mehr als die Hälfte der Gesamtanzahl an LUTs mit 3 Eingängen in der Logikzelle, mindestens mehr als die Hälfte der Gesamtanzahl an LUTs mit 4 Eingängen in der Logikzelle, mindestens gleich oder mehr als die Gesamtanzahl von LUTs mit 4 Eingängen in der Logikzelle oder eine beliebige andere geeignete Anzahl sein, die eine Funktion der Anzahl von LUTs in der Logikzelle ist.
  • Die Ausführungsformen wurden bisher in Bezug auf integrierte Schaltkreise beschrieben. Die hierin beschriebenen Verfahren und Einrichtungen können in einen beliebigen geeigneten Schaltkreis eingebunden werden. Sie können zum Beispiel in zahlreiche Arten von Vorrichtungen wie programmierbare Logikvorrichtungen, anwendungsspezifische Standardprodukte (ASSPs) und anwendungsspezifische integrierte Schaltkreise (ASICs), Mikrocontroller, Mikroprozessoren, Zentralverarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs) usw. eingebunden werden. Beispiele programmierbarer Logikvorrichtungen enthalten programmierbare Anordnungslogik (PALs), programmierbare Logikanordnungen (PLAs), feldprogrammierbare Logikanordnungen (FPLAs), elektrisch programmierbare Logikvorrichtungen (EPLDs), elektrisch löschbare programmierbare Logikvorrichtungen (EEPLDs), Logikzellenanordnungen (LCAs), komplexe programmierbare Logikvorrichtungen (CPLDs) und feldprogrammierbare Gatearrays (FPGAs), um nur einige zu nennen.
  • Die in einer oder mehreren Ausführungsformen hierin beschriebene programmierbare Logikvorrichtung kann ein Teil eines Datenverarbeitungssystems (z. B. eines Rechenzentrums) sein, das eine oder mehrere der folgenden Komponenten enthält: einen Prozessor; Arbeitsspeicher; EA-Verschaltung; und periphere Vorrichtungen. Die Datenverarbeitung kann in einer breiten Vielfalt von Anwendungen verwendet werden, wie Computervernetzung, Datenvernetzung, Instrumentierung, Videoverarbeitung, digitaler Signalverarbeitung oder einer beliebigen andere geeigneten Anwendung, wo der Vorteil der Verwendung von programmierbarer oder neu programmierbarer Logik wünschenswert ist. Die programmierbare Logikvorrichtung kann verwendet werden, um eine Vielfalt von verschiedenen Logikfunktionen durchzuführen. Die programmierbare Logikvorrichtung kann zum Beispiel als ein Prozessor oder eine Steuerung konfiguriert sein, die in Zusammenarbeit mit einem Systemprozessor arbeitet. Die programmierbare Logikvorrichtung kann auch als ein Arbiter zum Vermitteln von Zugriff auf eine gemeinsam genutzte Ressource im Datenverarbeitungssystem verwendet werden. In noch einem anderen Beispiel kann die programmierbare Logikvorrichtung als eine Schnittstelle zwischen einem Prozessor und einer der anderen Komponenten im System ausgelegt sein.
  • Beispiele:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist ein integrierter Schaltkreis, umfassend: eine programmierbare Logikzelle, die umfasst: eine Vielzahl von Nachschlagetabellenschaltkreisen (LUT-Schaltkreisen), von denen jeder mehrere Eingänge aufweist, wobei die Vielzahl von Nachschlagetabellenschaltkreisen verwendet wird, um eine Multiplikationsoperation zu berechnen, und wobei mindestens einer der Vielzahl von Nachschlagetabellenschaltkreisen ausgelegt ist, beim Berechnen der Multiplikationsoperation nur an einer Teilmenge seiner mehreren Eingänge Eingangssignale zu empfangen; und eine Übertragskette, die eine Vielzahl von Volladdierschaltkreisen enthält, die ausgelegt ist, Signale von der Vielzahl von LUT-Schaltkreisen zu empfangen, wobei die Gesamtanzahl von Volladdierschaltkreisen in der Übertragskette mindestens größer als die Hälfte der Gesamtanzahl an LUT-Schaltkreisen in der programmierbaren Logikzelle ist, um die arithmetische Dichte der programmierbaren Logikzelle zu optimieren.
  • Beispiel 2 ist der integrierte Schaltkreis von Beispiel 1, wobei die Vielzahl von LUT-Schaltkreisen optional eine Vielzahl von Nachschlagetabellen (LUTs) mit 4 Eingängen umfasst und wobei es keine Multiplexer an den Eingängen der Vielzahl von LUT-Schaltkreisen innerhalb der programmierbaren Logikzelle gibt.
  • Beispiel 3 ist der integrierte Schaltkreis von Beispiel 2, wobei die Vielzahl von LUT-Schaltkreisen optional eine erste, eine zweite, eine dritte und eine vierte Nachschlagetabelle (LUT) mit 4 Eingängen umfasst.
  • Beispiel 4 ist der integrierte Schaltkreis von Beispiel 3, wobei: jede der vier LUTs mit 4 Eingängen optional eine erste Nachschlagetabelle (LUT) mit 3 Eingängen, eine zweite Nachschlagetabelle (LUT) mit 3 Eingängen und einen Multiplexingschaltkreis umfasst, der ausgelegt ist, Signale von der ersten und der zweiten LUT mit 3 Eingängen zu empfangen; die erste und die zweite Nachschlagetabelle mit 3 Eingängen der ersten LUT mit 4 Eingängen ausgelegt sind, ein erstes Eingangssignal zu empfangen; der Multiplexingschaltkreis der ersten LUT mit 4 Eingängen durch ein zweites Eingangssignal gesteuert wird, das vom ersten Eingangssignal verschieden ist; die erste und die zweite Nachschlagetabelle mit 3 Eingängen der zweiten LUT mit 4 Eingängen ausgelegt sind, das zweite Eingangssignal zu empfangen; und der Multiplexingschaltkreis der zweiten LUT mit 4 Eingängen durch das erste Eingangssignal gesteuert wird.
  • Beispiel 5 ist der integrierte Schaltkreis von Beispiel 4, wobei die Übertragskette optional vier Volladdierschaltkreise umfasst.
  • Beispiel 6 ist der integrierte Schaltkreis von Beispiel 5, wobei die vier Volladdierschaltkreise optional Eingänge aufweisen, die mit mindestens einigen der ersten und der zweiten LUT mit 3 Eingängen in der Vielzahl von LUT-Schaltkreisen direkt verbunden sind.
  • Beispiel 7 ist der integrierte Schaltkreis eines der Beispiele 1-6, wobei mindestens einer der Volladdierschaltkreise in der Übertragskette optional übersprungen wird.
  • Beispiel 8 ist der integrierte Schaltkreis eines der Beispiele 1-7, wobei die programmierbare Logikzelle optional ausgelegt ist, teilweise Ergebnisse für die Multiplikationsoperation zu generieren.
  • Beispiel 9 ist ein integrierter Schaltkreis, umfassend: eine erste Logikzelle, die eine erste Vielzahl von Nachschlagetabellenschaltkreisen (LUT-Schaltkreisen) mit 3 Eingängen und eine erste Vielzahl von Volladdierschaltkreisen enthält, wobei die Gesamtanzahl an Volladdierschaltkreisen in der ersten Logikzelle zumindest gleich der Hälfte der Gesamtanzahl an LUT-Schaltkreisen mit 3 Eingängen in der ersten Logikzelle ist; und eine in Reihe mit der ersten Logikzelle verbundene zweite Logikzelle, wobei die zweite Logikzelle eine zweite Vielzahl von Nachschlagetabellenschaltkreisen (LUT-Schaltkreisen) mit 3 Eingängen und eine zweite Vielzahl von Volladdierschaltkreisen enthält, wobei die Gesamtanzahl an Volladdierschaltkreisen in der zweiten Logikzelle zumindest gleich der Hälfte der Gesamtanzahl an LUT-Schaltkreisen mit 3 Eingängen in der zweiten Logikzelle ist und wobei mindestens ein Volladdierschaltkreis in der zweiten Vielzahl von Volladdierschaltkreisen innerhalb der zweiten Logikzelle direkt mit mindestens einem LUT-Schaltkreis mit 3 Eingängen in der ersten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen innerhalb der ersten Logikzelle verbunden ist.
  • Beispiel 10 ist der integrierte Schaltkreis von Beispiel 9, wobei die Gesamtanzahl von Volladdierschaltkreisen in der ersten Logikzelle optional gleich vier ist.
  • Beispiel 11 ist der integrierte Schaltkreis von Beispiel 10, wobei die Gesamtanzahl von LUT-Schaltkreisen mit 3 Eingängen in der ersten Logikzelle optional gleich acht ist und wobei keine Multiplexer am Eingang der LUT-Schaltkreise mit 3 Eingängen in der ersten Logikzelle gebildet sind.
  • Beispiel 12 ist der integrierte Schaltkreis eines der Beispiele 9-11, wobei die Volladdierschaltkreise in der ersten und der zweiten Logikzelle optional verwendet werden, um teilweise Ergebnisse einer Multiplikationsoperation zu berechnen.
  • Beispiel 13 ist der integrierte Schaltkreis eines der Beispiele 9-12, wobei jeder der ersten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen optional drei Eingänge aufweist und wobei nur zwei der drei Eingänge in mindestens einigen der ersten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen in der ersten Logikzelle verwendet werden.
  • Beispiel 14 ist der integrierte Schaltkreis eines der Beispiele 9-13, wobei mindestens einer der zweiten Vielzahl von Volladdierschaltkreisen in der zweiten Logikzelle optional übersprungen wird.
  • Beispiel 15 ist der integrierte Schaltkreis eines der Beispiele 9-14, wobei jeder der zweiten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen optional drei Eingänge aufweist und wobei nur einer der drei Eingänge in mindestens einigen der zweiten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen in der zweiten Logikzelle verwendet wird.
  • Beispiel 16 ist ein integrierter Schaltkreis, umfassend: eine programmierbare Logikzelle, die umfasst: eine erste Nachschlagetabelle und Addierverschaltung, die betreibbar sind, um eine erste arithmetische Dichte bereitzustellen; und eine zweite Nachschlagetabelle und Addierverschaltung, die betreibbar sind, um eine zweite arithmetische Dichte bereitzustellen, die größer als die erste arithmetische Dichte ist.
  • Beispiel 17 ist der integrierte Schaltkreis von Beispiel 16, wobei die zweite arithmetische Dichte optional das Zweifache der ersten arithmetischen Dichte ist.
  • Beispiel 18 ist der integrierte Schaltkreis eines der Beispiele 16-17, wobei die programmierbare Logikzelle optional nur drei Volladdierschaltkreise enthält.
  • Beispiel 19 ist der integrierte Schaltkreis eines der Beispiele 16-18, wobei die erste Nachschlagetabellenverschaltung optional zwei Nachschlagetabellen mit 4 Eingängen umfasst und wobei die zweite Nachschlagetabellenverschaltung optional vier Nachschlagetabellen mit 3 Eingängen umfasst.
  • Beispiel 20 ist der integrierte Schaltkreis von Beispiel 19, wobei die erste und die zweite Nachschlagetabelle und Addierverschaltung optional eine Addiererkette enthalten und wobei zumindest einige der vier Nachschlagetabellen mit 3 Eingängen in der zweiten Nachschlagetabellenverschaltung Ausgänge aufweisen, die direkt mit der Addiererkette verbunden sind.
  • Beispielsweise können alle optionalen Merkmale der oben beschriebenen Einrichtung auch in Bezug auf das hierin beschriebene Verfahren oder den hierin beschriebenen Prozess implementiert werden. Das Vorstehende ist lediglich veranschaulichend für die Prinzipien dieser Offenbarung und verschiedene Modifikationen können von Fachleuten vorgenommen werden. Die vorstehenden Ausführungsformen können einzeln oder in beliebiger Kombination implementiert werden.

Claims (25)

  1. Integrierter Schaltkreis, umfassend: eine programmierbare Logikzelle, die umfasst: eine Vielzahl von Nachschlagetabellenschaltkreisen (LUT-Schaltkreisen), von denen jeder mehrere Eingänge aufweist, wobei die Vielzahl von Nachschlagetabellenschaltkreisen verwendet wird, um eine Multiplikationsoperation zu berechnen, und wobei mindestens einer der Vielzahl von Nachschlagetabellenschaltkreisen ausgelegt ist, beim Berechnen der Multiplikationsoperation nur an einer Teilmenge seiner mehreren Eingänge Eingangssignale zu empfangen; und eine Übertragskette, die eine Vielzahl von Volladdierschaltkreisen enthält, die ausgelegt ist, Signale von der Vielzahl von LUT-Schaltkreisen zu empfangen, wobei die Gesamtanzahl von Volladdierschaltkreisen in der Übertragskette mindestens größer als die Hälfte der Gesamtanzahl an LUT-Schaltkreisen in der programmierbaren Logikzelle ist, um die arithmetische Dichte der programmierbaren Logikzelle zu optimieren.
  2. Integrierter Schaltkreis nach Anspruch 1, wobei die Vielzahl von LUT-Schaltkreisen eine Vielzahl von Nachschlagetabellen (LUTs) mit 4 Eingängen umfasst und wobei es keine Multiplexer an den Eingängen der Vielzahl von LUT-Schaltkreisen innerhalb der programmierbaren Logikzelle gibt.
  3. Integrierter Schaltkreis nach Anspruch 2, wobei die Vielzahl von LUT-Schaltkreisen eine erste, eine zweite, eine dritte und eine vierte Nachschlagetabelle (LUT) mit 4 Eingängen umfasst.
  4. Integrierter Schaltkreis nach Anspruch 3, wobei: jede der vier LUTs mit 4 Eingängen eine erste Nachschlagetabelle (LUT) mit 3 Eingängen, eine zweite Nachschlagetabelle (LUT) mit 3 Eingängen und einen Multiplexingschaltkreis umfasst, der ausgelegt ist, Signale von der ersten und der zweiten LUT mit 3 Eingängen zu empfangen; die erste und die zweite Nachschlagetabelle mit 3 Eingängen der ersten LUT mit 4 Eingängen ausgelegt sind, ein erstes Eingangssignal zu empfangen; der Multiplexingschaltkreis der ersten LUT mit 4 Eingängen durch ein zweites Eingangssignal gesteuert wird, das vom ersten Eingangssignal verschieden ist; die erste und die zweite Nachschlagetabelle mit 3 Eingängen der zweiten LUT mit 4 Eingängen ausgelegt sind, das zweite Eingangssignal zu empfangen; und der Multiplexingschaltkreis der zweiten LUT mit 4 Eingängen durch das erste Eingangssignal gesteuert wird.
  5. Integrierter Schaltkreis nach Anspruch 4, wobei die Übertragskette vier Volladdierschaltkreise umfasst.
  6. Integrierter Schaltkreis nach Anspruch 5, wobei die vier Volladdierschaltkreise Eingänge aufweisen, die mit mindestens einigen der ersten und der zweiten LUT mit 3 Eingängen in der Vielzahl von LUT-Schaltkreisen direkt verbunden sind.
  7. Integrierter Schaltkreis nach einem der Ansprüche 1-6, wobei mindestens einer der Volladdierschaltkreise in der Übertragskette übersprungen wird.
  8. Integrierter Schaltkreis nach einem der Ansprüche 1-7, wobei die programmierbare Logikzelle ausgelegt ist, teilweise Ergebnisse für die Multiplikationsoperation zu generieren.
  9. Integrierter Schaltkreis nach einem der Ansprüche 1-8, wobei jeder LUT-Schaltkreis in der Vielzahl von LUT-Schaltkreisen ferner einen Multiplexer enthält.
  10. Integrierter Schaltkreis, umfassend: eine erste Logikzelle, die eine erste Vielzahl von Nachschlagetabellenschaltkreisen (LUT-Schaltkreisen) mit 3 Eingängen und eine erste Vielzahl von Volladdierschaltkreisen enthält, wobei die Gesamtanzahl an Volladdierschaltkreisen in der ersten Logikzelle zumindest gleich der Hälfte der Gesamtanzahl an LUT-Schaltkreisen mit 3 Eingängen in der ersten Logikzelle ist; und eine in Reihe mit der ersten Logikzelle verbundene zweite Logikzelle, wobei die zweite Logikzelle eine zweite Vielzahl von Nachschlagetabellenschaltkreisen (LUT-Schaltkreisen) mit 3 Eingängen und eine zweite Vielzahl von Volladdierschaltkreisen enthält, wobei die Gesamtanzahl an Volladdierschaltkreisen in der zweiten Logikzelle zumindest gleich der Hälfte der Gesamtanzahl an LUT-Schaltkreisen mit 3 Eingängen in der zweiten Logikzelle ist und wobei mindestens ein Volladdierschaltkreis in der zweiten Vielzahl von Volladdierschaltkreisen innerhalb der zweiten Logikzelle direkt mit mindestens einem LUT-Schaltkreis mit 3 Eingängen in der ersten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen innerhalb der ersten Logikzelle verbunden ist.
  11. Integrierter Schaltkreis nach Anspruch 10, wobei die Gesamtanzahl von Volladdierschaltkreisen in der ersten Logikzelle gleich vier ist.
  12. Integrierter Schaltkreis nach Anspruch 11, wobei die Gesamtanzahl von LUT-Schaltkreisen mit 3 Eingängen in der ersten Logikzelle gleich acht ist und wobei keine Multiplexer am Eingang der LUT-Schaltkreise mit 3 Eingängen in der ersten Logikzelle gebildet sind.
  13. Integrierter Schaltkreis nach einem der Ansprüche 10-12, wobei die Volladdierschaltkreise in der ersten und der zweiten Logikzelle verwendet werden, um teilweise Ergebnisse einer Multiplikationsoperation zu berechnen.
  14. Integrierter Schaltkreis nach einem der Ansprüche 10-13, wobei jeder der ersten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen drei Eingänge aufweist und wobei nur zwei der drei Eingänge in mindestens einigen der ersten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen in der ersten Logikzelle verwendet werden.
  15. Integrierter Schaltkreis nach einem der Ansprüche 10-14, wobei mindestens einer der zweiten Vielzahl von Volladdierschaltkreisen in der zweiten Logikzelle übersprungen wird.
  16. Integrierter Schaltkreis nach einem der Ansprüche 10-15, wobei jeder der zweiten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen drei Eingänge aufweist und wobei nur einer der drei Eingänge in mindestens einigen der zweiten Vielzahl von LUT-Schaltkreisen mit 3 Eingängen in der zweiten Logikzelle verwendet wird.
  17. Integrierter Schaltkreis, umfassend: eine programmierbare Logikzelle, die umfasst: eine erste Nachschlagetabelle und Addierverschaltung, die betreibbar sind, um eine erste arithmetische Dichte bereitzustellen; und eine zweite Nachschlagetabelle und Addierverschaltung, die betreibbar sind, um eine zweite arithmetische Dichte bereitzustellen, die größer als die erste arithmetische Dichte ist.
  18. Integrierter Schaltkreis nach Anspruch 17, wobei die zweite arithmetische Dichte das Zweifache der ersten arithmetischen Dichte ist.
  19. Integrierter Schaltkreis nach einem der Ansprüche 17-18, wobei die programmierbare Logikzelle nur drei Volladdierschaltkreise enthält.
  20. Integrierter Schaltkreis nach einem der Ansprüche 17-19, wobei die erste Nachschlagetabellenverschaltung zwei Nachschlagetabellen mit 4 Eingängen umfasst und wobei die zweite Nachschlagetabellenverschaltung vier Nachschlagetabellen mit 3 Eingängen umfasst.
  21. Integrierter Schaltkreis nach Anspruch 20, wobei die erste und die zweite Nachschlagetabelle und Addierverschaltung eine Addiererkette enthalten und wobei zumindest einige der vier Nachschlagetabellen mit 3 Eingängen in der zweiten Nachschlagetabellenverschaltung Ausgänge aufweisen, die direkt mit der Addiererkette verbunden sind.
  22. Integrierter Schaltkreis nach einem der Ansprüche 17-20, wobei die erste Nachschlagetabelle und Addierverschaltung und die zweite Nachschlagetabelle und Addierverschaltung die gleiche Anzahl von Nachschlagetabellenschaltkreisen mit 4 Eingängen aufweisen.
  23. Integrierter Schaltkreis, umfassend: eine Vielzahl von programmierbaren Logikzellen, von denen jede umfasst: erste Mittel zum Bereitstellen einer ersten arithmetischen Dichte; und zweite Mittel zum Bereitstellen einer zweiten arithmetischen Dichte, die größer als die erste arithmetische Dichte ist.
  24. Integrierter Schaltkreis nach Anspruch 23, wobei die zweite arithmetische Dichte das Zweifache der ersten arithmetischen Dichte ist.
  25. Integrierter Schaltkreis nach einem der Ansprüche 22-23, wobei jede der Vielzahl von programmierbaren Logikzellen nur drei Volladdierschaltkreise enthält.
DE102020111904.6A 2019-06-06 2020-05-04 Logikschaltkreise mit erhöhten arithmetischen dichten Pending DE102020111904A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/434,088 US10715144B2 (en) 2019-06-06 2019-06-06 Logic circuits with augmented arithmetic densities
US16/434,088 2019-06-06

Publications (1)

Publication Number Publication Date
DE102020111904A1 true DE102020111904A1 (de) 2020-12-10

Family

ID=67906226

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020111904.6A Pending DE102020111904A1 (de) 2019-06-06 2020-05-04 Logikschaltkreise mit erhöhten arithmetischen dichten

Country Status (2)

Country Link
US (1) US10715144B2 (de)
DE (1) DE102020111904A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11768661B2 (en) * 2019-12-27 2023-09-26 Intel Corporation Efficient logic blocks architectures for dense mapping of multipliers
CN111258538B (zh) * 2020-01-13 2023-07-21 电子科技大学 一种基于fpga的大位宽高性能加法器电路
US11037069B1 (en) * 2020-01-17 2021-06-15 Tegze P. Haraszti Method for creating gates and circuits for greatly improved computing apparatus by using symbol transformer
WO2023129261A1 (en) * 2021-12-30 2023-07-06 Microsoft Technology Licensing, Llc. Using and/or reduce carry chains on programmable hardware

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6288570B1 (en) 1993-09-02 2001-09-11 Xilinx, Inc. Logic structure and circuit for fast carry
JPH07191831A (ja) 1993-12-27 1995-07-28 Fujitsu Ltd 演算装置
US5848285A (en) 1995-12-26 1998-12-08 Cypress Semiconductor Corporation Macrocell having a dual purpose input register for use in a logic device
US6427156B1 (en) * 1997-01-21 2002-07-30 Xilinx, Inc. Configurable logic block with AND gate for efficient multiplication in FPGAS
US6205458B1 (en) 1998-09-21 2001-03-20 Rn2R, L.L.C. Adder and multiplier circuits employing logic gates having discrete, weighted inputs and methods of performing combinatorial operations therewith
US6157209A (en) 1998-12-18 2000-12-05 Xilinx, Inc. Loadable up-down counter with asynchronous reset
US7236008B1 (en) 2001-05-06 2007-06-26 Altera Corporation Multiple size memories in a programmable logic device
GB2396718B (en) 2002-12-23 2005-07-13 Arithmatica Ltd A logic circuit and method for carry and sum generation and method of designing such a logic circuit
US7185035B1 (en) 2003-10-23 2007-02-27 Altera Corporation Arithmetic structures for programmable logic devices
US7565388B1 (en) * 2003-11-21 2009-07-21 Altera Corporation Logic cell supporting addition of three binary words
US7193436B2 (en) 2005-04-18 2007-03-20 Klp International Ltd. Fast processing path using field programmable gate array logic units
US7218139B1 (en) 2005-06-14 2007-05-15 Xilinx, Inc. Programmable integrated circuit providing efficient implementations of arithmetic functions
US7233168B1 (en) 2005-06-14 2007-06-19 Xilinx, Inc. Methods of setting and resetting lookup table memory cells
US7902864B1 (en) 2005-12-01 2011-03-08 Altera Corporation Heterogeneous labs
US7663400B1 (en) 2007-12-21 2010-02-16 Actel Corporation Flexible carry scheme for field programmable gate arrays
US8521801B2 (en) 2008-04-28 2013-08-27 Altera Corporation Configurable hybrid adder circuitry
US8392488B1 (en) 2009-09-11 2013-03-05 Altera Corporation Logic structures and methods supporting pipelined multi-operand adders
US8447798B2 (en) 2010-03-25 2013-05-21 Altera Corporation Look up table (LUT) structure supporting exclusive or (XOR) circuitry configured to allow for generation of a result using quaternary adders
US9342462B2 (en) 2013-10-31 2016-05-17 Oracle International Corporation Systems and methods for implementing low-latency lookup circuits using sparse hash functions

Also Published As

Publication number Publication date
US20190288688A1 (en) 2019-09-19
US10715144B2 (en) 2020-07-14

Similar Documents

Publication Publication Date Title
DE102020111904A1 (de) Logikschaltkreise mit erhöhten arithmetischen dichten
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE2822219C2 (de) Auf einem Chip integrierte Logikschaltungen
DE69721343T2 (de) FPGA mit Setz-/Rücksetzleitungen
DE69431732T2 (de) Architektur und Verbindungsschema für programmierbare logische Schaltungen
DE69028395T2 (de) Konfigurierbare zellenanordnung
DE69429073T2 (de) Logische struktur und schaltung für schnellen übertrag
DE69128888T2 (de) Programmierbares logisches feld
DE60025196T2 (de) Heterogenes programmierbares gatterfeld
DE3689834T2 (de) Feldprogrammierbare logische Vorrichtung mit programmierbarer Rückführung zur Bestimmung der Anzahl logischer Pegel.
DE4425552C2 (de) Gatterarray
DE69802927T2 (de) Redundanzschaltung für programmierbare logikanordnung mit verschachtelten eingangsschaltkreisen
DE602004009324T2 (de) Integrierte datenverarbeitungsschaltung mit mehreren programmierbaren prozessoren
DE69731700T2 (de) Arithmetischer Schaltkreis und arithmetisches Verfahren
DE2723821A1 (de) Programmierbare logische anordnung
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE112017004291T5 (de) Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation
DE602004006841T2 (de) Elektronischer schaltkreis mit einem feld programmierbarer logischer zellen
DE3688146T2 (de) Auslegungsverfahren zur Schaltungslogik mit Kaskodenspannung.
DE102004056738B3 (de) Programmierbare Logikzelle für eine programmierbare Logikanordnung, arithmetische Einheit und digitale Schaltungsanordnung
EP0257362A1 (de) Addierer
EP0130397B1 (de) Digitales Rechenwerk
EP0352549A2 (de) Carry-select-Addierer
DE69513278T2 (de) Kombinierte pla- und pal-schaltung
DE112012003335T5 (de) Integrierte Schaltung