logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Implementacja FFT na układzie FPGA

pbartosz 25 Paź 2010 11:42 2315 2
  • #1 8660654
    pbartosz
    Poziom 10  
    Próbuję zrozumieć istotę działania transformaty Fouriera w oparciu o stronę http://vitecvitec.webpark.pl/simple_fft/simple_fft.htm
    i mam kilka wątpliwości.
    Proszę szanownych forumowiczó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.)

    2. 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ą.

    3. Jak mam czytać drugi wykres na stronie
    http://dict.comm.pl/wst_g/Transformacja%20Fouriera.doc ,
    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?

    4. 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.
  • #2 8661095
    _Robak_
    Poziom 33  
    Widzę że dużo jeszcze nauki przed Tobą, aby to zrealizować na FPGA. Zespolone FFT zwraca Ci N punktów rzeczywistych i urojonych. To co jest na drugim wykresie to moduł z liczby urojonej, fazy nie podano. Po prostu wynik możesz przedstawić we współrzędnych prostokątnych bądź biegunowych. Co do tego jakie częstotliwości są na wykresie, jeśli próbkujesz sygnał to max f którą jesteś w stanie wykazać to f/2. Poczytaj o aliasingu i konecznym filtrowaniu sygnału przed próbkowaniem.
  • #3 8665247
    miono
    Poziom 15  
    Ja Ci mogę polecić książkę do przetwarzania sygnałów np. Lyonsa, która Ci wyjaśni wszystko czego potrzebujesz w przystępny sposób. Problem, który masz do zrobienia wcale nie jest trywialny i nawet jak znajdziesz gotowca to bez zrozumienia podstaw nie będziesz wiedział jak tego użyć żeby otrzymać to co potrzebujesz.

    Cytat:
    ...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?


    Nie. Najprościej rzecz ujmując oś pionowa jest ilościową miarą danej składowej w sygnale. Ciężko mi nawet odpowiedzieć jednoznacznie na twoje pytanie, musisz zrozumieć istotę cyfrowej transformaty fouriera. Problem w tym, że w FFT występują przecieki jeśli badasz sygnały, których okres nie mieści się dokładnie w zakresie dla którego liczysz FFT czyli prawie zawsze. Załóżmy że dajesz sygnał sinus o częstotliwości 62 Hz na wejście FFT a najbliższy prążek na FFT to 60 Hz, więc przy badaniu tego sygnału nie będziesz miał sinusoidy, która dokładnie będzie odpowiadać sygnałowi wejściowemu. Z tego powodu wystąpi przeciek na inne prążki i będziesz miał niezerowe wartości także na innych prążkach. Najlepiej to widać na oscyloskopie który ma FFT i podaniu sinusa z generatora. Żeby uniknąć zjawiska przecieku stosuje się funkcje okien, ale też trzeba umiejętnie zastosować taką funkcję żeby nie utracić z sygnału użytecznych informacji. Po za tym różne funkcje okien się nadają do różnych zastosowań dlatego znowu potrzebna jest wiedza jakie okno dobrać do danego zastosowania. Nie chce Cię straszyć ale długa droga przed tobą :)
REKLAMA