DE202014011350U1 - FFT- Beschleuniger - Google Patents

FFT- Beschleuniger Download PDF

Info

Publication number
DE202014011350U1
DE202014011350U1 DE202014011350.5U DE202014011350U DE202014011350U1 DE 202014011350 U1 DE202014011350 U1 DE 202014011350U1 DE 202014011350 U DE202014011350 U DE 202014011350U DE 202014011350 U1 DE202014011350 U1 DE 202014011350U1
Authority
DE
Germany
Prior art keywords
points
butterfly
fft
memory
constant geometry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE202014011350.5U
Other languages
English (en)
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.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
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 Analog Devices Inc filed Critical Analog Devices Inc
Publication of DE202014011350U1 publication Critical patent/DE202014011350U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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

Abstract

System zur Durchführung einer Schnellen Fourier-Transformation („FFT“) an n Punkten, das System aufweisend:einen ersten Eingabepuffer zum Empfangen eines Teilsatzes der n Punkte von einem Computerspeicher, der Teilsatz aufweisend m Punkte;eine Butterfly-Einheit zur Durchführung einer Radix-2- oder Radix-4-Butterfly-Operation an den m Punkten;einen Ausgabepuffer zum Empfangen eines Ergebnisses der Butterfly-Operation von der Butterfly-Einheit, der Ausgabepuffer aufweisend einen Ausgabeanschluss zur Transposition von Datenpunkten, die darin gespeichert sind; undSteuerungslogik zum:Anweisen der Butterfly-Einheit, eine Mehrzahl von Konstantgeometrie-Butterfly-Operationen seriell für jede Gruppe von m Punkten durchzuführen, bis die m Punkte in ihre ursprüngliche Reihenfolge im Computerspeicher zurückkehren;Anweisen des Systems, den Schritt des Durchführens einer Mehrzahl von Konstantgeometrie-Butterfly-Operationen für jede nachfolgende Gruppe von m Punkten zu wiederholen;Anweisen des Systems, mindestens eine In-Place-Butterfly-Operation vor oder nach den Konstantgeometrie-Butterfly-Operationen durchzuführen, wodurch die FFT der n Punkte abgeschlossen wird.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung beziehen sich allgemein auf Digitalsignalverarbeitung und insbesondere auf Beschleuniger der schnellen Fourier-Transformation („FFT“).
  • ALLGEMEINER STAND DER TECHNIK
  • Das Verhalten elektromagnetischer Signale kann im Zeitbereich (z.B. wie die Signalamplitude mit der Zeit variiert) sowie im Frequenzbereich (d.h. die verschiedenen Frequenzkomponenten, aus denen sich das Signal zusammensetzt) analysiert werden. Die Fourier-Transformation setzt diese zwei Bereiche mathematisch zueinander in Beziehung, und aufgrund ihrer Allgegenwärtigkeit über Signalverarbeitungsanwendungen hinweg wurden Anstrengungen unternommen, ihre Ausführung rechnerisch zu beschleunigen - daher die vielen FFT-Ansätze. Weiterhin kann ein Signal als eine kontinuierliche Wellenform analysiert werden, oder in der Digitalsignalverarbeitung (DSP) als ein großer Satz von Zeitbereichspunkten. Für DSP-Anwendungen kann ein FFT-„Butterfly“-Algorithmus genutzt werden, um eine diskrete Fourier-Transformation („DFT“) eines Signals zu berechnen, das in digitaler Form dargestellt ist. Der Algorithmus teilt die Punkte in Teilsätze auf (in einem Prozess, der als „Dezimation“ bekannt ist), berechnet die DFT jedes Teilsatzes und verarbeitet dann die Ergebnisse der DFT jedes Teilsatzes, um ein Endergebnis zu erzeugen, das aus einem Satz von Frequenzbereichspunkten besteht. Die Teilsätze können so klein sein, dass sie jeweils nur ein paar (oder sogar nur einen) Zeitbereichspunkte enthalten, wodurch die DFT jedes Teilsatzes trivial wird - die DFT eines einzelnen Punkts ist einfach der Punkt selbst. Zum Beispiel kann ein Anfangssatz von 1024 Zeitbereichspunkten zu 1024 Teilsätzen von jeweils einem Punkt dezimiert werden; die Teilsätze werden dann sorgfältig verarbeitet, kombiniert und zu einem Frequenzbereichsergebnis mit 1024 Punkten zusammengeführt.
  • Der Großteil des Rechenaufwands des Algorithmus liegt in der Verarbeitung der Teilsätze. Die Verarbeitung erfolgt in einer Reihe von Stufen, in denen die Teilsätze zuerst zu Zwischenergebnissen verarbeitet werden, die Zwischenergebnisse weiter verarbeitet werden, und so weiter, bis der letzte Satz von Frequenzbereichspunkten erzeugt ist. Jede Stufe weist eine Mehrzahl von parallelen Operationen auf, die jeweils n Eingabepunkte gleichzeitig verarbeiten, um n Ausgabepunkte zu erzeugen - der Wert n ist als die „Radix“ des FFT-Algorithmus bekannt. Da ein Datenflussdiagramm einer Operation mit Radix-2 (d.h. einer Radix mit einem Wert von zwei) einem Schmetterling ähnelt (wie in 1A gezeigt, in der die Punkte x0 , x1 entsprechend den Gleichungen y0 = x0 + x1 und y1 = x0 - x1 zu Punkten y0 , y1 verarbeitet werden), sind diese Operationen als Butterfly-Operationen oder Butterflys bekannt. Operationen mit anderen Radices sind ebenfalls als Butterfly-Operationen bekannt (wie beispielsweise die Radix-4-Operation, die in 1B gezeigt ist).
  • Es existieren viele verschiedene Abwandlungen des oben beschriebenen Grundalgorithmus. Zum Beispiel trennt eine FFT mit Dezimierung in der Zeit die ursprünglichen Zeitbereichspunkte (und weitere Unterteilungen) in ungerade und gerade Gruppen, während eine FFT mit Dezimierung in der Frequenz die ursprünglichen Zeitbereichspunkte (und weitere Unterteilungen) in erste und zweite Hälften trennt. Eine In-Place-FFT führt die Transformation nur mit dem Speicherplatz durch, der erforderlich ist, um die ursprünglichen Abtastwerte aufzunehmen (mit dem Nachteil, dass Routing und Steuerungslogik komplizierter sind), während eine Konstantgeometrie-FFT (auch als Konstanttopologie-FFT bekannt) nur einfaches Routing und einfache Steuerungslogik erfordert (mit dem Nachteil, dass zusätzlicher Speicherplatz erforderlich ist).
  • Zum Beispiel erfordert eine In-Place-Implementierung, die eine FFT an einer Zeitbereichseingabe mit 1024 Punkten durchführen kann, einen Speicher, der nur groß genug ist, um die 1024 Punkte aufzunehmen, erfordert jedoch, dass die Punkte für jede Stufe der Rekombination der Punkte in verschiedenen Mustern gelesen werden. Unter der Annahme, dass die In-Place-Implementierung Radix-4 und Dezimierung in der Zeit ist (wenngleich eine ähnliche Analyse auf jede In-Place-Implementierung Anwendung findet), sind fünf Stufen erforderlich, um die 1024 Punkte zu rekombinieren (da log4 (1024) = 5). In der ersten Stufe empfängt der erste von 256 Radix-4-Butterflys die Punkte 0, 1, 2, 3; der zweite Radix-4-Butterfly empfängt die Punkte 4, 5, 6, 7; und so weiter. Die Ergebnisse jeder Butterfly-Operation werden in denselben Speicherplatz zurück geschrieben, der die ursprünglichen 1024 Punkte aufnahm. In der zweiten Stufe empfängt der erste Butterfly die Punkte 0, 4, 8, 12, und der zweite Butterfly empfängt die Punkte 1, 5, 9, 13; in der dritten Stufe empfängt der erste Butterfly die Punkte 0, 16, 32, 48, und der zweite Butterfly empfängt die Punkte 1, 17, 33, 49. Im Allgemeinen ist die Eingabe des ersten Radix-4-Butterflys für Stufe drei und darüber hinaus als { 0 } ,   { 4 i 1 } ,   { 2 × 4 ( i 1 ) } ,   { 3 × 4 ( i 1 ) }
    Figure DE202014011350U1_0001
    gegeben, und ist für den zweiten Butterfly { 0 + 1 } ,   { 4 ( i 1 ) + 1 } ,   { 2 × 4 ( i 1 ) + 1 } ,   { 3 × 4 ( i 1 ) + 1 }
    Figure DE202014011350U1_0002
    und so weiter, wobei i die Stufenzahl ist.
  • Es können zwei verschiedene Ansätze genutzt werden, um die verschiedenen Lesemuster zu implementieren, die für die In-Place-FFT erforderlich sind, wobei jeder seine eigenen Nachteile aufweist. In einem ersten Ansatz können vier verschiedene Speicherbänke genutzt werden, wobei jede imstande ist, 1024 Punkte zu speichern, so dass in jedem Zyklus vier Punkte aus den vier Speicherbänken gelesen werden können, entsprechend Gleichung (1). Offensichtlich vervierfacht diese Ausgestaltung den erforderlichen Speicherplatz. Ein weiterer herkömmlicher Ansatz nutzt eine einzelne Datenbank, erfordert jedoch komplizierte Hardware (z.B. Logik und Puffer), um die verschiedenen Lesemuster zu unterstützen. Ein Konstantgeometrie-Ansatz erfordert gleichermaßen zusätzlichen Speicher. Es besteht daher ein Bedarf an schnellen, effizienten FFT-Techniken und Prozessoren, die nur ein einfaches Routingschema erfordern und keinen zusätzlichen Speicherplatz nutzen.
  • KURZDARSTELLUNG
  • Im Allgemeinen nutzen verschiedene Ausführungsformen der hierin beschriebenen Systeme und Verfahren sowohl Konstantgeometrie als auch In-Place-Butterflys, um eine FFT eines Satzes von eingegebenen Zeitbereichspunkten zu berechnen. In einer Ausführungsform wird eine Mehrzahl von Konstantgeometrie-Butterflys an Teilsätzen der Eingabepunkte durchgeführt; jeder Konstantgeometrie-Butterfly weist eine Transposition der Daten auf. Wenn die Mehrzahl von Konstantgeometrie-Butterflys abgeschlossen ist, kehren die Eingabepunkte in ihre ursprüngliche oder „natürliche“ Reihenfolge zurück. Eine oder mehrere In-Place-Operationen kann dann nach Bedarf durchgeführt werden, um die Punktegruppen zu kombinieren. Zum Beispiel kann eine FFT mit Dezimierung in der Zeit mit 1024 Punkten fünf Stufen von Radix-4-Butterfly-Operationen nutzen. Die ersten drei Stufen können mithilfe von Konstantgeometrie-Operationen an sechzehn 64-Punkte-Teilsätzen der 1024 Punkte berechnet werden; die letzen zwei Stufen können mithilfe eines In-Place-FFT-Verfahrens berechnet werden.
  • In einem Aspekt enthält ein Verfahren zur rechnerischen Durchführung einer schnellen Fourier-Transformation („FFT“) an n Punkten Aufteilen der n Punkte in eine Mehrzahl von Gruppen von m Punkten, wobei m < n, und Durchführen einer Mehrzahl von Konstantgeometrie-FFTs an jeder der Gruppen von m Punkten. Jede Konstantgeometrie-FFT enthält (i) Lesen der m Punkte aus einem Computerspeicher in einen Eingabepuffer; (ii) rechnerisches Anwenden einer Butterfly-Operation auf jeden der m Punkte; (iii) Schreiben von Ergebnissen der Butterfly-Operation in einen Ausgabepuffer; und (iv) Speichern transponierter Inhalte des Ausgabepuffers an dem ursprünglichen Ort der m Punkte in dem Computerspeicher, wodurch die ursprünglichen m Punkte überschrieben werden. Es wird mindestens eine In-Place-FFT an den Ergebnissen der Mehrzahl von Konstantgeometrie-FFTs durchgeführt, die in dem Computerspeicher gespeichert sind, wodurch die FFT der n Punkte abgeschlossen wird.
  • N kann 2x sein, wobei x eine Ganzzahl ist; m kann 64 sein. Die Butterfly-Operation kann Radix-2 oder Radix-4 sein. Der Computerspeicher kann ein Einzelportspeicher sein; nur ein Lese- oder Schreibzugriff darauf kann in einem Zyklus erfolgen. Das Durchführen der In-Place-FFT kann Schreiben der m Punkte in eine andere Art von Eingabepuffer enthalten. Das Schreiben der m Punkte in die andere Art von Eingabepuffer kann die Transposition von Inhalten durch den Ausgabepuffer aufheben. N ist möglicherweise kein Vielfaches von m; Punkte können den n Punkten hinzuaddiert werden, bis die Gesamtzahl von Punkten ein Vielfaches von m ist.
  • In einem anderen Aspekt enthält ein System zur Durchführung einer schnellen Fourier-Transformation („FFT“) an n Punkten einen Eingabepuffer zum Empfangen eines Teilsatzes (von m Punkten) der n Punkte, eine Butterfly-Einheit zum Durchführen einer Butterfly-Operation an den m Punkten; einen Ausgabepuffer (der einen Ausgabeanschluss zur Transposition von Datenpunkten aufweist, die darin gespeichert sind) zum Empfangen eines Ergebnisses der Butterfly-Operation und Steuerungslogik zum Anweisen der Butterfly-Einheit, eine Mehrzahl von Konstantgeometrie-Butterfly-Operationen durchzuführen, auf die mindestens eine In-Place-Butterfly-Operation folgt.
  • Ein lokaler Speicher (z.B. ein Einzelportspeicher und/oder ein Speicher von zwei Bänken) kann die n Punkte speichern. Ein Eingabe-FIFO kann die n Punkte von einem externen Speicher empfangen, und ein Ausgabe-FIFO kann die n Punkte an einen externen Speicher senden. Der Eingabepuffer kann einen ersten Typen von Eingabepuffer für Konstantgeometrie-Butterflys und einen zweiten Typen von Eingabepuffer für In-Place-Butterflys aufweisen.
  • In einem anderen Aspekt enthält ein Verfahren zur rechnerischen Durchführung einer schnellen Fourier-Transformation („FFT“) Durchführen einer Anzahl von Stufen von In-Place-FFTs an allen n Punkten und Aufteilen der n Punkte in eine Mehrzahl von Gruppen von m Punkten, wobei m < n. Dann Durchführen mindestens einer Stufe einer Konstantgeometrie-FFT, wodurch die FFT der n Punkte abgeschlossen wird. Jede Konstantgeometrie-FFT enthält (i) Lesen der m Punkte aus einem Computerspeicher in einen Eingabepuffer; (ii) rechnerisches Anwenden einer Butterfly-Operation auf die transponierten Inhalte des Eingabepuffers; (iii) Schreiben von Ergebnissen der Butterfly-Operation in einen Ausgabepuffer; und (iv) Speichern der Inhalte des Ausgabepuffers an dem ursprünglichen Ort der m Punkte in dem Computerspeicher, wodurch die ursprünglichen m Punkte überschrieben werden. N kann 2x sein, wobei x eine Ganzzahl ist, und m kann 64 sein. Die Butterfly-Operation kann Radix-2 oder Radix-4 sein. Der Computerspeicher kann ein Einzelportspeicher sein; nur ein Lese- oder Schreibzugriff darauf kann in einem Zyklus erfolgen.
  • Diese und andere Aufgaben werden zusammen mit Vorteilen und Merkmalen der vorliegenden Erfindung, die hierin offenbart wird, durch Bezugnahme auf die folgende Beschreibung, die begleitenden Zeichnungen und die Ansprüche ersichtlicher. Ferner versteht es sich, dass die Merkmale der verschiedenen Ausführungsformen, die hierin beschrieben werden, sich nicht gegenseitig ausschließen und in verschiedenen Kombinationen und Permutationen vorliegen können.
  • Figurenliste
  • In den Zeichnungen beziehen sich gleiche Bezugszeichen im Allgemeinen auf dieselben Teile in den verschiedenen Ansichten. In der folgenden Beschreibung werden verschiedene Ausführungsformen der vorliegenden Erfindung unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in denen:
    • 1A und 1B beispielhafte Butterfly-Operationen veranschaulichen;
    • 2A und 2B FFT-Beschleuniger entsprechend Ausführungsformen der Erfindung veranschaulichen;
    • 3 eine Implementierung eines FFT-Beschleunigers gemäß einer Ausführungsform der Erfindung schematisch veranschaulicht;
    • 4A und 4B Verfahren zur Berechnung einer FFT gemäß Ausführungsformen der Erfindung veranschaulichen;
    • 5 und 6 eine erste Stufe einer FFT-Operation und die Inhalte eines Speichers danach gemäß der Ausführungsform der Erfindung veranschaulichen, die in 4A gezeigt ist;
    • 7 und 8 eine zweite Stufe einer FFT-Operation und die Inhalte eines Speichers danach gemäß der Ausführungsform der Erfindung veranschaulichen, die in 4A gezeigt ist;
    • 9 und 10 eine dritte Stufe einer FFT-Operation und die Inhalte eines Speichers danach gemäß der Ausführungsform der Erfindung veranschaulichen, die in 4A gezeigt ist;
    • 11 vierte und nachfolgende Stufen einer FFT-Operation gemäß der Ausführungsform der Erfindung veranschaulicht, die in 4A gezeigt ist; und
    • 12 ein Beispiel-Zeitdiagramm zur Durchführung einer FFT-Operation gemäß der Ausführungsform der Erfindung veranschaulicht, die in 4A gezeigt ist.
  • DETAILLIERTE BESCHREIBUNG
  • In verschiedenen Ausführungsformen der vorliegenden Erfindung wird ein eingegebener Satz von Zeitbereichspunkten (z.B. 512, 1024 oder eine beliebige andere Anzahl von Punkten) in eine Mehrzahl von kleineren Gruppen von Punkten (z.B. 16, 64 oder 256 Punkten) aufgeteilt. Eine Reihe von Konstantgeometrie-Butterfly-Operationen wird an jeder der aufgeteilten Gruppen durchgeführt; jede Gruppe kann getrennt und/oder parallel berechnet werden, da die Berechnung jeder Gruppe möglicherweise nicht von den Ergebnissen einer anderen abhängt. Die Punkte jeder Gruppe werden in jeder Konstantgeometrie-Operation transponiert, und nach einer bestimmten Anzahl der Operationen (z.B. drei) kehren die Punkte in ihre natürliche Reihenfolge zurück. Eine oder mehrere In-Place-Butterfly-Operationen können dann durchgeführt werden, um die getrennten Gruppen teilweise berechneter Ergebnisse zu kombinieren.
  • Eine Ansicht der obersten Ebene 200 eines FFT-Beschleunigers 202 gemäß der vorliegenden Erfindung ist in 2A gezeigt. In dieser Ausführungsform kommuniziert der FFT-Beschleuniger 202 mit den anderen Systemkomponenten (z.B. einem Hauptspeicher, einem Allzweckprozessor und/oder einem Digitalsignalprozessor) mithilfe einer Einheit 204 für direkten Speicherzugriff („DMA“) und eines Busses 206 (der ein AXI-Bus sein kann) . Der Fachmann wird jedoch verstehen, dass der FFT-Beschleuniger 202 mit anderen Systemkomponenten mithilfe einer beliebigen Busarchitektur und/oder eines beliebigen Speicherzugriffsprotokolls kommunizieren kann.
  • Der FFT-Beschleuniger 202 ist in 2B genauer gezeigt, in welcher eingehende Daten (z.B. von einem Hauptspeicher) in einem Dateneingang 208 empfangen werden. Der FFT-Beschleuniger 202 führt gemäß Ausführungsformen der vorliegenden Erfindung und nachstehend näher erläutert eine FFT an den Daten durch und gibt die verarbeiteten Daten an einem Ausgabeanschluss 210 aus. Die ein- und ausgehenden Daten können in First-In-First-Out- („FIFO-“) Puffern gemäß eingehenden Lese- und Schreibsignalen 212 und ausgehenden Datenbereitschafts- und Datenanforderungssignalen 214 gespeichert werden. Der FFT-Beschleuniger 202 kann andere Signale empfangen oder übertragen, wie beispielsweise Takt-, Reset- oder Registerlese-/-schreibsignale; die aktuelle Erfindung ist jedoch nicht auf bestimmte Sätze von Eingabe-, Ausgabe- oder Steuerungssignalen beschränkt, und der Fachmann wird verstehen, dass der FFT-Beschleuniger 202 mit mehr oder weniger Ein- oder Ausgaben implementiert werden kann.
  • Ein Blockdiagramm einer Implementierung 300 des FFT-Beschleunigers 202 ist in 3 gezeigt. In dieser Ausführungsform werden eingehende Daten 208 in einem Eingabe-FIFO 302 empfangen und in lokalen Speichern 304, 306 gespeichert. Teilsätze der Daten werden aus den lokalen Speichern 304, 306 in ein oder mehrere Eingabe-Butterfly-Register B0-B3 gelesen; eine Butterfly-Einheit 308 führt eine herkömmliche Butterfly-Operation an den Daten durch, die in den Eingabe-Butterfly-Registern B0-B3 gespeichert sind. Wie der Fachmann verstehen wird, kann die Butterfly-Einheit 308 eine Digitallogik-Berechnungseinheit sein, die dafür ausgelegt ist, einen oder mehrere Typen von Butterfly-Operationen durchzuführen. Ergebnisse der Butterfly-Operationen werden in einem oder mehreren Ausgabe-Butterfly-Registern D2-D3 gespeichert und dann in die lokalen Speicher 304, 306 zurück geschrieben. Die Daten können die Butterfly-Einheit 308 mehrmals durchlaufen, wie nachstehend näher erläutert. Sobald die FFT abgeschlossen ist, werden die Daten als Vorbereitung auf die Ausgabe durch den Ausgabeanschluss 210 in ein Ausgabe-FIFO 310 geschrieben. Wie der Fachmann verstehen wird, kann ein Steuerungsmodul 312 genutzt werden, um die verschiedenen Steuerungssignale (z.B. Lese-, Schreib-, Adressierungs- und Multiplex- (mux-) Steuerung) zu erzeugen, die in dem FFT-Beschleuniger 202 genutzt werden, jedoch sind beliebige Typen von Steuerungslogik und/oder -modulen im Umfang der aktuellen Erfindung enthalten. In einer Ausführungsform wird ein Twiddlefaktor-Generator 314 genutzt, um der Butterfly-Einheit 308 Steuerungssignale zuzuführen.
  • Die vorliegende Erfindung ist jedoch nicht auf die bestimmte Ausführungsform beschränkt, die in 3 gezeigt ist, und andere Ausgestaltungen des Systems 300 sind im Umfang der vorliegenden Erfindung enthalten. Zum Beispiel befinden sich die Butterfly-Register B0-B3 an der Ausgabe der Butterfly-Einheit 308, und die Butterfly-Register D2-D3 befinden sich an der Eingabe der Butterfly-Einheit 308. Entweder die B- oder die D-Butterfly-Register können die Daten auf ihrem Weg durch die Butterfly-Einheit 308 transponieren. In einer Ausführungsform sind die Butterfly-Register, welche die Transposition durchführen, Sätze von Ping-Pong-Registern; eins von dem Paar von Ping-Pong-Registern wird dafür genutzt, Daten zu empfangen, während das andere von dem Paar von Ping-Pong-Registern (das bereits mit Daten befüllt ist) dafür genutzt wird, Daten der Butterfly-Einheit 308 zuzuführen. Wenn das erste des Paars von Ping-Pong-Registern befüllt ist und das zweite von dem Paar von Ping-Pong-Registern alle seine Daten der Butterfly-Einheit 308 zugeführt hat, werden ihre Rollen umgekehrt, und das erste von dem Paar wird dafür genutzt, die Butterfly-Einheit 308 zu versorgen, und das zweite empfängt neue Daten. In einer Ausführungsform sind vier Eingaberegister und vier Ausgaberegister vorhanden; jedes Register kann dazu ausgebildet sein, entweder ein B- oder ein D-Register zu sein und/oder Daten gemäß einem oder mehreren Steuerungssignalen zu transponieren, wie es eine Anwendung erfordert. In anderen Ausführungsformen sind weniger als vier Eingabe- und/oder Ausgaberegister vorhanden; die vorliegende Erfindung ist nicht auf eine bestimmte Anzahl oder einen bestimmten Typ von Eingabe- oder Ausgaberegister beschränkt.
  • Ein Verfahren 400 zur Durchführung einer FFT gemäß einer Ausführungsform der vorliegenden Erfindung ist in 4A veranschaulicht. In einem ersten Schritt 402 wird ein eingegebener Satz von n Zeitbereichspunkten in eine Mehrzahl von Gruppen von m Punkten aufgeteilt. In einem zweiten Schritt 404 kann jede Gruppe unabhängig verarbeitet werden (z.B. wird die gesamte oder ein Teil der Verarbeitung parallel durchgeführt). Für jede Gruppe werden in einem dritten Schritt 406 die m Punkte in einen Eingabepuffer (z.B. aus einem System oder lokalen Speicher) eingelesen. In einem vierten Schritt 408 wird eine Butterfly-Operation (z.B. eine Butterfly-Operation, die in jeder Iteration an denselben Bitpositionen wirkt) auf jeden der m Punkte angewandt. In einem fünften Schritt 410 werden die Ergebnisse in einen Ausgabepuffer geschrieben, und in einem sechsten Schritt 412 werden die Ergebnisse transponiert, wenn sie in den Speicher zurück geschrieben werden. Die Schritte drei bis sechs 406-412 können wiederholt werden, bis die m Punkte in ihre natürliche Reihenfolge in dem Speicher zurückkehren. Die Schritte drei bis sechs 406-412 schließen die Konstantgeometrie-FFT-Operationen an jedem der m Punkte effektiv ab; die Ausdrücke „Konstantgeometrie-FFT-Operationen“ und/oder „Konstantgeometrie-FFT“ können sich bei dieser bestimmten Ausführungsform der Erfindung auf die Schritte 406-412 beziehen. In einem siebten Schritt 414 werden nach Bedarf eine oder mehrere FFTs an den n Punkten (d.h. allen Gruppen) durchgeführt, um die FFT-Operation abzuschließen. 4B veranschaulicht ein verwandtes Verfahren 450, bei dem in einem ersten Schritt 451 eine Anzahl von In-Place-Butterfly-Stufen auf alle n Punkte angewandt wird. Bei Schritt 452 werden die n Punkte in eine Mehrzahl von m Punkten aufgeteilt. Für jede Gruppe werden bei Schritt 454 die m Punkte in den Eingabepuffer eingelesen. Bei Schritt 455 wird eine Butterfly-Operation auf die transponierten Inhalte in dem Eingabepuffer angewandt. Bei Schritt 456 wird das Butterfly-Ergebnis in den Ausgabepuffer geschrieben. Bei Schritt 457 werden die Inhalte des Ausgabepuffers zurück in den Speicher gespeichert. Die Schritte 454 bis 457 schließen die Konstantgeometrie-FFT-Operationen an jedem der m Punkte effektiv ab. Nachdem die Schritte 454 bis 457 der Konstantgeometrie-FFT-Operationen für alle Gruppen wiederholt wurden, wobei jede m Punkte aufweist, ist die gesamte FFT-Berechnung abgeschlossen, und die Daten, die in dem Speicher gespeichert sind, entsprechen dem FFT-Ergebnis.
  • Ausführlicher auf Schritt 402 zurückkommend, können die n Punkte in einem Systemspeicher gespeichert werden (und zum Beispiel über einen Systembus 206 zugreifbar sein) und in einen lokalen Speicher geladen werden (z.B. die lokalen Speicher 304, 306). In anderen Ausführungsformen können der Systemspeicher oder der lokale Speicher 304, 306 exklusiv genutzt werden; die vorliegende Erfindung ist auf keine bestimmte Speicherbeschaffenheit beschränkt. Die n Punkte können zeitlich gestaffelt in einen Block oder in verschiedene Blöcke geladen werden. Der Eingabe-FIFO 302 kann genutzt werden, um Unterschiede bei der Geschwindigkeit des Systems und lokaler Speicher auszugleichen. Die Anzahl der Gruppen und Größe m jeder Gruppe kann auf der Radix der Butterfly-Operation 308 basieren. In einer Ausführungsform nutzt die Butterfly-Einheit 308 eine Radix-4-Butterfly-Operation, und m ist 64, jedoch liegen andere Radixgrößen und Werte von m im Umfang der vorliegenden Erfindung. Wenn die Gesamtzahl der Datenpunkte n kein ganzzahliges Vielfaches von m ist, können zufällige Werte den tatsächlichen Datenpunkten hinzuaddiert werden, um eine Anzahl von Punkten zu erzeugen, die ein Vielfaches von m ist.
  • Beispielausführungsformen des dritten bis sechsten Schritts 406-412 sind in den 5-10 veranschaulicht (für den Fall, dass m 64 ist, sind insgesamt 3 (z.B., log4(64)) Stufen von Konstantgeometrie-FFT-Operationen vorhanden. 5 veranschaulicht die Konstantgeometrie-FFT der ersten Stufe, die eine Butterfly-Operation 500 an 64 Datenpunkten durchführt. Das Eingabe-Butterfly-Register B0 wird mit Eingabedaten beladen, die Indizes 0...31 aufweisen (d.h. Daten in ihrer ursprünglichen, „natürlichen“ Reihenfolge). Die Daten, die jedem Index entsprechen, stellen einen Punkt dar und können beliebige Werte aufweisen und eine beliebige Anzahl von Bits einnehmen; die vorliegende Erfindung ist auf kein bestimmtes Datenformat beschränkt. Die Zahlen hierin beziehen sich auf den Datenindex, nicht auf tatsächliche Datenpunkte (die bei jeder Butterfly-Operation den Wert ändern).
  • Die ersten 32 Datenpunkte werden in Acht-Bit-Gruppen 502 geladen, und das Register B0 wird in der Reihenfolge von rechts nach links beladen. Das Eingaberegister B0 wird erneut mit Eingabedaten, die Indizes 32...63 aufweisen, in Gruppen mit acht Punkten 504 beladen. Werte, die im Register B0 gespeichert sind, werden in Gruppen mit vier Punkten 506, 508 ausgegeben und auf die Butterfly-Einheit 308 angewandt.
  • Werte mit vier Punkten 510, 512, die von der Butterfly-Einheit 308 ausgegeben werden, werden in den Ausgabe-Butterfly-Registern D2, D3 gespeichert. Die Werte, die in den Ausgaberegistern D2, D3 gespeichert sind, können in derselben Reihenfolge erscheinen wie im Eingaberegister B0, können aber in einer anderen, transponierten Reihenfolge 514, 516 ausgelesen werden. Mit anderen Worten, in dieser ersten Stufe werden Datenpunkte in einer ersten Reihenfolge gelesen, die der Vorlage 0, 1, 2, 3, 4, 5, 6, 7 entspricht, und in einer Reihenfolge ausgelesen, die der Vorlage 0, 4, 8, 12, 16, 20, 24, 28 entspricht. Die verarbeiteten Punkte können dann gemäß dieser transponierten Reihenfolge über die ursprünglichen 0 ...63 Punkte zurück in den Speicher (z.B. den lokalen Speicher 304, 306 oder Systemspeicher) geschrieben werden. 6 veranschaulicht die Inhalte 600 des Speichers nach dem Befüllen; die unteren 32 Punkte 602 werden mit einem ersten Satz verarbeiteter Punkte befüllt, die abwechselnd aus den Ausgaberegistern D2, D3 gefüllt werden - das heißt, die ersten acht Punkte 606 werden mit Daten befüllt, die den Indizes 0, 4, 8, 12, 16, 20, 24, 28 entsprechen, die zuerst aus dem Register D2 gelesen werden, die zweiten acht Punkte 608 werden mit Daten befüllt, die den Indizes 32, 36, 40, 44, 48, 52, 56, 60 entsprechen, die zuerst aus dem Register D3 gelesen werden, und so weiter.
  • 5 und 6 veranschaulichen die Konstantgeometrie-FFT der ersten Stufe, die an den Eingabedaten durchgeführt wird, die Indizes 0...63 aufweisen (so wie die 7-10, wie nachstehend näher erläutert wird), und 11 veranschaulicht eine In-Place-FFT, die an den Daten durchgeführt wird. Gemäß 4B, und wie der Fachmann verstehen wird, kann die In-Place-FFT zuerst durchgeführt werden (d.h. für die Operationen, die 11 entsprechen), und die Konstantgeometrie-FFT(s) kann bzw. können danach durchgeführt werden (z.B. gemäß der Operation bzw. den Operationen, die den 4A/4B und 5-10 entsprechen).
  • Die Konstantgeometrie-FFT-Operation 700 der zweiten Stufe ist in 7 veranschaulicht. Die zweite Operation 700 befüllt das Eingaberegister B0 auf dieselbe Art und Weise (d.h. mithilfe derselben Indexorte in derselben Reihenfolge) wie die erste Operation 500, da jedoch der Speicher 304, 306 mit einer anderen Reihenfolge von Punkten neu geschrieben wurde, wird das Register B0 mit Punkten befüllt, die andere Indizes aufweisen. Während die erste Operation 500 zum Beispiel das Register B0 mit einer ersten Gruppe 502 von Punkten 0, 1, 2, 3, 4, 5, 6, 7 befüllt hat, befüllt die zweite Operation das Register B0 mit einer ersten Gruppe 702 von Punkten 0, 4, 8, 12, 16, 20, 24, 28 gemäß den ersten acht Punkten 606 im Speicher. Das Register B2 wird in ähnlicher Weise befüllt, Butterfly-Operationen werden wieder an den Daten durchgeführt, und die Register D2, D3 werden wieder mit den Ergebnissen befüllt. Wenn die Daten aus den Registern D2, D3 ausgelesen werden, werden die Punkte wieder gemäß der Vorlage 0, 16, 32, 48, 1, 17, 33, 49 transponiert, wie in der Gruppe 704 gezeigt. Die Inhalte der Ausgaberegister D2, D3 werden wieder genutzt, um die Daten zu überschreiben, die im Speicher vorhanden sind, wie in 8 gezeigt. Die Gruppe 704 füllt zum Beispiel die ersten acht Punkte 802 in den Speicher.
  • Die Konstantgeometrie-FFT-Operation 900 der dritten Stufe wird mithilfe der Werte ausgeführt, die in der zweiten Operation 700 berechnet werden, und die Register B0, B1 werden wieder mit den Inhalten des Speichers befüllt. Eine erste Gruppe 902 von Werten, die zum Beispiel in das Register B0 geschrieben werden, entspricht den ersten acht Punkten 802 des Speichers. Das Auslesen der verarbeiteten Daten aus den Registern D2, D2 enthält eine weitere Transpositionsoperation; nach diesen drei Transpositionsoperationen erscheinen die Daten, die aus den Registern D2, D3 ausgelesen werden, wieder in ihrer natürlichen, ursprünglichen Reihenfolge. Die ersten Werte 904, die aus dem Register D2 ausgelesen werden, weisen beispielsweise die Indizes 0, 1, 2, 3, 4, 5, 6, 7 auf, und die ersten Werte 906, die aus dem Register D3 ausgelesen werden, weisen die Indizes 8, 9, 10, 11, 12, 13, 14, 15 auf. 10 veranschaulicht, wie der Speicher 1000 nun mit Daten befüllt wird, welche die Indizes 0... 63 aufweisen, wie sie bereits eingelesen wurden.
  • Jede 64-Bit-Gruppe des ursprünglichen Satzes von Eingabedaten wird in ähnlicher Weise drei Konstantgeometrie-FFT-Operationen unterzogen (entweder seriell durch dieselbe Butterfly-Einheit 308 oder parallel mithilfe zusätzlicher FFT-Beschleunigereinheiten). Sobald drei Konstantgeometrie-FFT-Operationen an jeder 64-Bit-Gruppe durchgeführt sind, können die Gruppen kombiniert werden, indem eine oder mehrere Butterfly-Operationen an all den Gruppen durchgeführt werden. Bei Radix-4 kann zum Beispiel eine FFT mit 256 Punkten eine vierte Stufe erfordern, eine FFT mit 1024 Punkten kann eine fünfte Stufe erfordern, und so weiter. Für diese nachfolgenden In-Place-Stufen können die Register B2 und B3 anstelle der Register B0 und B1 genutzt werden, wie in einer beispielhaften vierten Operation 1100 in 11 gezeigt ist. Die Register B2, B3 lesen Daten in einer bestimmten Reihenfolge 1102, so dass die Daten 1104, 1106, die aus den Registern D2, D3 ausgelesen werden, untransponiert bleiben.
  • Wie der Fachmann verstehen wird, kann eine Konstantgeometrie-FFT-Operation zusätzlichen Speicherplatz erfordern, um während der Operation einige oder alle der Eingabe-Datenpunkte aufzunehmen (im Austausch für den Nutzen einfachen Routings und einfacher Steuerungslogik). In einer Ausführungsform wird dieser zusätzliche Speicherplatz durch die Puffer B0-B3 und D2-D3 bereitgestellt; Datenpunkte werden ausgelesen und „im Flug“ [in-flight] in einem oder mehreren der Register B0-B3 und D2 -D3 gespeichert, bevor sie anschließend an den Abschluss einer Butterfly-Stufe mit aktualisierten Werten wieder geschrieben werden. Alternativ oder zusätzlich kann zusätzlicher Speicherplatz in den Speichern 304, 306 genutzt werden. Zum Beispiel können 64 Extrapunkte als temporärer Speicher für eine FFT-Operation mit 512 Punkten genutzt werden.
  • Eine Ausführungsform eines Zeitdiagramms 1200, das die Speicherung „im Flug“ [in-flight] implementiert, ist in 12 gezeigt. Das Zeitdiagramm 1200 bildet eine vierstufige FFT-Operation mit 512 Punkten ab, in der die Register B0, B1 in den Stufen eins, zwei und drei und die Register B2, B3 in Stufe vier genutzt werden. Die Zahlen im Diagramm 1200 spiegeln die Zyklen wieder, in denen jede Operation erfolgt; in der ersten Stufe wird zum Beispiel das Register B0 in den Zyklen 0, 2, 4, 6 befüllt (als „0→6:2“ dargestellt, wie in „Zyklen 0 bis 6 in 2er-Stufen“). Sobald alle Daten im Zyklus 6 angekommen sind, wird eine Butterfly-Operation in den Zyklen 7→17 durchgeführt, und das Register D2 wird in den Zyklen 11→18 mit den Ergebnissen befüllt (unter Berücksichtigung der Latenz in der Butterfly-Einheit 308). Die Ergebnisse werden in den Zyklen 19→25:2 zurück in den Hauptspeicher geschrieben; diese Ergebnisse überschreiben die ursprünglichen Daten, aber erst nachdem sie genutzt wurden und nicht mehr benötigt werden. Andere Datenpunkte werden in anderen Stufen in andere Register B1, B2, B3 geladen und gemäß dem Zeitdiagramm 1200 verarbeitet; der Rest der Datenpunkte wird in ähnlicher Weise zurück in denselben Speicherplatz in den Speichern 304, 306 geschrieben.
  • In einer Ausführungsform sind die Speicher 304, 306 Einzelportspeicher (d.h. sie weisen einen einzelnen gemeinsam genutzten Mechanismus auf, um die im Inneren enthaltenen Speicherzellen zu lesen und zu beschreiben). Wie der Fachmann verstehen wird, können Einzelportspeicher kleiner, einfacher, zuverlässiger sein und/oder weniger Energie verbrauchen als Mehrportspeicher. Das Zeitdiagramm 1200 spiegelt ein Muster von Lese- und Schreibvorgängen auf die Speicher 304, 306 wieder, die eine Einzelportimplementierung davon gestatten. Die Speicher 304, 306 werden gelesen, um die Register B0-B3 zu befüllen, und aus den Registern D2, D3 beschrieben; diese Lese- und Schreibvorgänge sind zeitlich so festgelegt, dass sie in verschiedenen Zyklen erfolgen. In einer Ausführungsform erfolgen die Lesevorgänge in geradzahligen Zyklen und die Schreibvorgänge in ungeradzahligen Zyklen, wie im Diagramm 1200 gezeigt. Zum Beispiel werden die Speicher 304, 306 aus dem Register D3 am Ende von Stufe eins in den Zyklen 43, 45, 47, 49 beschrieben, während in Stufe zwei das Register B1 in den Zyklen 40, 42, 44, 46 und das Register B0 in den Zyklen 48, 50, 52, 54 befüllt wird. Der Fachmann wird verstehen, dass verschiedene Lese-/Schreibmuster und oder verschiedene Zyklen im Umfang der aktuellen Erfindung liegen.
  • Es sollte auch beachtet werden, dass Ausführungsformen der vorliegenden Erfindung als ein oder mehrere computerlesbare Programme bereitgestellt werden können, die auf oder in einem oder mehreren Fertigungsartikeln ausgebildet sind. Der Fertigungsartikel kann eine beliebige geeignete Hardwarevorrichtung sein, wie beispielsweise eine Diskette, eine Festplatte, eine CD-ROM, eine CD-RW, eine CD-R, eine DVD-ROM, eine DVD-RW, eine DVD-R, eine Flash-Speicherkarte, ein PROM, ein RAM, ein ROM oder ein Magnetband. Im Allgemeinen können die computerlesbaren Programme in einer beliebigen Programmiersprache implementiert sein. Einige Beispiele für Sprachen, die genutzt werden können, sind C, C++ oder JAVA. Die Softwareprogramme können ferner in Maschinensprache oder Anweisungen für virtuelle Maschinen übersetzt und in einer Programmdatei in jener Form gespeichert werden. Die Programmdatei kann dann auf oder in einem oder mehreren der Fertigungsartikel gespeichert werden.
  • Bestimmte Ausführungsformen der vorliegenden Erfindung wurden oben beschrieben. Es wird jedoch ausdrücklich darauf hingewiesen, dass die vorliegende Erfindung nicht auf jene Ausführungsformen beschränkt ist, sondern es ist vielmehr beabsichtigt, dass Zusätze und Modifikationen zu dem, was hierin ausdrücklich beschrieben wurde, ebenfalls im Umfang der Erfindung enthalten sind. Darüber hinaus versteht es sich, dass sich die Merkmale der verschiedenen hierin beschriebenen Ausführungsformen nicht gegenseitig ausschlossen und in verschiedenen Kombinationen und Permutationen vorliegen können, selbst wenn derartige Kombinationen oder Permutationen hierin nicht ausdrücklich zum Ausdruck gebracht wurden, ohne vom Geist und Umfang der Erfindung abzuweichen. Tatsächlich werden Variationen, Modifikationen und andere Implementierungen dessen, was hierin beschrieben wurde, dem Durchschnittsfachmann einfallen, ohne vom Geist und Umfang der Erfindung abzuweichen. Daher soll die Erfindung nicht nur durch die vorangehende erläuternde Beschreibung definiert sein.

Claims (11)

  1. System zur Durchführung einer Schnellen Fourier-Transformation („FFT“) an n Punkten, das System aufweisend: einen ersten Eingabepuffer zum Empfangen eines Teilsatzes der n Punkte von einem Computerspeicher, der Teilsatz aufweisend m Punkte; eine Butterfly-Einheit zur Durchführung einer Radix-2- oder Radix-4-Butterfly-Operation an den m Punkten; einen Ausgabepuffer zum Empfangen eines Ergebnisses der Butterfly-Operation von der Butterfly-Einheit, der Ausgabepuffer aufweisend einen Ausgabeanschluss zur Transposition von Datenpunkten, die darin gespeichert sind; und Steuerungslogik zum: Anweisen der Butterfly-Einheit, eine Mehrzahl von Konstantgeometrie-Butterfly-Operationen seriell für jede Gruppe von m Punkten durchzuführen, bis die m Punkte in ihre ursprüngliche Reihenfolge im Computerspeicher zurückkehren; Anweisen des Systems, den Schritt des Durchführens einer Mehrzahl von Konstantgeometrie-Butterfly-Operationen für jede nachfolgende Gruppe von m Punkten zu wiederholen; Anweisen des Systems, mindestens eine In-Place-Butterfly-Operation vor oder nach den Konstantgeometrie-Butterfly-Operationen durchzuführen, wodurch die FFT der n Punkte abgeschlossen wird.
  2. System nach Anspruch 1, ferner aufweisend einen lokalen Speicher zur Speicherung der n Punkte.
  3. System nach Anspruch 2, wobei der lokale Speicher ein Einzelportspeicher ist und/oder wobei der lokale Speicher zwei Bänke aufweist.
  4. System nach Anspruch 1, 2 oder 3, ferner aufweisend einen Eingabe-FIFO zum Empfangen der n Punkte von einem externen Speicher.
  5. System nach Anspruch 1, 2, 3 oder 4, ferner aufweisend einen Ausgabe-FIFO zum Senden der n Punkte an einen externen Speicher.
  6. System nach einem der Ansprüche 1 bis 5, wobei der Eingabepuffer einen ersten Typ von Eingabepuffer für Konstantgeometrie-Butterflys und einen zweiten Typ von Eingabepuffer für In-Place-Butterflys aufweist.
  7. System nach einem der vorhergehenden Ansprüche, wobei n 2x ist, wobei x eine Ganzzahl ist.
  8. System nach Anspruch 7, wobei m 64 ist.
  9. System nach einem der vorhergehenden Ansprüche, wobei der Computerspeicher ein Einzelportspeicher ist und wobei in einem Zyklus nur ein Lese- oder Schreibvorgang darauf erfolgt.
  10. System nach Anspruch 6, wobei Schreiben der m Punkte in den zweiten Typ von Eingabepuffer die Transposition von Inhalten durch den Ausgabepuffer aufhebt.
  11. System nach einem der vorhergehenden Ansprüche, wobei n kein Vielfaches von m ist, ferner aufweisend Addieren von Punkten zu den n Punkten, bis die Gesamtzahl von Punkten ein Vielfaches von m ist.
DE202014011350.5U 2013-03-15 2014-03-07 FFT- Beschleuniger Expired - Lifetime DE202014011350U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201313837055 2013-03-15
US13/837,055 US9098449B2 (en) 2013-03-15 2013-03-15 FFT accelerator

Publications (1)

Publication Number Publication Date
DE202014011350U1 true DE202014011350U1 (de) 2019-08-20

Family

ID=50272333

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014011350.5U Expired - Lifetime DE202014011350U1 (de) 2013-03-15 2014-03-07 FFT- Beschleuniger

Country Status (4)

Country Link
US (1) US9098449B2 (de)
EP (2) EP2778948A3 (de)
CN (1) CN104050148B (de)
DE (1) DE202014011350U1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014203027A1 (en) * 2013-06-17 2014-12-24 Freescale Semiconductor, Inc. Processing device and method for performing a round of a fast fourier transform
DE102015104776B4 (de) * 2015-03-27 2023-08-31 Infineon Technologies Ag Verfahren und Vorrichtung zum Verarbeiten von Radarsignalen
US10853446B2 (en) 2018-06-15 2020-12-01 Apple Inc. Methods and systems for complexity reduction in discrete Fourier transform computations
CN112231625A (zh) * 2020-10-15 2021-01-15 中国电子科技集团公司第五十八研究所 一种基于混合基算法的fft处理器及其工作方法
CN113918875B (zh) * 2021-09-23 2024-05-03 同致电子科技(厦门)有限公司 一种二维fft的快速处理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3754128A (en) * 1971-08-31 1973-08-21 M Corinthios High speed signal processor for vector transformation
US4117541A (en) * 1977-11-07 1978-09-26 Communications Satellite Corporation Configurable parallel arithmetic structure for recursive digital filtering
US4138730A (en) 1977-11-07 1979-02-06 Communications Satellite Corporation High speed FFT processor
US4689762A (en) 1984-09-10 1987-08-25 Sanders Associates, Inc. Dynamically configurable fast Fourier transform butterfly circuit
US4807183A (en) 1985-09-27 1989-02-21 Carnegie-Mellon University Programmable interconnection chip for computer system functional modules
FR2599872B1 (fr) * 1986-06-06 1988-07-29 Thomson Csf Dispositifs de calcul de transformees cosinus mono-dimensionnelles, et dispositif de codage et dispositif de decodage d'images comportant de tels dispositifs de calcul
US5034910A (en) * 1988-03-14 1991-07-23 E-Systems, Inc. Systolic fast Fourier transform method and apparatus
GB2216693B (en) * 1988-03-14 1992-07-29 E Systems Inc Systolic fast fourier transform method and apparatus
US4996661A (en) 1988-10-05 1991-02-26 United Technologies Corporation Single chip complex floating point numeric processor
US6003056A (en) 1997-01-06 1999-12-14 Auslander; Lewis Dimensionless fast fourier transform method and apparatus
US7702712B2 (en) 2003-12-05 2010-04-20 Qualcomm Incorporated FFT architecture and method
US7756351B2 (en) * 2003-12-19 2010-07-13 Stmicroelectronics, Inc. Low power, high performance transform coprocessor for video compression
US7761495B2 (en) 2004-04-05 2010-07-20 Jaber Associates, L.L.C. Fourier transform processor
US7720162B2 (en) 2005-03-10 2010-05-18 Qualcomm Incorporated Partial FFT processing and demodulation for a system with multiple subcarriers
US20060224652A1 (en) 2005-04-05 2006-10-05 Nokia Corporation Instruction set processor enhancement for computing a fast fourier transform
EP2009555B1 (de) 2007-06-28 2009-09-23 Telefonaktiebolaget LM Ericsson (publ) Verfahren und Vorrichtung zur Transformationsberechnung
GB2456775B (en) 2008-01-22 2012-10-31 Advanced Risc Mach Ltd Apparatus and method for performing permutation operations on data
US8819097B2 (en) 2011-09-09 2014-08-26 Texas Instruments Incorporated Constant geometry split radix FFT
US8825729B1 (en) 2011-09-19 2014-09-02 Altera Corporation Power and bandwidth efficient FFT for DDR memory

Also Published As

Publication number Publication date
EP3340066A1 (de) 2018-06-27
CN104050148A (zh) 2014-09-17
US20140280421A1 (en) 2014-09-18
US9098449B2 (en) 2015-08-04
CN104050148B (zh) 2018-02-06
EP2778948A2 (de) 2014-09-17
EP2778948A3 (de) 2015-01-21

Similar Documents

Publication Publication Date Title
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE202014011350U1 (de) FFT- Beschleuniger
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE2758830A1 (de) Rechenvorrichtung
DE112019005586T5 (de) Skalarproduktrechner und verfahren zu deren betrieb
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE2949375A1 (de) Gleitkommaprozessor
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102018124919A1 (de) Skalierbare speicheroptimierte Hardware für Matrix-Solve
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE69734551T2 (de) Verfahren und Gerät zur Erzeugung von Paritätsblöcken
DE69737699T2 (de) Gerät und verfahren zur fft-berechnung
DE112020007010T5 (de) Inferenzmaschinen-schaltungsarchitektur
DE69830474T2 (de) Verfahren und gerät zur fft-berechnung
DE19722803A1 (de) Schaltung zur Verschiebung von Daten zwischen entfernten Speichern und ein diese Schaltung enthaltender Rechner
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
DE112018006405T5 (de) Verfahren und Vorrichtung zur Berechnung der Hashfunktion
DE1222290B (de) Binaere Recheneinrichtung zur Bildung und Akkumulation von Produkten
DE102014110590A1 (de) Parallel-Baum-Etikettierungsvorrichtung und -verfahren zum Verarbeiten eines XML-Dokuments
DE2644180C3 (de) Datenverarbeitungssystem
DE4218769A1 (de) Verfahren und Anordnung zum Bilden der Summe einer Kette von Produkten
DE102019124676A1 (de) Verfahren und vorrichtung zur schnellen fourier-transformation in situ
DE102014208379A1 (de) Verfahren und Vorrichtung zum Ermitteln eines Funktionswerts eines bezüglich einer Eingangsgröße invertierten datenbasierten Funktionsmodells
DE10200687A1 (de) Verfahren und System zur Hochgeschwindigkeits-FFT-Verarbeitung
DE102013224694A1 (de) Verfahren und Vorrichtung zum Ermitteln eines Gradienten eines datenbasierten Funktionsmodells

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R163 Identified publications notified
R082 Change of representative

Representative=s name: WITHERS & ROGERS LLP, DE

R151 Utility model maintained after payment of second maintenance fee after six years
R081 Change of applicant/patentee

Owner name: ANALOG DEVICES, INC., WILMINGTON, US

Free format text: FORMER OWNER: ANALOG DEVICES INC., NORWOOD, MASS., US

R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right