Ile kranów potrzebuje filtr FIR?

20

Szukam zaprojektować zestaw filtrów FIR do wdrożenia filtra dolnoprzepustowego. Próbuję również zmniejszyć opóźnienie sygnału przez filtr, więc zastanawiam się, jaka może być minimalna liczba dotknięć, których mogę użyć.

Wiem, że więcej uderzeń może prowadzić do ostrzejszego odcięcia częstotliwości i lepszego odrzucenia pasma itp. Jednak to, co mnie interesuje, jest bardziej fundamentalne - jeśli chcę wdrożyć filtr dolnoprzepustowy z odcięciem na powiedz, czy to oznacza, że ​​potrzebuję co najmniej 100 uderzeń w celu osłabienia sygnałów o niższej częstotliwości? Czy mogę uciec z mniejszą liczbą dotknięć, a jeśli tak, to czy jest jakiś teoretyczny dolny limit?fs100

Tommy
źródło

Odpowiedzi:

24

Powołując się na klasyczne cyfrowe przetwarzanie sygnałów Bellanger - teoria i praktyka , nie chodzi o to, gdzie jest twoja częstotliwość odcięcia, ale o to, ile potrzebujesz tłumienia, ile tętnienia sygnału, który chcesz zachować, możesz tolerować i, co najważniejsze, w jaki sposób zawęzić przejście z pasma przejściowego na pasmo (szerokość przejścia).

Zakładam, że potrzebujesz liniowego filtru fazowego (chociaż określasz minimalne opóźnienie, nie sądzę, że minimalny filtr fazowy jest ogólnie dobrym pomysłem, chyba że do cholery dobrze wiesz, co będziesz robił z sygnałem) . W takim przypadku kolejność filtrowania (czyli liczba uderzeń) wynosi

N.2)3)log10[110δ1δ2)]fasΔfa

z

fas częstotliwość próbkowaniaΔfa szerokość przejścia, to znaczy. różnica między końcem pasma podania a początkiem pasma zatrzymaniaδ1 tętnienie pasma przepustowego, to znaczy. „ile oryginalnej amplitudy możesz sobie pozwolić na zmianę”δ2) supresja w zespole stop.

Podłączmy kilka liczb! częstotliwość odcięcia , więc po prostu przejdę dalej i stwierdzę, że szerokość przejścia nie będzie większa niż połowa z tego, więc .fas100Δfa=fas200

Pochodzące z technologii SDR / RF tłumienie 60 dB jest zazwyczaj w pełni wystarczające - sprzęt, bez szalonych kosztów, nie będzie lepiej utrzymywał niepożądanych sygnałów z wejścia, więc nie marnujmy procesora na fantastyczny filtr, który jest lepszy niż to, co może zrobić Twój sprzęt. Dlatego .δ2)=-60 dB=10-3)

Załóżmy, że możesz żyć z odchyleniem amplitudy 0,1% w paśmie pasma (jeśli możesz żyć z większą ilością, rozważ także ograniczenie wymagań tłumienia). To .δ1=10-4

Podłączając to:

N.Filtr Tommy'ego2)3)log10[110δ1δ2)]fasΔfa=2)3)log10[11010-410-3)]fasfas200=2)3)log10[11010-7]200=2)3)log10[110-6]200=2)3)(log10106)200=2)3)6200=800 .

Tak więc z 200 stuknięciami jesteś daleko, iff w swoim filtrze używasz bardzo wąskiego pasma przepustowego, tak jak zakładałem.

