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

Jak zrealizować equalizer na FPGA z użyciem FFT i IFFT?

Dlugi85 03 Mar 2009 14:00 1608 6
REKLAMA
  • #1 6230264
    Dlugi85
    Poziom 10  
    Posty: 14
    Mam za zadanie zrealizować equalizer na ukladzie FPGA, na poczatku chcialbym sie skupic nad regulacja poziomu calego sygnalu i w pozniejszym etapie rozbudowac to do postaci juz takiego prawdziwego equalizera.

    Zająć sie mam tylko częścia cyfrowa, więc żadne przetwarzanie A/C i C/A mnie nie interesuje.

    Próbki wchodza i wychodza z mojego układu szeregowo. Więc musze sie zastanwic nad rodzajem intefejsu oraz formatem cyfrowej reprezentacji sygnalu.

    Myślałem aby układ zrealizować wykorzystując transformate FFT a następnie dozować sygnał poprzez przemnożenie przez odpowiednia liczbe określającą wzmocnienie, i następnie transformate odwrotną IFFT. Wyczytałem jednak w innych tematach, żę FFT zużywa jednak duże zasoby i cieżko jest to zrobić, ale to była realizacja na mikrokontrolerach czyli w sumie programowa, nie wiem jak to sie ma do realizacji w VHDL'u czy tam Verilogu ?? I że niby cięzko jest zrobić FFT bez wycieku widma ?
    Czy może jednak powinienem to realizować za pomocą filtrów ? :|


    Wszelkie porady, podpowiedzi, sugestie mile widziane
  • REKLAMA
  • #2 6230300
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 6230662
    bartekgajos
    Poziom 14  
    Posty: 73
    Pomógł: 5
    Ocena: 2
    Witam

    Oczywiście to ile widma "wycieknie" zależy od tego jak dużo pasm będziesz analizował. Myślę że jeżeli rozbijesz sygnał na jakieś 1000 pasm to ( zakładając że sygnał mieści się w 20kHz ) będziesz miał dosyć dobra rozdzielczość FFT i nie za wiele ci z tego ucieknie. około 1000 pasm to już jest bardzo dokładny analizator ( na przykład format muzyczny MP3 używa FFT do rozbicia sygnału ).
    Nie bałbym sie o szybkosć działania, bałbym się o zasoby potrzebne do zrealizowania takiego equalizera.
    Przy ilości 1000 pasm potrzebujesz 1000 komórek do samego przechowywania współczynników a co z mnożeniem, dodawaniem, wszystko to powinno być potokowe ( chyba że masz dostęp do jakiegoś STRATIX'a Altery - wtedy dasz rade wszystko równolegle analizować ).

    Szybkiej ( 40ksampli na sekunde ) transformaty chyba nie da sie zrobic na mikrokontrolerach, chyba że Texasa DSP C6000.


    Ale oczywiście mogę być w błędzie.


    Pozdrawiam
    Bartek
  • REKLAMA
  • #4 6231477
    _greis_
    Poziom 14  
    Posty: 70
    Pomógł: 9
    Ocena: 1
    Cytat:
    To musi być na filtrach.

    gorąco odradzam implementacje filtrów. aby uzyskać zadowalające rezultaty potrzebowałbyś filtru o rzędu kiludziesięciu współczynnikach. dorzucając do tego chęć przeczesywania pasma akustycznego z rozdzielczością kilkuset Hz staje się to mocno nieefektywne i wręcz nierealne

    Cytat:
    Texasa DSP C6000

    procesory sygnałowe są dedykowane do takich zadań jak obliczanie transforamaty, wszystko zależy od tego z jaką rozdzielczością, z jakim pasmem chcesz obliczać fft, formatu danych (stało, zmiennoprzecinkowe) itd.itp.

    zaproponuję inne rozwiązania które, z tego co mi wiadomo, jest używane przy obliczaniu prostych equalizerów do współczesnego sprzętu hi-tech ;)
    Algorytm Goertzela - prosty, łatwy w zrozumieniu i implementacji, nie wymagający dużych zasobów (praktycznie bez potrzeby dostepu do pamięci zew). Idealny do równoległej pracy w fpga :D
  • REKLAMA
  • Pomocny post
    #5 6233367
    __Grzegorz__
    Poziom 30  
    Posty: 1412
    Pomógł: 196
    Ocena: 232
    _greis_ napisał:
    Cytat:
    To musi być na filtrach.

    gorąco odradzam implementacje filtrów. aby uzyskać zadowalające rezultaty potrzebowałbyś filtru o rzędu kiludziesięciu współczynnikach. dorzucając do tego chęć przeczesywania pasma akustycznego z rozdzielczością kilkuset Hz staje się to mocno nieefektywne i wręcz nierealne

    Cytat:
    Texasa DSP C6000

    procesory sygnałowe są dedykowane do takich zadań jak obliczanie transforamaty, wszystko zależy od tego z jaką rozdzielczością, z jakim pasmem chcesz obliczać fft, formatu danych (stało, zmiennoprzecinkowe) itd.itp.

    zaproponuję inne rozwiązania które, z tego co mi wiadomo, jest używane przy obliczaniu prostych equalizerów do współczesnego sprzętu hi-tech ;)
    Algorytm Goertzela - prosty, łatwy w zrozumieniu i implementacji, nie wymagający dużych zasobów (praktycznie bez potrzeby dostepu do pamięci zew). Idealny do równoległej pracy w fpga :D


    Kolega powinien bajki pisać, nie porady na forum.
    Kolejno:
    - o filtrach IIR kolega nie słyszał,
    - najwyrażniej kolega pomylił equalizer ze wskaźnikiem widmowym, proponując zastosowanie alg. Goertzla....

    Do autora topica:
    Zapomnij o FFT, rób to na filtrach IIR, konkretnie polecam hasło "biquad IIR filter".
  • Pomocny post
    #6 6233392
    Konto nie istnieje
    Poziom 1  
  • #7 6238953
    Dlugi85
    Poziom 10  
    Posty: 14
    Dzięki wszystkim za zainteresowanie i za dobre rady. Napewno mi sie troche sytuacja rozjaśniła :)

Podsumowanie tematu

✨ Dyskusja dotyczy realizacji equalizera cyfrowego na układzie FPGA z wykorzystaniem FFT i IFFT. Autor planuje najpierw regulację poziomu całego sygnału, a następnie rozbudowę do pełnego equalizera, koncentrując się wyłącznie na części cyfrowej bez przetwarzania A/C i C/A. Wątpliwości dotyczą zasobów FPGA potrzebnych do implementacji FFT, potencjalnego wycieku widma oraz efektywności takiego rozwiązania w porównaniu do filtrów. W odpowiedziach zdecydowanie odradza się stosowanie FFT ze względu na duże zużycie zasobów i trudności implementacyjne, zwłaszcza w kontekście FPGA, oraz ryzyko pogorszenia jakości sygnału. Zamiast tego rekomendowane jest użycie filtrów IIR, szczególnie filtrów biquad, które są efektywne i powszechnie stosowane w equalizerach. Alternatywnie proponowany jest algorytm Goertzela jako prostsze i mniej zasobożerne rozwiązanie do implementacji w FPGA. Poruszono także kwestie formatu danych i interfejsu, sugerując dostosowanie do standardów ADC/DAC lub wykorzystanie interfejsu I2S. Podsumowując, najlepszym podejściem do realizacji equalizera na FPGA jest implementacja filtrów IIR, a nie FFT, ze względu na optymalizację zasobów i jakość przetwarzania sygnału.
Wygenerowane przez model językowy.
REKLAMA