Istitutio för data- och ltroti 999--3 Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Vi har här tidigar i digital sigalbhadlig studrat tidsdisrt fourirtrasform, DFT och mölightra att aväda Fast Fourir Trasform (FFT) för att få bräigsfftivar och därmd sabbar bräig. Vi sall här studra hur FFT a iplimtras i programod m vi ildr md rptitio av DFT och FFT samt dras ivrsr IDFT och IFFT. Disrt fourirtrasform (DFT) Disrt fourirtrasform aväds för att bstämma frvssptrat hos samplad sigal, dvs studra samplad tidsfutio i frvsplat. Sigal måst aturligtvis uppfylla f s sampligsvillort f sigal,ma <. D disrta fourirtrasform gs av [] [] [] där [] är d samplad sigal mda är atalt sampl som igår i bräig. [] är ompla tal och gr sptralompotra som blopp och fasvil (llr raloch imagiärdl) vid styc disrta frvsr i itrvallt f giva av f f s,,,! s CHALMERS LIDHOLME Sida Istitutio för data- och ltroti Sv Kutsso Bo 8873 7 Götborg Bsösdrss: Hörslgåg Tlfo: 3-77 57 7 Fa: 3-77 57 3 E-mail: sv@chl.chalmrs.s b: www.chl.chalmrs.s/ sv
Upplösig Att bräig sr vid styc disrta frvsr gör aturligtvis att bräig har bgräsad upplösig. Upplösig, avstådt mlla frvsompotra blir f s dvs upplösig förbättras om vi avädr flr sampl vid bräig. Samtidigt öar aturligtvis atalt bräigar vilt gör d totala bräig lågsammar. Symmtri Ma a visa att för rlla sigalr, vilt är vad vi ommr att hålla oss till, gällr arg [ ] [] ( [ ] ) arg( [] ) Vi sägr att bloppt har spglsymmtri mda fasvil har atisymmtri, samma rsomag gällr om vi välr att bsriva frvssptrat i itrvallt f s f f s < i ställ för i itrvallt f < f s. Symmtri gör att vi a få all iformatio om sigal gom att bara bräa frvsompotra i itrvallt f s. Ivrs DFT (IDFT) D ivrsa disrta fourirtrasform (IDFT), dvs åtrgåg frå frvs- till tidsplat, gs av [] [] [] Om vi tittar på DFT- och IDFT-bräigara så sr vi att d är myct lia varadra. Dt da som silr är trm och tct hos pot. Dtta gör att samma bräigsalgoritm a avädas vid båda bräigara om vi bara iför rsptiv samt pots tc som ostatr i algoritm. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida
Vad gr DFT: och IDFT: Vad vi gör vid vår DFT-bräig är att vi tar tt bgräsat atal sampl, styc, och låtsas att dtta bsrivr priod av sigal mda sigal gtlig är apriodis. DFT-sptrat är alltså gtlig sptrat för sigal md priodtid T. Rsultatt av dtta blir att d sigal vi åtrfår frå d ivrsa trasform, IDFT:, bsrivr priodis variat av vår ursprugliga sigal. Vi får i tidsplat priod av sigal gom att bräa [] för,,,- och låtr vi sda väa yttrligar så ommr vi i på y priod hos sigal, dvs upprpig av sigals första priod. Sptrats rlvas Förutsättig för att vi sall få tt hlt orrt sptra är att våra sigalr bara ihållr f s d disrta sptralompotra f vilt är tt spcialfall som är yttrst sällsyt. I ställt ommr vi ormalt att ha tt otiurligt sptra som har sigalihåll äv mlla dssa sptralompotr, dvs alla frvsr i itrvallt a igå. Rsultatt blir övrhörig mlla sptralompotra så att dssa mllaliggad frvsr ommr att bidra till ärliggad sptralompotr, m it bara till d två ompotr som liggr på var sida om sigalfrvs uta till tt myct brdar fält av ompotr. Orsa till dtta är att vi a btrata DFT-bräig som ba av styc paralllla badpassfiltr md sia mittfrvsr vid rsptiv frvsompot f. Filtr bsrivs av -urvor, sicurvor, där motsvarar avstådt si() mlla två sptralompotr. Kurva aratrisras av raftig si()/-futio huvudloob vid atull frvsompot och tt atal sidoloobr av av-.9 tagad höd. ollgomgågara.8 huvudloob liggr vid övriga frvsompotr. Vi a dssutom s att huvudloo-.7.6 3 db dämpig b har badbrdd mda övriga loobr har badbrdd..5. Rsultatt blir alltså att var urva har sidoloobr.3 si huvudloob vid atull frvsompot och får ollgomgågar. vid d frvsr där övriga sptralompotr liggr, dvs har vi bara. -.5.5 dssa disrta frvsr så blir dt -fs/ < f < fs/ ig övrhörig uta vid var frvsompot har vi utsläcig av övriga frvsomotr. Har vi därmot som i ormalfallt tt otiurligt sptra så ommr vi att få övrhörig till tt atal frvsompotr i och md att d mllaliggad frvsra hamar i huvud- llr sidoloobr hos tt flrtal filtr. Eftrsom sidoloobra ärmast huvudloob är störst blir aturligtvis övrhörig störst vid ärliggad sidofrvsr. si()/ f s Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 3
Empl Om vi samplar sigal md sampligsfrvs f s Hz och gör bräig övr sampl så blir upplösig f s Hz. E sigal md frvs 33 Hz gr då störst utslag vid d ärmast frvsompot ([3]) och s- da avtagad utslag u lägr ifrå frvsompot sigal liggr. D fölad bidrag, i avtagad storl, blir alltså i ompotra [], [] och [5]. Om vi sull ha fått bloppt tt om sigal had lgat prcis vid frvsompot så ommr d rlativa storl hos d uppräad ompotra att bli si [] (,3 ) 3,86 [],3 si [] (,3 ), [],3 (,7 ) si,37,7 (,7 ) si 5,5,7 Vad ibär sampligstid? DFT a bsrivas som tt mllatig mlla fourirsri och fourirtrasform, där fourirsri förutsättr priodis sigal, där vi ormalt räar övr priod hos sigal mda fourirtrasform förutsättr apriodis sigal där vi tar md alla sampl frå si()/.9.8.7.6.5..3.. si()/-futio -.5.5 -fs/ < f < fs/ till. Att vi vid DFT tar tt bgräsat atal sampl, styc, och låtsas att dtta bsrivr priod av sigal mda sigal gtlig är apriodis gör att vår låtsad priod oftast startar och slutar abrupt, dvs tt plötsligt amplitudhopp hos sigal, vilt gör att d priodisa motsvaright får abrupta övrgågar frå priod till ästa och dssa plötsliga övrgågar gr upphov till högfrvsompotr i sigal som gr sig till äa i d bräad DFT: som viigsompotr. Föstrfutior Md hälp av föstrfutior a vi dämpa sidoloobra och bgräsa dssa viigsompotr. Dt fis tt stort atal föstrfutior, t Hammig-, Haig- och Blacmaföstr. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida
w M [],5,5cos M M Haigföstr w w Hammigföstr M [],5,6cos M M M M [],,5cos,8cos M M Haigföstr, Hammigföstr,.8.8.6.6.... 6 8 6 8 6 8 6 8 Blacmaföstr, Sptra för föstrfutior,.8 - Rtagulärt Hammig Haig.6. w() [db] - -6. -8 6 8 6 8 Blacma -...3..5 < f < Föstrfutiora har alla dt gmsamt att d ftrsträvar att d samplad sigals start och slut sall s mut (start- och slutförlopp) så att vi it får abrupt övrgåg då vi går frå priod till ästa hos vår låtsad priodisa sigal. Alla föstrfutior får då som rsultat att vi dämpar dt brus som viigsompotra gr upphov till m samtidigt får vi tyvärr sämr upplösig i vår bräig gom att huvudloob u blir brdar ä och vi får it ollgomgågar, och därmd utsläcig, vid ärliggad sptralompotr. Dt rtagulära föstrt (igt föstr) gr alltså d bästa iformatio om huvudloob. Figur visar sptrat för tt atal föstrfutior där tt rtagulärt föstr är dt samma som igt föstr alls, dvs att sampl it vitas. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 5
Dt går it att grllt säga att ågo föstrfutio är övrlägs d adra uta dt bror på vad ma vill utläsa ur DFT: och i blad a dt vara lämpligt att göra flra aalysr md olia föstr för att utläsa olia gsapr hos sigal. Hur måga bräigar rävs? Om vi tittar på DFT-vatio så sr vi att vi bhövr göra styc bräigar för att få fram alla sptralompotr som vi har ämt ova a ma doc visa att för rlla sigalr, vilt vi ommr att hålla oss till, gällr arg [ ] [] ( [ ] ) arg( [] ) vilt gör att atalt bräigar a halvras. Dssutom liggr u frvsompotra för > ovaför f s vilt gör att d it bör vara spcillt itrssata om vi uppfyllr sampligsvillort. Sull vi it uppfylla sampligsvillort så är ädå sigalfrvsra f s övr f s vita r till itrvallt och vi får tt sptra som it är orrt. Slutsat- s blir att dt bhövs bräigar får att få fram d ösad frvsompotra. Tittar vi på var sild frvsompot så rävr da att vi summrar styc lmt och dssa är ompla, vilt ibär rlla additior. Summatioslmt byggs i si tur upp av multipliatior mlla tt rllt och tt omplt tal, vilt ibär rlla multipliatior. Totalt har vi alltså bräigar som bstår av additior och lia måga multipliatior, dvs totalt multipliatior och lia måga additior. E DFT-bräig görs ofta övr - sampl vilt btydr att vi totalt får - 8 multipliatior och ugfär lia måga additior. Vi har alltså tt stort atal bräigar som gör att bräig tar låg tid. Vi sall u övrgå till att studra mtod för att misa atalt bräigar och vi övrgår då till Fast Fourir Trasform (FFT). Fast fourirtrasform (FFT) FFT är struturrad uppställig av DFT-bräig som gör att vi slippr göra oödiga upprpigar i bräig. Dt är vitigt att omma ihåg att FFT-bräig it är ågo approimatio av DFT-bräig uta bara är förlig av sälva DFT-bräig, slutrsultatt, sptrat, blir i båda fall dt samma FFT-algoritm Vi börar md att dla upp vår DFT i två summor där d a summa hatrar d sampl som har ämt id mda d adra summa bhadlar d sampl som har udda id. Vi atar att atalt sampl,, är ämt så att d två summora blir lia stora. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 6
Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 7 [] [] [ ] [ ] [ ] ( ) [ ] [ ] ( ) [ ] [ ] [ ] [ ] [] [] B A Vi har alltså dlat upp bräig i två dlar som var och är av samma form som vår ursprugliga DFT-bräig, md d sillad att d två ya summora var och sr övr sampl. D ompla fator framför d adra summa bruar allas twiddl factor. Futiora A[] och B[] är båda priodisa md priod, dvs [ ] [ ] B B A A Vad gällr då för fator? som gr
Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 8 [ ] [ ] [ ] [ ] [ ] B A B A Vi a utyytta dssa sambad för att misa atalt bräigar. Om är dlbart md fyra så a vi gå vidar och dla r A[] och B[] i två dlsummor var, där A[] dlas i summa som hatrar sampl md,, 8 och summa som tar had om sampl för, 6, På samma sätt dlas B[] i summa som hatrar sampl för, 5, 9 och summa som hatrar sampl för 3, 7, Vi isr av ovaståd härldig att vi då får [ ] [ ] [ ] ( ) A [ ] [ ] [ ] [ ] [ ] [ ] D C och på samma sätt [ ] [ ] [ ] F E B Äv här a vi omma fram till [] [] [ ] [ ] [ ] D C A D C A och [] [] [ ] [ ] [ ] F E B F E B Vi får då totalt
Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 9 [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] 3 3 3 3 3 E D C F E D C F E D C F E D C vilt gör att vi yttrligar har dcimrat atalt opratior. Är äv dlbart md åtta så a vi fortsätta och har vi valt där är tt hltal så a vi bryta md dt hla så att var summa i slutäd bstår av två trmr. Om vi t atar att 8 så får har vi i ovaståd härldig ått till grudivå md två trmr och får då för C[] ( ) [ ] [ ] [ ] [] [ ] [] [] [] [] [] [] udda äm C vi får motsvarad rsultat för d adra irsta trmra (D[], E[] och F[]) och d gr alltså bara upphov till additio och subtratio. Våra summor ihållad multipliatior md fator har alltså rducrats till additior och subtratior mlla två sampl. Vi har doc i ställt fått multipliatio md fatorra (twiddl factor) utaför additiora och subtratiora. Dssa fatorr är ompla. I mplt md 8 har vi fatorra och. Grudbräig, additio, subtratio och multipliatio md twiddl factor, [ ] [ ] [ ] [ ] [ ] B A B A allas buttrfly och bsrivs av vidståd figur. För 8 a våra härldigar sammafattas i daståd figur. - [] [m]
[] Stg Stg Stg 3 [] [] 8-8 [] [] - [] [6] 8-8 - [3] [] 8 - [] [5] 8-8 8 - [5] [3] - 8 - [6] [7] 8 8 3 8 - - - [7] Att spara mi Om vi studrar ovaståd figur så sr vi att på var ivå (stg) i hirari avädr vi två tidigar värd för att sapa två ya bräigsrsultat och i fortsättig bhövr vi it dssa tidigar värd (bräigsrsultat) uta vi a aväda d mispositior som har aväts för att lagra d två udrliggad värda för att lagra d två ya värda på d ftrfölad ivå och dt totala atalt ödvädiga mispositior blir alltså styc. Hur måga bräigar rävs? Om vi tittar i schmat för FFT-algoritm då 8 så sr vi att vi på första ivå har fyra additior och fyra subtratior samt åtta multipliatior md vitfatorr (som a rducras till fyra multipliatior om vi multiplicrar fator två md si vitfator ia vi gör additio och subtratio). Vi sr att vi har lia måga bräigsopratior på Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida
ivå två och äv på ivå tr, dvs totalt har vi ugfär 3 8 additior/subtratior och lia måga multipliatior. Ma a visa att atalt opratior blir ugfär log() Jämför vi DFT och FFT får vi då för olia atal sampl,. Atal opratior vid Aatl opratior vid Tidsvist vid FFT DFT FFT 3 6 6, 8 6 38 896 8, 5 6 68 56,9 8 576, 8 9 3 58 86, 896 67 7 6 6 58 63,5 Vi sr att FFT gr bräigsvist rlativt DFT och vist blir störr u flr sampl som igår i bräig. Är FFT alltid sabbar ä DFT?, dt a fias fall då dt går fortar att bräa DFT ä FFT. Om vi sr på DFT-bräig så a var frvsompot räas fram för sig obrod av d adra ompotra, så är dt it vid FFT uta här är d olia bräigara sammavävda och vi måst bräa tt ompltt sptra. Rsultatt blir att är vi bara itrssrad av att bräa llr tt fåtal av dt totala atalt frvsompotr så a DFT g tt sabbar rsultat. Hur sr bräig? Vi såg tidigar att vi ud rducra grudalgoritm i FFT: till additio och subtratio mlla två sampl, dvs bräigar mlla rlla tal. Vi ommr doc it ifrå multipliatio md våra twiddl factors, som är multipliatior md ompla tal och rsultat sall sda addras ihop. Vi a rira oss att additio av ompla tal rävr att tal är agiva på rtagulär form, som ral- och imagiär dl, mda vi här har våra ompla tal giva på polär form, som blopp och fasvil. Vi måst alltså övrgå till rtagulär form cos si Tyvärr har d flsta procssorr iga spcilla rutir för bräig av sius- och cosiusfutior uta dtta får s via sriutvclig, tidsödad procss. Loo up tabl Om vi studrar ovaståd vatio så sr vi att vi it a få vila vilar som hlst uta bara vilara Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida
a a Vi ommr ocså att få vilar som är störr ä då >, m dom gr u samma rsultat som motsvarad vilar i itrvallt. För att fftivisra FFT-bräig så a vi då lagra dssa sius- och cosiusvärd i tabllr och udr bräigs gåg läsa värd frå tabllra i ställt för att gomföra d trigoomtrisa bräigara. Vi a väla att låta tabllra igå i dataprogrammt (placrad i itrt programmi), lägga tabllra i trt mi där vi har lagrat tabllra i tt EPROM llr ocså a vi låta programmt grra listora udr si iitirigsfas. Dt sar tar u lit tid m dt gör u bara att vi får väta ort stud ia FFT-bräig a påböras mda sälva FFT-bräig blir sabb. Att aväda sig av lista övr möliga värd och aväda argumtt som adrss till positior i da lista i ställt för att göra sälva bräig allas för loo up tabl. Tabllra a göras midr misrävad om vi tär lit grad på sius- och cosiusfutioras uppbyggad. Tabllra övr sius- och cosiusfutiora ihållr gtlig samma föld av värd ftrsom cos() si och dt gör att vi a aväda da (cirulär) tabll m ha olia startputr för sius- rsptiv cosiusbräig. Eftrsom siusfutio gr samma värd för vilar i alla fyra vadratra, värda är doc positiva i vadrat tt och två och gativa i vadrat tr och fyra, så a vi misa listas lägd till färddl gom itlligt programmrig. Samma rsomag, m i adra vadratr, gällr för cosiusfutio. Misbhovt har alltså rducrats frå två listor som tar upp mispositior till lista som tar upp mispositior samt lit styrlogi. Algoritmstrutur Om vi tittar i schmat så sr vi att vi på var ivå gör åtta bräigar (fyra additior och fyra subtratior samt fyra multipliatior md vitfatorr). Vi atar att vi för bräig har sortrat sampl i d ordig som visas i schmat. Dtta sr via mtod som allas bitrvrsrig som vi åtrommr till. Om vi btratar additio och subtratio av två ompotr, där d adra ompot är multiplicrad md vitfator, som grudopratio så sr vi att vi på första ivå sall göra fyra sådaa bräigar mlla ärliggad trmr. Mlla var bräig förflyttar vi oss två stg. Vi a säga att vi för var bräig har offst av tt mlla trmra mda baspar uppdatras md två ftr var grudbräig. Lägg mär till att vi här talar om sampls positio i d bitrvrsrad lista i mit och it dras id. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida
Start Stg Uppdat^stg Ir_loop/Uppdat OffstUppdat/ Yttr_loop Ir_loop*Yttr_loop Arg*pi*/ cos(arg),si(arg) BasadrssYttr_loop Tal_D(Basadrss) Tal_D(BasadrssOffst) Tal_*Tal_ D(BasadrssOffst)Tal_-Tal_ D(Basadrss)Tal_Tal_ BasadrssBasadrssUppdat Basadrss> J Yttr_loopYttr_loop Yttr_loop>Offst J StgStg Stg> Log() J Tittar vi på ästa ivå så sr vi att grudbräigara där sr mlla vartaat värd och börar vi md grudbräigara md vitfator 8 så gör vi två sådaa bräigar md mllaliggad uppdatrig av par md fyra. Därftr sr samma sa för bräigara md vitfator 8 m u börar vi md offst av tt på baspar för att sda uppdatra par md fyra. På ivå tr gör bräig mlla vart färd värd för rsptiv vitfator och ildr äv här md att göra bräigara för vitfator 8 varftr vi uppdatrar baspar md tt och ör tt ytt varv md bräig mlla vart färd värd m u md vitfator 8. Vi fortsättr md tt trd varv där vi uppdatrar baspar md tt och gör bräig mlla vart färd värd, u md vitfator 8. Till slut gör vi dt sista varvt md yttrligar tt i offst på baspar och gör bräigar mlla vart färd värd, u md vitfator 3 8. Vi a tola dt hla så att på första ivå örs ir loop (md samma vitfator) fyra gågr. På ivå två örs d ir loop två gågr (md offst två). Rut da liggr yttr loop där baspar uppdatras md tt och vitfator uppdatras md två. På d trd ivå ör vi d ir loop (md offst ) da gåg mda d yttr loop örs fyra gågr varvid baspar uppdatras md tt var varv och äv vitfator uppdatras md tt. Rut allt dtta liggr då slutlig loop som stgar oss fram mlla d tr ivåra. Som vi sr får vi som rsultat d åtta frvsompotra sortrad i rätt ordig, dvs md stigad frvs. Vidståd figur visar algoritms flödsschma. Eftrfölad odavsitt visar motsvarad programod på pricipill ivå och it i ågot vrligt programmrigssprå. Slut Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 3
Bgi For Stg To 3 Uppdat^Stg Ir_loop/Uppdat OffstUppdat/ For Yttr_loop To Offst Ir_loop*Yttr_loop Arg*pi*/ cos(arg),si(arg) For BasadrssYttr_loop To Stp Uppdat Tal_D(Basadrss) Tal_D(BasadrssOffst) Tal_*Tal_ D(BasadrssOffst)Tal_-Tal_ D(Basadrss)Tal_Tal_ t Basadrss t Yttr_loop t Stg Ed Adrss Adrss tolad som bitar Rvrsrad adrss tolad som bitar 3 6 5 5 6 3 7 7 Rvrsrad adrss Bitrvrsrig Vi såg tidigar att sampl måst sortras om för bräig för att ligga i rätt ordig då vi börar aväda ovaståd algoritm. Dtta a vi lösa md hälp av ågot som allas bitrvrsrig. Vi fortsättr md att aväda mplt 8 och övrsättr adrssra till biär od och vädr sda på ordig mlla adrssbitara (spglar bitara) och sr vad dtta ldr till för adrssr. Vi sr att om vi avädr d bitrvrsrad adrssra så ommr sampl att läsas i ösad ordig. Måga sigalprocssorr, ilusiv dom sigalprocssorr frå Aalog Dvics som vi avädr, ihållr futior för att hatra bitrvrsrig av adrssr. Ma måst då omma ihåg att vårt mpl ova är allt för förlat. I mplt avädr vi bara tr adrssldigar och dssutom aväds alla förommad adrssr md start frå adrss. I vrlight ommr bitrvrsrig av adrssra i sigalprocssor att rvrsra alla adrssldigar, i ADSP5:s fall styc, vilt gör att vi it får ösat rsultat. Vi a doc få ösat rsultat om vi it uppdatrar adrsspar (via M) md tt uta md tt aat värd som vi stra sall ta fram. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida
Två adra förutsättigar fis för orrt hatrig av adrssra vid bitrvrsrig. D a förutsättig är att atalt adrssr som sall rvrsras är, där är tt hltal och dt är u vad vi har vid FFT. D adra förutsättig är att dt atulla adrssbloct startar på adrss som är äm multipl av adrssblocts storl, dvs basadrss Dt sar gör att vi i våra sigalprocssorprogram bör aväda absolutadrss då vi allorar buffrt och it låta läar tilldla misutrymm. Vil uppdatrigsfator sall vi u ha för adrsspar. Vi fortsättr md ovaståd mpl md 8 och atar att vi som i ADSP5 har bitars adrssbuss. Vi atar dssutom för lhts sull att vårt adrssbloc startar md adrss, studra sälv vad som hädr om vi välr basadrss. Vi får då sambadt Adrss Adrss i bitar Bitrvrsrad adrss Uppdatrigsfator, M, i bitar 6 5 3 7 Uppdatrigsfator, M Vi sr att allt fugrar om vi hållr oss till ova giva rglr och avädr uppdatrigsfator. Had vi valt 6 adrssr så had vi i ställt fått uppdatrigsfator. ågra flr sådaa tstr ldr till slutsats att atalt adrssldigar - Uppdatrigsfator M Där. Vi har alltså i vårt mpl M 3 Eftsom vår sigalprocssorfamil rävr att storl på aväd M-fator är midr på d atulla buffrtlägdom om vi sall ua aväda cirulär buffrt så isr vi att d buffrt vi addrssrar via bitrvrsrig måst vara ra. Dt är vitigt att vara uppmärsam på dtta ftrsom assmblator och läar tyvärr it fågar upp dt här flt, simulator gr därmot flmddlad. Altrativ FFT-bräig Ovaståd bräig då vi stuvar om våra sampl för FFT-bräig allas FFT with dcimatio i tim, dvs dt är tidssampl som stuvas om. Vi a ocså härlda aa Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 5
variat av FFT där våra sampl liggr i urspruglig ordig vid bräig. Bräig får fölad flödsschma [] Stg Stg Stg 3 [] [] - 8 [] [] - 8 [] [3] - 8-8 [6] [] - 8 [] [5] - 8-8 [5] [6] - 8-8 [3] [7] - 3 8 8 - - 8 [7] och vi sr att då ommr d rsultrad sptralompotra i fl ordig så att vi får stuva om dssa ftr bräig. Mtod allas FFT with dcimatio i frqucy. Dt fis ocså adra bräigsalgoritmr som gr altrativa variatr av FFT-bräigar, vi sall doc it gå i på dssa här. Vissa av dssa algoritmr dlar it r till grudivå två ompotr uta staar vid ivå fyra sampl pr bräig. Dssa mtodr är i vissa fall fftivar, d allas radi--mtodr. D mtodr som går r till två ompotr allas radi--mtodr. Filtrrig via FFT Vid filtrrig md hälp av FIR-filtr md måga trmr så a filtrbräigara göras fftivar, läs sabbar, gom att aväda FFT-mtod i ställt för valig filtrrig via faltig. Vi bräar då FFT av isigal varftr vi multiplicrar d olia frvsompo- Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 6
tra md motsvarad frvsompotr hos d ösad filtrurva. Slutlig åtrför vi dt filtrrad sptrat till tidsplat via IFFT-bräig. I dtta sammahag a vi utytta omstuvig av sampl rsptiv frvsompotr till vår fördl. Här bräar vi FFT för d sigal som vi ösar filtrra och äv FFT för impulssvart till d ösad filtrurva. Avädr vi då FFT with dcimatio i frqucy för dssa två bräigar så ommr d rsultrad frvsompotra i fl ordig. Frvsompotra liggr doc i samma ordig i d två FFT-földra och dt är dssa som sall multiplicras ihop, ompot för ompot och dtta a vi då göra uta ågo omstuvig. Avädr vi sda IFFT-ruti som tar idata i omsortrad ordig så har våra FFT-bräigar givit da omstuvig och vi får ut vår utsigal md ompotra i rätt ordig. isigal i tidsplat dcimatio i frqucy FFT bitrvrsrad frvsompotr för isigal bitrvrsrad frvsompotr för d filtrrad isigal dcimatio i frqucy IFFT filtrrad utsigal i tidsplat filtrdata bitrvrsrad frvsompotr för filtrdata Filtrdata bhövr it ags som tt impulssvar uta a äv gs dirt som sptralompotr. Då får vi aturligtvis s till att dssa sptralompotr är omstuvad i bitrvrsrad ordig. Dtta bhövr doc bara s da gåg ia vi börar filtrra så dt drar it r hastight hos sälva filtrrigsalgoritm. Adra mtodr för bräig av frvssptra Discrt Cosi Trasform Disrt cosiustrasform är variat på DFT där vi bara tar md trasforms raldlar, dvs [] R{ [] } [] cos,,, c! Trasform är valig vid omprimrig av lud och bild ftrsom d rävr färr bräigar, som dssutom är rlla, m gr tillräclig iformatio för att avgöra vad som är övrflödig iformatio och därmd a tas bort vid omprimrig. alsh trasform Vid alsh-trasform är trasform it basrad på sius- och cosiustrmr som vid fourirtrasform uta vi har här pulsformad vågformr (fyratvågor). Dssa är sabbar att bräa ä DFT och FFT ftrsom d bara ibär multipliatio md plus llr mius tt Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 7
och passar dssutom bättr för att bsriva vågformr som ihållr disotiuittr. Dom är därmot midr lämpad för att bsriva otiurliga vågformr. Prcis som DFT är basrad på uppsättig harmoist rlatrad sius- och cosiusvågformr så är alsh-trasform basrad på tt atal harmoist rlatrad pulsformr. AL(,t) - AL(,t) - AL(,t) - AL(3,t) - AL(,t) - AL(5,t) - AL(6,t) - AL(7,t) - Eftrsom frvs it är ordtligt dfiirad för pulsformr så talar ma här om squcy (ämför glsas frqucy frvs), där squcy är dfiirad som halva atalt ollgomgågar pr tidsht. Figur visar alshfutiora för ordig 8. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 8
alsh-futio vid tid t och av squcy ags som AL(,t). Figur visar lia måga udda och äma futior prcis som motsvarad sius- och cosiusompotr vid fouriraalys. Jäma alsh-futior AL(,) ags som CAL(,t) mda udda alsh-futior AL(,) ags som SAL(,t). Alla vågformr a bsrivas som f [ i ] () t a AL(, t) a SAL( i, t) b CAL( t), i För alla alsh-futior gällr AL( m, t) AL(, t) i då m då m dvs futiora är ortogoala. Hadamard trasform Hadamard- llr alsh-hadamard-trasform är i pricip samma sa som alsh-trasform m futiora är liggr i aa ordig. avlttrasform För alla d trasformr som vi har stt på gällr att vi samplar tidsigal udr tt itrvall T och bräar sptrat utifrå dtta. Ihållr vår sigal u varirad sigal där vissa frvsompotr bara förommr udr dl av sampligstid T så a vi it upptäca dtta på ågot lt sätt, vid DFT-bräig t fis doc da iformatio i fassptrat, m d är it lätt att tola fram. Vill vi it bara vta vila frvsompotr som förommr i sigal uta dssutom är udr sampligstid d dyr upp så är d bsriva mtodra alltså it lämpliga. avltstrasfom är mtod där vi a få samtidig iformatio om vad som hädr i tids- och frvsplat gom att vi dlar upp sigal i tt atal sptralbad ( form av otavbad) och studrar dssa frvsbad vart och tt för sig i tidsplat. Vi åtrommr md bsrivig av da mtod. Digital sigalbhadlig f Implmtrig av FFT- och IFFT-rutir Sida 9