Projektowanie filtrów cyfrowych Projektowanie filtra cyfrowego przebiega w następujących etapach: 1. Określenie właściwości filtra (wymagań), 2. Aproksymacja zadanych właściwości, 3. Realizacja systemu. �p = 0.4 �s = 0.6 rp = 6 [dB] rs = 20 [dB] Dodatkowym wymaganiem może być np. liniowa faza lub niski rząd filtra. 1 Projektowanie dyskretnych filtrów IIR na podstawie filtrów analogowych Filtry analogowe Filtr Butterwortha | H ( j&!) | Charakterystyka częstotliwościowa filtra Butterwortha jest maksymalnie płaska w paśmie przepustowym. Oznacza to, że dla filtra rzędu N pierwsze (2N-1) pochodnych funkcji | H( j&!) |2 ma &! = 0 wartość zero dla . Charakterystyka amplitudowa jest monotoniczna w paśmie przepustowym i zaporowym. Kwadrat charakterystyki amplitudowej definiuje się następująco: 1 | Hc ( j&!) |2 = 1+ ( j&! / j&!c )2N 2 s = j&! Podstawiając 1 | Hc ( j&!) |2 = Hc (s)Hc (-s) = 1+ (s / j&!c )2N Bieguny transmitancji spełniają 1+ (s / j&!c )2N = 0 , skąd j(�+k 2Ą ) / n j� j(� +k 2Ą ) n n C = M e , k = 0, 1,...n -1 C = Me = Me ( , ) j(Ą / 2N )(2k+N-1) 2N sk = j -1&!c = &!ce , k = 0, 1,...2N -1 (*) Hc (s)Hc (-s) Ponieważ (*) podaje bieguny iloczynu do realizacji filtra wybiera się bieguny z lewej półpłaszczyzny, co zapewnia stabilność filtra analogowego. Przykłady: s1,2 = -0.7071 ą j0.7071 1 Hc (s) = (s + 0.7071 + j0.7071)(s + 0.70711 - j0.7071) 1 Hc (s) = s2 + 1.4142s + 1 3 s1,3 = -0.5 ą j0.866, s2 = 1 1 Hc (s) = s3 + 2s2 + 2s +1 s1,4 = -0.7654 ą j1.8478 s2,3 = -1.8478 ą j0.7654 N w = &!c = 24 = 16 16 Hc (s) = s4 + 5.2263s3 + 13.6569s2 + 20.905s + 16 4 Przykład &!c Obliczyć rząd N i pulsację (pulsacja 3dB) analogowego filtra Butterwortha spełniającego następujące &! = 100 rad / s &!s = 160 rad / s wymagania: krawędz pasma przepustowego p , krawędz pasma zaporowego , rp = 1 dB maksymalne tłumienie w paśmie przepustowym , minimalne tłumienie w paśmie zaporowym rs = 30 dB . 5 1 Dzieląc stronami i logarytmując: Ze wzoru | Hc ( j&!) |2 = j&! / j&!c )2N 1+ ( 2N p otrzymujemy: �# &! �# ś# 10r /10 -1ś# ź# log10 ś# p ź# = log10 ś# 1 ż# ś# ź# ś# s ź# &!s 10r /10 -1 = -rp [dB] �# # �# # �# 1 + (&! / &!c )2N �# p �# 1 �# otrzymujemy: = -r [dB] s �# 1 + (&!s / &!c )2N �# p �# �# ś# 1 10r /10 -1ś# �# &! ś# 1 101/10 -1 100 ź# ź# N = log10ś# / log10ś# p ź# = log10ś# / log10�# ś# = 8.785 ś# ź# ś# ź# ś# ś# s ź# 2 &!s 2 ż#20log + (&! / &!c )2N -1/ 2 10r /10 -1 1030/10 -1ź# �#160 # �# # �# # (1 ) = -rp �# # �# 10 p �# �#20log10 + (&!s / &!c )2N -1/ 2 s (1 ) = -r �# 1 p log10(&! / &!c ) = log10(10r /10 -1) p 2N ż#log10 + (&! p / &!c )2N rp /10 (1 )= �# �# 1 �#log10(1 + (&!s / &!c )2N )=r /10 p �# s log10(&!p / &!c) = log10(10r /10 -1)2N ż#(&! p / &!c )2N =10rp /10 -1 1 �# �# p &!p /&!c = (10r /10 -1)2N �#(&!s / &!c )2N =10rs/10 -1 �# &! 100 p &!c = = = 107.7957 1 1 p (10r /10 -1)2N (101/10 -1)2�"9 Ponieważ rząd filtra musi być liczbą całkowitą N zostaje zaokrąglone w górę N=9. 6 Transformacja częstotliwości - filtry FGP, FBP, FBS 7 8 Filtry Czebyszewa Kwadrat charakterystyki amplitudowej filtra Czebyszewa typu I definiuje się następująco: 1 | Hc ( j&!) |2 = 2 2 1+ � VN ( j&!/ j&!c ) ż#cos(N cos-1 x), | x |d" 1 �# cos-1 x = arccos(x) gdzie VN (x) = �# jest wielomianem Czebyszewa rzędu N ( ). �# �#cosh(N cosh-1 x), | x |> 1 V0 (x) = cos(0arccos( x)) = 1 V1(x) = cos(arccos (x)) = x V2 (x) = cos(2arccos(x)) = 2x2 -1 , , VN +1(x) = 2xVN (x) - VN -1(x), N e" 1 Wielomiany Czebyszewa można wyznaczać rekurencyjnie: 2 0 d" VN (x) d" 1 Dla | x |d" 1 , dla | x |> 1 VN (x) rośnie monotonicznie. VN (1) = 1 VN (0) = ą1 ; dla N parzystego i V (0) = 0 dla N nieparzystego. N 9 Bieguny analogowego filtra Czebyszewa są położone na płaszczyznie zespolonej S na elipsie. a&!c b&!c Długość półosi małej wynosi a półosi wielkiej , przy czym: 1 1 -1/ N -1/ N -1 -2 a = (ą1/ N -ą ) b = (ą1/ N + ą ) ą = � + 1 + � , , . 2 2 Na okręgu o promieniu równym wielkiej półosi elipsy wyznacza się bieguny filtra Butterwortha o tym samym rzędzie, co projektowany filtr Czebyszewa, a następnie przesuwa się je na obwód elipsy. s1,2 = -0.1490 ą j0.9037 s3 = -0.2980 s1,2 = -0.0850 ą j0.9464 s3,4 = -0.2052 ą j0.3920 , , 10 Kwadrat charakterystyki amplitudowej filtra Czebyszewa typu II definiuje się następująco: 1 | Hc ( j&!) |2 = 1 1+ 2 2 � VN ( j&!c / j&!) 2 2 � VN ( j&!/ j&!c ) W porównaniu z filtem typu I następuje odwrócenie członu w mianowniku oraz j&!c / j&! odwrócenie argumentu wielomianu Czebyszewa na . Bieguny filtra typu II można wyznaczyć znając bieguny filtra typu I na podstawie zależności: 2 &!c II sk = I sk natomiast zera filtra typu II leżą na osi urojonej w punktach V (&!c / &!) = 0 . N 11 s1,2 = -0.1777 ą j1.0773 z1,2 = ą j1.1547 s3 = -3.3553 , ; s1,2 = -0.2860 ą j0.8213 z1,2 = ą j1.1547 s3 = -1.3221 , ; 12 13 Filtr eliptyczny Charakterystyka amplitudowa filtra eliptycznego jest równomiernie falista w paśmie przepustowym &!c i zaporowym. Filtr opisują cztery parametry: N - rząd, - krawędz pasma przepustowego oraz Rp - tłumienie w paśmie przepustowym i Rs - tłumienie w paśmie zaporowym. 14 15 16 17 Transformacja biliniowa j&! Transformacja biliniowa jest przekształceniem algebraicznym odwzorowującym oś urojoną płaszczyzny S w okrąg jednostkowy na płaszczyznie Z. Ponieważ -" d" &! d" " -Ą d" � d" Ą , a więc przekształcenie to jest nieliniowe. Transmitancję dyskretną H(z) uzyskuje się z transmitancji analogowej Hc(s) przez podstawienie: �#1- z-1 ś# 2 Ą# �#1- ś# ź# 2 z-1 ś#ń# s = ś# ź#Ą# Td ś#1+ ź# z-1 # (*), tzn.: H (z) = Hc ó# d ś#1+ z-1 ź#Ą# ó#T �# �# # Ł# Ś# s = � + j&! Rozwiązując (*) względem z i podstawiając otrzymujemy: 1 + (Td / 2)s 1 + �Td / 2 + j&!Td / 2 z = = 1 - (Td / 2)s 1 - �Td / 2 - j&!Td / 2 | z |< 1 | z |>1 � < 0 � > 0 Dla , a dla . Tak, więc jeżeli biegun transmitancji analogowej Hc(s) leży w lewej półpłaszczyznie to moduł transmitancji H(z) leży wewnątrz okręgu jednostkowego. Stabilny układ analogowy jest przekształcany w stabilny układ dyskretny. 1 + j&!Td / 2 z = s = j&! | z |= 1 j&! Podstawiając do wyrażenia na z widzimy, że dla całej osi 1 - j&!Td / 2 1 + j&!Td / 2 j� e = . 1 - j&!Td / 2 18 � &! Zależność pomiędzy a wyznacza się z definicji przekształcenia: j� / 2 �# e - e- j� / 2 ś# ś# ź# j� / 2 2 2 j ź# ś# �#1- �#1 �# ś# 2 e- j� ś# 2 - e- j� / 2e- j� / 2 ś# 2 e- j� / 2(e - e- j� / 2 ) = j ś# ź# ś# ź# ś# ź# j&! = = = Td ś# j� / 2 j� / 2 ź# e + e- Td ś#1+ j� ź# Td ś# Td ś# j� / 2 j� / 2 j� / 2 ź# e- # 1 + e- j� / 2e- j� / 2 ź# e- (e + e- ) ś# ź# �# �# # �# # ś# ź# 2 �# # �# ś# j2 sin(� / 2) 2 = ś# ź# = j tan(� / 2) ź# Td ś# cos(� / 2) Td �# # 2 &! = tan(� / 2) (*), � = 2arctan(&!Td / 2) Td Ze względu na nieliniowość transformacji biliniowej projekt filtra analogowo powinien uwzględnić � &! (*) (tzn. filtr analogowy należy zaprojektować na , a nie ). 19 Przykład: Zaprojektować dolnoprzepustowy, cyfrowy filtr eliptyczny spełniający następujące wymagania: częstotliwość próbkowania Fp=100 [Hz], krawędz pasma przepustowego f1=20 [Hz], krawędz pasma zaporowego f2=25 [Hz], nieliniowość charakterystyki w paśmie przepustowym Rp=0.1 [dB], nieliniowość charakterystyki w paśmie zaporowym Rs=60 [dB]. Projekt � 1. Unormowanie częstotliwości filtra cyfrowego f1 i f2 podanych w [Hz] do pulsacji cyfrowej w [rad]: f1 20 f2 25 � = 2Ą = 2Ą = 1.2566 = 2Ą = 2Ą =1.5708 1 , � 2 Fp Fp 100 100 &! 2. Obliczenie krawędzi pasma [rad/s] filtra analogowego uwzględniające nieliniowość transformacji biliniowej: 2 2 &!1 = tan(� / 2) = tan(1.2566 / 2) = 145.3085 1 &!2 = 200 , Td 1/100 3. Określenie parametrów filtra analogowego na podstawie podanych wymagań odnośnie pasma oraz H (s) wyznaczenie jego transmitancji w postaci zer i biegunów. Dla zadanych wymagań rząd analogowego filtra eliptycznego wynosi N=7, rozkład jego zer i biegunów przedstawia rysunek. 1 + (Td / 2)s z = 4. Transformacja biliniowa zer i biegunów filtra analogowego H(s) zgodnie ze wzorem . 1 - (Td / 2)s Otrzymujemy zera i bieguny filtra cyfrowego H(z). 20 filtr eliptyczny Uwaga! j&! Transformacja biliniowa odwzorowuje całą oś płaszczyzny S w okrąg jednostkowy na płaszczyznie Z, j� j&! = " e = -1 dlatego jeżeli filtr analogowy ma zera w to przechodzą one w zera . Rozważany filtr ma jedno zero w -1 , ponieważ stopień licznika jego transmitancji H(s) jest o jeden mniejszy od stopnia mianownika. (Dla porównania dolnoprzepustowy filtr Butterwortha ma wielokrotne zero w -1 ). filtr Butterwortha 21 5. Weryfikacja charakterystyk amplitudowych filtra cyfrowego 22 23 24 25 Implementacja Matlaba ? 26 Metoda okien - filtry FIR - liniowa faza W metodzie okien najpierw zadaje się wymaganą charakterystykę częstotliwościową filtra: " j� j� n Hd (e ) = d "h [n]e- , n=-" na podstawie której wyznacza się jego nieskończoną odpowiedz impulsową Ą 1 j� j� n hd [n] = d +"H (e )e d� , 2Ą -Ą a następnie mnoży się tę odpowiedz impulsową przez okno o skończonej długości (wycina się fragment np. oknem prostokątnym): 1, 0 d" n d" M ż# w[n] = �#0, | n |> M h[n] = hd[n]w[n] , . �# j� H(e ) Na podstawie twierdzenia o okienkowaniu jest splotem widma filtra idealnego z widmem okna: Ą 1 j� jŚ j(�-Ś) H(e ) = )dŚ d +"H (e )W (e . 2Ą -Ą 27 Idealny filtr dolnoprzepustowy (nieprzyczynowy) 1, | � |< �c ż# j� Hlp (e ) = �# �#0, �c <| � |d" Ą sin(�cn) ż# �c , n `" 0 �# 1 1 1 sin(�cn) Ą n �# j� n j� n j�c n c hlp[n] = = (e - e- j�cn ) = = �# -�c +"e d� = [e ]� 2Ą 2Ąjn 2Ąjn Ą n �#�c -�c , n = 0 �# Ą �# Idealny filtr dolnoprzepustowy (przyczynowy) �c ż#e- j�M / 2, | � |< �c 1 sin(�c (n - M / 2)) �# - j�M / 2 j� n j� hlp[n] = e d� = Hlp (e ) = �# +"e , 2Ą Ą (n - M / 2) �#0, �c <| � |d" Ą �# -�c 28 Można również wyznaczyć współczynniki filtra przez obliczenie odwrotnej dyskretnej transformaty Fouriera (IDFT) zadanej charakterystyki częstotliwościowej. %4. Wykresy figure, close all, clear all subplot(2,1,1) stem(real(Hf)), N = 32; %długość filtra FDP xlabel('k'), ylabel('Re[H(k)]') Wn = 0.5; %częstotliwość graniczna, 1 odpowiada fp/2 subplot(2,1,2) stem(imag(Hf)), axis([0 N -1 1]) xlabel('k'), ylabel('Im[H(k)]') %1. zadana ch-ka częstotliwościowa figure, hold on %1.1 od 0 do fp/2 stem(real(ht),'filled','r') Hf=zeros(1,round(N/2)); Hf(1:round(Wn*N/2))=1; stem(B ,'b'), Hf=Hf.*exp(-j*(1:length(Hf))*pi); %liniowa faza xlabel('n'), ylabel('Re[h(n)]') %1.2 od fp/2 do fp - symetrie widma legend('obliczeniowo','analitycznie') Hf=[1 Hf 0 conj(fliplr(Hf))]; figure subplot(2,1,1), hold on %2. Współczynniki filtra plot(f,abs(H), 'r:'), %2.1 Przez DFT plot(f,abs(Hb),'b') ht=ifft(Hf); ht(1)=[]; xlabel('f unormowana'), ylabel('|H[e^j^\omega]|') %2.2 Dla porównania - analitycznie legend('obliczeniowo','analitycznie') n=1:(length(ht)-1)/2; B=sin(Wn*n*pi)./(pi*n); B=[fliplr(B) Wn B]; subplot(2,1,2), hold on %3. Ch-ki częstotliwościowe filtrów plot(f,unwrap(angle(H)),'r:'), plot(f,unwrap(angle(Hb)),'b'), M=1024; %zmniejszenie kroku w osi częstotliwości xlabel('f unormowana'), ylabel('faza') htz=zeros(1,M); htz(1:length(ht))=ht; legend('obliczeniowo','analitycznie') htb=zeros(1,M); htb(1:length(B)) =B; figure , hold on H=fft(htz); plot(f,20*log10(abs(H)), 'r:'), Hb=fft(htb); plot(f,20*log10(abs(Hb)),'b'), f=2*(0:M-1)/(M-1); %unormowana os częstotliwości xlabel('f unormowana'), ylabel('|H[e^j^\omega]| [dB]') legend('obliczeniowo','analitycznie') axis([0 1 -40 5]) 29 Zadana charakterystyka częstotliwościowa filtra Uzyskana charakterystyka częstotliwościowa filtra Współczynniki filtra 30 31 Filtr FIR z oknem prostokątnym - największa stromość w paśmie przejściowym i najmniejsze tłumienie pierwszego listka bocznego. 32 Zwiększenie długości okna M powoduje zmniejszenie szerokości listka głównego nie wpływa jednak na położenie (tłumienie) pierwszego listka bocznego. 33 34 35 Okno Kaisera - okno parametryczne 1/ 2 ń# ż# I0 Ą#�(1-[(n-ą ) /ą ]2) ó# Ą# Ł# Ś# �# , 0 d" n d" M w[n] = I0 (� ) �# , �#0 �# ą = M / 2 , I0(�") - zmodyfikowana funkcja Bessela zerowego rzędu pierwszego rodzaju. Okno Kaisera ma dwa parametry: - długość (liczba niezerowych współczynników), � - parametr kształtu . � Wzrost powoduje obniżanie pierwszego listka bocznego (i niestety zwiększanie szerokości listka głównego - tj. pasma przejściowego). Natomiast wzrost M powoduje zawężanie listka głównego i nie wpływa na położenie pierwszego listka bocznego. � Na podstawie doświadczeń numerycznych Kaiser określił wymagania odnośnie M i pozwalające "� � spełnić zadane wymagania charakterystyki amplitudowej filtra FIR (tj. , ). 36 "� = �s - �p A = -20 log10 � 0.1102(A - 8.7), A > 50 ż# �# � = �#0.5842(A - 21)0.4 + 0.07886(A - 21), 21 d" A d" 50 �#0, A < 50 �# A - 8 M = ą2 z dokładnością do 2.285"� 37 38 39 Przykład: Dobrać parametry okna Kaisera dla FDP: krawędz pasma przepustowego �p = 0.4Ą , krawędz rp = 0.1 dB pasma zaporowego �s = 0.6Ą , maksymalna nieliniowość w paśmie przepustowym , rs = 60 dB minimalne tłumienie w paśmie zaporowym . � 1. Obliczenie dla obu pasm: p � =(1-10-r / 20)/ 2 = 0.0057 p pasmo przepustowe �s = 10-rs / 20 = 0.001 pasmo zaporowe p Ponieważ dla FIR projektowanego metodą okien � = �s wiec wybiera się wymaganie ostrzejsze: � = min{� , �s} = 0.001 p � = 5.6533 M = 37 2. Korzystając ze wzorów projektowych wyznacza się i , a następnie okno o tych parametrach. �p + �s 3. Odpowiedz impulsową FIR wylicza się dla � = . 2 4. Weryfikacja otrzymanych charakterystyk filtra i ewentualna ich korekcja (przez zmianę parametrów okna). 40 Po korekcji parametrów 41 Filtry FGP, FPP, FPS 42 Optymalny filtr FIR - algorytm Parksa-McClellana Przy projektowaniu FIR metodą okien, okno prostokątne jest najlepszą średniokwadratową aproksymacją zadanej charakterystyki częstotliwościowej dla danego rzędu M, tzn. minimalizuje wyrażenie: Ą 2 1 2 j� j� � = Hd (e ) - H(e ) d� +" 2Ą -Ą Niestety powyższe kryterium nie uwzględnia oscylacji w punktach nieciągłości (efekt Gibbsa) i uniemożliwia osobne traktowanie pasma przepustowego i zaporowego. Dlatego stosuje się optymalizację min-max (minimalizację błędów maksymalnych) oraz ważone częstotliwościowo kryteria błędów. W algorytmie Parksa-McClellana rząd filtra � �s p krawędzie pasma i oraz stosunek �1 /�2 �1 �2 są stałe natomiast (lub ) jest zmienne. 43 44 45