DE112017004291T5 - Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation - Google Patents

Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation Download PDF

Info

Publication number
DE112017004291T5
DE112017004291T5 DE112017004291.7T DE112017004291T DE112017004291T5 DE 112017004291 T5 DE112017004291 T5 DE 112017004291T5 DE 112017004291 T DE112017004291 T DE 112017004291T DE 112017004291 T5 DE112017004291 T5 DE 112017004291T5
Authority
DE
Germany
Prior art keywords
input
signal
block
circuit
dsp
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
DE112017004291.7T
Other languages
English (en)
Inventor
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.)
Altera Corp
Original Assignee
Altera 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 Altera Corp filed Critical Altera Corp
Publication of DE112017004291T5 publication Critical patent/DE112017004291T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • 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/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4812Multiplexers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Nonlinear Science (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)
  • Logic Circuits (AREA)

Abstract

Es sind integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken bereitgestellt. Ein spezialisierter Verarbeitungsblock kann eine reale Additionsstufe und eine reale Multiplikationsstufe enthalten. Die Multiplikationsstufe kann gleichzeitig ihren Ausgang in die Additionsstufe und direkt in einen benachbarten spezialisierten Verarbeitungsblock einspeisen. Die Additionsstufe kann auch Summen- und Differenzausgänge parallel erzeugen. Eine Gruppe von vier solchen spezialisierten Verarbeitungsblöcken kann in einer Kette verbunden sein, um einen Radix-2 schnellen Fourier-Transformation-Butterfly zu implementieren. Mehrere Radix-2-Butterflies können gestapelt sein, um Butterflys einer Radix noch höherer Potenz zu bilden. Nach Wunsch kann der spezialisierte Verarbeitungsblock auch zu Implementieren einer komplexen Multiplikationsoperation verwendet werden. Drei oder vier spezialisierte Verarbeitungsblöcke können aneinander gekettet sein und gemeinsam mit einem oder mehreren Addierern außerhalb der spezialisierten Verarbeitungsblöcke können reale und imaginäre Teile eines komplexen Produkts generiert werden.

