Tworzę channelizer, który składa się ze złożonego miksera, decymatora CIC i filtru kompensacji / decymacji FIR. Ostateczny filtr FIR może, jeśli ma to znaczenie, zostać zaimplementowany jako więcej niż jeden filtr.
Moje pytanie brzmi: jak zaprojektować filtr, który kompensuje bardzo niepłaskie pasmo przenoszenia filtra CIC? Czy tworzysz pożądaną odpowiedź częstotliwościową, obliczając odwrotność odpowiedzi CIC, a następnie przepuszczasz ją przez odwrotną FFT, aby uzyskać odpowiedź impulsową?
Jak widać, chociaż mój szczególny problem dotyczy filtrów CIC, moje pytanie naprawdę dotyczy tego, w jaki sposób tworzysz filtr kompensacji zniekształceń.
Dziękuję za Twój czas.
filters
fft
filter-design
Jim Clay
źródło
źródło
Odpowiedzi:
Poniższe informacje dotyczą kompensacji CIC i nie stanowią ogólnej techniki „zniekształcania”. Jest to jednak prosta metoda „kompensacji” niezmiennego „zniekształcenia”. Jeśli znana jest odpowiedź częstotliwościowa, można zastosować odwrotność częstotliwości w celu kompensacji. Przykłady takie jak filtr CIC, w których można zastosować filtr słabej jakości ze względu na zmniejszoną złożoność, są później kompensowane w łańcuchu sygnałowym. W tym przykładzie odpowiedź częstotliwościowa jest znana i można zastosować odwrotność. Uwaga: w przypadku filtrów o wielu prędkościach po zdziesiątkowaniu chcesz używać widma „użytecznego”.
Ogólnie, aby skompensować filtr CIC, odwrotność odpowiedzi filtrów CIC może być wykorzystana do wygenerowania filtra kompensacji. CIC ma odpowiedź (patrz odnośnik [r2] lub [r3])
Gdzie D jest opóźnieniem różnicowym, M jest szybkością decymacji, a N jest kolejnością filtrów (liczba filtrów kaskadowych). Odwrotność można określić jako
Po uzyskaniu odpowiedzi częstotliwościowej filtra kompensacyjnego, możemy po prostu wybrać pożądaną długość filtra FIR. Długość FIR zależy od aplikacji. Oczywiście im dłuższy filtr FIR, tym lepsza kompensacja.
Poniżej przedstawiono wykresy tej prostej kompensacji.
Poniżej znajduje się kod Pythona do tworzenia odpowiedzi częstotliwości i wykresów.
[r1] Altera, „Zrozumienie filtrów kompensacyjnych CIC”
[r2] R. Lyons, „Understanding Digital Signal Processing”, wyd. 2, Prentice Hall, Upper Saddle River, New Jersey, 2004
[r3] R. Lyons, „Understanding Cascaded Integrator Comb Filters”
źródło
M=8
aN=9
on utworzy te same wykresy co referencja 1. Użyłem nomenklatury bliżej referencji 2.Myślę, że odpowiedź Christophera jest dobra. Pomyślałem, że dodam jeden dla nas leniwych / oszustów.
Podczas kopania wokół fdatool Matlaba (Narzędzie do projektowania i analizy filtrów) odkryłem, że może on projektować i modelować zarówno filtry CIC, jak i odwrotne filtry cynkowe, przy czym odwrotny filtr cynkowy jest filtrem kompensacji zniekształceń CIC.
Generujesz filtr CIC, przechodząc od razu do strony „Utwórz filtr wielu stawek” (przycisk po lewej w wersji R2011b) i określając filtr CIC. Następnie możesz ustawić wszystkie parametry, które chcesz na nim, takie jak interpolacja / decymacja, liczba kaskad (Matlab nazywa to „sekcjami”) itp.
Odwrócony filtr cynkowy tworzy się, przechodząc do strony „Filtr projektu” (strona domyślnie ustawiana przez narzędzie po uruchomieniu) i określając „Odwrotny dolnoprzepustowy” z menu rozwijanego Dolnoprzepustowy. Następnie możesz ustawić dla niego różne parametry. Ma kilka unikalnych parametrów w części Opcje okna dialogowego, w tym „p”, co odpowiada liczbie kaskad (wykładnika sinusoidy).
Odwrotna konstrukcja filtra cynkowego nie była jednak w pełni satysfakcjonująca, ponieważ poprawienie go wydawało się mniejszym przykładem wykonania matematyki niż ustalenie, gdzie było moje pasmo przepustowe, jaki był w tym momencie spadek CIC, a następnie zaprojektowanie filtra, który z grubsza anulował z tego opadnięcia. Ponieważ mój filtr CIC miał cztery kaskady, pomyślałbym, że będę musiał ustawić „p” na cztery, ale wtedy to znacznie rekompensowało. Skończyło się na pozostawieniu „p” na 1, domyślnej wartości.
Narzędzie naprawdę świeciło, gdy zapisałem oba filtry w mojej sesji, a następnie przeszedłem do menedżera filtrów i kaskadowałem je, aby zobaczyć ogólną odpowiedź częstotliwościową. To było bardzo pomocne i łatwe do zrobienia.
źródło
Bez powielania odpowiedzi tutaj, zobacz
jak zrobić filtr kompensacji CIC
który pokazuje bardzo proste rozwiązanie z 3 dotknięciami dla kompensacji CIC.
Jest to specyficzne dla CIC lub wymagane jest jakiekolwiek zastosowanie odwrotnego Sinc (na przykład przed konwersją D / A).
Aby zrekompensować jakiekolwiek ogólne zniekształcenie poprzeczne (to, które można by powielić z filtrem poprzecznym w przeciwieństwie do dynamicznego zniekształcenia szumu), przyjąłbym podejście wykorzystujące równania Wienera Hopfa, aby wymyślić filtr kompensacyjny przy użyciu podejścia najmniejszego kwadratu błędu, najlepiej używając sekwencji treningowej, jeśli jest dostępna, aby porównać pożądaną z rzeczywistą reakcją i wyszkolić korektor dźwięku. W przypadku aplikacji pokazującej to przy użyciu kodu źródłowego zobacz:
Kompensacja odpowiedzi częstotliwościowej głośnika w sygnale audio
źródło