DE69737699T2 - Gerät und verfahren zur fft-berechnung - Google Patents

Gerät und verfahren zur fft-berechnung Download PDF

Info

Publication number
DE69737699T2
DE69737699T2 DE69737699T DE69737699T DE69737699T2 DE 69737699 T2 DE69737699 T2 DE 69737699T2 DE 69737699 T DE69737699 T DE 69737699T DE 69737699 T DE69737699 T DE 69737699T DE 69737699 T2 DE69737699 T2 DE 69737699T2
Authority
DE
Germany
Prior art keywords
calculation unit
memory
values
calculations
read
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
DE69737699T
Other languages
English (en)
Other versions
DE69737699D1 (de
Inventor
Tore Andre
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of DE69737699D1 publication Critical patent/DE69737699D1/de
Application granted granted Critical
Publication of DE69737699T2 publication Critical patent/DE69737699T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

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

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Kalkulieren schneller Fourier-Transformation (FFT) und auf eine Einrichtung zum Ausführen das Verfahrens, und insbesondere auf die Verbindung miteinander und das Zusammenwirken zwischen der Kalkulationseinheit und dem Speicher der Einrichtung.
  • HINTERGRUND DER ERFINDUNG
  • Die diskrete Fourier-Transformation (DFT) einer Sequenz f(n) ist als:
    Figure 00010001
    definiert, wobei der Gewichtungskoeffizient W = e–i2x/N ist.
  • Die Umkehrung der diskreten Fourier-Transformation ist als
    Figure 00010002
    definiert, wobei der Gewichtungskoeffizient W = e–i2x/N ist.
  • Falls X(k) oder x(n) in Übereinstimmung mit den Definitionen direkt kalkuliert wird, werden die Zahl von Additionen N(N–1) und die Zahl von Multiplikationen allgemein in der Größenordnung von N2 sein.
  • 1965 haben Cooley und Tukey ein neuartiges Verfahren zum Kalkulieren von X(k) bzw. x(n) eingeführt, was zu einer viel kürzeren Kalkulationszeit führt. Das Verfahren wurde schnelle Fourier-Transformation (FFT) genannt und nutzt den Umstand, dass die gleichen Kalkulationen in mehreren Positionen neu auftreten. Die Zahl von Additionen und Multiplikationen kann in der Größenordnung von log2N reduziert werden, wenn N eine Zweierpotenz ist.
  • Kurz gesagt basiert das Verfahren auf einer Zahl von aufeinanderfolgenden Kalkulationen mit einer Serie oder Spalte von Werten, wobei jedes Paar von Kalkulationen ein Schmetterling (Butterfly) genannt wird.
  • Dies ergibt eine neue Spalte einer Zahl N von Werten. Diese werden für neue ähnliche Kalkulationen verwendet und ergeben wiederum eine neue Spalte einer Zahl N von Werten usw., bis log2N Spalten kalkuliert wurden, wobei sich die Antwort durch die letzte Serie ergibt. Dieses Verfahren kann auf eine Reihe unterschiedlicher Wege variiert werden.
  • Die alte Serie ist nicht länger erforderlich, wenn jedes Mal eine neue Serie kalkuliert wird. Dies ermöglicht den Speicher, oder Ablageort, in dem die vorherige Serie gespeichert ist, neu zu verwenden, wobei dies als Kalkulation an der Stelle (inplace) bezeichnet wird. Somit kann das Verfahren mit einem Speicher einer Größe N ausgeführt werden, was z.B. in GB 1 546 173 und GB 2 006 485 offenbart wird. Der Nachteil bei diesem besteht darin, dass Speicherzugriffe stets zu dem gleichen Speicher durchgeführt werden, was nicht besonders effektiv ist.
  • FFT kann auch mit der Verwendung von zwei Speichern von Größe N implementiert werden, wie in dem technischen Bericht "An Energy-Efficient FFT Processor Architecture" (NGT-70340-1994-1), Department of Electrical Engineering, Stanford University, Stanford, California, USA offenbart wird. Daten werden aus einem Speicher gelesen, verarbeitet und dann in den anderen Speicher geschrieben. Dieses Verfahren ist schneller als Kalkulation an der Stelle, da Schreiben und Lesen gleichzeitig stattfinden können. Der Nachteil bei diesem Verfahren besteht darin, dass es zweimal so viel Speicher wie die zu kalkulierende FFT erfordert. Die Literaturstelle "An Energy-Efficient FFT Processor Architecture" bildet den nächsten Stand der Technik für die vorliegende Erfindung.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung spricht das Problem von FFT-Kalkulationen an, die entweder eine lange Zeit oder eine große Menge von Speicherraum erfordern.
  • Das Ziel der vorliegenden Erfindung besteht darin, eine Lösung für dieses Problem durch Organisieren der gegenseitigen Verbindung und des Zusammenwirkens zwischen der Kalkulationseinheit und dem Speicher vorzusehen, um so zu ermöglichen, dass zwei Schmetterlingskalkulationen gleichzeitig begonnen werden. Dies wird erreicht durch Lesen der Eingabewerte von Speicherpositionen in den Speichern und unverzügliches Speichern dieser Eingabewerte in einem Register in der Kalkulationseinheit nach dem Lesen, und/oder durch Speichern der Ausgabewerte, die zu schreiben sind, in Speicherpositionen in dem Speicher unverzüglich in einem Register in der Kalkulationseinheit vor Einschreiben dieser Werte. Die Werte werden zweckdienlich zugeordnet oder verteilt, sodass jeder Speicher im wesentlichen die gleiche Zahl von Werten enthalten wird. Dies ermöglicht, dass z.B. zwei Speicher bis zu einem Maximum verwendet werden, durch gleichzeitiges Lesen von und Schreiben in Speicherpositionen in den zwei Speichern. Alternativ können Werte von einem Speicher zu der gleichen Zeit gelesen werden, wie Werte in den anderen Speicher geschrieben werden.
  • Ein Vorteil, der sich durch die vorliegende Erfindung bietet, besteht darin, dass die Speicher maximal genutzt werden, wobei dadurch ermöglicht wird, dass der Speicherraum auf die Hälfte des Speicherraums minimiert wird, der durch die bekannte Lösung benötigt wird, die zwei Speicher nutzt. Ein anderer Vorteil besteht darin, dass die Zeit, die in dieser Hinsicht erforderlich ist, im Vergleich zu der Zeit reduziert werden kann, die durch die bekannte Lösung benötigt wird, die einen einzelnen Speicher nutzt.
  • Die Erfindung wird nun mit Verweis auf bevorzugte Ausführungsformen davon und auch mit Verweis auf die begleitenden Zeichnungen detaillierter beschrieben. In dem folgenden Text bezeichnet ein Schmetterling eine Gruppe von mindestens zwei Kalkulationen, wobei jede Kalkulation mindestens einen Kalkulationsschritt enthält.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1a ist eine grafische Darstellung eines bekannten Acht-Punkt-Wurzel-2-Dezimierungs-in-der-Zeit-FFT-Algorithmus.
  • 1b ist eine grafische Darstellung der Schmetterlingskalkulation in 1a.
  • 2a ist eine grafische Darstellung eines bekannten Acht-Punkt-Wurzel-2-Dezimierungs-in-der-Frequenz-FFT-Algorithmus.
  • 2b ist eine grafische Darstellung der Schmetterlingskalkulation in 2a.
  • 3a ist eine grafische Darstellung eines bekannten 64-Punkt-Wurzel-4-Dezimierungs-in-der-Frequenz-FFT-Algorithmus.
  • 3b ist eine grafische Darstellung der Schmetterlingskalkulation in 3a.
  • 4a und 4b sind eine grafische Darstellung bekannter Technologie.
  • 5 ist ein Blockschema, das eine Ausführungsform der Erfindung veranschaulicht.
  • 6 ist ein Blockschema, das eine andere Ausführungsform der Erfindung veranschaulicht.
  • 7 ist ein Blockschema, das eine Ausführungsform der Kalkulationseinheit in 5 oder in 6 veranschaulicht.
  • 8a ist ein Blockschema, das eine andere Ausführungsform der Kalkulationseinheit in 5 oder in 6 veranschaulicht.
  • 8b ist ein Blockschema, das eine Ausführungsform der Summierungseinheit in 8a veranschaulicht.
  • 9 ist ein Blockschema, das eine weitere Ausführungsform der Kalkulationseinheit in 5 oder in 6 veranschaulicht.
  • BESCHREIBUNG VON BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Schnelle Fourier-Transformation (FFT) ist ein Verfahren zum raschen Kalkulieren der diskreten Fourier-Transformation (DFT). Es kann unter anderem verwendet werden, wenn gewünscht wird zu sehen, wie die Frequenzdomäne aussieht, nachdem die Werte in der Zeitdomäne abgetastet wurden. Typische Gebiete der Anwendung enthalten spektrale Analyse, Verzerrungsanalyse, Vibrationssignaturanalyse, Frequenzantwortschätzung, Faltung, Korrelation und Leistungsspektra.
  • Die Erfindung richtet sich hauptsächlich auf eine Verwendung in einem Kommunikationssystem, das Mehrfachträger-Wellenmodulation einsetzt und wo umgekehrte FFT (IFFT) für Modulation verwendet wird, wohingegen FFT für Demodulation verwendet wird, obwohl die Erfindung natürlich auf anderen Gebieten verwendet werden kann.
  • Mehrfachträger-Wellenmodulation ist ein bekanntes Verfahren zum Übertragen einer großen Zahl von Mbits z.B. über eine Telefonleitung. Kurz gesagt basiert das Verfahren auf Abtastung von Sprache in einer Telefonkonversation, was zu einer großen Zahl von Bits führt. Die Bits, die zu übertragen sind, werden zu einem Sender in irgend einer komplexen Zahlenform abgegeben, wonach IFFT ausgeführt wird. In dem Modulationsprozess ergibt die IFFT eine Summe orthogonaler Trägerwellen oder Töne, deren Amplituden und Phasenverschiebungen durch die komplexen Zahlen beeinflusst werden. In einem Empfänger wird stattdessen FFT ausgeführt, womit die ursprünglichen Bits zurückgegeben werden. Dämpfung in der Telefonleitung kann einfach durch Multiplizieren mit einer komplexen Zahl in jeder Trägerwelle kompensiert werden. Mehrfachträger-Wellenmodulation wird detaillierter z.B. in WO 95/03656 , EP 0 653 858 , EP 0 656 706 , EP 0 683 576 and WO 95/05042 beschrieben.
  • 1a ist eine grafische Darstellung eines bekannten FFT-Algorithmus mit acht Eingabewerten x(0)–x(7) und acht Ausgabewerten X(0)–X(7). 1b veranschaulicht eine wiederkehrende Gruppe von Kalkulationen, die aus offensichtlichen Gründen als ein Schmetterling bezeichnet wird. Da ein Schmet terling in diesem Fall zwei Eingabewerte und zwei Ausgabewerte hat, wird dieser FFT-Algorithmus ein Wurzel-2-Typ-Algorithmus genannt. Jeder Schmetterling enthält eine komplexe Multiplikation und zwei komplexe Additionen gemäß: x' (k)= x(k)+W(k,N)x(l) x' (l)= x(l)–W(k,N)x(l)wobei k und l in Übereinstimmung mit 1a variieren. W(k,N) wird der Gewichtungskoeffizient oder Phasenfaktor genannt. Diese Schmetterlingsvariante wird als Dezimierung-in-der-Zeit (DIT) bezeichnet.
  • Die Eingabewerte x(0)–x(7) in Spalte C1 werden verwendet, um eine neue Serie von Werten in Spalte C2 zu kalkulieren, die wiederum verwendet wird, um Spalte C3 zu kalkulieren, die wiederum verwendet wird, um Spalte C4 zu kalkulieren. Spalte C4 wird dann die gewünschten Ausgabewerte X(0)–X(7) enthalten. Die Eingabewerte x(0)–x(7) in 1a sind in der korrekten Reihenfolge, womit die Ausgabewerte X(0)–X(7) gemischt werden. Es ist auch das Entgegengesetzte denkbar.
  • 2a veranschaulicht eine grafische Darstellung eines anderen bekannten Wurzel-2-FFT-Algorithmus. Dieser Algorithmus wird ein Dezimierung-in-der-Frequenz- (DIF) Algorithmus genannt. 2b zeigt einen entsprechenden Schmetterling gemäß: x' (k) = x(k) + x(l) x' (l) = (x(k)–x(l))W(k,N)
  • 1a und 2a zeigen Algorithmen mit Punkten N=8. Wurzel-2 funktioniert für alle Kalkulationen mit N-Abtastungen, wobei N=2V ist und v eine positive ganze Zahl ist.
  • 3a zeigt ein bekanntes Beispiel eines Dezimierungs-in-Frequenz-Wurzel-4-FFT-Algorithmus mit 64 Eingabewerten und 64 Ausgabewerten. In diesem Fall werden vier Eingabewerte und vier Ausgabewerte für den Schmetterling verwendet. Wurzel-4 funktioniert für alle Kalkulationen mit N-Abtastungen, wobei N=4V und v eine positive ganze Zahl ist. Der Schmetterling des Algorithmus wird schematisch in 3a gezeigt, und detaillierter in 3b.
  • Die Kalkulationen in 3b sind wie folgt: x(j) '=(x(j)+x(k)+x(l)+x(m))W(j,N) (wobei W(j,N)=1) x(k) '=(x(j)–ix(k)–x(l)+ix(m))W(k, N) x(l) '=(x(j)–x(k)+x(l)-x(m)W(l,N) x(m) '= (x(j)+ix(k)–x(l)–ix(m))W(m,N)wobei j, k, l, m in Übereinstimmung mit 3a variieren und i = √–1 ist. Vgl. auch nachstehend Tabellen 5 und 6.
  • Natürlich gibt es auch einen Dezimierungs-in-Zeit-Wurzel-4-FFT-Algorithmus, vgl. Tabelle 4 nachstehend. Es sind auch FFT-Algorithmen mit höheren Wurzelzahlen bekannt, obwohl Wurzel-2 und Wurzel-4 am häufigsten sind.
  • Ein gemeinsames Merkmal aller FFT-Algorithmen besteht darin, dass die FFT in eine Zahl von Spalten unterteilt wird, in denen Teilsummen kalkuliert werden. Diese Teilsummen werden dann als Eingabewerte für die nächste Spalte verwendet. Die Zahl von Spalten wird nach der Größe der FFT, die zu kalkulieren ist, und auch nach der verwendeten Wurzel entschieden. Ein FFT-Prozessor kann somit um eine Kalkulations- oder Berechnungseinheit herum, die eine Schmetterlingskalkulation durchführt, und mindestens einen Datenspeicher aufgebaut sein.
  • Da die Werte von einer Spalte einzig verwendet werden, um die nächste Spalte zu kalkulieren, ist es möglich, und bekannt, einen Speicher oder Speicherort der gleichen Größe N wie die der FFT, die zu kalkulieren ist, zu verwenden, und die kalkulierten Werte von einer Spalte in jene Speicherpositionen zu schreiben, die zuvor durch die Eingabewerte belegt wurden. Ein Nachteil besteht darin, dass es nicht allgemein möglich ist, von/zu einem Speicher in ein und dem gleichen Zeitpunkt zu lesen und zu schreiben, was bedeutet, dass die Kalkulation für eine Durchführung eine lange Zeit braucht, es sei denn, es ist ein schneller Speicher verfügbar. Ein schneller Speicher zieht jedoch mehr Strom.
  • Da es möglich ist, komplexe Multiplikationen in der Kalkulationseinheit mit jedem Taktzyklus durchzuführen, besteht die Engstelle in den Speicherzugriffen. Als ein Optimum wären mindestens zwei Speicherzugriffe pro Taktzyklus wünschenswert.
  • 4a und 4b veranschaulichen ein alternatives Verfahren zum Organisieren des Speichers und der Kalkulationseinheit. 4a und 4b veranschaulichen einzig das Prinzip zum Übertragen von Daten zu und von, und sollen nicht buchstäblich interpretiert werden. Es werden eine Kalkulationseinheit 100 und erste und zweite Speicher 101 und 102 verwendet. Die Eingabewerte werden zuerst von Speicherpositionen in einem ersten Speicher 101 der zwei Speicher gelesen, zur gleichen Zeit wie die Ausgabewerte in Speicherpositionen in dem anderen oder zweiten Speicher 102 geschrieben werden; siehe 4a. Die Ergebnisse der Kalkulation einer ersten Spalte liegen in dem zweiten Speicher 102.
  • Daten in dem zweiten Speicher 102 werden dann als die Eingabewerte zu der Kalkulationseinheit 100 verwendet, während die Ausgabewerte für die nächste Spalte in Speicherpositionen in dem ersten Speicher 101 geschrieben werden. Die Speicher 101 und 102 werden somit umgeschaltet, bis die Gesamtheit der FFT kalkuliert wurde. Jeder der Speicher 101 und 102 muss mindestens die gleiche Größe wie die FFT haben, die zu kalkulieren ist.
  • Es wäre jedoch möglich, einen Speicherbereich der Hälfte dieser Größe zu verwenden, z.B. durch Speichern der Hälfte der Werte einer Spalte in einem Speicher und der anderen Hälfte der Werte in einem anderen Speicher. Es ist jedoch schwierig, eine Teilung zu finden, die ermöglichen würde, beide Speicher zu dem gleichen Ausmaß zu verwenden, d.h. Überlastung eines Speichers zu vermeiden.
  • Falls z.B. die erste Hälfte der Werte in einem Speicher und die andere Hälfte der Werte in einem anderen Speicher gespeichert ist, wird mindestens eine der Spalten ein Problem einbeziehen, dass alle Eingabewerte in dem einen Speicher liegen und alle Ausgabewerte in den gleichen Speicher geschrieben werden sollen, wohingegen der andere Speicher überhaupt nicht verwendet wird. Das gleiche Problem entsteht, wenn z.B. ungerade Speicherpositionen in einem Speicher und gerade Positionen in dem anderen Speicher, obwohl in einer anderen Spalte, platziert werden.
  • Die Erfindung beruht auf einer Kalkulation von Schmetterlingen von unterschiedlichen Teilen der Spalte in der Kalkulationseinheit zu ein und dem gleichen Zeitpunkt. Dies ermöglicht, dass Werte abwechselnd gelesen werden von den und geschrieben werden in die zwei Speicher, auf eine Art und Weise um sicherzustellen, dass kein Speicher überlastet wird. Die Speicheranforderung kann im Vergleich mit dem zuvor beschriebenen Verfahren halbiert werden, auf Kosten einiger mehr Register in der Kalkulationseinheit für die Zwischenspeicherung von Teilergebnissen.
  • Tabelle 1 nachstehend veranschaulicht ein Beispiel der Konfiguration eines Kalkulationsprozesses. Es wird eine Wurzel-2 DIT mit N=8 auf die gleiche Weise wie in 1a kalkuliert. Um die Tabelle zu vereinfachen, bedeuten z.B. 0=0'=0''=0''' die Speicherposition 0 in einem Speicher, zur gleichen Zeit wie es auch als die Werte x(0), x'(0), x''(0) and x'''(0) interpretiert werden kann, die in Speicherposition 0 gespeichert sind. Die Speicher werden als 111 und 112 referenziert, was in Übereinstimmung mit 5 und 6 ist, die hier nachstehend beschrieben werden. Jede Zeile in der Tabelle entspricht einem Taktzyklus. Es wird vermerkt, dass eine Kalkulation häufig mehr als einen Kalkulationsschritt enthält und dass die Tabelle somit nur ein vereinfachtes Bild ergibt.
  • Die zwei Speicher sind so geteilt, dass der erste Speicher 112 Werte enthalten wird, die ungerade Zahlen haben, während der zweite Speicher 111 Werte enthalten wird, die gerade Zahlen haben. Es sind andere Teilungen möglich. Z.B. können die Werte x(0), x(1), x (2) and x (3) in einem Speicher eingegeben werden, und die Werte x(4), x(5), x(6) and x(7) in dem anderen Speicher eingegeben werden.
  • Eine Kalkulation der ersten Spalte ist einfach, dank der zwei Eingabewerte, die für jeden Schmetterling erforderlich sind, die in einem jeweiligen Speicher liegen. Die Kalkulationseinheit liest einen Wert x(0) von einer Speicherposition in dem ersten Speicher 112 und einen Wert x(1) von einer Speicherposition in dem zweiten Speicher 111. Der Schmetterling wird in den zwei anschließenden Taktzyklen kalkuliert und führt zu den Ausgabewerten x'(0) und x'(1), die zurück in die Speicherpositionen 0 und 1 als die Werte x(0) und x(1) geschrieben werden, die von dort gelesen wurden. Dies kann jedoch nicht unverzüglich geschehen, und es ist notwendig, die Ausgabewerte x'(0) und x'(1) in Register zwischenzuspeichern, bis die Werte in zwei Taktzyklen später eingeschrieben werden können.
  • Während der erste Schmetterling kalkuliert wird, wird ein neues Paar von Eingabewerten x(2) und x(3) gelesen, wonach die neuen Ausgabewerte x'(2) und x'(3) kalkuliert und eingeschrieben werden in Übereinstimmung mit der gleiche Prozedur, die auch für die folgenden Werte x(4), x(5) und x(6), x(7) wiederholt wird.
  • Dies geht gut bis zu diesem Punkt, wenn aber die nächste Spalte zu kalkulieren ist, entdecken wir, dass die zwei Werte, die für jede Schmetterlingskalkulation erforderlich sind, permanent in Speicherpositionen in ein und dem gleichen Speicher gefunden werden, und obendrein alles in Speicherpositionen in dem gleichen Speicher geschrieben werden soll.
  • Dieses Problem wird durch gleichzeitiges Lesen der Eingabewerte der zwei Schmetterlinge gelöst. Der erste Schmetterling benötigt die Werte x'(0) und x'(2), wohingegen der zweite Schmetterling die Werte x'(1) und x'(3) benötigt. Folglich werden die Werte x'(0) und x'(1) in der ersten Instanz gelesen und zwischengespeichert. Die Werte x'(2) und x'(3) werden dann gelesen. Es kann nun die erste Schmetterlingskalkulation mit x'(0) und x'(2) ausgeführt werden, was zwei Taktzyklen benötigt, wonach die zweite Schmetterlingskalkulation mit x'(1) und x'(3) ausgeführt werden kann. Während dieser Zeitperiode werden neue Werte in Übereinstimmung mit dem vorangehenden gelesen.
  • Die dritte Spalte wird auf die gleiche Weise kalkuliert. Tabelle 1
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    0 1
    2 3
    0-1
    4 5 0-1 0'
    2-3 1'
    6 7 2-3 2'
    0' 1' 4-5 3'
    0' 1' 4-5 4'
    2' 3' 6-7 5'
    2' 3' 6-7 6'
    4' 5' 0'-2' 7'
    4' 5' 0'-2' 0''
    6' 7' 1'-3' 2''
    6' 7' 1'-3' 1''
    0'' 1'' 4'-6' 3''
    4'-6' 4''
    2'' 3'' 5'-7' 6''
    0'' 1'' 5'-7' 5''
    4'' 5'' 7''
    4'' 5''
    7'' 0''-4''
    2'' 3'' 0''-4'' 0'''
    1''-5'' 4'''
    6'' 7'' 1''-5'' 1'''
    0''' 1''' 2''-6'' 5'''
    2''-6'' 2'''
    4''' 5''' 3''-7'' 6'''
    3''-7'' 3'''
    2''' 3''' 7'''
    6''' 7'''
  • Es wird vermerkt, dass wenn eine FFT-Kalkulation auf diese Weise mit lediglich acht Werten durchgeführt wird, eine Verzögerung zwischen den zweiten und dritten Spalten enthalten sein muss. Dieses Problem verschwindet, wenn größere Zahlen von Werten verwendet werden, wie aus der nachstehenden Tabelle 2 augenscheinlich ist. Es sollte vermerkt werden, dass die Bezugszeichen ', '' und ''' in den Tabellen nicht mehr enthalten sind. Tabelle 2
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    0 1
    2 3
    0-1
    4 5 0-1 0
    2-3 1
    6 7 2-3 2
    0 1 4-5 3
    8 9 4-5 4
    2 3 6-7 5
    10 11 6-7 6
    4 5 8-9 7
    12 13 8-9 8
    6 7 10-11 9
    14 15 10-11 10
    8 9 12-13 11
    0 1 12-13 12
    10 11 14-15 13
    2 3 14-15 14
    12 13 0-2 15
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    4 5 0-2 0
    14 15 1-3 2
    6 7 1-3 1
    0 1 4-6 3
    8 9 4-6 4
    2 3 5-7 6
    10 11 5-7 5
    4 5 8-10 7
    12 13 8-10 8
    6 7 9-11 10
    14 15 9-11 9
    8 9 12-14 11
    0 1 12-14 12
    10 11 13-15 14
    4 5 13-15 13
    12 13 0-4 15
    2 3 0-4 0
    14 15 1-5 4
    6 7 1-5 1
    0 1 2-6 5
    8 9 2-6 2
    4 5 3-7 6
    12 13 3-7 3
    2 3 8-12 7
    10 11 8-12 8
    6 7 9-13 12
    14 15 9-13 9
    8 9 10-14 13
    0 1 10-14 10
    12 13 11-15 14
    8 9 11-15 11
    10 11 0-8 15
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    2 3 0-8 0
    14 15 1-9 8
    10 11 1-9 1
    0 1 2-10 9
    4 5 2-10 2
    8 9 3-11 10
    12 13 3-11 3
    2 3 4-12 11
    6 7 4-12 4
    10 11 5-13 12
    14 15 5-13 5
    4 5 6-14 13
    6-14 6
    12 13 7-15 14
    7-15 7
    6 7 15
    14 15
  • Wurzel-2 DIF kann auf eine ähnliche Art und Weise kalkuliert werden, wie aus der nachstehenden Tabelle 3 offensichtlich ist. Vgl. 2a. Tabelle 3
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    0 1
    4 5
    0-4
    2 3 0-4 0
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    1-5 4
    6 7 1-5 1
    0 1 2-6 5
    2-6 2
    4 5 3-7 6
    0 1 3-7 3
    2 3 7
    2 3
    6 7 0-2
    4 5 0-2 0
    1-3 2
    6 7 1-3 1
    0 1 4-6 3
    0 1 4-6 4
    2 3 5-7 6
    2 3 5-7 5
    4 5 0-1 7
    4 5 0-1 0
    6 7 2-3 1
    6 7 2-3 2
    0 1 4-5 3
    4-5 4
    2 3 6-7 5
    6-7 6
    4 5 7
    6 7
  • Das Verfahren wird natürlich auch für Wurzel-4 funktionieren. Tabelle 4 steigt nachstehend die Variante DIT. Das Problem erzwungener Verzögerungen zwischen den Spalten verschwindet auch in diesem Fall mit größeren Zahlen von Werten. Die Ta belle, die erhalten wird, wenn N=64 ist, ist äußerst lang und wird deshalb nicht gezeigt. Tabelle 4
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    0 1
    2 3
    4 5
    0-1-2-3
    6 7 0-1-2-3 0
    0-1-2-3 1
    8 9 0-1-2-3 2
    0 1 4-5-6-7 3
    10 11 4-5-6-7 4
    2 3 4-5-6-7 5
    12 13 4-5-6-7 6
    4 5 8-9-10-11 7
    14 15 8-9-10-11 8
    6 7 8-9-10-11 9
    0 1 8-9-10-11 10
    8 9 12-13-14-15 11
    4 5 12-13-14-15 12
    10 11 12-13-14-15 13
    8 9 12-13-14-15 14
    12 13 15
    12 13
    14 15 0-4-8-12
    2 3 0-4-8-12 0
    0-4-8-12 4
    6 7 0-4-8-12 8
    1-5-9-13 12
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    10 11 1-5-9-13 1
    0 1 1-5-9-13 5
    14 15 1-5-9-13 9
    4 5 2-6-10-14 13
    2-6-10-14 2
    8 9 2-6-10-14 6
    2-6-10-14 10
    12 13 3-7-11-15 14
    3-7-11-15 3
    2 3 3-7-11-15 7
    3-7-11-15 11
    6 7 15
    10 11
    14 15
  • Eine Alternative zum gleichzeitigen Lesen von beiden und Schreiben in beide Speicher besteht darin, in ein und dem gleichen Zeitpunkt von dem ersten Speicher 111 zu lesen und in den zweiten Speicher 112 zu schreiben, oder umgekehrt. Ein derartiges Beispiel wird nachstehenden Tabelle 5 gezeigt.
  • In diesem Beispiel sind die ungeraden Werte in einem ersten Speicher 112, und die geraden Werte in einem zweiten Speicher 111 gespeichert. Es wird eine Wurzel-4 DIF mit N=16 kalkuliert. Tabelle 5
    Lesen 112 Schreiben 112 Lesen 111 Schreiben 111 Kalkulation Beendet
    0
    4
    8
    12
    1
    5
    9
    13
    2 0-4-8-12
    6 0-4-8-12 0
    10 0-4-8-12 4
    14 0-4-8-12 8
    0 3 1-5-9-13 12
    4 7 1-5-9-13 1
    8 11 1-5-9-13 5
    12 15 1-5-9-13 9
    0 1 2-6-10-14 13
    2 5 2-6-10-14 2
    4 9 2-6-10-14 6
    6 13 2-6-10-14 10
    2 1 3-7-11-15 14
    6 3 3-7-11-15 3
    10 5 3-7-11-15 7
    14 7 3-7-11-15 11
    8 3 0-1-2-3 15
    10 7 0-1-2-3 0
    12 11 4-5-6-7 2
    14 15 4-5-6-7 1
    0 9 0-1-2-3 3
    2 11 0-1-2-3 4
    Lesen 112 Schreiben 112 Lesen 111 Schreiben 111 Kalkulation Beendet
    4 13 4-5-6-7 6
    6 15 4-5-6-7 5
    1 8-9-10-11 7
    3 8-9-10-11 8
    5 12-13-14-15 10
    7 12-13-14-15 9
    8 8-9-10-11 11
    10 8-9-10-11 12
    12 12-13-14-15 14
    14 12-13-14-15 13
    9 15
    11
    13
    15
  • Wenn wie in Tabelle 5 vorgegangen wird, ungeachtet der Zahl von Eingabewerten, werden die Werte, die für eine Kalkulation einer Spalte gedacht sind, folglich in ein und dem gleichen Speicher erscheinen, mit der Ausnahme der Werte, die für die letzte Spalte gedacht sind, für die diese letzteren Eingabewerte in beiden Speichern gleichförmig verteilt vorgefunden werden. Die vier Werte werden ungeachtet dessen in Tabelle 5 sequenziell eingelesen. Alternativ kann die vorletzte Spalte anders verarbeitet werden, durch abwechselndes Lesen von den ersten und zweiten Speichern 111, 112. Dies wird in Tabelle 6 gezeigt, wo eine Wurzel-4 DIF mit N=64 kalkuliert wird. Es wurden nur die ersten Kalkulationen ausgedruckt, da der Rest der Kalkulationen einem Fachmann offensichtlich sein wird. Vergleiche mit 3a und 9. Tabelle 6
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    0
    16
    32
    48
    1
    17
    33
    49
    2 0-16-32-48
    18 0-16-32-48 0
    34 0-16-32-48 16
    50 0-16-32-48 32
    0 3 1-17-33-49 48
    16 19 1-17-33-49 1
    32 35 1-17-33-49 17
    48 51 1-17-33-49 33
    4 1 etc 49
    20 17 etc
    36 33
    52 49
    2 5
    18 21
    34 37
    50 53
    6 3
    22 19
    38 35
    54 51
    4 7
    20 23
    36 39
    52 55
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    8 5
    24 21
    40 37
    56 53
    6 9
    22 25
    38 41
    54 57
    10 7
    26 23
    42 39
    58 55
    8 11
    24 27
    40 43
    56 59
    12 9
    28 25
    44 41
    60 57
    10 13
    26 29
    42 45
    58 61
    14 11
    30 27
    46 43
    62 59
    12 15
    28 31
    44 47
    60 63
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    0 13
    4 29
    8 45
    12 61
    14 1
    30 5
    46 9
    62 13
    2 15
    6 31
    10 47
    14 63
    0 3
    4 7
    8 11
    12 15
    16 1
    20 5
    24 9
    28 13
    2 17
    6 21
    10 25
    14 29
    18 3
    22 7
    26 11
    30 15
    16 19
    20 23
    24 27
    28 31
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    32 17
    36 21
    40 25
    44 29
    18 33
    22 37
    26 41
    30 45
    34 19
    38 23
    42 27
    46 31
    32 35
    38 39
    40 43
    44 47
    48 33
    52 37
    56 41
    60 45
    34 49
    38 53
    42 57
    46 61
    50 35
    54 39
    58 43
    62 47
    48 51
    52 55
    56 59
    60 63
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    49 50-54-58-62
    53 50-54-58-62 50
    57 50-54-58-62 54
    61 50-54-58-62 58
    50 51-55-59-63 62
    54 51-55-59-63 51
    58 51-55-59-63 55
    62 51-55-59-63 59
    51 63
    55
    59
    0 63
    1
    2
    3
    4 0-1-2-3
    5 0-1-2-3 0
    6 0-1-2-3 1
    7 0-1-2-3 2
    8 etc 3
    9 etc
    10
    0 11
    12 1
    2 13
    14 3
    4 15
    16 5
    6 17
    18 7
    8 19
    20 9
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    10 21
    22 11
    12 23
    24 13
    14 25
    26 15
    16 27
    28 17
    18 29
    30 19
    20 31
    32 21
    22 33
    34 23
    24 35
    36 25
    26 37
    38 27
    28 39
    40 29
    30 41
    42 31
    32 43
    44 33
    34 45
    46 35
    36 47
    48 37
    38 49
    50 39
    40 51
    52 41
    Lesen 111 Schreiben 111 Lesen 112 Schreiben 112 Kalkulation Beendet
    42 53
    54 43
    44 55
    56 45
    46 57
    58 47
    48 59
    60 49
    50 61
    62 51
    52 63
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
  • 5 veranschaulicht ein Verfahren zum Implementieren der Erfindung. Im Unterschied zu 4a und 4b soll 5 auf eine konkretere Art und Weise interpretiert werden. Eine Kalkulationseinheit 110 ist mit einem ersten Speicher 111 und mit einem zweiten Speicher 112 mittels zweier Schreibbusse 114a und 114b, und zweier Lesebusse 113a und 113b verbunden. Die Hälfte der Werte ist in Speicherpositionen in dem ersten Speicher 111, und die Hälfte in Speicherpositionen in dem zweiten Speicher 112 gespeichert. Dies ermöglicht, dass Lesen und Schreiben gleichzeitig in beiden Speichern 111 und 112 bewirkt wird. Es wird vermerkt, dass nur die Hälfte des Speicherraums in den zwei Speichern 111 und 112 im Vergleich mit 4a und 4b benötigt wird.
  • 6 zeigt eine andere Ausführungsform der Erfindung. Eine Kalkulationseinheit 110 ist mit einem ersten Speicher 111 und mit einem zweiten Speicher 112 mittels eines gemeinsamen Schreibbusses 114 und eines gemeinsamen Lesebusses 113 verbunden. In diesem Fall schreibt die Kalkulationseinheit 110 zu dem zweiten Speicher 112 zu der gleichen Zeit wie sie von dem ersten Speicher 111 liest. Ein gemeinsamer Schreibbus 114 und ein gemeinsamer Lesebus 113 werden zu diesem Zweck ausreichen. Die Figur ist 5 in anderer Hinsicht ähnlich.
  • Es ist denkbar, beide 5 und 6 zu erweitern, um mehr Speicher einzubeziehen.
  • 7 ist ein Blockschema, das eine denkbare Gestaltung der Kalkulationseinheit in 5 und in 6 in dem Fall einer Wurzel-2 DIF veranschaulicht. Beide der zwei Eingabewerte durchlaufen zu einem Subtrahierer 122 und zu einem Addierer 123. Der Wert, der durch den Subtrahierer 122 abgegeben wird, wird in einem komplexen Multiplizierer 125 mit einem Gewichtungskoeffizienten multipliziert, der von einem Gewichtungskoeffizientenspeicher 124 abgegeben wird.
  • Abhängig davon, wie der Algorithmus implementiert ist, vgl. die obigen Tabellen, sind auch einige Register für die Zwischenspeicherung der Eingabewerte bzw. der Ausgabewerte erforderlich, sodass zwei Schmetterlingskalkulationen gleichzeitig begonnen werden können. Die Zahl von erforderlichen Registern wird von der Zahl von Taktzyklen abhängen, die zwischen Lesen und Kalkulieren und zwischen Kalkulieren und Schreiben benötigt werden. Die in 7 gezeigten Register sind rein schematisch als eine Zwischenspeichereinrichtung 121, in die Eingabewerte eingetragen werden, und eine Zwischenspeichereinrichtung 126, von der die Ausgabewerte abgegeben werden, dargestellt. Es ist nicht notwendig, immer sowohl eingehende als auch ausgehende Werte zu speichern.
  • 8a ist ein Blockschema, das eine denkbare Gestaltung der Kalkulationseinheit 110 in 5 oder in 6 in dem Fall von Wurzel-4 DIF veranschaulicht. Die vier erforderlichen Eingabewerte werden zu vier Summierungseinheiten 131 abgegeben, wonach die vier summierten Werte einzeln von den Summierungseinheiten 131, über einen Multiplexer 132, zu einem komplexen Multiplizierer 125 abgegeben werden, wo die summierten Werte mit entsprechenden Gewichtungskoeffizienten von einem Gewichtungskoeffizientenspeicher 124 multipliziert werden, bevor sie zu den Speichern zurück gesendet werden.
  • Ähnlich zu der Ausführungsform von 7 ist eine gewisse Zwischenspeicherung erforderlich, dies wird in der Form von zwei Zwischenspeichereinrichtungen 121 und 126 schematisch dargestellt.
  • 8b ist eine detaillierte Darstellung einer Gestaltung einer Summierungseinheit 131. Die Summierungseinheit 131 enthält einen Multiplizierer 133, einen Addierer 134, ein Summierungsregister 135 und einen Multiplexer 136.
  • Der erste Eingabewert wird in dem Multiplizierer 133 mit 1, –1, i, –i abhängig davon multipliziert, welche der Werte in dem Schmetterling kalkuliert werden sollen. Für eine derartige Operation ist kein herkömmlicher fortgeschrittener Multiplizierer erforderlich, da alles, was erforderlich ist, eine Änderung vom Vorzeichen oder eine Änderung der Stelle ist. Das Ergebnis, das in dem Multiplizierer 133 erhalten wird, wird zu dem Addierer 134 abgegeben.
  • Der Multiplexer 136 wählt, was der Addierer 134 zu dem Summierungsregister 135 addieren soll. Bei der ersten Gelegenheit wird der Wert 0 zu dem Ergebnis von dem Multiplizierer 133 addiert und in dem Summierungsregister 135 platziert. Bei den verbleibenden drei Gelegenheiten wird der Wert stattdessen in dem Summierungsregister 135 zusammen mit dem Ergebnis von dem Multiplizierer 133 platziert.
  • 9 zeigt ein konkreteres Beispiel des Registerlayouts. Diese Figur veranschaulicht eine Implementierung von Tabelle 6 mit der Hilfe einer Kalkulationseinheit 110. Es wird vermerkt, dass jede Zeile in der Tabelle einem Taktzyklus entspricht, dass aber die Darstellung der Kalkulation in der Tabelle vereinfacht ist. In 9 kann ein Wert von einem Register zu einem anderen während eines Taktzyklus verschoben werden, mit möglichen Zwischenkalkulationen, oder kann in dem gleichen Register bleiben.
  • Bei der ersten Gelegenheit werden die Werte 0, 16, 32 und 64 in einem Zeitpunkt eingelesen und in vier erste Register 141, 142, 143, 144 platziert. Die Werte 0, 16, 32 und 64 werden dann zu vier zweiten Registern 145, 146, 147, 148 verschoben, während neue Werte 1, 17, 33 und 49 in einem Zeitpunkt eingelesen und in die vier Register 141, 142, 143, 144 platziert werden.
  • In diesem Fall nutzt die Kalkulationseinheit 110 die Tatsache, dass die gleichen Additionen wieder auftreten. Das Zwischenergebnis wird deshalb in vier Zwischenspeicherregistern 154, 155, 156, 157 zwischengespeichert. Die Werte von jeweiligen Registern 146 und 150 werden mit einem der Werte 1 oder –i oder mit 1 oder i in zwei einfachen Multiplizierern 149 und 150 multipliziert. Das heißt die Multiplikation mit 1 ist die gleiche wie überhaupt keine Multiplikation, und die Multiplikation mit i oder –i ist lediglich eine Frage einer Stellenänderung oder Vorzeichenänderung, falls überhaupt, in dem Datenwort des Wertes.
  • Die Addition und Subtraktion werden mit der Hilfe von zwei Multiplexern 151 und 152 und einem Addierer-Subtrahierer 153 durchgeführt, womit die Werte in den Zwischenspeicherregistern 154, 155, 156 und 157 jeweils 0+32; 0–32; 16+64; –16i+64i sein werden. Während dieser Zeitperiode werden die Werte 1, 17, 33 und 49 in den ersten Registern 141, 142, 143, 144 zu den zweiten Registern 145, 146, 147 und 148 transferiert, während neue Werte 2, 18, 34, 50 in die ersten Register 141, 142, 143, 144 gelesen werden. Alle diese Werte werden später analog zu den ersten Werten 0, 16, 32 und 64 verarbeitet.
  • Die Werte in den Zwischenspeicherregistern 154, 155, 156 und 157 werden nun addiert zu und subtrahiert von einander durch das Medium von zwei weiteren Multiplexern 158 und 159 und eines weiteren Addierer-Subtrahierers 161, und werden unverzüglich in einem Register 161 gespeichert. Der Wert in dem Register 161 wird dann jeweils die Werte 0+16+32+64; 0–16i–32+64i; 0–16+32–64 und 0+16i–32–64i annehmen.
  • Der Wert, der gegenwärtig in dem Register 161 ist, wird dann in einem komplexen Multiplizierer 125 mit einem Gewichtungskoeffizienten multipliziert, der einem Gewichtungskoeffizientenspeicher 124 entnommen wird. Dieser Gewichtungskoeffizient unterscheidet sich für die unterschiedlichen Kalkulationen.
  • Die resultierenden Ausgabewerte können dann einer zu einem Zeitpunkt über terminierende Zwischenspeicherregister 162, 163, 164 und 165 und einen terminierenden Multiplexer 166 geschrieben werden.
  • Kalkulationseinheiten für Wurzel-2 und Wurzel-4 DIT können natürlich auch auf eine ähnliche Weise erhalten werden, ob wohl mit Multiplikation mit Gewichtungskoeffizienten vor Addition und Subtraktion. FFT-Algorithmen mit höheren Wurzelzahlen können auch auf eine ähnliche Weise implementiert werden.
  • Andere Alternativen können z.B. auf der Verwendung von mehr als zwei Speichern beruhen. Der komplexe Multiplizierer wird dann wahrscheinlich eine Engstelle werden. Die Verwendung einer "doppelten" Kalkulationseinheit mit zwei komplexen Multiplizierern ist eine denkbare Lösung in dieser letzteren Hinsicht.
  • Der Fachmann wird erkennen, dass das oben beschriebene Konzept hinsichtlich FFT auch in der Kalkulation umgekehrter FFT und ähnlichen Transformationen angewendet werden kann.

Claims (14)

  1. Ein Verfahren zum Kalkulieren von FFT-, IFFT- oder ähnlichen Transformationen mit der Hilfe einer Kalkulationseinheit (110) und mindestens zwei Speichern (111, 112), wobei die Kalkulationseinheit (110) Eingabewerte von Speicherpositionen in den Speichern (111, 112) liest, in mindestens einem Kalkulationsschritt eine Gruppe von Kalkulationen durchführt, die mindestens zwei Eingabewerte erfordern und die Ausgabewerte, die aus den Kalkulationen resultieren, in entsprechende Speicherpositionen in den Speichern (111, 112) schreibt, wobei das Verfahren die Möglichkeit zum gleichzeitigen Beginnen von mindestens zwei Gruppen von Kalkulationen dank der folgenden Verfahrensschritte enthält: Lesen der Eingabewerte für eine Kalkulation in unterschiedlichen Gruppen einer Kalkulation in die Kalkulationseinheit (110) und Speichern der Eingabewerte in mindestens einer ersten Zwischenspeichereinrichtung (121, 141, 142, 143, 144, 145, 146, 147, 148); Beginnen der Kalkulationen in der aktuellen Gruppe der Kalkulation mit dem ersten Kalkulationsschritt, wenn alle Eingabewerte, die für eine aktuelle Kalkulationsgruppe notwendig sind, in die Kalkulationseinheit gelesen wurden und die Kalkulationen in einer vorangehenden Gruppe von Kalkulationen mindestens einen ersten Kalkulationsschritt abgeschlossen haben; Speichern der Ausgabewerte von der aktuellen Gruppe von Kalkulationen in mindestens einer Zwischenspeichereinrichtung (126, 162, 163, 164, 165), bis die Ausgabewerte von der vorangehenden Gruppe von Kalkulationen geschrieben wurden; und Schreiben der Ausgabewerte von einer Gruppe von Kalkulationen zurück zu den gleichen Speicherpositionen wie jene, von denen die Eingabewerte gelesen wurden, wonach die Ausgabewerte als neue Eingabewerte funktionieren können.
  2. Ein Verfahren nach Anspruch 1, einschließend: Verbinden der Kalkulationseinheit mit mindestens einer Speicherposition in einem ersten der Speicher (111) und mit mindestens einer Speicherposition in dem ersten (111) oder in einem zweiten (112) einen der Speicher zum Lesen der Eingabewerte; Speichern der eingelesenen Eingabewerte unverzüglich in mindestens einer ersten Zwischenspeichereinrichtung (121, 141, 142, 143, 144, 145, 146, 147, 148), und Verbinden der Kalkulationseinheit (110) mit den gleichen Speicherpositionen wie jene, aus denen die Eingabewerte für die aktuelle Gruppe von Kalkulationen gelesen wurden.
  3. Ein Verfahren nach einem beliebigen von Ansprüchen 1-2, einschließend Veranlassen der Kalkulationseinheit (110), die Ausgabewerte in Speicherpositionen in mindestens zwei unterschiedlichen Speichern (111, 112) in dem gleichen Zeitpunkt zu schreiben oder die Eingabewerte von Speicherpositionen in mindestens zwei unterschiedlichen Speichern (111, 112) in dem gleichen Zeitpunkt zu lesen.
  4. Ein Verfahren nach einem beliebigen von Ansprüchen 1-2, einschließend Veranlassen der Kalkulationseinheit (110), mindestens einen Ausgabewert in mindestens eine Speicherposition in mindestens einem Speicher (111) in dem gleichen Zeitpunkt zu schreiben, wie sie mindestens einen Eingabewert von mindestens einer Speicherposition in mindestens einem Speicher (112) liest.
  5. Eine Kalkulationseinheit zum Kalkulieren von FFT-, IFFT- oder ähnlichen Transformationen, umfassend mindestens zwei Speicher (111, 112) und eine Kalkulationseinheit (110), die angepasst ist, Eingabewerte von Speicherpositionen in den Speichern (111, 112) zu lesen, wobei in mindestens einem Kalkulationsschritt eine Gruppe von Kalkulationen mit den Eingabewerten durchgeführt wird und die Ausgabewerte, die aus den Kalkulationen resultieren, in entsprechende Speicherpositionen in den Speichern (111, 112) geschrieben werden, einschließend dass die Kalkulationseinheit (110) auch mindestens eine Zwischenspeichereinrichtung (121, 141, 142, 143, 144, 145, 146, 147, 148) und eine zweite Zwischenspeichereinrichtung (126, 162, 163, 164, 165) enthält; dass die Kalkulationseinheit angepasst ist, gelesene Eingabewerte in der ersten Zwischenspeichereinrichtung (121, 141, 142, 143, 144, 145, 146, 147, 148) unverzüglich zu speichern, bis alle Eingabewerte, die für eine aktuelle Gruppe von Kalkulationen notwendig sind, in die Kalkulationseinheit (110) gelesen wurden und die Kalkulationen in einer vorangehenden Gruppe von Kalkulationen in mindestens einem ersten Kalkulationsschritt abgeschlossen wurden, womit die Kalkulationen in der aktuellen Gruppe von Kalkulationen mit dem ersten Kalkulationsschritt begonnen werden; dass die Kalkulationseinheit (110) angepasst ist, kalkulierte Ausgabewerte von der aktuellen Gruppe von Kalkulationen in der zweiten Zwischenspeichereinrichtung (126, 162, 163, 164, 165) unverzüglich zu speichern, bis die Ausgabewerte von der vorangehenden Gruppe von Kalkulationen geschrieben wurden; und dass die Kalkulationseinheit (110) auch angepasst ist, die Ausgabewerte von einer Gruppe von Kalkulationen in die gleichen Speicherpositionen wie jene zu schreiben, aus denen die Eingabewerte gelesen wurden, wonach die Ausgabewerte als neue Eingabewerte funktionieren können.
  6. Eine Kalkulationseinheit nach Anspruch 5, einschließend dass die Kalkulationseinheit (110) für eine Verbindung mit mindestens einer Speicherposition in einem ersten Speicher (111) und mit mindestens einer Speicherposition in dem ersten (111) oder in einem zweiten (112) Speicher zum Lesen der Eingabewerte angepasst ist, und dass die Kalkulationseinheit (110) angepasst ist, mit den gleichen Speicherpositionen wie jenen verbunden zu sein, von denen die Eingabewerte der aktuellen Gruppe von Kalkulationen gelesen wurden.
  7. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-6, einschließend, dass die Kalkulationseinheit mindestens zwei Lesebusse (113a, 113b) und mindestens zwei Schreibbusse (114a, 114b) zwischen der Kalkulationseinheit (110) und den Speichern (111, 112) enthält; und dadurch, dass die Kalkulationseinheit (110) angepasst ist, gleichzeitig den Ausgabewert zu schreiben in oder die Eingabewerte zu lesen von Speicherpositionen in mindestens zwei Speichern (111, 112).
  8. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-6, einschließend, dass die Kalkulationseinheit mindestens einen Lesebus und mindestens einen Schreibbus zwischen der Kalkulationseinheit (110) und den Speichern (111, 112) enthält; und dadurch, dass die Kalkulationseinheit (110) angepasst ist, mindestens einen Ausgabewert in mindestens eine Speicherposition in mindestens einem Speicher (111) zu schreiben, und zur gleichen Zeit mindestens einen Eingabewert von mindestens einer Speicherposition in mindestens einem anderen Speicher (112) zu lesen.
  9. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-8, einschließend, dass die Kalkulationseinheit (110) auch einen Subtrahierer (122), einen Addierer (123), einen komplexen Multiplizierer (125) und einen Gewichtungskoeffizientenspeicher (124) enthält.
  10. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-8, einschließend, dass die Kalkulationseinheit (110) auch vier Summierungseinheiten (131), einen Multiplexer (132), einen komplexen Multiplizierer (125) und einen Gewichtungskoeffizientenspeicher (124) enthält.
  11. Eine Kalkulationseinheit nach Anspruch 10, einschließend, dass eine Summierungseinheit (131) einen Addierer (134), ein Register (135) und Mittel (133) zum Multiplizieren eines eingehenden Wertes mit 1, –1, i oder –i enthält.
  12. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-8, einschließend, dass die Kalkulationseinheit auch mindestens zwei einfache Multiplizierer (149, 150), mindestens vier Multiplexer (151, 152, 158, 159), zwei Addierer-Subtrahierer (153, 160), einen komplexen Multiplizierer (125) und einen Gewichtungskoeffizientenspeicher (124) enthält.
  13. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-12, einschließend, dass die Zwischenspeichereinrichtungen (121, 141, 142, 143, 144, 145, 146, 147, 148, 126, 162, 163, 164, 165) Register sind.
  14. Eine Kalkulationseinheit nach einem beliebigen von Ansprüchen 5-13, einschließend, dass jeder Speicher (111, 112) im wesentlichen die gleichen Zahl von Werten enthält.
DE69737699T 1996-10-21 1997-09-29 Gerät und verfahren zur fft-berechnung Expired - Lifetime DE69737699T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
SE9603862 1996-10-21
SE9603862A SE507529C2 (sv) 1996-10-21 1996-10-21 Anordning och förfarande vid beräkning av FFT
PCT/SE1997/001637 WO1998018083A1 (en) 1996-10-21 1997-09-29 A device and method for calculating fft

Publications (2)

Publication Number Publication Date
DE69737699D1 DE69737699D1 (de) 2007-06-14
DE69737699T2 true DE69737699T2 (de) 2008-01-10

Family

ID=20404335

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69737699T Expired - Lifetime DE69737699T2 (de) 1996-10-21 1997-09-29 Gerät und verfahren zur fft-berechnung

Country Status (7)

Country Link
US (1) US6356926B1 (de)
EP (1) EP1008060B1 (de)
AU (1) AU4730497A (de)
CA (1) CA2269464A1 (de)
DE (1) DE69737699T2 (de)
SE (1) SE507529C2 (de)
WO (1) WO1998018083A1 (de)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL131350A0 (en) * 1999-08-11 2001-01-28 Israel State Data storage patterns for fast fourier transforms
US6609140B1 (en) * 1999-11-30 2003-08-19 Mercury Computer Systems, Inc. Methods and apparatus for fast fourier transforms
EP1162547A3 (de) * 2000-06-05 2003-09-03 DSP Group Ltd. Von Ort FFTspeicherverwaltung
US6760741B1 (en) * 2000-06-05 2004-07-06 Corage Ltd. FFT pointer mechanism for FFT memory management
US7062523B1 (en) * 2000-08-01 2006-06-13 Analog Devices, Inc. Method for efficiently computing a fast fourier transform
US6963892B2 (en) * 2001-12-26 2005-11-08 Tropic Networks Inc. Real-time method and apparatus for performing a large size fast fourier transform
CA2377623C (en) * 2002-03-20 2008-04-22 Dongxing Jin Method and apparatus for computation reduction for tone detection
GB2391966B (en) * 2002-08-15 2005-08-31 Zarlink Semiconductor Ltd A method and system for performing a fast-fourier transform
KR20040032683A (ko) * 2002-10-10 2004-04-17 엘지전자 주식회사 무선 랜 시스템의 고속 푸리에 변환 장치
KR100577005B1 (ko) * 2003-12-27 2006-05-10 한국전자통신연구원 고속 하다마드 변환 및 고속 푸리에 변환의 선택적 수행장치 및 방법
KR100518797B1 (ko) * 2004-01-07 2005-10-05 삼성전자주식회사 처리속도가 향상된 고속 퓨리에 변환 장치 및 그의 처리방법
KR100825771B1 (ko) * 2004-02-11 2008-04-28 삼성전자주식회사 메모리를 반감하는 고속 푸리에 변환 프로세서 및 그 방법
US20050198092A1 (en) * 2004-03-02 2005-09-08 Jia-Pei Shen Fast fourier transform circuit having partitioned memory for minimal latency during in-place computation
US7296045B2 (en) * 2004-06-10 2007-11-13 Hasan Sehitoglu Matrix-valued methods and apparatus for signal processing
US20060075010A1 (en) * 2004-10-05 2006-04-06 Wadleigh Kevin R Fast fourier transform method and apparatus
KR100618889B1 (ko) * 2005-02-12 2006-09-01 삼성전자주식회사 메모리 사이즈를 감소시킬 수 있는 고속 푸리에 변환 프로세서
TWI298448B (en) * 2005-05-05 2008-07-01 Ind Tech Res Inst Memory-based fast fourier transformer (fft)
CN1688104B (zh) * 2005-06-20 2010-11-10 北京中星微电子有限公司 数字信号处理方法及装置
KR20070075946A (ko) * 2006-01-17 2007-07-24 장영범 저전력 고속 푸리에 변환 방법 및 장치와, 이를 이용한통신 단말기

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3617720A (en) * 1967-09-12 1971-11-02 Bell Telephone Labor Inc Fast fourier transform using hierarchical store
BE757750A (fr) * 1969-12-31 1971-04-01 Thomson Csf Perfectionnements aux dispositifs de traitement en temps reel de signaux electriques
US3673399A (en) * 1970-05-28 1972-06-27 Ibm Fft processor with unique addressing
US3721812A (en) * 1971-03-29 1973-03-20 Interstate Electronics Corp Fast fourier transform computer and method for simultaneously processing two independent sets of data
GB1546173A (en) * 1977-03-11 1979-05-16 Secr Defence Signal processing equipment
GB2006485B (en) * 1977-10-07 1982-02-10 Secr Defence Spectrum analysers
JPS62175866A (ja) * 1986-01-30 1987-08-01 Nec Corp シグナルプロセツサ
US5038311A (en) * 1990-08-10 1991-08-06 General Electric Company Pipelined fast fourier transform processor
JPH0668123A (ja) * 1992-05-22 1994-03-11 Nec Corp 信号処理回路
JP3675537B2 (ja) * 1995-11-29 2005-07-27 富士通株式会社 高速フーリエ変換を行うメモリ分散型並列計算機およびその方法

Also Published As

Publication number Publication date
AU4730497A (en) 1998-05-15
US6356926B1 (en) 2002-03-12
SE507529C2 (sv) 1998-06-15
CA2269464A1 (en) 1998-04-30
DE69737699D1 (de) 2007-06-14
SE9603862L (sv) 1998-04-22
EP1008060A1 (de) 2000-06-14
SE9603862D0 (sv) 1996-10-21
WO1998018083A1 (en) 1998-04-30
EP1008060B1 (de) 2007-05-02

Similar Documents

Publication Publication Date Title
DE69737699T2 (de) Gerät und verfahren zur fft-berechnung
DE69332975T2 (de) Digitales filter mit hoher genauigkeit und effizienz
DE19835216B4 (de) Prozessor und Verfahren zur parallelen Datenverarbeitung
DE3789116T2 (de) Prozessor zur zweidimensionalen diskreten cosinustransformation.
DE3804938C2 (de) Bildverarbeitungseinrichtung
DE3750017T2 (de) Prozessor für orthogonale Transformation.
DE69028075T2 (de) Digitaler bildinterpolator
DE69230897T2 (de) Diskreter/invers-diskreter Cosinus-Transformationsprozessor und Datenverarbeitungsverfahren
DE2718849C2 (de) Datenverarbeitungsanlage für Datenelemente einer Matrix aus M Speichermoduln und mit p Prozessoren
DE3875979T2 (de) Schaltung zur berechnung des quantisierten koeffizienten der diskreten cosinustransformation von digitalen signalabschnitten.
DE69728247T2 (de) Pyramidenförmiger pipeline-prozessor für ein bildverarbeitungssystem
DE69229464T2 (de) Quasi radix-16 prozessor und verfahren
DE3854818T2 (de) Transformationsverarbeitungsschaltung
DE102019126719A1 (de) Energieeffiziente Speichersysteme und Verfahren
DE69329962T2 (de) System und Verfahren für die diskrete Cosinus-Transformation und für die inverse diskrete Cosinus-Transformation mit einfacher Struktur und mit hoher Betriebsgeschwindigkeit
DE69830474T2 (de) Verfahren und gerät zur fft-berechnung
DE60022206T2 (de) Registerspeicher zur verarbeitung von 2-d matrix
DE4038240A1 (de) Prozessor zum durchfuehren einer orthogonaltransformation
DE69838091T2 (de) Programmierbare Schaltung zur Realisierung eines digitalen Filters
DE3632639A1 (de) Einrichtung zum verarbeiten von bilddaten durch faltung
DE4345029C2 (de) Schaltkreis für diskrete Kosinustransformation
DE2246729A1 (de) Verfahren und vorrichtung fuer die gleichzeitige trennung und demodulation eines frequenzmultiplexen signals
DE4040299A1 (de) Schaltungsanordnung zur taktumsetzung eines digitalen signals
DE202014011350U1 (de) FFT- Beschleuniger
DE69629265T2 (de) Bildskalierungsverfahren und -gerät

Legal Events

Date Code Title Description
8364 No opposition during term of opposition