SE507529C2 - Anordning och förfarande vid beräkning av FFT - Google Patents

Anordning och förfarande vid beräkning av FFT

Info

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
Application number
SE9603862A
Other languages
English (en)
Other versions
SE9603862L (sv
SE9603862D0 (sv
Inventor
Tore Andre
Original Assignee
Ericsson Telefon Ab L M
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 Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Priority to SE9603862A priority Critical patent/SE507529C2/sv
Publication of SE9603862D0 publication Critical patent/SE9603862D0/sv
Priority to US09/284,752 priority patent/US6356926B1/en
Priority to PCT/SE1997/001637 priority patent/WO1998018083A1/en
Priority to DE69737699T priority patent/DE69737699T2/de
Priority to AU47304/97A priority patent/AU4730497A/en
Priority to EP97909781A priority patent/EP1008060B1/en
Priority to CA002269464A priority patent/CA2269464A1/en
Publication of SE9603862L publication Critical patent/SE9603862L/sv
Publication of SE507529C2 publication Critical patent/SE507529C2/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

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)

10 15 20 25 (A l CJ \~2l (fi, l\J \O 24 PATENTKRAV
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.
SE9603862A 1996-10-21 1996-10-21 Anordning och förfarande vid beräkning av FFT SE507529C2 (sv)

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)

* 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
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)

* 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
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