Pamiętaj, że nie musi to stanowić problemu - przede wszystkim jest to filtr 800-tap przerażający, ale szczerze mówiąc, tylko na pierwszy rzut oka:

  • Jak testowałem w tej odpowiedzi na StackOverflow : obecnie procesory są szybkie , jeśli używasz czyjejś implementacji FIR zoptymalizowanej pod kątem CPU. Na przykład użyłem implementacji GNU Radio FFT-FIR z dokładnie powyższym opisem specyfikacji filtra. Mam wydajność 141 milionów próbek na sekundę - to może, ale nie wystarczy. Oto nasz testowy przypadek testowy (którego wyprodukowanie zajęło mi kilka sekund):Filtrowanie FIR FFT na podstawie GNU Radiowyniki oceny: rate_avg = 1,40982e + 08
  • Dziesiątkowanie: jeśli zamierzasz zachować tylko ułamek przepustowości wejściowej, wyjście filtra będzie drastycznie nadpróbkowane. Wprowadzenie dziesiętnej liczby oznacza, że ​​Twój filtr nie daje ci każdej próbki wyjściowej, ale tylko każdej tej - co normalnie prowadziłoby do wielu aliasingów, ale ponieważ eliminujesz cały sygnał, który mógłby być aliasem, możesz rób to. Sprytne implementacje filtrów (decymatory wielofazowe) mogą w ten sposób zmniejszyć wysiłek obliczeniowy o M. W twoim przypadku możesz łatwo zdziesiątkować , a wtedy komputer musiałby tylko obliczyćM.M.M.=50120050=24mnożenia / akumulacje na próbkę wejściową - o wiele łatwiej. Filtry w GNU Radio generalnie mają taką możliwość. I w ten sposób, nawet z FFT FIR (który nie nadaje się zbyt dobrze do implementacji decymatora polifazowego), mogę wycisnąć kolejny czynnik 2 w wydajności. Nie mogę nic więcej zrobić. Z mojego doświadczenia jest to dość zbliżone do przepustowości pamięci RAM. Dla
  • Opóźnienie: nie przejmuj się tym. Naprawdę nie, chyba że musisz. Robisz to z typowymi częstotliwościami próbkowania dźwięku? Pamiętaj,96kSsśmiesznie141Stwardnienie rozsianes wspomniane powyżej. Czas poświęcony na obliczenie wyjściowego filtra będzie miał znaczenie tylko w przypadku przesyłania strumieniowego sygnału na żywo przez MS / s. W przypadku DSP z danymi offline: dodaj opóźnienie do dowolnego sygnału równolegle do filtra, aby to zrekompensować. (Jeśli filtr ma fazę liniową, opóźnienie będzie równe połowie długości filtra.) Może to mieć znaczenie w sprzętowej implementacji filtra FIR.
  • Implementacja sprzętowa: więc może procesor i system operacyjny twojego komputera lub urządzenia wbudowanego naprawdę nie pozwalają ci spełnić ograniczeń związanych z opóźnieniami, więc patrzysz na FIR zaimplementowane w FPGA. Pierwszą rzeczą, którą zauważysz, jest to, że w przypadku sprzętu istnieje inny paradygmat projektowy - „ wszystko oprócz1100mojego współczynnika wejściowego ”wymaga dużej szerokości bitowej dla liczb stałych, które można obsługiwać w sprzęcie (w przeciwieństwie do liczb zmiennoprzecinkowych w procesorze). Więc to jest pierwszy powód, dla którego zwykle dzieliłeś ten filtr na wiele , kaskadowe, mniejsze, dziesiątkowe filtry FIR. Innym powodem jest to, że z każdym „krokiem” kaskady możesz pozwolić, aby mnożniki (zwykle „wycinki DSP”) działały z niższą częstotliwością, a zatem zmultipleksować je (liczba wycinków DSP jest zwykle bardzo ograniczona), przy użyciu jednego mnożnika do wielu odczepów. Jeszcze innym powodem jest to, że szczególnie filtry półpasmowe, tj. nisko przepustowe, które tłumią połowę pasma wejściowego i dostarczają połowę częstotliwości wejściowej, są bardzo skutecznie wdrażane sprzętowo (ponieważ mają połowę krany są zerowe, co jest trudne do wykorzystania w implementacji CPU / SIMD).
Marcus Müller
źródło
3
Lake DSP robił w czasie rzeczywistym 256 000 filtrów FIR tap w połowie do początku lat 90. 1200 uderzeń? Phfffft! ;-)
Peter K.
2
@PeterK. To jest duch! Głęboki szacunek dla FIR 256kT - dokładność liczbowa, którą zbudowali, z którą musiała być równie zapierająca dech w piersiach, jak sama wielkość projektu. Będąc zbyt młodym, by technologicznie się nimi cieszyć, wczesne lata 90. musiały być interesującym czasem. Rozmawiałem jakiś czas temu z inżynierem, który w tamtych czasach zrobił układy scalone DFT; potrzeba specyficznych dla aplikacji układów ASP DSP wydawała się po prostu wysoka, ponieważ ludzie zdali sobie sprawę, co jest możliwe pod względem DSP w przypadku platform obliczeniowych, aby faktycznie obsługiwać powstałe strumienie danych, ale nie ma wokół nich „wielofunkcyjnych” akceleratorów (w przeciwieństwie do dzisiejszych).
Marcus Müller
@PeterK., Tak, ale ci aussies zawsze ciągną nas za nogę.
robert bristow-johnson
@ robertbristow-johnson oy matey, co się tu dzieje?
Marcus Müller
2
@ MarcusMüller, chociaż wydawało się, że zwiększona popularność ASIC wtedy porównaniu do teraz (i myślę, że to dlatego, że każdy, kto był ASIC Spec / projektant to teraz po prostu wykorzystuje FPGA) nie były „wielozadaniowe” DSP w początkach lata 90. rzecz z LakeDSP została wyprodukowana poza 6 DSP56001.
Robert Bristol-Johnson
14

