SE507529C2 - Anordning och förfarande vid beräkning av FFT - Google Patents
Anordning och förfarande vid beräkning av FFTInfo
- Publication number
- SE507529C2 SE507529C2 SE9603862A SE9603862A SE507529C2 SE 507529 C2 SE507529 C2 SE 507529C2 SE 9603862 A SE9603862 A SE 9603862A SE 9603862 A SE9603862 A SE 9603862A SE 507529 C2 SE507529 C2 SE 507529C2
- Authority
- SE
- Sweden
- Prior art keywords
- calculation
- memory
- values
- calculations
- group
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast 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
lO
15
20
25
Detta ger en ny kolumn om N värden. Dessa används för nya, liknande beräkningar
och ger i sin tur en ny kolumn om N värden etc tills logz N kolumner har räknats fram,
varvid den sista serien ger svaret. Denna metod går sedan att variera på ett antal olika
Sätt.
För varje gång man räknar fram en ny serie behövs inte den gamla serien längre.
Detta gör att man kan återanvända minnet där den förra serien låg, vilket kallas att
göra beräkningen “inplace”. Man klarar sig alltså med ett minne av storlek N, vilket t ex
visas i GB 1 546 173 och GB 2 006 485. Nackdelen med detta är att minnesaccesser
då hela tiden görs till samma minne, vilket inte är särskilt effektivt.
Ett annat sätt att implementera FFT är att använda två minnen av storlek N, vilket visas
i den tekniska rapporten “An Energy-Efficient FFT Processor Architecture" (NGT-
70340-1994-1), Department of Electrical Engineering, Stanford University, Stanford,
Kalifornien, USA. Data läses från det ena minnet, behandlas och skrivs till det andra
minnet. Denna metod kan göras snabbare än att beräkna “inplace“ eftersom skrivning
och läsning kan ske samtidigt. Nackdelen med metoden är att den krafver dubbelt så
mycket minne som den FFT som skall beräknas.
REDOGÖRELSE FÖR UPPFINNINGEN
Föreliggande uppfinnlng angriper problemet att FFT-beräkningar antingen kräver
mycket tid eller mycket minne.
Ändamålet med föreliggande uppfinnlng är att lösa problemet genom att organisera
sammankopplingen och samarbetet mellan beräkningsenhet och minnen, så att två
butterflyberäkningar kan vara påbörjade samtidigt. Detta åstadkoms genom att
ingångsvärden som läses från minnespositioner i minnen mellanlagras i register i
beräkningsenheten efter läsning och/eller genom att utgångsvärden som skall skrivas
till minnespositioner i minnen mellanlagras i register i beräkningsenheten före
skrivning. Lämpligen fördelas värdena så att det är väsentligen lika många värden i
varje minne. På detta sätt kan tex två minnen användas som utnyttjas maximalt
genom att läsning från, respektive skrivning till minnespositioner i de två minnena kan
10
15
20
25
i' i 587 529
ske samtidigt. Alternativt kan läsning ske från det ena minnet, samtidigt som skrivning
sker till det andra minnet.
En fördel med föreliggande uppfinning är att minnena utnyttjas maximalt, så att
minnesutrymmet kan minimeras till hälften jämfört med den kända lösningen med två
minnen. En annan fördel är att tiden kan minskas jämfört med den kända lösningen
med ett minne.
Uppfinningen kommer nu att beskrivas närmare med hjälp av föredragna
utföringsfonner och med hänvisning till bifogade ritningar. I det följande kommer
butterfly att beteckna en grupp av minst två beräkningar, där varje beräkning innefattar
minst ett beräkningssteg.
FIGURBESKRIVNING
Figur 1a visar ett principschema över en känd åttapunkters radix-2 decimation-in-time
FFT-algoritm. ___
Figur 1b visar ett principschema över butterfly-beräkningen i figur 1a.
Figur 2a visar ett principschema över en känd åttapunkters radix-2 decimation-in-
frequency FFT-algoritm.
Figur 2b visar ett principschema över butterfly-beräkningen i figur 2a.
Figur 3a visar ett principschema över en känd 64-punkters radix-4 decimation-in-
frequency FFT-algoritm.
Figur 3b visar ett principschema över butterfly-beräkningen i figur 3a.
Figur 4a och 4b visar principscheman över känd teknik.
Figur 5 visar ett blockschema över en utföringsform av uppfinningen.
Figur 6 visar ett blockschema över en annan utföringsforrn av uppfinningen.
Figur 7 visar ett blockschema över en utföringsforrn av beräkningsenheten i figur 5
eller 6.
Figur 8a visar ett blockschema över en annan utföringsforrn av beräkningsenheten i
figur 5 eller 6.
Figur 8b visar ett blockschema över en utföringsforrn av summeringsenheten i figur 8a.
10
15
20
25
(Ti
C.)
\\'| l
(fl
i\)
\O
Figur 9 visar ett blockschema över ytterligare en utföringsform av beräkningsenheten i
figur 5 eller 6.
FÖREDRAGNA UTFÖRINGSFORMER
Snabb Fouriertransform (FFT) är en metod att snabbt beräkna den diskreta
Fouriertransformen (DFT). Den kan bl a utnyttjas i det fall man har samplade värden i
tidsdomänen och vill se hur frekvensdomänen ser ut. Typiska användningsområden
kan vara spektralanalys, distortionsanalys, vibrationssignatursanalys, frekvenssvars-
uppskattning, fattning, korrelation och effektspektra.
Uppfinningen är främst tänkt att användas inom ett kommunikationssystem som
använder multibärvågsmodulering (multi carrier) och där invers FFT (IFFT) används för
modulering, medan FFT används för demodulering, men uppfinningen lämpar sig
naturligtvis även för andra områden.
Multibärvågsmodulering är en känd metod för att skicka många Mbit__över tex en
telefonledning. Mycket kort går det ut på att talet i ett telefonsamtal samplas, vilket ger
ett större antal bitar. Bitarna som skall överföras matas i en sändare in som komplexa
tal, varefter en IFFT utförs. lFFT:n ger vid moduleringen en summa av ortogonala
bärvågor eller toner, vars amplituder och fasförskjutningar påverkas av de komplexa
talen. l en mottagare utförs istället FFT, varvid de ursprungliga bitarna fås tillbaka.
Dämpning i telefonledningen kan enkelt kompenseras genom att multiplicera med ett
komplext tal per bärvåg. Multibärvågsmodulering finns närmare beskrivet i tex
WO 95/03656, EP O 653 858, EP 0 656 706, EP 0 683 576 och WO 95/05042.
l figur 1a visas ett principschema över en känd FFT-algoritm med åtta ingångsvärden
x(0)-x(7) och åtta utgångsvärden X(0)-X(7). l figur 1b visas en återkommande grupp av
beräkningar som kallas butterfly eftersom den liknar en fiäril (engelska butterfly).
Eftersom en butterfly i detta fall har två ingångsvärden och två utgångsvärden heter
det att denna FFT-algoritm är av typen radix-2. Varje butterfly innefattar en komplex
multiplikation och två komplexa additioner enligt:
lO
15
20
507 529
x'(k)= x(|<)+w(i<,N)x(|)
x'(|)= x(|)-w(k,N)x(|)
där k och I varierar enligt figur 1a. W(k,N) kallas viktskoefficient eller fasfaktor. Denna
variant på butterfly kallas för tidsdecimerad (decimation-in-time DIT).
lngångsvärdena x(0)-x(7) i kolumn C1 används för att beräkna en ny serie värden i
kolumn C2, som i sin tur används för att beräkna kolumn G3, som i sin tur används för
att beräkna kolumn C4. I kolumn C4 finns sedan de önskade utgångsvärdena X(O)-
X(7). l figur 1a är lngångsvärdena x(0)-x(7) i rätt ordning vilket ger utgångsvärdena
X(0)-X(7) omblandade. Motsatsen kan också tänkas.
l figur 2a visas principschema över en annan känd radix-2-FFT-algoritm. Denna kallas
för frekvensdecimerad (decimation-in-frequency DIF). l figur 2b visas en motsvarande
butterfly enligt:
x'(k)=x(k)+x(l)
X'(l)=(><(k)-X(|))W(k.N)
l figurerna 1a och 2a visas algoritmer med N = 8-punkter. Radix-2 fungerar för alla
beräkningar med N sampel där N = 2” och v är ett positivt heltal.
l figur 3a visas ett känt exempel på en frekvensdecimerad radix-4-FFT-algoritm med
64 ingångsvärden och 64 utgångsvärden. l detta fall används fyra ingångsvärden och
fyra utgångsvärden till butterflyen. Radix-4 fungerar för alla beräkningar med N sampel
där N = 4” och v är ett positivt heltal. Algoritmens butterfly är enbart schematiskt visad
och visas istället mer i detalj i figur 3b.
Beräkningarna i figur 3b ser ut som följer:
10
15
20
25
X0)'=(X(J)+X(k)+X(|)+X(m))WÜ.N) (där WÜ,N)=1)
X(K)'=(X(J)-iX(l<)-X(|)+i><(m))W(K.N)
X(|)'=(XÜ)-X(K)+X(|)-X(m))W(|-N)
X(m)'=(X(i)+iX(l<)-X(l)~i><(m))W(m.N)
där j, k, I, m varierar enligt figur 3a och i= Jïl . Jämför också tabellema 5 och 6
nedan.
Givetvis finns det även en tidsdecimerad radix-4-FFT-algoritm, jämför tabell 4 nedan.
Det finns också FFT-algoritmer med högre radix-tal, men radix-2 och radix-4 är de
vanligast förekommande.
Gemensamt för alla FFT-algoritmer är att FFT:n delas upp i ett antal kolumner där
delresultat beräknas. Dessa delresultat används sedan som ingångsvärden till nästa
kolumn. Antal kolumner avgörs av hur stor FFT man vill beräkna och vilken radix
man använder. En FFT-processor kan således byggas upp kring en beräkningsenhet
som utför en butterfly-beräkning, samt minst ett minne för data.
Eftersom värden från en kolumn inte används mer än för att beräkna nästa kolumn är
det möjligt och känt att använda ett minne av samma storlek N som den FFT som skall
beräknas och skriva de beräknade värdena från en kolumn till de minnespositioner där
ingångsvärdena låg innan. Nackdelen är att man generellt sett inte kan läsa och skriva
från ett minne samtidigt, vilket gör att beräkningen tar tid om man inte har ett snabbt
minne. Ett snabbt minne kan å andra sidan dra mer ström.
Eftersom man i beräkningsenheten kan göra en komplex muliplikation per klockcykel
ligger flaskhalsen i minnesaccesserna. Optimerat skulle minst två minnesaccesser per
klockcykel vara önskvärt.
Ett annat känt sätt att organisera minnen och beräkningsenhet visas i figur 4a och 4b.
Figurerna 4a och b visar bara rent principiellt hur data skickas fram och tillbaka och
......._,.L.»_>-;..,.;».,_>.1=-.får. _, t__...-r.__...~.:_-_--;__.f_.1g...,_.-._«.;.._-. ». ___-- . .;._~.-,.v_..,..r..'_._.~. «
10
15
20
25
507 529
skall inte tolkas bokstavligt. En beräkningsenhet 100 och två minnen 101 och 102
används. ingångsvärden läses först från minnespositioner i det ena minnet 101,
samtidigt som man skriver utgångsvärden till minnespositioner i det andra minnet 102,
se figur 4a. När en första kolumn beräknats ligger resultatet i det andra minnet 102.
Sedan används data i det andra minnet 102 som ingångsvärden till beräkningsenheten
100, medan utgångsvärden till nästa kolumn skrivs till minnespositioner i det första
minnet 101. På detta sätt växlas minnen 101 och 102 tills hela FFT:n är beräknad.
Båda minnena 101 och 102 måste vardera ha minst samma storlek som den FFT som
beräknas.
Det skulle emellertid vara möjligt att använda en hälften så stor minnesarea tex
genom att lagra hälften av en kolumns värden i ett minne och den andra hälften i ett
annat minne. Det visar sig emellertid svårt att hitta en uppdelning som gör att båda
minnena används lika mycket, d v s så att det ena minnet inte blir överbelastat.
Om man tex lagrar första halvan av värdena i ett minne och den añöra halvan av
värdena i ett annat minne får man i minst en av kolumnerna problemet att alla
ingångsvärden ligger i det ena minnet och alla utgångsvärden skall skrivas till samma
minne, medan det andra minnet inte alls används. Om man istället tex lägger udda
minnespositioner i ett minne och jämna i det andra fås samma problem, fast i en
annan kolumn.
Uppflnningen bygger på att man i sin beräkningsenhet samtidigt håller på att beräkna
butterflyer från olika delar av kolumnen. Man kan då växelvis läsa och skriva i de två
minnena på ett sådant sätt att inget minne överbelastas. Minnesbehovet kan halveras
jämfört med den ovan beskrivna metoden på bekostnad av några fler register i
beräkningsenheten för mellanlagring av delresultat.
l tabell 1 nedan visas ett exempel hur ett beräkningsförfarande kan se ut. En radix-2
DlT med N=8 beräknas, på samma sätt som i figur 1a. För att förenkla tabellen betyder
tex 0=0'=0"=0"' minnesposition 0 i ett minne, samtidigt som det också kan tolkas som
värdena x(0), x'(0), x"(0) och x"'(0) som lagras i minnesposition 0. Minnena är döpta till
10
15
20
25
111 och 112, vilket passar ihop med figurerna 5 och 6 som kommer att beskrivas
längre fram. Varje rad i tabellen motsvarar en klockcykel. Det skall märkas att en
beräkning ofta innehåller fler än ett beräkningssteg och att tabellen således enbart ger
en förenklad bild.
De två minnena är uppdelade så att det första minnet 112 innehåller värden med udda
nummer, medan det andra minnet 111 innehåller värden med jämna nummer. Andra
uppdelningar är möjliga, tex kan man ta värdena x(0), x(1), x(2) och x(3) i ett minne
och värdena x(4), x(5), x(6) och x(7) i det andra minnet.
Beräkningen av den första kolumnen är enkel. De två ingångsvärden som behövs för
varje butterfly ligger nämligen i var sitt minne. Beräkningsenheten läser då värde x(0)
från en minnesposition i det första minnet 112 och värde x(1) från en minnesposition i
det andra minnet 111. De två efterföljande klockcyklerna beräknas butterflyen och ger
de resulterande utgångsvärdena x'(O) och x'(1) som skall skrivas tillbaka i de
minnespositioner 0 och 1 som värdena x(0) och x(1) lästes ifrån. Detta kan dock i detta
fall inte göras omedelbart utan utgångsvärdena x'(O) och x'(1) mellanlagras i några
register tills skrivning kan ske två klockcykler senare.
Under tiden som beräkningen av den första butterflyen pågår läses ett nytt par av
'ingångsvärden x(2) och x(3) in, varefter de nya' utgångsvärdena x'(2) och x'(3)
beräknas och skrivs enligt samma procedur, som också upprepas för de följande
värdena x(4) och x(5), samt x(6) och x(7).
Så här långt är allt väl, men när nu nästa kolumn skall beräknas upptäcker vi att de två
värden som behövs för varje butterflyberäkning hela tiden ligger i minnespositoner i
samma minne och till råga på allt skall skrivas till minnespositioner i samma minne.
För att lösa detta läses ingångsvärden in till två butterflyer samtidigt. För den första
butterflyen krävs värdena x'(O) och x'(2) och för den andra butterflyen krävs värdena
x'(1) och x'(3). Följaktligen läses första gången värdena x'(O) och x'(1) in och
mellanlagras. Därefter läses värdena x'(2) och x'(3) in. Den första butterflyberäkningen
med x'(O) och x'(2) kan nu utföras, vilket tar två klockcykler, varefter den andra
5
butterflyberäkningen med x'(1) och x'(3) kan utföras. Under tiden läses nya värden in
SOm 0Vafl.
Den tredje kolumnen beräknas på samma sätt.
Tabell 1
Läs' 111 kriv,111 Läs 112
0 1
kriv 112 Beräknin
Klart
2 3
4
0"' 1"'
4'" 5"'
2"' 3"'
6"' 7"'
Märk att när vi på detta sätt gör en FFT-beräkning med enbart åtta värden, så måste
en fördröjning läggas in mellan andra och tredje kolumnen. Detta problem försvinner
CT!
C 3
%
l .
(Il
l\_')
\O
10
om större antal värden används, vilket bevisas i tabell 2 nedan. Märk att i
fortsättningen tecknen ', " och inte kemmer att sättas ut i tabellerna.
Tabell 2
Läs111 Skriv111 Läs 112 Skriv 112 Beräkni Klart
0 1
2 3
4 5
0
1
2
3
4
5
6
7
8
9
_x_.x_s._x _:
wà|u__,(Dc@\|O'lO)-ß0J-\Y\)CD
u-'zng-.La \'«-.v--~..~;'.A«~l'<.> ~'1/1.-.n.,.:,<4u.'¿^~ Mn-Dyp- f.. . . ~-.». .» f. '---. .f. f» w- * .- w '~-~'..,f. , .I
'l 587 529
ll
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräkning Klart
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 V 11 8-12 8
6 l 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
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 s '
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
Radix-2 DIF går att beräkna på liknande sätt, vilket visas i tabell 3 nedan. Jämför figur
2a.
Tabell 3
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräkning Klart
0 1
4 5
0-4
2 3 O-4 0
507 529
12
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräknin Klart
1-5 4
6 7 1-5
2-6
2-6
3-7
3-7
\JCDCI'I-ÄCDI\)-XO\ILTIO)-àQJ-ÅI\JCD
4 5
6 7
Givetvis fungerar metoden även för radix-4. l tabell 4 nedan visas varianten DIT. Även
här försvinner problemet med påtvingade fördröjningar mellan kolumnerna med större
antal värden. N=64 ger dock en så lång tabell, så det visas inte.
Tabell 4
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräkni Klart
0 1
2 3
5
m
cs
~\1
m
ro
\o
13
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräkning Klart
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 O
0-4-8-12 4
6 7 0-4-8-12 8
1-5-9-13 12
10 11 1-5-9-13 1 M'
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
Ett alternativ till att läsa från respektive skriva till båda minnena samtidigt är att läsa
från det första minnet 111 och samtidigt skriva till det andra minnet 112 och vice versa.
Ett sådant exempel visas i tabell 5 nedan.
C-"l
'\.
CJ
Ur
Även i detta exempel ligger de udda värdena i ett minne 112 och de jämn värdena i ett
l\D,,
14
annat minne 111. En radix-4 DIF med N=16 beräknas.
Tabell 5
Läs 112 Skriv 112 Läs 111 Skriv 111 Beräkning Klar
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
O 3 1-5-9-13 12
4 7 1-5-9-13 1
8 1 1 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 1 3 2-6-10-14 10
2 1 3-7-1 1-15 14
6 3 3-7-11-15 3
10 5 3-7-1 1-15 7
14 7 3-7-1 1-15 1 1
8 3 0-1-2-3 15
1 0 7 0-1-2-3 0
12 1 1 4-5-6-7 2
14 15 4-5-6-7 1
0 9 0-1-2-3 3
2 1 1 0-1-2-3 4
4 13 4-5-6-7 6
6 15 4-5-6-7 5
1 8-9-10-1 1 7
3 8-9-10-1 1 8
5 12-13-14-15 10
7 12-13-14-15 9
8 8-9-10-1 1 1 1
10 8-9-10-1 1 12
15
Läs 112 Skriv 112 Läs 111 Skriv111 Beräkning Klar
12 12-13-14-15 14
14 12-13-14-15 13
9 15
11
13
15
Om man gör som i tabell 5 så kommer, oavsett antalet ingångsvärden, konsekvent de
värden man vill ha att ligga i samma minne i de beräknade kolumnerna med undantag
för den näst sista kolumnen, där de ligger jämnt fördelade i båda minnena. I tabell 5,
fortsätter man att läsa in fyra värden efter varandra i alla fall. Ett alternativ är att
behandla den näst sista kolumnen på ett annat sätt genom att omväxlande läsa från
det ena minnet 111 och från det andra minnet 112. Detta visas i tabell 6, där en radix-4
DIF med N=64 beräknas. Enbart de första beräkningarna är utskrivna. Resten inses
lätt av fackmannen. Jämför med figur 3a och figur 9.
Tabell 6
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräkning Klart
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
(fl
IO
507 52
16
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräkni Klart
34 37
50 53
_ 507 529
17
Läs 111 Skriv111 Läs112 Skriv112 Beräkni
8 45
12 61
14
30
46
62
gr.-
CD
*J
(J-I
I\)|_
\O
18
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräknin
40
44
43
47
50-54-58-62
50-54-58-62
50-54-58-62
50-54-58-62
51 -55-59-63
51 -55-59-63
51 -55-59-63
51 -55-59-63
Klart
Läs111 Skriv111 Läs112 Skriv112 Beräkni
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
48
50
52
54
56
58
4
6
8
10
12
14
16
18
20
22
24
26
28
30
32
34
36
38
40
42
44
46
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
49
51
53
55
57
5
7
9
11
13
15
17
19
21
23
25
27
29
31
33
35
37
39
41
43
45
47
19
50
C
29
10
15
(f:
CJ
“Q
(Il
l\J»
\0
20
Läs 111 Skriv 111 Läs 112 Skriv 112 Beräknin
48 59
60 49
50 61
62 51
52 63
Klart
53
54
55
56
57
58
59
60
61
62
63
l figur 5 visas ett sätt att implementera uppfinningen. I motsats till figurerna 4a och 4b
skall figuren tolkas mer konkret. En beräkningsenhet 110 är förbunden med ett första
minne 111 och ett andra minne 112 medelst två skrivbussar 114a och 4-14b, samt två
Iäsbussar 113a och 113b. Hälften av värden är lagrade i minnespositioner i det första
minnet 111 och hälften i minnespositioner i det andra minnet 112. På detta sätt kan
läsning, respektive skrivning ske i båda minnena 111 och 112 samtidigt. Märk att
jämfört med figurerna 4a och 4b krävs endast hälften av minnesutrymmet i de två
minnena 111 och 112.
l figur 6 visas en annan utföringsform av uppfinningen. En beräkningsenhet 110 är
förbunden med ett första minne 111 och ett andra minne 112 medelst en gemensam
skrivbuss 114 och en gemensam läsbuss 113. l detta fall skriver beräkningsenheten
110 till det ena minnet 112, samtidigt som den läser från det andra minnet 111. Därför
räcker det med en gemensam skrivbuss 114 och en gemensam läsbuss 113. l övrigt
är figuren lik figur 5.
I både figur 5 och 6 kan man tänka sig att utvidga till fler minnen.
l figur 7 visas ett blockschema över hur beräkningsenheten i figur 5 eller 6 kan
utformas i fallet radix-2 DIF. De två ingångsvärdena går både till en subtraherare 122
10
15
20
25
21
och till en adderare 123. Värdet som kommer från subtraheraren 122 multipliceras i en
komplex multiplikator 125 med en viktskoefficient som kommer
från ett
viktskoefficientsminne 124.
Beroende på hur algoritmen är implementerad, jämför tabellerna ovan, behövs också
några register för mellanlagring av ingångsvärden, respektive utgångsvärden, så att
två butterflyberäkningar kan vara påbörjade samtidigt. Hur många register som behövs
är beroende av hur många klockcykler som behövs mellan läsning och beräkning,
samt mellan beräkning och skrivning. Registren visas i figur 7 enbart schematiskt som
ett mellanlagringsorgan 121 där kommer in och ett
ingångsvärdena
mellanlagringsorgan 126 där utgångsvärdena går ut. Alla värden behöver
nödvändigtvis inte alltid lagras både när de kommer in och går ut.
I figur 8a visas ett blockschema över hur beräkningsenheten 110 i figur 5 eller 6 kan
utformas i fallet radix-4 DIF. De fyra ingångsvärden som behövs går till fyra
summeringsenheter 131, varefter fyra summerade värden från summeriggsenheterna
131 går ett i taget via en multiplexor 132 till en komplex multiplikator 125, där de
summerade värdena multipliceras med motsvarande viktskoefficienter från ett
viktskoefficientsminne 124 innan de sänds ut till minnena igen.
På samma sätt som i figur 7 krävs en viss mellanlagring, visat schematiskt som två
stycken mellanlagringsorgan 121 och 126.
En detaljbild av hur en summeringsenhet 131 kan se ut visas i figur 8b.
Summeringsenheten 131 innefattar en multiplikator 133, en adderare 134, ett
summeringsregister 135 och en multiplexor 136.
Det första ingångsvärdet multipliceras i multiplikatom 133 med 1, -1. ieller -i beroende
på vilket av värdena i butterflyen som skall beräknas. Ingen vanlig avancerad
multiplikator behövs för en sådan operation, då det bara är fråga om att byta tecken
eller plats. Resultatet från multiplikatorn 133 går till adderaren 134.
Multiplexorn 136 väljer ut vad som adderaren 134 skall lägga till summeringsregistret
135. Första gången läggs värdet 0 ihop med resultatet från multiplikatorn 133 och
10
15
20
25
22
läggs i summeringsregistret 135. De övriga tre gångerna läggs istället värdet i
summeringsregistret 135 ihop med resultatet från multiplikatorn 133.
Ett mer konkret exempel, vad beträffar upplägget av register, visas i figur 9. Denna
figur visar en implementering av tabell 6 med hjälp av en beräkningsenhet 110. Märk
att varje rad i tabellen motsvarar en klockcykel, men att framställningen av
beräkningen i tabellen är förenklad. l figur 9 kan ett värde under en klockcykel förflyttas
från ett register till ett annat, med eventuellt mellanliggande beräkningar, eller ligga
kvar i samma register.
Först läses värdena 0, 16, 32 och 64 in ett i taget och läggs i fyra första register 141,
142, 143, 144. Sedan förflyttas värdena 0, 16, 32 och 64 till fyra andra register 145,
146, 147, 148, medan nya värden 1, 17, 33 och 49 läses in ett i taget och läggs i de
fyra första registren 141, 142, 143, 144.
Beräkningsenheten 110 utnyttjar i detta fall att samma additioner återkommer. Därför
mellanlagras mellanresultat i fyra mellanlagringsregister 154, 155, 156, 157. I två enkla
multiplikatorer 149 och 150 multipliceras värdena från registren 146 respektive 150
med något av värden 1 eller -i, respektive 1 eller i. Dvs multiplikation med 1 är
detsamma som ingen multiplikation alls och multiplikation med i eller -i är bara en fråga
om att byta plats och eventuellt tecken i värdets dataord.
Med tillagd hjälp av två multiplexorer 151 och 152 och en adderare-subtraherare 153
sker addition och subtraktion, varvid värdena i mellanlagringregistren 154, 155, 156
och 157 blir respektive 0+32; 0-32; 164-64; -16i+64i. Under tiden flyttas värdena 1, 17,
33, 49 i de första registren 141, 142, 143 och 144 över till de andra registren 145, 146,
147 och 148, medan nya värden 2, 18, 34, 50 läses in i de första registren 141, 142,
143, 144. Alla dessa värden kommer senare att behandlas analogt med de första
värdena 0, 16, 32 och 64.
Värdena i mellanlagringregistren 154, 155, 156 och 157 adderas och subtraheras nu
med varandra via ytterligare två multiplexorer 158 och 159 och en ytterligare adderare-
lO
15
. ...,..>':,_-.~..«....'_ _\-.f..-'..~;---..f.. .Zr-.-.fi ~..,~..f_.~-- . -. ._..-..~- -..--.- ~, f _ ..,.- . ._ i. _.. o /. . __ , .
ÉSÛ7 529
23
subtraherare 161 och mellanlagras i ett register 161. Värdet i registret 161 kommer då
att anta värdena O+16+32+64; O-16i-32+64i; 0-16+32-64 respektive 0+16i-32-64i.
Det aktuella värdet i register 161 multipliceras sedan i en komplex multiplikator 125
med en viktskoefficient som hämtas ur ett viktskoefficientsminne 124. Denna
viktskoefficient är olika för de olika beräkningarna.
De resulterande utgångsvärdena kan sedan skrivas ett i taget via avslutande
mellanlagringsregister 162, 163, 164 och 165, samt en avslutande multiplexor 166.
Beräkningsenheter för radix-2 och radix-4 DlT kan givetvis fås på liknande vis, men
med multipliceringen med viktskoefficienter före addering och subtrahering. FFT-
algoritmer med högre radix-tal kan också implementeras på liknande vis.
Andra alternativ skulle t ex kunna bygga på att fler än två minnen används. Då kan den
komplexa multiplikatorn komma att bli flaskhalsen, varför man kan tänka sig en
“dubbel” beräkningsenhet med två komplexa multiplikatorer.
«...,.
När det i det ovanstående pratas om FFT, inser fackmannen lätt att samma idé kan
användas för att beräkna även invers FFT och liknande.
Claims (14)
1. Förfarande vid beräkning av FFT, lFFT eller liknande med hjälp av en beräkningsenhet (110) och minst två minnen (111, 112), vilken beräkningsenhet (110) läser ingångsvärden från minnespositioner i minnena (111, 112), utför i minst ett beräkningssteg en grupp av beräkningar som kräver minst två ingångsvärden och resulterande motsvarande skriver från beräkningarna utgångsvärden till minnespositioner i minnena (111, 112), k ä n n e t e c k n at av att det är möjligt att ha minst två grupper av beräkningar påbörjade samtidigt genom att följande steg innefattas: att ingångsvärden för beräkning i olika beräkningsgrupper läses in till beräkningsenheten (110) och mellanlagras i minst ett första mellanlagringsorgan (121, 141, 142, 143, 144, 145, 146, 147, 148); att när alla ingångsvärden nödvändiga för en nuvarande beräkningsgrupp har lästs in till beräkningsenheten och beräkningarna i en föregående beräkningsgrupp har avslutat minst ett första beräkningssteg, så påbörjas beräkningarna i den nuvarande beräkningsgruppen med det första beräkningssteget; att utgångsvärdena från den nuvarande beräkningsgruppen mellanlagras i minst ett mellanlagringsorgan (126, 162, 163, 164, 165) tills utgångsvärdena från den föregående beräkningsgruppen har skrivits; och att utgångsvärdena från en beräkningsgrupp skrivs tillbaka till samma minnespositioner som ingångsvärdena lästes ifrån, varefter utgångsvärdena kan fungera som nya ingångsvärden.
2. Förfarande vid beräkning av FFT, lFFT eller liknande med hjälp av en beräkningsenhet (110) och minst två minnen (111, 112), vilken beräkningsenhet (110) läser ingångsvärden från minnespositioner i minnena (111, 112), utför i minst ett beräkningssteg en grupp av beräkningar som kräver minst två ingångsvärden och resulterande utgångsvärden till motsvarande skriver från beräkningarna minnespositioner i minnena (111, 112), k ä n n e t e c k n at av att det är möjligt att ha 10 15 20 25 25 minst två grupper av beräkningar påbörjade samtidigt genom att följande steg innefattas: att beräkningsenheten anslutes till minst en minnesposition i ett första minne (111) och till minst en minnesposition i det första (111) eller i ett andra (112) minne för läsning av ingångsvärden, att inlästa ingångsvärden mellanlagras i minst ett första mellanlagringsorgan (121, 141, 142, 143, 144, 145, 146, 147, 148); att när alla ingångsvärden nödvändiga för en nuvarande beräkningsgrupp har lästs in till beräkningsenheten (110) och beräkningarna i en föregående beräkningsgrupp har avslutat minst ett första beräkningssteg, så påbörjas beräkningarna i den nuvarande beräkningsgruppen med det första beräkningssteget; att utgångsvärdena från den nuvarande beräkningsgruppen mellanlagras i minst ett mellanlagringsorgan (126, 162, 163, 164, 165) tills utgångsvärdena från den föregående beräkningsgruppen har skrivits; att beräkningsenheten (110) anslutes till ingångsvärdena för den nuvarande beräkningsgruppen lästes ifrån; och samma minnespositioner som att utgångsvärdena från den nuvarande beräkningsgruppen skrivs till dessa samma minnespositioner, varefter utgångsvärdena kan fungera som nya ingångsvärden.
3. Förfarande enligt något av kraven 1-2, kännetecknat av att beräkningsenheten (110) samtidigt skriver utgångsvärden till minnespositioner i minst två olika minnen (111, 112) eller samtidigt läser ingångsvärden från minnespositioner i minst två olika minnen (111, 112).
4. Förfarande enligt av att något av kraven 1-2, kän neteck n at beräkningsenheten (110) skriver minst ett utgångsvärde till minst en minnesposition i minst ett minne (111), samtidigt som den läser minst ett ingångsvärde ifrån minst en minnesposition i minst ett minne (112). 10 15 20 25 (fl CJ “<1 U'| l\fl xO 26
5. Beräkningsanordning vid beräkning av FFT, lFFT eller liknande, innefattande minst två minnen (111, 112), samt en beräkningsenhet (110) som är anordnad att läsa ingångsvärden från minnespositioner i minnena (111, 112), utföra i minst ett beräkningssteg en grupp av beräkningar med ingångsvärdena och skriva från beräkningarna resulterande utgångsvärden till motsvarande minnespositioner i minnena (111, 112), k ä n n e t e c k n a d av att beräkningsenheten (110) dessutom innefattar minst ett första mellanlagringsorgan (121, 141, 142, 143, 144, 145, 146, 147, 148) och ett andra mellanlagringsorgan (126, 162, 163, 164, 165), att beräkningsenheten är anordnad att mellanlagra inlästa ingångsvärden i det första 142, 143, 144, 145, 146, 147, 148) tills alla ingångsvärden nödvändiga för en nuvarande beräkningsgrupp har lästs in till mellanlagringsorganet (121, 141, beräkningsenheten (110) och beräkningarna i en föregående beräkningsgrupp har avslutat minst ett första beräkningssteg, varvid beräkningarna i den nuvarande beräkningsgruppen påbörjas med det första beräkningssteget, g.. att beräkningsenheten (110) är anordnad att mellanlagra beräknade utgångsvärden från den nuvarande beräkningsgruppen i det andra mellanlagringsorganet (126, 162, 163, 164, 165) tills utgångsvärdena från den föregående beräkningsgruppen har skrivits, och att beräkningsenheten (110) dessutom är anordnad att skriva tillbaka utgångsvärdena från en beräkningsgrupp till samma minnespositioner som ingångsvärdena lästes ifrån, varefter utgångsvärdena kan fungera som nya ingångsvärden.
6. Beräkningsanordning vid beräkning av FFT, lFFT eller liknande, innefattande minst två minnen (111, 112), samt en beräkningsenhet (110) som 'ar anordnad att läsa ingångsvärden från minnespositioner i minnena (111, 112), utföra i minst ett beräkningssteg en grupp av beräkningar med ingångsvärdena och skriva från beräkningarna resulterande utgångsvärden till motsvarande minnespositioner i minnena (111, 112), k ä n n e t e c k n a d av att beräkningsenheten (110) dessutom innefattar minst ett första mellanlagringsorgan (121, 141, 142, 143, 144, 145, 146, 147, 148) och ett andra mellanlagringsorgan (126, 162, 163, 164, 165), 10 15 20 25 567 529 27 att beräkningsenheten (110) är anordnad att anslutas till minst en minnesposition i ett första minne (111) och till minst en minnesposition i det första (111) eller i ett andra (112) minne för läsning av ingångsvärden, att beräkningsenheten (110) är anordnad att mellanlagra inlästa ingångsvärden i det första mellanlagringsorganet (121, 141, 142, 143, 144, 145, 146, 147, 148) tills alla ingångsvärden nödvändiga för en nuvarande beräkningsgrupp har lästs in till beräkningsenheten (110) och beräkningarna i en föregående beräkningsgrupp har avslutat minst ett första beräkningssteg, varvid beräkningama i den nuvarande beräkningsgruppen påbörjas med det första beräkningssteget, att beräkningsenheten (110) är anordnad att mellanlagra beräknade utgångsvärden från den nuvarande beräkningsgruppen i det andra mellanlagringsorganet (126, 162, 163, 164, 165) tills utgångsvärdena från den föregående beräkningsgruppen har skrivits, att beräkningsenheten (110) är anordnad att anslutas till samma minnesšositioner som ingångsvärdena för den nuvarande beräkningsgruppen lästes ifrån; och att beräkningsenheten (110) är anordnad att skriva tillbaka utgångsvärdena från en beräkningsgrupp till dessa samma minnespositioner som ingångsvärdena lästes ifrån, varefter utgångsvärdena kan fungera som nya ingångsvärden.
7. Beräkningsanordning enligt något av kraven 5-6, k ä n n e t e c k n a d av att beräkningsanordningen innefattar minst två läsbussar (113a, 113b) och minst två skrivbussar (114a, 114b) mellan beräkningsenheten (110) och minnena (111, 112), och att beräkningsenheten (110) är anordnad att skriva utgångsvärden till respektive läsa ingångsvärden från minnespositioner i minst två minnen (111, 112) samtidigt.
8. Beräkningsanordning enligt något av kraven 5-6, k ä n n ete c k n a d av att beräkningsanordningen innefattar minst en läsbuss och minst en skrivbuss mellan beräkningsenheten (110) och minnena (111, 112), och att beräkningsenheten (110) är anordnad att skriva minst ett utgångsvärde till minst en minnesposition i minst ett 10 15 20 L". C "i \'l (Ii lw \O 28 minne (111), samtidigt som den läser minst ett ingångsvärde från minst en minnesposition i minst ett annat minne (112).
9. Beräkningsanordning enligt något av kraven 5-8, kännetecknad av att beräkningsenheten (110) dessutom innefattar en subtraherare (122), en adderare (123), en komplex multiplikator (125) och ett viktskoefñcientsminne (124).
10. Beräkningsanordning enligt något av kraven 5-8 kännetecknad av att beräkningsenheten (110) dessutom innefattar fyra summeringsenheter (131), en multiplexor (132), en komplex multiplikator (125) och ett viktskoefficientsminne (124).
11. Beräkningsanordning enligt krav 10, summeringsenhet (131) innefattar en adderare (134), ett register (135), samt ett medel kännetecknad av att en (133) för att multiplicera ett inkommande värde med 1, -1, i, eller -i.
12. Beräkningsanordning enligt något av kraven 5-8, k ä n n ete ck n a d av att beräkningsenheten dessutom innefattar minst två enkla multiplikatorer (149, 150), minst fyra multiplexorer (151, 152, 158, 159), två adderare-subtraherare (153, 160), en komplex multiplikator (125) och ett viktskoefficientsminne (124).
13. Beräkningsanordning enligt något av kraven 5-12, kä n neteckn ad av att mellanlagringsorganen (121, 141, 142, 143, 144, 145, 146, 147, 148, 126, 162, 163, 164, 165) är register.
14. Beräkningsanordning enligt något av kraven 5-13, k ä n n e t e c k n a d av att varje minne (111, 112) innefattar väsentligen lika många värden.
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9603862A SE507529C2 (sv) | 1996-10-21 | 1996-10-21 | Anordning och förfarande vid beräkning av FFT |
US09/284,752 US6356926B1 (en) | 1996-10-21 | 1997-09-29 | Device and method for calculating FFT |
PCT/SE1997/001637 WO1998018083A1 (en) | 1996-10-21 | 1997-09-29 | A device and method for calculating fft |
DE69737699T DE69737699T2 (de) | 1996-10-21 | 1997-09-29 | Gerät und verfahren zur fft-berechnung |
AU47304/97A AU4730497A (en) | 1996-10-21 | 1997-09-29 | A device and method for calculating fft |
EP97909781A EP1008060B1 (en) | 1996-10-21 | 1997-09-29 | A device and method for calculating fft |
CA002269464A CA2269464A1 (en) | 1996-10-21 | 1997-09-29 | A device and method for calculating fft |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9603862A SE507529C2 (sv) | 1996-10-21 | 1996-10-21 | Anordning och förfarande vid beräkning av FFT |
Publications (3)
Publication Number | Publication Date |
---|---|
SE9603862D0 SE9603862D0 (sv) | 1996-10-21 |
SE9603862L SE9603862L (sv) | 1998-04-22 |
SE507529C2 true SE507529C2 (sv) | 1998-06-15 |
Family
ID=20404335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE9603862A SE507529C2 (sv) | 1996-10-21 | 1996-10-21 | Anordning och förfarande vid beräkning av FFT |
Country Status (7)
Country | Link |
---|---|
US (1) | US6356926B1 (sv) |
EP (1) | EP1008060B1 (sv) |
AU (1) | AU4730497A (sv) |
CA (1) | CA2269464A1 (sv) |
DE (1) | DE69737699T2 (sv) |
SE (1) | SE507529C2 (sv) |
WO (1) | WO1998018083A1 (sv) |
Families Citing this family (19)
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 |
US6760741B1 (en) * | 2000-06-05 | 2004-07-06 | Corage Ltd. | FFT pointer mechanism for FFT memory management |
EP1162547A3 (en) * | 2000-06-05 | 2003-09-03 | DSP Group Ltd. | In-Place Memory Management for FFT |
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)
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 | 富士通株式会社 | 高速フーリエ変換を行うメモリ分散型並列計算機およびその方法 |
-
1996
- 1996-10-21 SE SE9603862A patent/SE507529C2/sv not_active IP Right Cessation
-
1997
- 1997-09-29 CA CA002269464A patent/CA2269464A1/en not_active Abandoned
- 1997-09-29 WO PCT/SE1997/001637 patent/WO1998018083A1/en active IP Right Grant
- 1997-09-29 US US09/284,752 patent/US6356926B1/en not_active Expired - Lifetime
- 1997-09-29 DE DE69737699T patent/DE69737699T2/de not_active Expired - Lifetime
- 1997-09-29 EP EP97909781A patent/EP1008060B1/en not_active Expired - Lifetime
- 1997-09-29 AU AU47304/97A patent/AU4730497A/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CA2269464A1 (en) | 1998-04-30 |
EP1008060A1 (en) | 2000-06-14 |
EP1008060B1 (en) | 2007-05-02 |
WO1998018083A1 (en) | 1998-04-30 |
SE9603862L (sv) | 1998-04-22 |
AU4730497A (en) | 1998-05-15 |
US6356926B1 (en) | 2002-03-12 |
DE69737699D1 (de) | 2007-06-14 |
DE69737699T2 (de) | 2008-01-10 |
SE9603862D0 (sv) | 1996-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
SE507529C2 (sv) | Anordning och förfarande vid beräkning av FFT | |
US6035313A (en) | Memory address generator for an FFT | |
Chu et al. | Inside the FFT black box: serial and parallel fast Fourier transform algorithms | |
JP3749022B2 (ja) | 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム | |
CN101836202B (zh) | 快速傅立叶变换/反快速傅立叶变换运算核 | |
KR20060096511A (ko) | Fft 아키텍쳐 및 방법 | |
US4602350A (en) | Data reordering memory for use in prime factor transform | |
US7415584B2 (en) | Interleaving input sequences to memory | |
EP1410239A2 (en) | Butterfly-processing element for efficient fast fourier transform method and apparatus | |
JP4796339B2 (ja) | メモリの読み出し及び書き込み方法 | |
US4604721A (en) | Computer and method for high speed prime factor transform | |
US20060200513A1 (en) | Fast Fourier transform processor and method capable of reducing size of memories | |
US4563750A (en) | Fast Fourier transform apparatus with data timing schedule decoupling | |
KR20020089560A (ko) | 메모리 어드레스 발생 장치 | |
US6658441B1 (en) | Apparatus and method for recursive parallel and pipelined fast fourier transform | |
US4093994A (en) | Fast discrete transform generator and digital filter using same | |
EP1076296A2 (en) | Data storage for fast fourier transforms | |
US4587626A (en) | Sum and difference conjugate discrete Fourier transform | |
CA2372562A1 (en) | Traced fast fourier transform apparatus and method | |
CA2263626A1 (en) | Pipelined fast fourier transform processor | |
JP2002504250A (ja) | データ要素の系列を変換する装置 | |
Chan et al. | Multiplier-less real-valued FFT-like transformation (ML-RFFT) and related real-valued transformations | |
JP2002507305A (ja) | データ要素の系列を変換する装置 | |
Aikens et al. | A parallel pipelined dsp processor core | |
Nussbaumer | Inverse polynomial transform algorithms for DFTs and convolutions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NUG | Patent has lapsed |