FFT na uk?adzie FPGA

Próbuję zrozumieć istotę działania transformaty Fouriera w oparciu o stronę

formatting link
mam kilka wątpliwości. Proszę szanownych kolegów o wyjaśnienie.

  1. Zakładamy, że każdą funkcję sygnału s(t) można przedstawić jako nieskończoną sumę funkcji sinus o różnych(!) częstotliwościach, określonych fazach i amplitudach? (Przykładowo funkcję powstałą jako suma funkcji sinus o takich samych częstotliwościach, ale różnych amplitudach i fazach także można rozłożyć w powyższy sposób.)

  1. W transformacie Fouriera bierzemy tylko N z tego nieskończonego zbioru funkcji sinus o różnych częstotliwościach, więc suma wybranych N funkcji nie jest dokładnie funkcją s(t), ale przybliża ją.

  2. Jak mam czytać drugi wykres na stronie
    formatting link
    , skoro transformata Fouriera zwraca zbiór N liczb zespolonych (moduł i przesunięcie fazowe)? Czy oś pionowa oznacza moduł (amplitudę) dla funkcji sinus o częstotliwościach na osi poziomej?

  1. Dostałem do zaimplementowania algorytm FFT na płytce Altery z układem FPGA. Rozumiem, że mam wprowadzać i wyprowadzać dane np. przez złącze USB obecne na płytce.

Reply to
pbartosz
Loading thread data ...

To zależy od przebiegu. Jeśli przebieg jest okresowy, tych różnych częstotliwości będzie skończona liczba. Dla przebiegów nieokresowych i ciągłych (jak np. jeden impuls), widmo częstotliwościowe będzie ciągłe i nieskończone.

Suma przebiegów sinusoidalnych o tej samej częstotliwości a różnych fazach i amplitudach będzie w dalszym ciągu przebiegiem sinusoidalnym o częstotliwości takiej samej jak przebiegi składowe.

Tak się robi zakładając okresową i dyskretną postać przetwarzanego przebiegu. Okresowość w dziedzinie czasu po transformacie Fouriera przekłada się na okresowość w dziedzinie częstotliwości, dyskretyzacja w dziedzinie czasu przekłada się na dyskretyzacje w dziedzinie częstotliwości. Jeśli transformacie poddamy wycinek przebiegu nieokresowego, którego nie da się gładko "zapętlić" w dziedzinie czasu, dyskretny i skończony fourier nie da dokładnego odwzorowania. Po policzeniu DFT z takiego przebiegu mogą się pojawić w widmie "prążki" na częstotliwościach, których nie ma w oryginalnym przebiegu. Po policzeniu IDFT z takiego DFT otrzymamy przebieg, który będzie w pewnym stopniu aproksymować przebieg wejściowy, ale będzie miał właściwości okresowe. Aby się pozbyć takich niespodzianek nieokresowy przebieg wejściowy mnoży się przez funkcje "okna", wygładzające miejsce zapętlenia. Najprostsza taką funkcją jest funkcja prostokątna, która jest niczym innym jak pobraniem "wycinka" ograniczonego brzegami okna i dodaniem założenia o okresowości tego, co się w nim mieści. Takich funkcji jest więcej, żadna nie pozwala na dokładne odwzorowanie nieokresowego przebiegu wejściowego, ale każda ma określone właściwości, które są użyteczne w pewnych zastosowaniach.

Zamiast rysunków widzę czarne kwadraty :/

Zapytaj wykładowcy. Ale tak pewnie będzie najwygodniej.

pzdr. j.

Reply to
Jacek Radzikowski

Sa trzy transformaty Fouriera:

1) calkowa - gdzie prawie dowolna funkcje s(t) mozemy przedstawic jako calke sin/cos o roznych czestotliwosciach. Czyli nie tylko nieskonczone czestotliwosci, ale i nieskonczenie gesto. A i to z zastrzezeniami co do zbieznosci.

2) "zwykla", gdzie prawie dowolna funkcje OKRESOWA s(t) mozemy przedstawic jako SUME sinusoid o roznych czestotliwosciach, bedacych wielokrotnosciami okresu. Suma w ogolnosci nieskonczona.

moze byc dokladna, o ile funkcja s(t) spelnia dodatkowe warunki .. tzn nie zawiera wyzszych skladowych czestotliwosciowych :-)

Jak jeszcze do obliczen uzyjemy probek funkcji s(t), to to jest odmiana trzecia - Dyskretna transformata Fouriera (DFT).

A FFT to szybki algorytm obliczania DFT.

Nie widze wykresu, ale pewnie tak.

Zamiast sinusoid o roznej fazie uzywa sie czesto sinusa plus cosinusa, z ktorych mozna zlozyc dowolnie przesunieta sinusoide. A zamiast sin i cos uzywa sie e^(i*n*w*t) - ktory jest rowny cos(n*w*t)+i*sin(n*w*t). Dobierajac odpowiednio amplitudy e^(i*n*w*t) i e^(i*-n*w*t) mozna otrzymac tez rzeczywiste sinusoidy.

Co masz rozumiec to musisz uzgodnic z zadajacym :-)

J.

Reply to
J.F.

Dziękuję za wyczerpujące odpowiedzi. Mam jeszcze problem ze zrozumieniem istoty szybkości algorytmu FFT. Moje wątpliwości opisałem tutaj:

formatting link
Proszę o wytłumaczenie, najlepiej w odniesieniu do przykładu dla n=8.

Reply to
pbartosz
[ciach]

Myślę , że fajnie wyjaśnił Ci to J.F. I znów moje "3 grosze".. Jeżeli używasz core'a Altery , bądź Xilinxa , to zwróć uwagę na fakt (napisano WYRAŹNIE w dokumentacji) , iż nie jest to tak do końca FFT w czasie rzeczywistym. Jeżeli robisz "n-punktową" FFT , to najpierw musisz "zassać" te n-próbek , następnie po iluś tam cyknięciach zegarka (szczegóły doczytaj w dokumentacji) , obliczenia są gotowe i "wypluwane" na kolejnych cyknięciach zegarka. Nie jest to więc rozwiązanie działające tak naprawdę w czasie rzeczywistym. Czy da się to zrobić w czasie rzeczywistym ?? Tak , ale zapomnij o darmowych core'ach , wtedy faktycznie cały model matematyczny musisz wydziargać po swojemu , a co za tym idzie musisz zrozumieć ten bajzel od A-Z. Jeżeli dokonujesz analizy fali ciągłej , śmiało demodulację możesz robić na darmowych core'ach. Jeżeli chodzi Ci o impulsowy Doppler (Radar pogodowo-wietrzny/ultrasonograf Dopplerowski(przepływy krwi)) , to faktycznie musisz zrozumieć model matematyczny i stosownie do potrzeb zaimplementować w logikę to całe siano cyfrowe. W zależności od problemu , należy sobie zadać pytanie , co chcemy uzyskać ?? Jeżeli na wejściu mamy sygnał analogowy , a naszym zadaniem jest pokazanie jego charakterystyki amplituda/częstotliwość , to dokonaj wstępnej banalnie prostej analizy w jakim przedziale modulacji częstotliwościowej się poruszamy... Ot takie tam sobie propozycje fizyka przekwalifikowanego na elektronika.. Jak co , pytaj dalej..

Powodzenia ,

MH

Reply to
MH

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.