Description

  • Diese Anmeldung beansprucht die Priorität der US Patentanmeldung Nr. 15/277,955 , eingereicht am 27. September 2016, die hiermit in ihrer Gesamtheit zum Zwecke der Bezugnahme zitiert wird.
  • ALLGEMEINER STAND DER TECHNIK
  • Diese Erfindung bezieht sich im Allgemeinen auf integrierte Schaltung und insbesondere auf integrierte Schaltungen mit arithmetischem Gleitkomma-Schaltkreis.
  • Programmierbare Logikvorrichtungen (PLDs) enthalten Logikschaltkreis wie Nachschlagtabellen (Look-up Tables, LUTs) und auf Produktsumme basierende Logik, die gestaltet sind, einem Anwender zu ermöglichen, den Schaltkreis an die besonderen Bedürfnisse des Anwenders anzupassen. Diese konfigurierbare Logik ist typischerweise in einzelne Logikschaltungen unterteilt, die als Logikelemente (LEs) bezeichnet werden. Die LEs können zur Bildung größerer Logikblöcke gruppiert werden, die als Logikarrayblöcke (LABs) bezeichnet werden, die konfiguriert sein können, dieselben Ressourcen (z.B. Register und Speicher) zu teilen. Zusätzlich zu dieser konfigurierbaren Logik enthalten PLDs auch einen programmierbaren Verbindungs- oder Routing-Schaltkreis, der zum Verbinden der Eingänge und Ausgänge der LEs und LABs verwendet wird. Die Kombination dieses programmierbaren Logik- und Routing-Schaltkreises wird als weiche Logik bezeichnet.
  • Neben der weichen Logik können PLDs auch spezialisierte Verarbeitungsblöcke enthalten, die spezifische vordefinierte Logikfunktionen implementieren und somit nicht vom Anwender konfiguriert werden können. Solche spezialisierten Verarbeitungsblöcke können eine Konzentration eines Schaltkreises auf einer PLD enthalten, die teilweise oder vollständig hartverdrahtet ist, um eine oder mehrere spezifische Aufgaben durchzuführen, wie eine logische oder eine mathematische Operation. Beispiele von Strukturen, die allgemein in solchen spezialisierten Verarbeitungsblöcken implementiert sind, enthalten: Addierer, Multiplizierer, arithmetische Logikeinheiten (Arithmetic Logic Units, ALUs), Barrel-Shifter, verschiedene Speicherelemente (wie FIFO/LIFO/SIPO/RAM/ROM/CAM-Blöcke und Registerdateien), Logische UND/NUND/ODER/NODER Arrays usw. oder Kombinationen davon.
  • Eine besonders nützliche Art eines spezialisierten Verarbeitungsblocks, der auf PLDs bereitgestellt ist, ist ein Digitalsignalverarbeitungs-, (Digital Signal Processing, DSP) Block. Eine allgemeine Anwendung für den DSP-Block ist eine Unterstützung einer schnellen Fourier-Transformation (Fast Fourier Transform, FFT) und ähnlicher arithmetischer Operationen. Zum Beispiel beinhaltet der Cooley-Tukey FFT-Algorithmus ein rekursives Aufbrechen der FFT-Operation in kleinere diskrete Fourier-Transformationen (DFTs), die dann unter Verwendung einer „Butterfly“-Berechnung kombiniert werden können. Im Radix-2-Fall, wo die Operation zwei komplexe Eingänge empfängt und in zwei kleinere Teiltransformationen aufgebrochen wird, erfordert die Butterfly-Berechnung sechs reale Operationen vom Additionstyp und vier reale Multiplikationsoperationen (d.h. das Verhältnis von Addition zu Multiplikation ist 1,5). Ein herkömmlicher DSP-Block enthält jedoch nur einen Multiplizierer und nur einen Addierer (d.h. das Verhältnis von Multiplizierern zu Addierern ist 1:1). Infolgedessen ist der herkömmliche DSP-Block nicht zur Durchführung von FFT-Operationen optimiert.
  • In diesem Kontext entstehen die hier beschriebenen Ausführungsformen.
  • KURZDARSTELLUNG
  • Diese bezieht sich im Allgemeinen auf integrierte Schaltungen und insbesondere auf programmierbare integrierte Schaltungen, die spezialisierte Verarbeitungsblöcke enthalten. Die spezialisierten Verarbeitungsblöcke können zumindest teilweise hartverdrahtete Blöcke zur Unterstützung komplexer arithmetischer Operationen sein und werden manchmal als Digitalsignalverarbeitungs-, (DSP), Blöcke bezeichnet.
  • Gemäß einer Ausführungsform kann jeder DSP-Block einen ersten Eingangsanschluss zum Empfangen eines ersten Eingangssignals, einen zweiten Eingangsanschluss zum Empfangen eines zweiten Eingangssignals, einen dritten Eingangsanschluss zum Empfangen eines dritten Eingangssignals, einen vierten Eingangsanschluss zum Empfangen eines vierten Eingangssignals von einem vorangehenden benachbarten DSP-Block in Anordnungen, wo mehrere DSP-Blöcke in einer Kette verbunden sind, eine Multipliziererschaltung, eine Addiererschaltung und erste, zweite und dritte Ausgänge enthalten. Die Addiererschaltung kann ein hybrider Addierer sein, der sowohl ein Summensignal beim ersten Ausgang des DSP-Blocks als auch ein Differenzsignal beim zweiten Ausgang des DSP-Blocks parallel generieren kann. Der Multiplizierer kann die ersten und zweiten Eingänge von ersten und zweiten Eingangsanschlüssen empfangen und kann ein entsprechendes Produktsignal generieren.
  • Der DSP-Block kann ferner erste, zweite und dritte Routing-Multiplexer enthalten. Der erste Routing-Multiplexer kann einen ersten Eingang enthalten, der das Produktsignal vom Multiplizierer empfängt, einen zweiten Eingang, der das dritte Eingangssignal empfängt, einen dritten Eingang, der das zweite Eingangssignal über einen Umgehungspfad empfängt, einen vierten Eingang, der das vierte Eingangssignal empfängt, und einen Ausgang, der die Addiererschaltung beschickt aufweisen. Der zweiten Routing-Multiplexer kann einen ersten Eingang, der das dritte Eingangssignal empfängt, einen zweiten Eingang, der ein viertes Eingangssignal empfängt, einen dritten Eingang, der an den ersten Ausgang des DSP-Blocks gekoppelt ist, und einen Ausgang, der auch die Addiererschaltung beschickt, aufweisen. Der dritte Routing-Multiplexer kann einen ersten Eingang, der das Produktsignal direkt vom Multiplizierer empfängt, einen zweiten Eingang, der das dritte Eingangssignal empfängt, einen dritten Eingang, der an den ersten Ausgang des DSP-Blocks über einen Rückkopplungspfad gekoppelt ist, und einen Ausgang, der als der dritte Ausgang des DSP-Blocks dient, aufweisen. Der dritte Ausgang des DSP-Blocks kann direkt mit einem folgenden benachbarten DSP-Block in Anordnungen verbunden sein, wo mehrere DSP-Blöcke in einer Kette verbunden sind.
  • In einer geeigneten Anordnung können vier DSP-Blöcke in einer Kette verbunden sein, um einen Radix-2 schnellen Fourier-Transformations-, (FFT), Schaltkreis zu implementieren. Die vier DSP-Blöcke können einen ersten komplexen Eingang X (der eine reale Komponente Xreal und eine imaginäre Komponente Ximag enthält), einen zweiten komplexen Eingang Y (der eine reale Komponente Yreal und eine imaginäre Komponente Yimag enthält) und einen komplexen Drehfaktor W (der eine reale Komponente Wreal und eine imaginäre Komponente Wimag enthält) empfangen und entsprechende komplexe obere und untere Butterfly-Signale ausgeben. Insbesondere können der erste und dritte DSP-Block in der Kette die komplexen oberen Butterfly-Signale ausgeben, während der zweite und vierte DSP-Block in der Kette die komplexen unteren Butterfly-Signale für die Radix-2 FFT ausgeben können. Mehrere Radix-2 Butterflies, die auf diese Weise implementiert sind, können zur Bildung von Radix-Butterflies noch höherer Potenz kombiniert werden.
  • In einer anderen geeigneten Anordnung können zumindest drei DSP-Blöcke in einer Kette verbunden werden, um einen komplexen Multiplizierer-Schaltkreis zu implementieren, der erste und zweite komplexe Eingangssignale empfängt und ein komplexes Produktausgangssignal ausgibt. Der komplexe Multipliziererschaltkreis kann einen vierten DSP-Block benötigen, um eine Karatsuba-Zerlegung zum Generieren des komplexen Ausgangssignals zu implementieren. Die Karatsuba-Zerlegung kann auch zwei Addierer erfordern, die von den vier DSP-Blöcken getrennt sind. In einer anderen Ausführungsform können nur die drei DSP-Blöcke erforderlich sein, um ein Gaußsches Verfahren zum Generieren des komplexen Ausgangssignals zu implementieren. Das Gaußsche Verfahren kann entweder drei Addierer oder nur einen Addierer extern zu den drei DSP-Blöcken in der Kette erfordern.
  • Weitere Merkmale der Erfindung, ihr Wesen und verschiedene Vorteile gehen aus den beiliegenden Zeichnungen und der folgenden ausführlichen Beschreibung hervor.
  • Figurenliste
    • 1 ist ein Diagramm einer veranschaulichenden programmierbaren integrierten Schaltung gemäß einer Ausführungsform.
    • 2 ist ein Diagramm eines veranschaulichenden spezialisierten Verarbeitungsblocks gemäß einer Ausführungsform.
    • 3 ist ein Diagramm einer veranschaulichenden Radix-2 Butterfly-Operation gemäß einer Ausführungsform.
    • 4 ist ein Diagramm, das zeigt, wie eine Kette spezialisierter Verarbeitungsblöcke der in 2 dargestellten Art zur Unterstützung der Radix-2 Butterfly-Operation gemäß einer Ausführungsform verwendet werden kann.
    • 5 ist ein Diagramm, das eine grafische Darstellung einer Radix-2 Butterfly-Operation gemäß einer Ausführungsform zeigt.
    • 6 ist ein Diagramm, das eine grafische Darstellung einer Radix-4 Butterfly-Operation gemäß einer Ausführungsform zeigt.
    • 7 - 9 sind Diagramme, die verschiedene beispielhafte Schaltungsimplementierungen einer komplexen Multiplikationsoperation gemäß einer Ausführungsform zeigen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die hier präsentierten Ausführungsformen beziehen sich auf integrierte Schaltungen und insbesondere auf Digitalsignalprozessoren, die zum Durchführen komplexer arithmetischer Operationen auf einer integrierten Schaltung verwendet werden können. Fachleuten auf dem Gebiet wird klar sein, dass die vorliegenden beispielhaften Ausführungsformen ohne einige oder alle dieser spezifischen Einzelheiten in die Praxis umgesetzt werden können. In anderen Fällen wurden allgemein bekannte Operationen nicht im Detail beschrieben, um die vorliegenden Ausführungsformen nicht unnötig zu verschleiern.
  • Eine veranschaulichende Ausführungsform einer integrierten Schaltung wie einer programmierbaren Logikvorrichtung (PLD) 100 ist in 1 dargestellt. Wie in 1 gezeigt, kann die programmierbare Logikvorrichtung (PLD) ein zweidimensionales Array von Funktionsblöcken enthalten, enthaltend Logikarrayblöcke (LABs) 110 und andere Funktionsblöcke, wie Direktzugriffspeicher-, (Random Access Memory, RAM), Blöcke 130 und spezialisierte Verarbeitungsblöcke wie spezialisierte Verarbeitungsblöcke (Specialized Processing Block, SPB) 120. Funktionsblöcke wie LABs 110 können kleinere programmierbare Regionen (z.B. Logikelemente, konfigurierbare Logikblöcke oder adaptive Logikmodule) enthalten, die Eingangssignale empfangen und übliche Funktionen an den Eingangssignalen durchführen, um Ausgangssignale zu erzeugen.
  • Die programmierbare Logikvorrichtung 100 kann programmierbare Speicherelemente enthalten. Speicherelemente können mit Konfigurationsdaten (auch als Programmierdaten bezeichnet) unter Verwendung von Eingangs-/Ausgangselementen (Input/Output Elements, IOEs) 102 geladen werden. Sobald die Speicherelemente geladen sind, stellen sie jeweils ein entsprechendes statisches Steuersignal bereit, das die Operation eines zugehörigen Funktionsblocks steuert (z.B. LABs 110, SPB 120, RAM 130, oder Eingangs-/Ausgangselemente 102).
  • In einem typischen Szenario werden die Ausgänge der geladenen Speicherelemente an die Gates von Metalloxid-Halbleitertransistoren in einem Funktionsblock angelegt, um gewisse Transistoren ein- oder auszuschalten und dadurch die Logik im Funktionsblock, enthaltend die Routing-Pfade, zu konfigurieren. Programmierbare Logikschaltungselemente, die auf diese Weise gesteuert werden können, enthalten Teile von Multiplexern (z.B. Multiplexer, die zur Bildung von Routing-Pfaden in Zwischenverbindungsschaltungen verwendet werden), Nachschlagtabellen, Logikarrays, UND-, ODER-, NUND- und NODER-Logik-Gates, Durchgangs-Gates, usw.
  • Die Speicherelemente können sämtliche geeignete flüchtige und/oder nicht flüchtige Speicherstrukturen verwenden, wie Direktzugriffspeicher-, (RAM), Zellen, Sicherungen, Antischmelzsicherungen, programmierbare Nur-Lese-Speicher-Speicherzellen, maskenprogrammierte und laserprogrammierte Strukturen, mechanische Speichervorrichtungen (z.B. enthaltend lokalisierte mechanische Resonatoren), mechanisch betriebenen RAM (MODERAM), Kombinationen dieser Strukturen, usw. Da die Speicherelemente mit Konfigurationsdaten während der Programmierung geladen werden, werden die Speicherelemente manchmal als Konfigurationsspeicher, Konfigurations-RAM (CRAM), Konfigurationsspeicherelemente oder programmierbare Speicherelemente bezeichnet.
  • Zusätzlich kann die programmierbare Logikvorrichtung Eingangs-/Ausgangselemente (IOEs) 102 zum Treiben von Signalen aus der Vorrichtung 100 und zum Empfangen von Signalen von anderen Vorrichtungen haben. Eingangs-/Ausgangselemente 102 können einen parallelen Eingangs-/Ausgangsschaltkreis, einen seriellen Datensenderempfängerschaltkreis, einen Differentialempfänger- und -senderschaltkreis oder einen anderen Schaltkreis enthalten, der zum Verbinden einer integrierten Schaltung mit einer anderen integrierten Schaltung verwendet wird. Wie dargestellt, können Eingangs-/Ausgangselemente 102 um die Peripherie des Chips liegen.
  • Nach Wunsch kann die programmierbare Logikvorrichtung Eingangs-/Ausgangselemente 102 haben, die unterschiedlich angeordnet sind. Zum Beispiel können Eingangs-/Ausgangselemente 102 eine oder mehrere Spalten von Eingangs-/Ausgangselementen bilden, die irgendwo auf der programmierbaren Logikvorrichtung liegen können (z.B. gleichmäßig über die Breite der PLD verteilt sind). Nach Wunsch können Eingangs-/Ausgangselemente 102 eine oder mehrere Reihen von Eingangs-/Ausgangselementen bilden (z.B. über die Höhe der PLD verteilt sein). Alternativ können Eingangs-/Ausgangselemente 102 Inseln von Eingangs-/Ausgangselementen bilden, die über die Oberfläche der PLD verteilt sein können oder in ausgewählten Arealen Cluster bilden können.
  • Die PLD kann auch einen programmierbaren Zwischenverbindungsschaltkreis in der Form vertikaler Routing-Kanäle 140 (d.h. Zwischenverbindungen, die entlang einer vertikalen Achse der PLD 100 gebildet sind) und horizontale Routing-Kanäle 150 (d.h. Zwischenverbindungen, die entlang einer horizontalen Achse der PLD 100 gebildet sind) enthalten, wobei jeder Routing-Kanal zumindest eine Bahn enthält, um zumindest einen Draht zu verlegen. Nach Wunsch kann der Zwischenverbindungsschaltkreis Doppeldatenratenzwischenverbindungen und/oder Einzeldatenratenzwischenverbindungen enthalten.
  • Nach Wunsch können Routing-Drähte kürzer sein als die Gesamtlänge des Routing-Kanals. Ein Draht von Länge L kann L Funktionsblöcke überspannen. Zum Beispiel kann ein Draht der Länge Vier vier Blöcke überspannen. Drähte der Länge Vier in einem horizontalen Routing-Kanal können als „H4“-Drähte bezeichnet werden, während Drähte der Länge Vier in einem vertikalen Routing-Kanal als „V4“-Drähte bezeichnet werden können.
  • Verschiedene PLDs können verschiedene Funktionsblöcke haben, die mit einer unterschiedliche Anzahl von Routing-Kanälen verbunden sind. Eine dreiseitige Routing-Architektur ist in 1 gezeigt, wo Eingangs- und Ausgangsverbindungen an drei Seiten jedes Funktionsblocks zu den Routing-Kanälen vorhanden sind. Es ist auch beabsichtigt, dass andere Routing-Architekturen im Umfang der vorliegenden Erfindung enthalten sind. Beispiele für andere Routing-Architekturen enthalten 1-seitige, 1½ seitige, 2-seitige, und 4-seitige Routing-Architekturen.
  • In einer Direktansteuerungs-Routing-Architektur wird jeder Draht an einem einzigen logischen Punkt durch einen Treiber angesteuert. Der Treiber kann mit einem Multiplexer verknüpft sein, der ein Signal zur Ansteuerung auf dem Draht auswählt. Im Fall von Kanälen mit einer festgesetzten Anzahl von Drähten entlang ihrer Länge kann ein Treiber an jedem Anfangspunkt eines Drahts platziert werden.
  • Es ist zu beachten, dass andere Routing-Topologien, neben der Topologie des Zwischenverbindungsschaltkreises, die in 1 gezeigt ist, im Umfang der vorliegenden Erfindung enthalten sein sollen. Zum Beispiel kann die Routing-Topologie diagonale Drähte, horizontale Drähte und vertikale Drähte entlang verschiedener Pfade ihrer Ausdehnung enthalten, wie auch Drähte, die im Fall dreidimensionaler integrierter Schaltungen senkrecht zur Vorrichtungsebene sind, und der Treiber eines Drahtes kann an einem anderen Punkt als einem Ende eines Drahtes liegen. Die Routing-Topologie kann globale Drähte, die im Wesentlichen die gesamte PLD 100 überspannen, globale Teildrähte, wie Drähte, die einen Teil der PLD 100 überspannen, versetzte Drähte einer bestimmten Länge, kleinere lokale Drähte oder jede andere geeignete Zwischenverbindungsressourcenanordnung enthalten.
  • Überdies sollte klar sein, dass Ausführungsformen in jeder integrierten Schaltung implementiert sein können. Nach Wunsch können die Funktionsblöcke einer solchen integrierten Schaltung in mehreren Ebenen oder Schichten angeordnet sein, in welchen mehrere Funktionsblöcke zwischenverbunden sind, um noch größere Blöcke zu bilden. Andere Vorrichtungsanordnungen können Funktionsblöcke verwenden, die nicht in Reihen und Spalten angeordnet sind.
  • 2 ist ein Diagramm, das zeigt, wie ein spezialisierter Verarbeitungsblock wie Block 120 verschiedene arithmetische Gleitkomma-Operatorschaltungen wie eine Gleitkomma-Multiplikationsschaltung 200 und eine Gleitkomma-Addiererschaltung 202, enthalten kann.
  • Gleitkommazahlen sind zur Darstellung realer Zahlen in wissenschaftlicher Notation in Rechensystemen üblich und gestaltet, einen großen Zahlenbereich und diverse Präzisionsanforderungen abzudecken. Der IEEE 754 Standard wird allgemein für Gleitkommazahlen verwendet. Eine Gleitkommazahl enthält drei verschiedene Teile: (1) das Vorzeichen der Gleitkommazahl, (2) die Mantisse und (3) den Exponenten. Jeder dieser Teile kann durch eine Binärzahl dargestellt werden und im IEEE 754 Format verschiedene Bitgrößen abhängig von der Präzision haben.
  • Zum Beispiel erfordert eine Einzel-Präzisionsgleitkommazahl 32 Bits, die wie folgt verteilt sind: ein Vorzeichen-Bit (Bit 32), acht Exponenten-Bits (Bits [31:24]), und 23 Mantissen-Bits (Bits [23:1]). Eine Doppel-Präzisionsgleitkommazahl erfordert 64 Bits, die ein Vorzeichen-Bit (Bit 64), 11 Exponenten-Bits (Bits [63:53]), und 52 Mantissen-Bits (Bits [52:1]) enthalten. Das Beispiel von 2, in dem DSP-Block 120 Einzel-Präzisions-, 32-Bit Eingänge und Ausgänge unterstützt, ist nur veranschaulichend und dient nicht zur Einschränkung des Umfangs der vorliegenden Ausführungsformen. Im Allgemeinen kann DSP-Block 120 konfiguriert sein, einen weiten Bereich von Präzisionen zu unterstützen (z.B. um 10-Bit Mantisse, 11-Bit Mantissen, 12-Bit Mantissen, 14-Bit Mantisse, 23-Bit Mantissen oder andere geeignete Mantissenbreiten zu unterstützen). In anderen geeigneten Ausführungsformen können Multiplizierer 200 und Addierer 202 alternativ arithmetische Festkommaschaltungen sein.
  • Im Allgemeinen kann der spezialisierte Verarbeitungsblock 120 eine Konzentration von Schaltkreisen enthalten, die teilweise oder vollständig hartverdrahtet sind, um eine oder mehrere spezifische Aufgaben durchzuführen, wie eine logische oder eine mathematische Operation. Der spezialisierte Verarbeitungsblock 120 kann auch eine oder mehrere spezialisierte Strukturen beinhalten, wie ein Array konfigurierbarer Speicherelemente. Eine besonders nützliche Art eines spezialisierten Verarbeitungsblocks, der auf programmierbaren Logikvorrichtungen (PLDs) bereitgestellt wurde, ist ein Digitalsignalverarbeitungs-, (DSP), Block, der zum Verarbeiten von Audiosignalen (als ein Beispiel) verwendet werden kann. Solche Blöcke können manchmal als Mehrfach-Akkumulations-, („MAC“), Blöcke bezeichnet werden, wenn sie Strukturen zum Durchführen von Multiplikationsoperationen, Summen und/oder Akkumulationen von Multiplikationsoperationen enthalten.
  • Die Implementierung einiger Anwendungen kann mehr als einen spezialisierten Verarbeitungsblock erfordern. Beispiele für solche Funktionen enthalten die Implementierung von Vektor-(Punktprodukt-) Operationen oder Produktsummenoperationen wie finite Impulsreaktions-, (FIR), Filter, schnelle Fourier-Transformations-, (FFT), Operationen, um einige zu nennen. Signale, die in einem bestimmten spezialisierten Verarbeitungsblock erzeugt und in einem anderen spezialisierten Verarbeitungsblock verbraucht werden, erfordern manchmal die Verwendung von Zwischenverbindungsressourcen außerhalb des spezialisierten Verarbeitungsblocks. Die Verwendung solcher Ressourcen kann im Sinne einer Verzögerung und eines Leistungsverbrauchs nicht effizient sein. Daher kann es wünschenswert sein, direkte Zwischenverbindungsressourcen zwischen benachbarten spezialisierten Verarbeitungsblöcken gemeinsam mit einem konfigurierbaren Zwischenverbindungsschaltkreis einzuführen, die Signale zu und von diesen direkten Zwischenverbindungsressourcen weiterleiten können.
  • Unter weiterer Bezugnahme auf 2 kann DSP-Block 120 ferner (zusätzlich zu Multiplizierer 200 und Addierer 202) Eingangsregister 204-1, 204-2 und 204-3, Ausgangsregister 206-1 und 206-2, und Routing-Multiplexer 208, 210 und 212 enthalten. Eingangsregister 204-1 kann ein erstes Eingangssignal In1 bei einem ersten Eingangsanschluss von Block 120 empfangen; Eingangsregister 204-2 kann ein zweites Eingangssignal In2 bei einem zweiten Eingangsanschluss von Block 120 empfangen; und Eingangsregister 204-3 kann ein drittes Eingangssignal In3 bei einem dritten Eingangsanschluss von Block 120 empfangen. Eingangssignale In1, In2 und In3 können zu den Eingangsanschlüssen von DSP-Block 120 über externe Zwischenverbindungsressourcen weitergeleitet werden.
  • Multiplizierer 200 kann einen ersten Eingang, der Signale vom ersten Eingangsregister 204-1 empfängt, einen zweiten Eingang, der Signale vom zweiten Eingangsregister 204-2 empfängt, und einen Ausgang, an dem ein entsprechendes Produktsignal generiert wird, haben. Multiplexer 208 kann einen ersten (1) Eingang, der das Produktsignal vom Multiplizierer 200 empfängt, einen zweiten (2) Eingang, der Signale direkt vom dritten Eingangsregister 204-3 empfängt, einen dritten (3) Eingang, der Signale direkt vom zweiten Eingangsregister 204-2 über Umgehungspfad 209 empfängt, einen vierten (4) Eingang, der ein viertes Eingangssignal In4 an einem vierten Eingangsanschluss von Block 120 empfängt, und einen Ausgang haben. Der vierte Eingangsanschluss kann direkt mit einem benachbarten DSP-Block 120 verbunden sein (z.B. kann Eingangssignal In4 über einen hartverdrahteten direkten Verbindungspfad 211 empfangen werden). Die Verwendung festgesetzter direkter Verbindungspfade zwischen benachbarten DSP-Blöcken trägt dazu bei, Routing-Komplexität für externe programmierbare Zwischenverbindungs-Routing-Ressourcen zu verringern, die sonst notwendig wäre, um Ausgangssignale von einem DSP-Block zu Eingängen eines anderen DSP-Blocks weiterzuleiten, wenn mehrere DSP-Blöcke 120 in einer Kette verbunden sind.
  • Multiplexer 210 kann einen ersten (1) Eingang, der Signale direkt vom dritten Eingangsregister 204-3 empfängt, einen zweiten (2) Eingang, der Eingangssignal In4 vom direkten Verbindungspfad 211 empfängt, einen dritten (3) Eingang, der Ausgangssignal Out1 vom Ausgangsregister 206-1 über Rückkopplungspfad 207-1 empfängt, und einen Ausgang haben.
  • Addierer 202 kann einen ersten Eingang, der Signale vom Ausgang von Multiplexer 208 empfängt, einen zweiten Eingang, der Signale vom Ausgang von Multiplexer 210 empfängt, einen ersten (+) Ausgang, auf dem eine entsprechende Summe bereitgestellt ist, und einen zweiten (-) Ausgang, auf dem eine entsprechende Differenz bereitgestellt ist, haben. Addiererschaltung 202 (manchmal als ein kombinierter oder hybrider Addierer bezeichnet), die zum gleichzeitigen Generieren von Summen- und Differenz-Gleitkomma-Signalen in dieser Weise imstande ist, ist in dem gemeinschaftlich übertragenen US Patent Nr. 8,645,449 beschrieben, das in seiner Gesamtheit zum Zwecke der Bezugnahme beschrieben wird. Der Summenausgang wird unter Verwendung des ersten Ausgangsregisters 206-1 zwischengespeichert, während der Differenzausgang unter Verwendung des zweiten Ausgangsregisters 206-2 zwischengespeichert wird. Register 206-1 hat einen Ausgang, an dem Ausgangssignal Out1 von Block 120 bereitgestellt ist, während Register 206-2 einen Ausgang hat, an dem Ausgangssignal Out2 von Block 120 bereitgestellt ist (d.h. die Ausgänge von Registern 206 können als Ausgangsanschlüsse von Block 120 dienen).
  • Multiplexer 212 kann einen ersten (1) Eingang, der direkt mit dem Ausgang von Multiplizierer 200 verbunden ist, einen zweiten (2) Eingang, der direkt mit dem Ausgang von Eingangsregister 204-3 verbunden ist, eine dritten (3) Eingang, der Signal Out1 über Rückkopplungspfad 207-2 empfängt, und einen Ausgang, an dem Ausgangssignal Out3 bereitgestellt ist, enthalten. Wenn mehrere DSP-Blöcke 120 in Reihe verbunden sind, kann Ausgangssignal Out3 direkt in einen folgenden DSP-Block über einen hartverdrahteten Pfad 211 eingespeist werden und soll als Eingangssignal In4 für den folgenden DSP-Block dienen.
  • Eingangsregister 204 (z.B. Register 204-1, 204-2 und 204-3) und Ausgangsregister 206 (z.B. Register 206-1 und 206-2) können unter Verwendung desselben Taktsignals oder unter Verwendung verschiedener Taktsignale gesteuert werden. Multiplexer 208, 210 und 212 können allgemein unter Verwendung unterschiedlicher Steuersignale gesteuert werden, um die gewünschte Routing-Konfiguration bereitzustellen. In der Konfiguration der beispielhaften Anordnung von 2 können Zwischenausgänge innerhalb von DSP-Block 120 gleichzeitig zu mehreren verschiedenen Zielorten weitergeleitet werden. Zum Beispiel kann der Ausgang von Multiplizierer 200 gleichzeitig zu beiden Multiplexern 208 und 212 weitergeleitet werden. Als ein anderes Beispiel kann der Ausgang von Register 204-3 auch gleichzeitig zu beiden Multiplexern 208 und 212 weitergeleitet werden. Als weiteres Beispiel kann Eingangssignal In4 gleichzeitig zu beiden Multiplexern 208 und 210 weitergeleitet werden. Gleichzeitige interne Routing-Verbindungen, die auf diese Weise gebildet werden, können dazu beitragen, Leistung und Leistungsdichte für DSP-Block 120 zu verbessern.
  • Gemäß einer Ausführungsform kann DSP-Block 120 der in Verbindung mit 2 beschriebenen Art zum Durchführen schneller Fourier-Transformations-, (FFT), Operationen geeignet sein. 3 zeigt den Datenfluss einer Radix-2 FFT Butterfly-Berechnung. „Butterfly“ bezieht sich auf einen Teil des FFT-Algorithmus, der die Ergebnisse kleinerer diskreter Fourier-Transformationen (DFT) in einer großen DFT kombiniert, oder umgekehrt. Dieser strukturelle Verlauf kann im Zusammenhang mit dem Cooley-Tukey FFT-Algorithmus oder dem Viterbi-Algorithmus (als Beispiele) auftreten. Ein Radix-2 Butterfly kann zum Konstruieren höherer Radix Butterflies (z.B. Radix-4 Butterflies, Radix-6 Butterflies, Radix-8 Butterflies, usw.) verwendet werden.
  • Wie in 3 dargestellt, kann der Radix-2 Butterfly zwei komplexe Eingänge X und Y empfangen. Der komplexe Eingang X hat einen realen Teil Xreal und einen imaginären Teil Ximag. Ebenso hat der komplexe Eingang Y einen realen Teil Yreal und einen imaginären Teil Yimag. Der Radix-2 Butterfly kann zwei entsprechende komplexe obere und untere Butterfly-Ausgänge BflyTop und BflyBot generieren, die beide einen realen Teil (d.h. BflyTopreal und BflyBotreal ) und einen imaginären Teil (d.h. BflyTopimag und BflyBotimag ) haben. Insbesondere kann Signal BflyTopreal durch Hinzufügen von Signalen Xreal und Yreal in Schritt 304-1 generiert werden, während Signal BflyTopimag durch Hinzufügen von Signalen Ximag und Yimag in Schritt 304-2 generiert werden kann.
  • In Schritt 304-3 kann Signal Yreal von Signal Xreal subtrahiert werden, um einen ersten Zwischendifferenzwert zu erhalten. In Schritt 304-4 kann Signal Yimag von Signal Ximag subtrahiert werden, um einen zweiten Zwischendifferenzwert zu erhalten. Diese Zwischendifferenzwerte können dann mit einem komplexen Drehfaktor W multipliziert und dann anschließend kombiniert werden, um die BflyBot Signale zu erzeugen. Der Drehfaktor kann einen realen Teil Wreal und einen imaginären Teil Wimag haben. Insbesondere kann der erste Zwischendifferenzwert um Faktor Wreal (in Schritt 306-1) skaliert werden, während der zweite Zwischendifferenzwert um Faktor Wimag (in Schritt 306-2) skaliert wird, deren Ergebnisse in Schritt 304-5 subtrahiert werden können, um Ausgang BflyBotreal zu generieren. Ebenso kann auch der erste Zwischendifferenzwert um Faktor Wimag (in Schritt 306-4) skaliert werden, während der zweite Zwischendifferenzwert um Faktor Wreal (in Schritt 306-3) skaliert wird, deren Ergebnisse in Schritt 304-6 addiert werden können, um Ausgang BflyBotimag zu generieren.
  • Laut Überprüfung enthält Radix-2 Butterfly-Fluss sechs reale Operationen vom Additionstyp (+/-) und vier reale Multiplikationsoperationen. Mit anderen Worten, FFT-Operationen erfordern ein 1,5 Verhältnis von Multiplizierern zu Addierern. Herkömmliche DSP-Blöcke enthielten jedoch nur ein 1:1 Verhältnis von Multiplizierern zu Addierern. Ein Implementieren eines FFT-Algorithmus unter Verwendung herkömmlicher DSP-Blöcke wäre daher ineffizient, insbesondere, wenn auch eine große Zahl breiter Busse (z.B. 32-Bit oder mehr breite Busse) in der Butterfly-Struktur vorhanden sind.
  • 4 zeigt eine geeignete Ausführungsform von DSP Schaltkreis 400, der konfiguriert ist, einen Radix-2 Butterfly zu unterstützen, während ein viel kleinerer Satz weicher Routing-Verbindungen im Vergleich zu einem herkömmlichen FFT Schaltkreis verwendet wird. Wie in 4 dargestellt, kann der DSP Schaltkreis 400 nur vier DSP-Blöcke 120 enthalten, die in einer Kette verbunden sind (z.B. DSP-Blöcke 120-1, 120-2" 120-3 und 120-4), und enthält somit insgesamt nur vier Multiplizierer 200 und vier Addierer 202. Die vier Additionsoperationen (z.B. Schritte 304-1, 304-2, 304-3 und 304-4 links der punktierten Linie 302 in 3) sind in den schraffierten Signalpfaden von 4 dargestellt, während die Multiplikationsoperationen (Schritte 304 und 306 rechts der punktierten Linie 302) durch gestrichelte Signalpfade dargestellt sind.
  • Insbesondere kann Bock 120-1 Signal Ximag an seinem dritten Eingangsanschluss und Yimag an seinem vierten Eingangsanschluss empfangen. Signal Yimag kann am dritten unbenutzten Eingangsanschluss eines vorangehenden DSP-Blocks (nicht dargestellt) empfangen und zu DSP-Block 120-1 über Pfad 211 weitergeleitet werden. Zum Beispiel ist der dritte Eingangsanschluss von DSP-Block 120-4 unbenutzt und kann zum Empfangen von Signal Yimag für einen anderen Satz von vier DSP-Blöcken verwendet werden. Multiplexer 208 in Block 120-1 kann konfiguriert sein, Signal Yimag zum oberen Eingang von Addierer 202 in Block 120-1 weiterzuleiten, während Multiplexer 210 in Block 120-1 konfiguriert sein kann, Signal Ximag zum rechten Eingang von Addierer 202 in Block 120-1 weiterzuleiten (siehe schraffierte Pfade). Addierer 202 kann dann ein entsprechendes Summensignal, das gleich BflyTopimag ist, und ein entsprechendes erstes Differenzsignal, das gleich (Ximag-Yimag) ist, ausgeben. Das erste Differenzsignal kann dann über externe weiche Routing-Zwischenverbindungsressourcen zum ersten Eingangsanschluss von Block 120-1 zurückgeleitet werden. Multiplizierer 200 von Block 120-1 kann diesen Differenzwert und Signal Wreal von seinem zweiten Eingangsanschluss empfangen und ein erstes Produktsignal ausgeben, das dann direkt zum vierten Eingangsanschluss von Block 120-2 über Multiplexer 212 weitergeleitet wird.
  • Unter Bezugnahme nun auf DSP-Block 120-3 kann Block 120-3 Signal Xreal an seinem dritten Eingangsanschluss und Yreal an seinem vierten Eingangsanschluss empfangen. Signal Yreal kann am dritten Eingangsanschluss von vorangehendem DSP-Block 120-2 empfangen und zu DSP-Block 120-3 unter Verwendung von Multiplexer 212 in Block 120-2 weitergeleitet werden. Multiplexer 208 in Block 120-3 kann konfiguriert sein, Signal Yreal zum oberen Eingang von Addierer 202 in Block 120-3 weiterzuleiten, während Multiplexer 210 in Block 120-3 konfiguriert sein kann, Signal Xreal zum rechten Eingang von Addierer 202 in Block 120-3 weiterzuleiten (siehe schraffierte Pfade). Addierer 202 von Block 120-3 kann dann ein entsprechendes Summensignal, das gleich BflyTopreal ist, und ein entsprechendes zweites Differenzsignal, das gleich (Xreal-Yreal) ist, ausgeben. Das erste Differenzsignal (Ximag-Yimag), das am zweiten Ausgangsanschluss von Block 120-1 generiert wird, kann dann über externe weiche Routing-Zwischenverbindungsressourcen zum ersten Eingangsanschluss von Block 120-3 zurückgeleitet werden. Multiplizierer 200 von Block 120-3 kann den ersten Differenzwert und auch Signal Wimag von seinem zweiten Eingangsanschluss empfangen und ein zweites Produktsignal generieren, das dann von Block 120-4 über Multiplexer 212 von Block 120-3 direkt zum vierten Eingangsanschluss weitergeleitet wird.
  • Unter Bezugnahme nun auf DSP-Block 120-2 kann DSP-Block 120-2 an seinem ersten Eingangsanschluss das zweite Differenzsignal, das vom zweiten Ausgangsanschluss von Block 120-3 über externe weiche Routing-Zwischenverbindungen weitergeleitet wird, und Signal Wimag an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 innerhalb von Block 120-1 kann diese zwei Signale empfangen und ein entsprechendes drittes Produktsignal generieren. Multiplexer 208 in Block 120-2 kann konfiguriert sein, das dritte Produktsignal zum oberen Eingang von Addierer 202 in Block 120-2 weiterzuleiten, während Multiplexer 210 in Block 120-2 konfiguriert sein kann, das erste Produktsignal zum rechten Eingang von Addierer 202 in Block 120-2 weiterzuleiten. Addierer 202 in Block 120-2 kann dann ein entsprechendes Summensignal generieren, das gleich BflyBotimag ist.
  • Unter Bezugnahme nun auf DSP-Block 120-4 kann DSP-Block 120-4 auch an seinem ersten Eingangsanschluss das zweite Differenzsignal, das vom zweiten Ausgangsanschluss von Block 120-3 über externe weiche Routing-Zwischenverbindungen weitergeleitet wird, und Signal Wreal an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 innerhalb von Block 120-4 kann diese zwei Signale empfangen und ein entsprechendes viertes Produktsignal generieren. Multiplexer 208 in Block 120-4 kann konfiguriert sein, das vierte Produktsignal zum oberen Eingang von Addierer 202 in Block 120-4 weiterzuleiten, während Multiplexer 210 in Block 120-4 konfiguriert sein kann, das zweite Produktsignal zum rechten Eingang von Addierer 202 in Block 120-4 weiterzuleiten. Addierer 202 in Block 120-4 kann dann ein entsprechendes Differenzsignal generieren, das gleich BflyBotreal ist.
  • Bei einer derartigen Konfiguration unterstützt das 1:1 Multiplizierer zu Addierer-Verhältnis in Schaltkreis 400, gekoppelt mit der Verwendung arithmetischer Schaltungen 202, die zum Ausgeben von sowohl Summen als auch Differenzwerten imstande sind, effektiv ein 1:1,5 Multiplizierer zu Addierer-Operationsverhältnis. Alle internen direkten Verbindungspfade werden konfliktfrei verwendet. Nur ein Bus wird zwischen beliebigen zwei benachbarten DSP-Blöcken und immer in derselben Richtung verwendet (z.B. von rechts nach links). Bei einer derartigen Anordnung können der Addiererteil (dargestellt durch die schraffierten Pfade) und der Multipliziererteil (dargestellt durch die punktierten Pfade) getrennt werden.
  • Die Radix-2 Butterfly-Struktur von 4 kann auch zum Errichten eines Radix-4 Butterfly verwendet werden. 5 und 6 sind grafische Darstellungen, die die Unterschiede zwischen einem Radix-2 Butterfly und einem Radix-4 Butterfly darstellen. Wie in Grafik 500 von 5 dargestellt, empfängt der Radix-2 Butterfly zwei komplexe Eingänge X und Y und führt eine Einfachkreuzungs- oder Butterfly-Berechnung durch. In Schritt 502 wird eine Summe von X+Y berechnet. In Schritt 504 wird eine Differenz von X-Y berechnet. Die Summe, die einen realen Teil und einen imaginären Teil enthalten kann, ist gleich dem Signal BflyTop. Die Differenz kann durch einen komplexen Drehfaktor T skaliert werden, um Signal BflyBot zu generieren, das auch ein komplexer Wert ist. 5 ist daher eine vereinfachte grafische Darstellung von 3.
  • 6 ist eine grafische Darstellung eines Radix-4 Butterfly, der manchmal als „Dragonfly“ bezeichnet wird. Wie in 6 dargestellt, kann Radix-4 Dragonfly-Graph 600 vier komplexe Eingänge A-D haben und vier komplexe Ausgänge generieren. Die besondere Implementierung von 6 implementiert den Radix-4 Butterfly in zwei Stufen. Die erste Stufe hat nur Operationen vom Additionstyp. Zum Beispiel wird eine ersten komplexe Summe (A+C) in Schritt 602 berechnet; eine zweite komplexe Summe (B+D) wird in Schritt 604 berechnet; eine erste komplexe Differenz (A-C) wird in Schritt 606 berechnet; und eine zweite komplexe Differenz (B-D) wird in Schritt 608 berechnet. Die komplexen Vielfachen sind für die erste Stufe nicht dargestellt, da sie sich auf (1,0), (-1,0), (0,j) und (0,-j) reduzieren, die alle durch triviale Operationen wie Wechsel von realen und komplexen Werten oder Negation erreicht werden können. Negation in Gleitkomma-Darstellung ist trivial, da nur das Vorzeichen-Bit umgekehrt werden muss.
  • Die zweite Stufe kann sowohl Additions- als auch Multiplikationsoperationen haben. Zum Beispiel wird ein erster komplexer Ausgang (A+B+C+D) in Schritt 610 berechnet; ein zweiter komplexer Ausgang wird in Schritt 612 durch Skalieren von Differenzwert [(A+C) - (B+D)] mit einem ersten Drehfaktor T1 berechnet; ein dritter komplexer Ausgang wird in Schritt 614 durch Skalieren von Summenwert [(A-C) + (B-D)] mit einem zweiten Drehfaktor T2 berechnet; und ein vierter komplexer Ausgang wird in Schritt 616 durch Skalieren von Differenzwert [(A-C) - (B-D)] mit einem dritten Drehfaktor R3 berechnet. Laut Überprüfung kann die Radix-4 Butterfly-Struktur aus vier Radix-2 Butterflies konstruiert sein, mit der Ausnahme, dass einer der Radix-2 Butterflies zwei komplexe Multiplizierer hat (d.h. der Teil unten rechts von 6). Mit anderen Worten, 16 DSP-Blöcke 120 können unter Verwendung direkter Verbindungspfade und auch externer weicher Routing-Verbindungen zwischenverbunden werden, um den Radix-4 Dragonfly zu implementieren.
  • Das Nettoergebnis sind 16 reale Additionsoperationen vor den komplexen Multiplikationen (da jeder Schritt reale und imaginäre Addition/Subtraktion enthält) und drei komplexe Multiplikationen. Wie oben beschrieben sind die komplexen Multiplikationsoperationen von der Addiererstufe unabhängig, so dass jede der komplexen Multiplikationen, die in der ersten Stufe verfügbar wären, für das zusätzliche komplexe Multiplikationen in der zweiten Stufe verwendet werden kann. Dadurch bleibt eine komplexe Multiplikation, die sonst in der ersten Stufe verwendet werden würde, unbenutzt, aber da sie vom Addiererteil des Butterfly unabhängig ist, kann sie anderswo zur Verarbeitung verwendet werden. Der andere Vorteil einer Verwendung eines Radix-4 Konstrukts ist, dass Latenz und Leistungsverbrauch niedriger sind als beim Radix-2 Butterfly, da eine gesamte Schicht komplexer Multiplizierer umgangen wird.
  • Gemäß einer anderen geeigneten Ausführungsform kann auch ein spezialisierter Verarbeitungsblock 120 der in 2 dargestellten Art außerhalb des Kontexts einer FFT-Operation verwendet werden, um andere komplizierte arithmetische Operationen zu unterstützen, wie eine komplexe Multiplikationsoperation. Eine komplexe Multiplikation kann allgemein wie folgt angegeben werden: ( A + Bj ) * ( C + Dj ) = ( AC BD ) + j ( AD + BC )
    Figure DE112017004291T5_0001
  • Wie oben in Gleichung 1 dargestellt, stellt A den realen Teil einer ersten komplexen Zahl dar, B stellt den imaginären Teil der ersten Zahl dar, C stellt den realen Teil einer zweiten komplexen Zahl dar, der mit der ersten komplexen Zahl multipliziert wird, und D stellt den imaginären Teil der zweiten komplexen Zahl dar. Das resultierende Produkt hat einen realen Teil, der gleich (AC-BD) ist, und einen imaginären Teil, der gleich (AD+BC) ist.
  • Eine Möglichkeit, diese Endergebnisse zu erhalten, ist, zuerst drei Teilprodukte zu generieren: (1) (A+B)*(C+D), (2) AC und (3) BD. Der endgültige reale Teil kann dann durch Berechnen von [(2) minus (3)] erhalten werden, während der endgültige imaginäre Teil durch Berechnen von [(1) minus (2) minus (3)] erhalten werden kann. Diese Art einer komplexen Multiplikationsimplementierung wird manchmal als Karatsuba-Zerlegung bezeichnet, die unter Verwendung der Anordnung von 7 implementiert werden kann.
  • Wie in 7 dargestellt, kann der komplexe Multipliziererschaltkreis 700 vier DSP-Blöcke 120-1, 120-2, 120-3 und 120-4 enthalten, die in Reihe verbunden sind. Es sind zwei zusätzliche Gleitkomma-Addiererschaltungen 702 und 704 außerhalb der DSP-Blöcke erforderlich. Addierer 702 kann A und B empfangen und Summe (A+B) ausgeben. Ebenso kann Addierer 704 C und B empfangen und Summe (C+D) ausgeben. Diese zwei Summen können zu den Eingängen von Multiplizierer 200 in Block 120-1 geleitet werden und das entsprechende Produkt (A+B)*(C+D) kann dann über Multiplexer 212 in Block 120-1 direkt zum vierten Eingangsanschluss von Block 120-1 weitergeleitet werden.
  • In der Zwischenzeit kann Block 120-2 A und C an seinem ersten bzw. zweiten Eingangsanschluss empfange. Der dritte Eingangsanschluss von Block 120-2 kann unbenutzt sein. Multiplizierer 200 in Block 120-2 kann Signale A und C empfangen und ein entsprechendes Produkt (AC) ausgeben. Multiplexer 208 in Block 120-2 kann konfiguriert sein, Produkt AC zum oberen Eingang von Addierer 202 in Block 120-2 weiterzuleiten, während Multiplexer 210 in Block 120-2 konfiguriert sein kann, Produkt (A+B)*(C+D) zum rechten Eingang von Addierer 202 in Block 120-2 weiterzuleiten (siehe gestrichelte Pfade). Addierer 202 von Block 120-2 kann dann einen Differenzwert [(A+B)*(C+D)-AC] generieren. Überdies kann Multiplizierer 200 von Block 120-2 gleichzeitig Produktsignal AC über Multiplexer 212 von Block 120-2 direkt zum vierten Eingangsanschluss von Block 120-3 weiterleiten.
  • Block 120-3 kann B und D an seinem ersten bzw. zweiten Eingangsanschluss empfangen. Der dritte Eingangsanschluss von Block 120-3 kann auch unbenutzt sein. Multiplizierer 200 in Block 120-3 kann Signale B und D empfangen und ein entsprechendes Produkt (BD) ausgeben. Multiplexer 208 in Block 120-3 kann konfiguriert sein, Produkt BD zum oberen Eingang von Addierer 202 in Block 120-3 weiterzuleiten, während Multiplexer 210 in Block 120-3 konfiguriert sein kann, Produkt AC, das direkt vom Block 120-2 empfangen wird, zum rechten Eingang von Addierer 202 in Block 120-3 weiterzuleiten (siehe gestrichelte Pfade). Addierer 202 von Block 120-3 kann dann einen Differenzwert (AC-BD) generieren, der den realen Teil des gewünschten Ausgangs darstellt (siehe z.B. obenstehende Gleichung 1). Überdies kann Multiplizierer 200 von Block 120-3 gleichzeitig Produktsignal BD über Multiplexer 212 von Block 120-3 direkt zum vierten Eingangsanschluss von Block 120-4 weiterleiten.
  • Block 120-4 kann an seinem dritten Eingangsanschluss Differenzwert [(A+B)*(C+D)-AC] vom externen Ausgangsanschluss von Block 120-2 über externe weiche Routing-Zwischenverbindungsressourcen empfangen. Multiplexer 208 in Block 120-4 kann konfiguriert sein, Produkt BD zum oberen Eingang von Addierer 202 in Block 120-4 weiterzuleiten, während Multiplexer 210 in Block 120-4 konfiguriert sein kann, den Differenzwert [(A+B)*(C+D)-AC] zum rechten Eingang von Addierer 202 in Block 120-4 weiterzuleiten (siehe gestrichelte Pfade). Addierer 202 von Block 120-4 kann dann einen neuen Differenzwert {[(A+B)*(C+D)-AC]-BD} generieren, der auf (AD+BC), den imaginären Teil des gewünschten Ausgangs vereinfacht wird.
  • In dem Beispiel von 7 wird der Ausgang von Multiplizierer 200 in zumindest Blöcken 120-2 und 120-3 gleichzeitig zu verschiedenen Zielorten weitergeleitet (z.B. sowohl nach unten zu Multiplexer 208 als auch nach links zu Multiplexer 212). Da der erste und zweite Eingangsanschluss von Block 120-4 unbenutzt sind, können mehrere Gruppen von vier DSP-Blöcken aneinander gekettet werden, so dass zwei unbenutzte Anschlüsse von Block 120-4 als der erste und zweite Anschluss von Block 120-1 in der nächsten Gruppe dienen können, die (A+B) bzw. (C+B) empfangen. Mit anderen Worten, Block 120-4 in einer bestimmten Gruppe 700 kann mit Block 120-1 in einer benachbarten Gruppe 700 überlappen (d.h. zumindest ein DSP-Block kann zwischen zwei benachbarten komplexen Multiplikationsschaltkreisen geteilt werden 700).
  • In einer anderen geeigneten Anordnung können zuerst drei Teilprodukte generiert werden: (1') A* (C+D), (2') D*(A+B) und (3') C* (B-A). Der reale Teil des Endprodukts kann dann durch Berechnen von [(1') minus (2')] erhalten werden, während der endgültige imaginäre Teil durch Berechnen von [(1') plus (3')] erhalten werden kann. diese Art einer komplexen Multiplikationsimplementierung wird manchmal als Gaußsche Zerlegung bezeichnet, die unter Verwendung der Anordnung von 8 implementiert werden kann.
  • Wie in 8 dargestellt kann der komplexe Multipliziererschaltkreis 800 nur drei DSP-Blöcke 120-1, 120-2 und 120-3 enthalten, die in Reihe verbunden sind. Drei zusätzliche Gleitkomma-Addiererschaltungen 802, 804 und 806 sind außerhalb der DSP-Blöcke notwendig. Addierer 802 kann B und A und empfangen und die Differenz (B-A) ausgeben. Addierer 804 kann C und D empfangen und die Summe (C+D) ausgeben. Addierer 806 kann A und B empfangen und die Summe (A+B) ausgeben. Block 120-1 kann die Differenz (B-A) vom Ausgang von Addierer 802 und auch C an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 von Block 120-1 kann zwei Eingänge empfangen und ein entsprechendes Produkt C* (B-A) berechnen, das dann über Multiplexer 212 von Block 120-1 direkt zum vierten Eingangsanschluss von Block 120-2 geleitet werden kann.
  • In der Zwischenzeit kann Block 120-2 Summe (C+D) vom Ausgang von Addierer 804 und auch A an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 von Block 120-2 kann diese zwei Eingänge empfangen und ein entsprechendes Produkt A*(C+D) berechnen, das dann über Multiplexer 212 von Block 120-2 direkt zum vierten Eingangsanschluss von Block 120-3 geleitet werden kann. Multiplexer 208 in Block 120-2 kann konfiguriert sein, gleichzeitig Produkt A*(C+D) zum oberen Eingang von Addierer 202 in Block 120-2 weiterzuleiten, während Multiplexer 210 in Block 120-2 konfiguriert sein kann, Produkt C*(B-A) zum rechten Eingang von Addierer 202 in Block 120-2 weiterzuleiten (siehe gestrichelte Pfade). Addierer 202 von Block 120-2 kann dann einen Summenwert [A(C+D)+C(B-A)] generieren, der auf (AD+BC)-der imaginäre Teil des gewünschten Ausgangs vereinfacht wird.
  • Unter Bezugnahme nun auf Block 120-3 kann Block 120-3 die Summe (A+B) vom Ausgang von Addierer 806 und auch D an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 von Block 120-3 kann diese zwei Eingänge empfangen und ein entsprechendes Produkt D*(A+B) berechnen. Multiplexer 208 in Block 120-3 kann konfiguriert sein, Produkt D*(A+B) zum oberen Eingang von Addierer 202 in Block 120-3 weiterzuleiten, während Multiplexer 210 in Block 120-3 konfiguriert sein kann, Produkt A*(C+D) zum rechten Eingang von Addierer 202 in Block 120-3 weiterzuleiten (siehe gestrichelte Pfade). Addierer 202 von Block 120-3 kann dann einen Differenzwert [A(C+D)-D(A+B)] generieren, der auf (AC-BD)-der reale Teil des gewünschten Ausgangs vereinfacht wir.
  • Verglichen mit der Implementierung von 7 verwendet die Konfiguration von 8 ein einfacheres internes Verbindungsmuster auf Kosten eines zusätzlichen externen Addierers (d.h. drei externe Addierer anstelle von zwei). In einer anderen geeigneten Version der Gaußschen Zerlegung können zuerst drei Teilprodukte generiert werden: (1'') B* (C-D), (2'') C* (A-B) und (3'') D* (A+B) . Der reale Teil des Endprodukts kann dann durch Berechnen von [(1'') plus (2'')] erhalten werden, während der endgültige imaginäre Teil durch Berechnen von [(1'') plus (3'')] erhalten werden kann. Diese Art von komplexer Multiplikationsimplementierung ist in der Anordnung von 9 dargestellt.
  • Wie in 9 dargestellt, kann der komplexe Multipliziererschaltkreis 900 nur drei DSP-Blöcke 120-1, 120-2 und 120-3 enthalten, die in einer Kette verbunden sind. Block 120-1 kann Signal A an seinem dritten Eingangsanschluss und B an seinem vierten Eingangsanschluss empfangen. Signal B kann am dritten Eingangsanschluss eines vorangehenden DSP-Blocks (nicht dargestellt) empfangen und über Pfad 211 zu DSP-Block 120-1 weitergeleitet werden. Zum Beispiel ist der dritte Eingangsanschluss von DSP-Block 120-3 unbenutzt und kann zum Empfangen von Signal B für einen anderen Satz von drei DSP-Blöcken verwendet werden. Multiplexer 208 in Block 120-1 kann konfiguriert sein, Signal B zum oberen Eingang von Addierer 202 in Block 120-1 weiterzuleiten, während Multiplexer 210 in Block 120-1 konfiguriert sein kann, Signal A zum rechten Eingang von Addierer 202 in Block 120-1 weiterzuleiten (siehe schraffierte Pfade). Addierer 202 von Block 120-1 kann dann ein entsprechendes Summensignal (A+B) und ein entsprechendes Differenzsignal (A-B) ausgeben.
  • Das Summensignal (A+B), das beim ersten Ausgangsanschluss von Block 120-1 generiert wird, kann dann über externe weiche Routing-Zwischenverbindungsressourcen zum ersten Eingangsanschluss von Block 120-3 zurückgeleitet werden. Das am zweiten Ausgangsanschluss von Block 120-1 generierte Differenzsignal (A-B) kann dann über externe weiche Routing-Zwischenverbindungsressourcen zum ersten Eingangsanschluss von Block 120-1 zurückgeleitet werden. Multiplizierer 200 von Block 120-1 kann den Differenzwert (A-B) und auch Signal C von seinem zweiten Eingangsanschluss empfangen und ein entsprechendes Produkt C*(A-B) generieren, das dann über Multiplexer 212 von Block 120-1 direkt zum vierten Eingangsanschluss von Block 120-2 weitergeleitet wird.
  • In der Zwischenzeit kann Block 120-2 eine Differenz (C-D) vom Ausgang von Addierer 902 und auch Signal B an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 von Block 120-2 kann diese zwei Eingänge empfangen und ein entsprechendes Produkt B*(C-D) generieren, das dann über Multiplexer 212 von Block 120-2 direkt zum vierten Eingangsanschluss von Block 120-3 geleitet werden kann. Multiplexer 208 in Block 120-2 kann konfiguriert sein, gleichzeitig Produkt B*(C-D) zum oberen Eingang von Addierer 202 in Block 120-2 weiterzuleiten, während Multiplexer 210 in Block 120-2 konfiguriert sein kann, Produkt C*(A-B) zum rechten Eingang von Addierer 202 in Block 120-2 weiterzuleiten (siehe punktierte Pfade). Addierer 202 von Block 120-2 kann dann einen Summenwert [B(C-D)+C(A-B)] generieren, der auf (AC-BD)-der reale Teil des gewünschten Ausgangs vereinfacht wird.
  • Unter Bezugnahme nun auf Block 120-3 kann Block 120-3 die Summe (A+B) vom ersten Ausgangsanschluss von Block 120-1 und auch D an seinem zweiten Eingangsanschluss empfangen. Multiplizierer 200 von Block 120-3 kann diese zwei Eingänge empfangen und ein entsprechendes Produkt D*(A+B) berechnen. Multiplexer 208 in Block 120-3 kann konfiguriert sein, Produkt D*(A+B) zum oberen Eingang von Addierer 202 in Block 120-3 weiterzuleiten, während Multiplexer 210 in Block 120-3 konfiguriert sein kann, Produkt B*(C-D) zum rechten Eingang von Addierer 202 in Block 120-3 weiterzuleiten (siehe gestrichelte Pfade). Addierer 202 von Block 120-3 kann dann einen Summenwert [D(A+B)+B(C-D)] generieren, der auf (AD+BC)-der imaginäre Teil des gewünschten Ausgangs vereinfacht wird.
  • Verglichen mit der Implementierung von 8 verwendet die Konfiguration von 9 nur einen externen Addierer (d.h. einen gesamten externen Addierer anstelle von drei). Der Wert (A+B) und (A-B) kann durch Addierer 202 in Block 120-1 berechnet werden, wo der B Eingang vom unbenutzten Eingang des ganz rechten Blocks des benachbarten komplexen Multiplizierers 900 rechts kommt (nicht dargestellt).
  • Die beispielhaften FFT-Butterfly-Strukturen, die in 3 - 6 dargestellt sind, und die komplexen Multiplikationsimplementierungen, die in 7 - 9 dargestellt sind, dienen nur der Veranschaulichung und sollen den Umfang der vorliegenden Ausführungsformen nicht einschränken. Nach Wunsch kann der DSP-Block 120 der Art, die in Verbindung mit 2 beschrieben ist, zum Errichten anderer FFT-Element jeder geeigneten Radix verwendet werden, um komplexe Multiplizierer zu errichten, die eine Art von Zerlegungsalgorithmus verwenden, oder um eine andere Art von komplexen arithmetischen Funktionen usw. zu errichten.
  • Die Ausführungsformen wurden bisher in Bezug auf integrierte Schaltungen beschrieben. Die hier beschriebenen Verfahren und Vorrichtung können in jede geeignete Schaltung integriert werden. Zum Beispiel können sie in zahlreiche Arten von Vorrichtungen, wie programmierbare Logikvorrichtungen, anwendungsspezifische Standardprodukte (ASSPs) und anwendungsspezifische integrierte Schaltungen (ASICs) eingefügt werden. Beispiele für programmierbare Logikvorrichtungen enthalten programmierbare Arrays-Logik (PALs), programmierbare Logikarrays (PLAs), feldprogrammierbare Logikarrays (FPLAs), elektrisch programmierbare Logikvorrichtungen (EPLDs), elektrisch löschbare programmierbare Logikvorrichtungen (EEPLDs), Logikzellen-Arrays (LCAs), komplexe programmierbare Logikvorrichtungen (CPLDs), und feldprogrammierbare Gate-Arrays (FPGAs), um einige zu nennen.
  • Die in einer oder mehreren Ausführungsformen hier beschriebenen programmierbare Logikvorrichtung können Teil eines Datenverarbeitungssystem sein, das eine oder mehrere der folgenden Komponenten enthält: einen Prozessor; Speicher; IO-Schaltkreis; und periphere Vorrichtungen. Die Datenverarbeitung kann in einer Reihe von Anwendungen verwendet werden, wie Computernetzwerken, Datennetzwerken, Instrumentierung, Videoverarbeitung, Digitalsignalverarbeitung oder jeder anderen geeigneten Anwendungen, wo Vorteil einer Verwendung programmierbarer oder neu programmierbarer Logik wünschenswert ist. Die programmierbare Logikvorrichtung kann zum Durchführen einer Reihe verschiedener Logikfunktionen verwendet werden. Zum Beispiel kann die programmierbare Logikvorrichtung als ein Prozessor oder eine Steuerung konfiguriert sein, die in Zusammenarbeit mit einem Systemprozessor arbeitet. Die programmierbare Logikvorrichtung kann auch als Schiedsrichter verwendet werden, um einen Zugang zu einer gemeinsamen Ressource im Datenverarbeitungssystem zu vermitteln. In einem anderen Beispiel kann die programmierbare Logikvorrichtung als eine Schnittstelle zwischen einem Prozessor und einer der anderen Komponenten im System konfiguriert sein.
  • BEISPIELE:
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist eine integrierte Schaltung, umfassend: eine Vielzahl von spezialisierten Verarbeitungsblöcken, die in einer Kette verbunden sind, wobei jeder spezialisiert Verarbeitungsblock in der Kette enthält: einen ersten Eingangsanschluss, der ein erstes Eingangssignal empfängt; einen zweiten Eingangsanschluss, der ein zweites Eingangssignal empfängt; einen dritten Eingangsanschluss, der ein drittes Eingangssignal empfängt; eine erste arithmetische Schaltung, die das erste und zweite Eingangssignal empfängt; eine zweite arithmetische Schaltung, die selektiv Signale von der ersten arithmetischen Schaltung empfängt und die ein Ausgangssignal generiert; und einen Multiplexer mit einem ersten Eingang, der Signale direkt von der ersten arithmetischen Schaltung empfängt, einem zweiten Eingang, der das dritte Eingangssignal vom dritten Eingangsanschluss empfängt, einem dritten Eingang, der das Ausgangssignal von der zweiten arithmetischen Schaltung empfängt, und einem Ausgang, der direkt mit einem benachbarten spezialisierten Verarbeitungsblock in der Kette verbunden ist.
  • Beispiel 2 ist die integrierte Schaltung von Beispiel 1, wobei die erste arithmetische Schaltung optional eine Multipliziererschaltung umfasst, und wobei die zweite arithmetische Schaltung eine Addiererschaltung umfasst.
  • Beispiel 3 ist die integrierte Schaltung von Beispiel 1, wobei die zweite arithmetische Schaltung optional eine hybride Addiererschaltung umfasst, die ein Summensignal als das Ausgangssignal generiert und die ferner ein Differenzsignal generiert, das sich vom Summensignal unterscheidet.
  • Beispiel 4 ist die integrierte Schaltung von Beispiel 1, wobei jeder spezialisierte Verarbeitungsblock optional ferner umfasst: einen zusätzlichen Multiplexer mit einem ersten Eingang, der Signale direkt von der ersten arithmetischen Schaltung empfängt, einem zweiten Eingang, der das dritte Eingangssignal vom dritten Eingangsanschluss empfängt, und einem Ausgang, der an die zweite arithmetische Schaltung gekoppelt ist.
  • Beispiel 5 ist die integrierte Schaltung von Beispiel 4, wobei jeder spezialisierte Verarbeitungsblock in der Kette ferner einen vierten Eingangsanschluss umfasst, der ein viertes Eingangssignal direkt von einem benachbarten spezialisierten Verarbeitungsblock in der Kette empfängt, und wobei der zusätzliche Multiplexer ferner einen dritten Eingang umfasst, der das zweite Eingangssignal vom zweiten Eingangsanschluss über einen Umgehungspfad empfängt, und einen vierten Eingang, der das vierte Eingangssignal vom vierten Eingangsanschluss empfängt.
  • Beispiel 6 ist die integrierte Schaltung von einem der Beispiele 1 - 5, wobei jeder spezialisierte Verarbeitungsblock optional ferner umfasst: einen vierten Eingangsanschluss, der ein viertes Eingangssignal direkt von einem benachbarten spezialisierten Verarbeitungsblock in der Kette empfängt; und einen zusätzlichen Multiplexer mit einem ersten Eingang, der das dritte Eingangssignal vom dritten Eingangsanschluss empfängt, einem zweiten Eingang, der das vierte Eingangssignal vom vierten Eingangsanschluss empfängt, und einem dritten Eingang, der das Ausgangssignal über einen Rückkopplungspfad empfängt.
  • Beispiel 7 ist die integrierte Schaltung von Beispiel 6, wobei der zusätzliche Multiplexer ferner einen Ausgang enthält, der direkt mit der zweiten arithmetischen Schaltung verbunden ist.
  • Beispiel 8 ist eine integrierte Schaltung, umfassend: einen Radix-2 schnellen Fourier-Transformation-, (FFT), Butterfly-Schaltkreis, der nur einen ersten, zweiten, dritten und vierten Digitalsignalverarbeitungs-, (DSP), Blöcke enthält, die in dieser Reihenfolge in einer Kette verbunden sind, wobei jeder der vier DSP-Blöcke eine Multipliziererschaltung und eine Addiererschaltung enthält.
  • Beispiel 9 ist die integrierte Schaltung von Beispiel 8, wobei die Addiererschaltung in zumindest einem der DSP-Blöcke optional ein Summensignal und ein Differenzsignal parallel ausgibt.
  • Beispiel 10 ist die integrierte Schaltung von Beispiel 8, optional ferner umfassend: einen zusätzlichen Radix-2 FFT-Butterfly-Schaltkreis, der auch nur vier DSP-Blöcke enthält, wobei der erste DSP-Block im Radix-2 FFT-Butterfly-Schaltkreis einen Eingang hat, der ein Signal von einem unbenutzten Eingang des zusätzlichen Radix-2 FFT-Butterfly-Schaltkreises empfängt.
  • Beispiel 11 ist die integrierte Schaltung von Beispiel 8, wobei die Multipliziererschaltung im ersten DSP-Block optional ein erstes Signal ausgibt, das zum zweiten DSP-Block weitergeleitet wird, und wobei die Multipliziererschaltung im zweiten DSP-Block ein zweites Signal ausgibt, das zu Addiererschaltung im zweiten DSP-Block weitergeleitet wird.
  • Beispiel 12 ist die integrierte Schaltung von Beispiel 8, wobei der erste DSP-Block einen Eingangsanschluss hat, der optional ein erstes Signal empfängt, das zur Addiererschaltung des ersten DSP-Blocks weitergeleitet wird, und wobei der zweite DSP-Block einen Eingangsanschluss hat, der ein zweites Signal empfängt, das direkt zum dritten DSP-Block weitergeleitet wird.
  • Beispiel 13 ist die integrierte Schaltung von Beispiel 8, wobei jede Multipliziererschaltung in den vier DSP-Blöcken optional einen entsprechenden Drehfaktor empfängt.
  • Beispiel 14 ist die integrierte Schaltung von einem der Beispiele 8-13, wobei der erste und dritte DSP-Block optional reale und imaginäre Teile eines oberen Butterfly-Signals generieren und wobei der zweite und vierte DSP-Block reale und imaginäre Teils eines unteren Butterfly-Signals generieren.
  • Beispiel 15 ist die integrierte Schaltung von Beispiel 14, wobei der erste DSP-Block optional ferner ein erstes Differenzsignal generiert und wobei der dritte DSP-Block ferner ein zweites Differenzsignal generiert, das sich vom ersten Differenzsignal unterscheidet.
  • Beispiel 16 ist eine integrierte Schaltung, umfassend: einen komplexen Multipliziererschaltkreis, der zumindest einen ersten, zweiten und dritten Digitalsignalverarbeitungs-, (DSP), Block enthält, die in dieser Reihenfolge in einer Kette verbunden sind, die ein erstes komplexes Eingangssignal und ein zweites komplexes Eingangssignal empfängt und die ein komplexes Ausgangssignal ausgibt.
  • Beispiel 17 ist die integrierte Schaltung von Beispiel 16, wobei der komplexe Multipliziererschaltkreis optional ferner einen vierten DSP-Block enthält, wobei die vier DSP-Blöcke gemeinsam eine Karatsuba-Zerlegung zum Generieren des komplexen Ausgangssignals implementieren und wobei der komplexe Multipliziererschaltkreis ferner zwei Addierer enthält, die von den vier DSP-Blöcken getrennt sind.
  • Beispiel 18 ist die integrierte Schaltung von Beispiel 17, optional ferner umfassend: einen zusätzlichen komplexen Multipliziererschaltkreis, der auf eine Vielzahl von DSP-Blöcken enthält, wobei der komplexe Multipliziererschaltkreis und der zusätzliche komplexe Multipliziererschaltkreis sich einen DSP-Block teilen.
  • Beispiel 19 ist die integrierte Schaltung von einem der Beispiele 16 - 18, wobei die drei DSP-Blöcke gemeinsam ein Gaußsches Verfahren zum Generieren des komplexen Ausgangssignals implementieren und wobei der komplexe Multipliziererschaltkreis ferner drei Addierer enthält, die extern zu den drei DSP-Blöcken sind und die entsprechende Summensignale in die drei DSP-Blöcke einspeisen.
  • Beispiel 20 ist die integrierte Schaltung von einem der Beispiele 16 - 18, wobei die drei DSP-Blöcke kollektiv optional ein Gaußsches Verfahren zum Generieren des komplexen Ausgangssignals implementieren und wobei der komplexe Multipliziererschaltkreis ferner nur einen Addierer enthält, der extern zu den drei DSP-Blöcken ist und der ein Differenzsignal in den zweiten DSP-Block in der Kette einspeist.
  • Beispielsweise können alle optionalen Merkmale der oben beschriebenen Vorrichtung auch in Bezug auf das Verfahren oder den Prozess, wie hier beschrieben, implementiert sein. Das Vorangehende ist nur eine Veranschaulichung der Prinzipien dieser Erfindung und verschiedene Modifizierungen können von Fachleuten auf dem Gebiet vorgenommen werden. Die vorangehenden Ausführungsformen können einzeln oder in jeder Kombination implementiert werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15277955 [0001]
    • US 8645449 [0034]

Claims (20)

  1. Integrierte Schaltung, umfassend: eine Vielzahl von spezialisierten Verarbeitungsblöcken, die in einer Kette verbunden sind, wobei jeder spezialisierte Verarbeitungsblock in der Kette enthält: einen ersten Eingangsanschluss, der ein erstes Eingangssignal empfängt; einen zweiten Eingangsanschluss, der ein zweites Eingangssignal empfängt; einen dritten Eingangsanschluss, der ein drittes Eingangssignal empfängt; eine erste arithmetische Schaltung, die das erste und zweite Eingangssignal empfängt; eine zweite arithmetische Schaltung, die selektiv Signale von der ersten arithmetischen Schaltung empfängt und die ein Ausgangssignal generiert; und einen Multiplexer mit einem ersten Eingang, der Signale direkt von der ersten arithmetischen Schaltung empfängt, einem zweiten Eingang, der das dritte Eingangssignal vom dritten Eingangsanschluss empfängt, einem dritten Eingang, der das Ausgangssignal von der zweiten arithmetischen Schaltung empfängt, und einem Ausgang, der direkt mit einem benachbarten spezialisierten Verarbeitungsblock in der Kette verbunden ist.
  2. Integrierte Schaltung nach Anspruch 1, wobei die erste arithmetische Schaltung eine Multipliziererschaltung umfasst und wobei die zweite arithmetische Schaltung eine Addiererschaltung umfasst.
  3. Integrierte Schaltung nach Anspruch 1, wobei die zweite arithmetische Schaltung eine hybride Addiererschaltung umfasst, die ein Summensignal als das Ausgangssignal generiert und die ferner ein Differenzsignal generiert, das sich vom Summensignal unterscheidet.
  4. Integrierte Schaltung nach Anspruch 1, wobei jeder spezialisierte Verarbeitungsblock ferner umfasst: einen zusätzlichen Multiplexer mit einem ersten Eingang, der Signale direkt von der ersten arithmetischen Schaltung empfängt, einem zweiten Eingang, der das dritte Eingangssignal vom dritten Eingangsanschluss empfängt, und einem Ausgang, der an die zweite arithmetische Schaltung gekoppelt ist.
  5. Integrierte Schaltung nach Anspruch 4, wobei jeder spezialisierte Verarbeitungsblock in der Kette ferner einen vierten Eingangsanschluss umfasst, der ein viertes Eingangssignal direkt von einem benachbarten spezialisierten Verarbeitungsblock in der Kette empfängt, und wobei der zusätzliche Multiplexer ferner einen dritten Eingang umfasst, der das zweite Eingangssignal vom zweiten Eingangsanschluss über einen Umgehungspfad empfängt, und einen vierten Eingang, der das vierte Eingangssignal vom vierten Eingangsanschluss empfängt.
  6. Integrierte Schaltung nach einem der Ansprüche 1-5, wobei jeder spezialisierte Verarbeitungsblock ferner umfasst: einen vierten Eingangsanschluss, der ein viertes Eingangssignal direkt von einem benachbarten spezialisierten Verarbeitungsblock in der Kette empfängt; und einen zusätzlichen Multiplexer mit einem ersten Eingang, der das dritte Eingangssignal vom dritten Eingangsanschluss empfängt, einen zweiten Eingang, der das vierte Eingangssignal vom vierten Eingangsanschluss empfängt, und einen dritten Eingang, der das Ausgangssignal über einen Rückkopplungspfad empfängt.
  7. Integrierte Schaltung nach Anspruch 6, wobei der zusätzliche Multiplexer ferner einen Ausgang enthält, der direkt mit der zweiten arithmetischen Schaltung verbunden ist.
  8. Integrierte Schaltung, umfassend: einen Radix-2 schnellen Fourier-Transformation-, (FFT), Butterfly-Schaltkreis, der nur einen ersten, zweiten, dritten und vierten Digitalsignalverarbeitungs-, (DSP), Block enthält, die in dieser Reihenfolge in einer Kette verbunden sind, wobei jeder der vier DSP-Blöcke eine Multipliziererschaltung und eine Addiererschaltung enthält.
  9. Integrierte Schaltung nach Anspruch 8, wobei die Addiererschaltung in zumindest einem der DSP-Blöcke ein Summensignal und ein Differenzsignal parallel ausgibt.
  10. Integrierte Schaltung nach Anspruch 8, ferner umfassend: einen zusätzlichen Radix-2 FFT-Butterfly-Schaltkreis, der auch nur vier DSP-Blöcke enthält, wobei der erste DSP-Block im Radix-2 FFT-Butterfly-Schaltkreis einen Eingang hat, der ein Signal von einem unbenutzten Eingang des zusätzlichen Radix-2 FFT-Butterfly-Schaltkreises empfängt.
  11. Integrierte Schaltung nach Anspruch 8, wobei die Multipliziererschaltung im ersten DSP-Block ein erstes Signal ausgibt, das zum zweiten DSP-Block weitergeleitet wird, und wobei die Multipliziererschaltung im zweiten DSP-Block ein zweites Signal ausgibt, das zur Addiererschaltung im zweiten DSP-Block weitergeleitet wird.
  12. Integrierte Schaltung nach Anspruch 8, wobei der erste DSP-Block einen Eingangsanschluss hat, der ein erstes Signal empfängt, das zur Addiererschaltung des ersten DSP-Blocks weitergeleitet wird, und wobei der zweite DSP-Block einen Eingangsanschluss hat, der ein zweites Signal empfängt, das direkt zum dritten DSP-Block weitergeleitet wird.
  13. Integrierte Schaltung nach Anspruch 8, wobei jede Multipliziererschaltung in den vier DSP-Blöcken einen entsprechenden Drehfaktor empfängt.
  14. Integrierte Schaltung nach einem der Ansprüche 8-13, wobei der erste und dritte DSP-Block reale und imaginäre Teile eines oberen Butterfly-Signals generieren, und wobei der zweite und vierte DSP-Block reale und imaginäre Teile eines unteren Butterfly-Signals generieren.
  15. Integrierte Schaltung nach Anspruch 14, wobei der erste DSP-Block ferner ein erstes Differenzsignal generiert und wobei der dritte DSP-Block ferner ein zweites Differenzsignal generiert, das sich vom ersten Differenzsignal unterscheidet.
  16. Integrierte Schaltung, umfassend: einen komplexen Multipliziererschaltkreis, der zumindest einen ersten, zweiten und dritten Digitalsignalverarbeitungs-, (DSP), Block enthält, die in dieser Reihenfolge in einer Kette verbunden sind, der ein erstes komplexes Eingangssignal und ein zweites komplexes Eingangssignal empfängt und der ein komplexes Ausgangssignal ausgibt.
  17. Integrierte Schaltung nach Anspruch 16, wobei der komplexe Multipliziererschaltkreis ferner einen vierten DSP-Block enthält, wobei die vier DSP-Blöcke gemeinsam eine Karatsuba-Zerlegung zum Generieren des komplexen Ausgangssignals implementieren und wobei der komplexe Multipliziererschaltkreis ferner zwei Addierer enthält, die von den vier DSP-Blöcken getrennt sind.
  18. Integrierte Schaltung nach Anspruch 17, ferner umfassend: einen zusätzlichen komplexen Multipliziererschaltkreis, der auch eine Vielzahl von DSP-Blöcken enthält, wobei der komplexe Multipliziererschaltkreis und der zusätzliche komplexe Multipliziererschaltkreis sich einen DSP-Block teilen.
  19. Integrierte Schaltung nach einem der Ansprüche 16-18, wobei die drei DSP-Blöcke gemeinsam ein Gaußsches Verfahren zum Generieren des komplexen Ausgangssignals implementieren und wobei der komplexe Multipliziererschaltkreis ferner drei Addierer enthält, die extern zu den drei DSP-Blöcken sind und die entsprechende Summensignale in die drei DSP-Blöcke einspeisen.
  20. Integrierte Schaltung nach einem der Ansprüche 16-18, wobei die drei DSP-Blöcke gemeinsam ein Gaußsches Verfahren zum Generieren des komplexen Ausgangssignals implementieren und wobei der komplexe Multipliziererschaltkreis ferner nur einen Addierer enthält, der extern zu den drei DSP-Blöcken ist und der ein Differenzsignal in den zweiten DSP-Block in der Kette einspeist.
DE112017004291.7T 2016-09-27 2017-08-29 Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation Pending DE112017004291T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/277,955 2016-09-27
US15/277,955 US10140091B2 (en) 2016-09-27 2016-09-27 Integrated circuits with specialized processing blocks for performing floating-point fast fourier transforms and complex multiplication
PCT/US2017/049015 WO2018063656A2 (en) 2016-09-27 2017-08-29 Integrated circuits with specialized processing blocks for performing floating-point fast fourier transforms and complex multiplication

Publications (1)

Publication Number Publication Date
DE112017004291T5 true DE112017004291T5 (de) 2019-05-23

Family

ID=61686277

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017004291.7T Pending DE112017004291T5 (de) 2016-09-27 2017-08-29 Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation

Country Status (4)

Country Link
US (2) US10140091B2 (de)
CN (2) CN115756383A (de)
DE (1) DE112017004291T5 (de)
WO (1) WO2018063656A2 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10140091B2 (en) * 2016-09-27 2018-11-27 Altera Corporation Integrated circuits with specialized processing blocks for performing floating-point fast fourier transforms and complex multiplication
US11221397B2 (en) * 2019-04-05 2022-01-11 Texas Instruments Incorporated Two-dimensional FFT computation
CN113378108B (zh) * 2020-02-25 2023-04-18 珠海市煊扬科技有限公司 音频处理装置的快速傅立叶变换电路
US11983530B2 (en) * 2020-03-27 2024-05-14 Intel Corporation Reconfigurable digital signal processing (DSP) vector engine
CN112800387B (zh) * 2021-03-30 2021-08-03 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916651A (en) * 1988-01-29 1990-04-10 Texas Instruments Incorporated Floating point processor architecture
US7567997B2 (en) 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US8266199B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) * 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8543635B2 (en) 2009-01-27 2013-09-24 Xilinx, Inc. Digital signal processing block with preadder stage
CN101847986B (zh) 2009-03-27 2012-06-06 中兴通讯股份有限公司 一种实现fft/ifft变换的电路及方法
US20120290819A1 (en) 2011-05-09 2012-11-15 Altera Corporation Dsp block with embedded floating point structures
US8543634B1 (en) * 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
CN103631759B (zh) * 2012-08-22 2018-02-13 中兴通讯股份有限公司 一种实现快速傅立叶变换/离散傅立叶变换的装置及方法
US9207908B1 (en) * 2013-01-29 2015-12-08 Altera Corporation Digital signal processing blocks with embedded arithmetic circuits
US10019234B2 (en) * 2015-10-05 2018-07-10 Altera Corporation Methods and apparatus for sequencing multiply-accumulate operations
US10037192B2 (en) * 2015-10-21 2018-07-31 Altera Corporation Methods and apparatus for performing product series operations in multiplier accumulator blocks
US10042606B2 (en) * 2016-05-03 2018-08-07 Altera Corporation Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks
US20170328951A1 (en) * 2016-05-13 2017-11-16 Altera Corporation Embedded built-in self-test (bist) circuitry for digital signal processor (dsp) validation
US10140091B2 (en) * 2016-09-27 2018-11-27 Altera Corporation Integrated circuits with specialized processing blocks for performing floating-point fast fourier transforms and complex multiplication

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor

Also Published As

Publication number Publication date
CN109792246B (zh) 2023-02-17
US10140091B2 (en) 2018-11-27
US20190121614A1 (en) 2019-04-25
CN115756383A (zh) 2023-03-07
WO2018063656A3 (en) 2018-07-12
CN109792246A (zh) 2019-05-21
WO2018063656A2 (en) 2018-04-05
US20180088906A1 (en) 2018-03-29
US10649731B2 (en) 2020-05-12

Similar Documents

Publication Publication Date Title
DE112017004291T5 (de) Integrierte Schaltungen mit spezialisierten Verarbeitungsblöcken zum Durchführen von schnellen Fourier Gleitkommatransformationen und komplexer Multiplikation
DE102018108431A1 (de) Mischgenauigkeitsgleitkommaarithmetik-schaltungsanordnung in spezialisierten verarbeitungsblöcken
DE3586201T2 (de) Digitaler datenprozessor fuer matrix-vektor-multiplikation.
DE4417575C2 (de) Verbesserte Array-Architektur für programmierbare logische Zellen
DE69832985T2 (de) Multiplizier-Akkumulatorschaltungen
DE3854818T2 (de) Transformationsverarbeitungsschaltung
DE3700991A1 (de) Digitaler uebertragsvorgriffsaddierer
DE102020105536A1 (de) Maschinenlerntrainingsarchitektur für programmierbare Vorrichtungen
DE602004006841T2 (de) Elektronischer schaltkreis mit einem feld programmierbarer logischer zellen
DE102020111904A1 (de) Logikschaltkreise mit erhöhten arithmetischen dichten
DE4409834C2 (de) Multiplizierschaltung
DE2758130A1 (de) Binaerer und dezimaler hochgeschwindigkeitsaddierer
EP0090298B1 (de) In MOS-Technik integrierter schneller Multiplizierer
DE69026414T2 (de) Binäres Addiergerät
DE102020130215A1 (de) Techniken zum Transponieren einer Matrix durch Verwenden eines Speicherblocks
DE112012003335T5 (de) Integrierte Schaltung
EP0305708B1 (de) Digitales Dezimierungsfilter
DE3933172A1 (de) Akkumulator fuer komplexe zahlen
DE102020133279A1 (de) Verfahren und schaltung zur steigerung des durchsatzes von rekursiven systemen
EP0424410B1 (de) Multiplizierer
DE69821145T2 (de) Flächeneffiziente herstellung von koeffizient-architektur für bit-serielle fir, iir filter und kombinatorische/sequentielle logische struktur ohne latenz
DE102018115219A1 (de) Systeme und Verfahren zur Abbildung von Reduktionsoperationen
EP0088474B1 (de) Verfahren zur Herstellung einer digitalen Filteranordnung als integrierte Schaltung
DE602004002554T2 (de) Block Modus Aufteilung eines Multiplizier-Akkumulators
DE112021007047T5 (de) Logikzelle für programmierbares gate-array

Legal Events

Date Code Title Description
R012 Request for examination validly filed