Dla szybkiej i bardzo praktycznej oceny podoba mi się zasada kciuka Freda Harrisa:

N.tzaps=ZAttmin22bT.

gdzie:

Atten jest pożądanym tłumieniem w dB,

bT.bT.=fastop-fapzassfas

fastopfapzass

fas

Jest to bardzo zbliżone do tego, co można uzyskać za liniowy filtr fazowy z tętnieniem pasma przepustowego 0,1 dB. Często stosuję tę zasadę, aby uzyskać pierwsze wyobrażenie o liczbie potrzebnych uderzeń, a następnie modyfikować je poprzez iterację w procesie projektowania filtra.

Warto również zauważyć: ta praktyczna zasada zapewnia doskonały wgląd w to, co naprawdę napędza liczbę dotknięć: zatrzymaj tłumienie pasma i stromość pasma przejściowego (i tętnienia pasma przepustowego, ale zazwyczaj - przynajmniej dla filtrów, dla których musiałem zaprojektować aplikacje komunikacji bezprzewodowej - wymóg tłumienia dominowałby nad tętnieniem). Więc brakuje ci pytania o określenie granicy na Fs / 100, jak szybko musisz przejść do pasma stop.

fasfapzassfastop

N.tzaps=60222)/100=137

Zabawa z tymi liczbami może również wykazać znaczenie redukcji przetwarzania za pomocą metod dziesiętnych.

Dan Boschen
źródło
7

Dodając do zaakceptowanej odpowiedzi, kilka dodatkowych odniesień. Nie napiszę wzorów, które mogą być zaangażowane. Te formuły dają przede wszystkim praktyczne zasady lub aproksymacje na początek. Możesz manipulować tymi liczbami w celu uzyskania rzeczywistego projektu.

Jednym z przyczyn powstania projektu Bellanger jest: o złożoności obliczeniowej w filtrach cyfrowych, 1981, Proc. Eur. Konf. Projektowanie teorii obwodu, M. Bellanger. Jest dość trudny do zdobycia, ale jest wykonalny . Co ciekawe, określa również formuły do ​​oceny liczby bitów na współczynnik, które należy wziąć pod uwagę przy implementacji skończonej arytmetyki. Bardziej dostępna wersja w języku francuskim to: Evaluation de la complexité des filtres numériques , 1982.

Kilka innych formuł zebrano w projekcie skończonego filtra odpowiedzi impulsowej , Podręcznik cyfrowego przetwarzania sygnałów, 1993, T. Samamaki.

Niedawno można przeczytać Dokładne oszacowanie minimalnej długości filtra dla optymalnych filtrów cyfrowych FIR , 2000, K. Ichige i in.

Wreszcie, w artykule Efektywna konstrukcja filtrów FIR z minimalnymi zamówieniami filtrów z wykorzystaniem optymalizacji normy L0 , 2014 r. Zakłada projekt, w którym kolejność jest stopniowo zmniejszana.

Laurent Duval
źródło
4

zminimalizować max(|H.(ω)|)dla wszystkich ω na stopie
z zastrzeżeniem1δ|H.(ω)|δ dla wszystkich ω w paśmie

Głównymi problemami praktycznymi, o których mogę pomyśleć, byłaby liczba próbek częstotliwości użytych podczas optymalizacji, ponieważ zachowanie próbki między częstotliwościami może powodować niepożądane efekty. To, jak dobre może być dopasowanie, zależy oczywiście od liczby uderzeń. Wydaje mi się, że można powiedzieć, że minimalna liczba uderzeń to moment, w którym problem staje się nieosiągalny. Jednym z rozwiązań byłoby rozwiązanie problemu wykonalności.

Arnfinn
źródło