Metody projektowania wybranych filtrów
cyfrowych
Instrukcja laboratoryjna
Opracował:
………………………………….…………..
Imię i nazwisko, numer grupy szkoleniowej
1. Teoria
Filtr cyfrowy jest liniowym układem dyskretnym niezmiennym względem przesunięcia, zrealizowany
za pomocą arytmetyki o skończonej precyzji. Projektowanie filtrów cyfrowych obejmuje trzy etapy:
1. określenie pożądanych właściwości układu,
2. aproksymację tych właściwości za pomocą przyczynowego układu dyskretnego,
3. realizację układu za pomocą arytmetyki o skończonej precyzji.
Równanie filtru opisuje jego transmitancja dyskretna w postaci:
)
...
/(
)
...
(
)
(
1
1
0
1
1
0
m
m
m
n
n
n
a
z
a
z
a
b
z
b
z
b
z
H
+
+
+
+
+
+
=
−
−
lub jako równoważne równanie różnicowe:
∑
∑
=
=
−
−
⋅
−
⋅
=
N
k
N
k
k
n
k
k
n
k
k
y
a
x
b
y
0
1
Jeżeli funkcja ma mianownik równy 1 to filtr jest określony jako FIR (ang. Finite Impulse Response) .
Jeśli funkcja ma licznik równy 1, to filtr jest określony jako IIR (ang. Infinite Impulse Response).
Zwyczajowo projektowanie filtrów cyfrowych typu NOI jest w istocie przekształcaniem filtru
analogowego w filtr cyfrowy spełniający założone wymagania.
Metoda niezmienności impulsowej – zakłada się, ze odpowiedź impulsowa filtru cyfrowego jest
równa ciągowi próbek równomiernie pobranych z odpowiedzi impulsowej filtru analogowego. Metodę
tę stosuje się często nie dlatego, aby odtwarzać kształt odpowiedzi impulsowej, ale dlatego, że
zapewnia ona w przypadku analogowego filtru wąskopasmowego charakterystykę częstotliwościową
filtru cyfrowego, która dobrze aproksymuje charakterystykę częstotliwościową filtru analogowego.
Projektowanie oparte na numerycznym rozwiązywaniu równań różniczkowych – rozważmy
transmitancję układu analogowego, gdzie x
a
(t) jest sygnałem wejściowym, y
a
(t) sygnałem wyjściowym,
X
a
(s) i Y
a
(s) zaś odpowiednio ich transformatami Laplace’a:
)
(
)
(
)
(
0
0
s
X
s
Y
s
c
s
d
s
H
a
a
N
k
k
k
M
k
k
k
a
=
=
∑
∑
=
=
, układ analogowy mający transmitancję H
a
(s) może być
równoważnie opisany za pomocą równania różniczkowego:
∑
∑
=
=
=
N
k
M
k
k
a
k
k
k
a
k
k
dt
t
x
d
d
dt
t
y
d
c
0
0
)
(
)
(
, projektowanie oparte na numerycznym rozwiązywaniu
równań różniczkowych polega na zastąpieniu pochodnych w powyższym równaniu różnicami
skończonymi.
Projektowanie w oparciu o transformację dwuliniową.
Metoda ta jest oparta na
całkowaniu równania różniczkowego i wykorzystaniu numerycznej aproksymacji całki.
Odwracalna transformacja wyrażona równaniem
1
1
1
1
2
−
−
+
−
⋅
=
z
z
T
s
jest znana jako transformacja
dwuliniowa.
2. Zadania laboratoryjne
LAB_3_1 :
PROJEKTOWANIE FILTRU IIR NA PODSTAWIE PROTOTYPU ANALOGOWEGO
Celem ćwiczenia jest zapoznanie z metodą projektowania filtru IIR w oparciu o transformacje
jego prototypu analogowego.
W projektowaniu filtru cyfrowego z użyciem prototypu analogowego praktyką jest
projektowanie filtru dolnoprzepustowego a następnie jego transformacja do żądanej postaci
(środkowoprzepustowy, górnoprzepustowy lub środkowozaporowy). W rozwiązaniu
zastosowanym w Matlabie procedura projektowania składa się z następujących etapów:
a) Określenie specyfikacji prototypu filtru na podstawie wymagań charakterystyki
częstotliwościowej (
ω
p
,
ω
s
, R
p
, R
s
)
b) Projekt znormalizowanego prototypu analogowego N-tego rzędu o częstotliwości
odcięcia równej 1.
c) Transformacja otrzymanego opisu znormalizowanego filtru dolnoprzepustowego do
odpowiedniego typu filtru o częstotliwościach rzeczywistych.
d) Zastosowanie transformacji biliniowej
1
1
2
+
−
=
s
s
s
f
s
, gdzie f
s
oznacza częstotliwość
próbkowania, dla przekształcenia prototypu analogowego w cyfrowy.
1. Uruchomić Matlaba
2. Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file
3. Zaprojektować kilka typów filtrów dolnoprzepustowych o rzędach: 10, 20, 50 o różnych
typach podstawiając odpowiednie wartości do wzoru:
[l,m]= butter(N,Wn)
- filtr Butterwortha
[l,m]= cheby1(N,R
p
,W
n
)
– filtr Czebyszewa I
[l,m]= cheby2(N,R
s
,W
n
)
– filtr Czebyszewa II
[l,m]= ellip(N,R
p
,Rs,Wn) – filtr eliptyczny (Cauera)
Argumentami wywołania funkcji jest: N rząd filtru, W
n
– znormalizowana
częstotliwość odcięcia filtru, R
p
– amplituda tętnień w paśmie przepustowym (w dB), R
s
–
amplituda tętnień w paśmie zaporowym (w dB). W wyniku takiego wywołania otrzymuje się
dwa wektory wyjściowe l i m, zawierajęce współczynniki wielomianu licznika i mianownika.
Zmieniając jedynie parametry wyjściowe funkcji z [l,m] na [z,p,k] lub [A,B,C,D], otrzymać
można inne formy opisu transmitancji filtru. Przedstawiony sposób wywołania ma jedynie
zastosowanie do filtrów dolnoprzepustowych. W przypadku filtrów górnoprzepustowych,
środkowoprzepustowych i górnozaporowych należy odpowiednio zmodyfikować parametry
i linie wywołania funkcji.
Przy filtrze środkowoprzepustowym jako częstotliwość odcięcia W
n
wystarczy podać
wektor W
n
=[W
1
W
2
], w których W
1
i W
2
oznaczają dolną i górną częstotliwość zaporową, a
linia wywołania funkcji (na przykładzie filtru Butterwortha) ma postać:
[l,m] = butter(N,Wn, ‘Stop’)
Dla ułatwienia procesu projektowania można skorzystać z dodatkowych m-plików
funkcyjnych określających wielkości: W
n
(częstotliwość znormalizowana) i N rząd filtru
Na podstawie wymagań odczytanych z zadanej charakterystyki częstotliwościowej filtru, to
jest W
p
, W
s
, R
p
oraz R
s .
1. Uruchomić Matlaba
2. Otworzyć okno edycyjne m-pliku funkcyjnego: File -> New -> M-file
3. Zaprojektować kilka typów filtrów dolnoprzepustowych (ich rząd oraz znormalizowaną
częstotliwość odcięcia) podstawiając odpowiednie wartości do wzoru:
[N, W
n
]=buttord(W
p
,W
s
,R
p
,R
s
)
– filtr Butterwortha
[N, Wn]=cheb1ord(W
p
,W
s
,R
p
,R
s
) – filtr Czebyszewa I
[N, W
n
]=cheb2ord(W
p
,W
s
,R
p
,R
s
) – filtr Czebyszewa II
[N, W
n
]=ellipord(W
p
,W
s
,R
p
,R
s
)
– filtr Cauera
4. Wyrysuj charakterystyki tak zaprojektowanych filtrów np.
[l,m]=butter(N,W
n
)
[h1,w1]=freqz(l,m,128);
subplot(2,1,1), plot(w1/pi, abs(h1))
Zanotuj wnioski po przeanalizowaniu w ten sposób otrzymanych charakterystyk. Czy dla
wymienionych typów filtrów selektywność filtru jest taka sama dla tych samych rzędów
filtrów?
LAB_3_2:
PROJEKTOWANIE BEZPOŚREDNIE FILTRÓW TYPU IIR
W projektowaniu bezpośrednim filtru typu IIR wykorzystuje się metodę Yule’a-Walkera
dobierającą optymalizacyjnie współczynniki filtru w taki sposób, aby jego charakterystyka
amplitudowa najlepiej pokrywała się z zadaną charakterystyką amplitudową mag(f), w której
f
jest wektorem określającym punkty częstotliwościowe, a mag wartości amplitudy w tych
punktach. Funkcja do projektowania bezpośredniego nosi nazwę yulewalk.
Wektor f określa punkty częstotliwościowe od 0 do 1 (1 odpowiada częstotliwości Nyquista)
w porządku rosnącym, przy czym dozwolone jest dwukrotne użycie wartości częstotliwości
(odpowiada to skokowej zmianie charakterystyki amplitudowej mag). Wartość N jest
proponowanym rzędem filtru. Im wyższa wartość N, tym lepsze dopasowanie.
1. Uruchomić Matlaba
2. Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file
3. Wpisz poniższy kod źródłowy
4. Zaproponuj własny filtr środkowoprzepustowy o bardzo dużej selektywności, wyrysuj
rozkład zer i biegunów na płaszczyźnie Z.
f=[0 0.1 0.13 0.3 0.32 0.4 0.42 0.6 0.63 0.8 0.83 0.9 0.92 1];
mag=[0 0 1 1 0.5 0.5 0 0 1 1 0.7 0.7 0 0 ];
[l1,m1]=yulewalk(18,f,mag);
[h1,w1]=freqz(l1,m1,128);
[l2,m2]=yulewalk(50,f,mag);
[h2,w2]=freqz(l2,m2,128);
subplot(211),plot(f,mag,w1/pi,abs(h1)),
grid,xlabel(‘f’),ylabel(‘abs(h1)’),title(‘rzad N=18’)
subplot(212), plot(f,mag,w2/pi,abs(h2)),
grid,xlabel(‘f’),ylabel(‘abs(h2)’), title(‘rzad N=50’)
pause,clg
[z,p,k]=tf2zp(l1,m1);
fi=0:0.05:2*pi;
axis(‘square’)
plot(real(p),imag(p),’x’, sin(fi),cos(fi))
xlabel(‘real(p)’),ylabel(‘imag(p)’),title(‘Rozklad biegunow’), grid
Program dokonuje projektowania dwu filtrów typu IIR: jeden jest rzędu 18, drugi rzędu
50. Dodatkowo analizowane jest położenie biegunów otrzymanej funkcji w celu
sprawdzania warunków stabilności filtru.
LAB_3_3:
PROJEKTOWANIE FILTRÓW TYPU FIR
Filtry o skończonej odpowiedzi impulsowej FIR, choć zwykle dużo wyższego rzędu niż IIR,
posiadają wiele zalet, z których najważniejsze to możliwość uzyskania dokładnie liniowej
charakterystyki fazowej, bezwzględna stabilność, prostota projektowania. Matlab zapewnia
kilka funkcji do projektowania tego typu filtru. Należy do nich remez, w której realizuje się
algorytm Parks-McClelllana. Wywołanie tej funkcji ma postać:
b = remez (N, f, mag)
Gdzie argumenty wejściowe N, f, mag mają identyczną interpretację jak funkcji yulewalk,
natomiast b zawiera obliczone wartości współczynników transmitancji filtru FIR.
1. Uruchomić Matlaba
2. Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file
3. Zaprojektować dolnoprzepustowy filtr FIR rzędu 30 o znormalizowanej częstotliwości
odcięcia 0.3 wykorzystując metodę remez
4. Wyrysować charakterystykę amplitudową oraz położenie zer na płaszczyźnie Z
W sposób podobny wywołuje się funkcję fir2, stosującą klasyczny algorytm okienkowy
projektowania filtru FIR z oknem wybieranym przez użytkownika. Sposób jej wywołania
b = fir2(N, f, mag, window)
Uwzględnia dodatkowo możliwość użycia wybranego okna (jedno spośród następujących
funkcji okna: bartlett, blackman, boxcar, chebwin, hamming, hanning, kaiser, triang). Przy
opuszczeniu w linii wywołania nazwy okna, stosowane jest okno Hamminga.
1. Uruchomić Matlaba
2. Otworzyć okno edycyjne m.-pliku funkcyjnego: File -> New -> M-file
3. Zaprojektować dolnoprzepustowy filtr FIR rzędu 30 o znormalizowanej częstotliwości
odcięcia 0.3 wykorzystując metodę okienkową fir2
4. Wyrysować charakterystykę amplitudową oraz położenie zer na płaszczyźnie Z
LAB_3_4 :
BADANIE WPŁYWU RZĘDU FILTRU NA JEGO CHARAKTERYSYKĘ
AMPLITUDOWĄ
Celem ćwiczenia jest zapoznanie z własnościami filtru cyfrowego zrealizowanego w postaci
kaskady ogniw drugiego rzędu (posiadających po 2 bieguny (i zera) sprzężone), oraz
wpływem poszczególnych ogniw na charakterystykę filtru
1. Uruchomić MATLABA
2. Uruchomić program “sosdemo”, pisząc jego nazwę w oknie MATLABA
3. W drugim menu po prawej stronie wybrać filtr Butterwortha opcją “Butter”
4. Zaobserwować przebieg łącznej charakterystyki filtru w zależności od ilości ogniw.
5. W polu “Cascade” wyłączyć łączne wyliczanie charakterystyki i zaobserwować
charakterystyki poszczególnych ogniw filtru.
6. W polu “Show all” wyłączyć wyświetlanie wszystkich charakterystyk, w polu “3-D plot”
wyłączyć rysowanie trójwymiarowe, przerysować poszczególne charakterystyki łączne i
poszczególnych ogniw.
7. W drugim menu po prawej stronie wybrać kolejne filtry i powtórzyć kroki 4-6
LAB_3_5 :
BADANIE WPŁYWU TYPU FILTRU NA JEGO RZĄD, PRZY ZADANYCH
TOLERANCJACH NA CHARAKTERYSTYKĘ AMPLITUDOWĄ
Celem ćwiczenia jest zapoznanie z zależnością między typem filtru a rzędem przy zadanych
zafalowaniach, pasmie przejściowym i tłumieniu w pasmie zaporowym.
1. Uruchomić MATLABA
2. Uruchomić program “filtdemo”, pisząc jego nazwę w oknie MATLABA
3. W górnym menu po prawej stronie wybrać filtr Butterwortha opcją “Butter”
4. Zaobserwować przebieg charakterystyki filtru w zależności od zadanych tolerancji.
5. W polu “Order” odczytać rząd filtru spełniającego zadane wymagania.
6. W polu “Fstop” zmienić częstotliwość z 600 na 550, 800 Hz i odczytać niezbędne rzędy
filtru. Powrócić do ustawienia początkowego.
7. W polu “Rpass” zmienić zafalowania w paśmie przepustowym z 3 dB na 1, i 0.1 dB
i odczytać niezbędne rzędy filtru. Powrócić do ustawienia początkowego.
8. W polu “Rstop” zmienić tłumienie w paśmie zaporowym z 50 dB na 30, i 80 dB i odczytać
niezbędne rzędy filtru. Powrócić do ustawienia początkowego.
9. Powtórzyć kroki 4-8 dla pozostałych typów filtrów.
LAB_3_6 :
BADANIE WPŁYWU FILTRU CYFROWEGO NA SYGNAŁY CYFROWE
Celem ćwiczenia jest zapoznanie z efektem filtracji sygnału za pomocą filtru cyfrowego.
1. Uruchomić MATLABA
2. Uruchomić program “simulink”, pisząc jego nazwę w oknie MATLABA
3. Uruchomić program “extras”, klikając myszą na jego nazwę w oknie SIMULINKA.
4. Uruchomić program “filters”, klikając myszą na jego nazwę w oknie EXTRAS.
5. Uruchomić program “digital lowpass”, zawierający bibliotekę filtrów cyfrowych
dolnoprzepustowych klikając myszą na jego nazwę.
6. Uruchomić program “demo”, klikając myszą na jego nazwę w oknie EXTRFILT
7. Uruchomić symulację wybierając w menu “simulation” opcję “start”
8. Zaobserwować przebieg sygnału szumowego na wejściu i wyjściu filtru oraz jego gęstość
widmową i przesunięcie fazy.
9. Zatrzymać symulację wybierając w menu “simulation” opcję “stop”
10. Zmienić parametry źródła sygnału, klikając myszą na generator. Wybrać przebieg
prostokątny o częstotliwości 62.8 rad/s (10 Hz).
11. Usunąć filtr pasmowoprzepustowy zaznaczając go i naciskając klawisz DELETE
12. Przenieść z biblioteki filtrów dolnoprzepustowych filtr Czebyszewa i umieścić go w
miejsce filtru pasmowego.
13. Usunąć analizator zaznaczając go i naciskając klawisz DELETE
14. Przenieść z biblioteki ujść “sinks” oscyloskop “scope” i umieścić go na wyjściu filtru.
Kliknięcie na ikonę spowoduje rozwinięcie oscyloskopu.
15. Kliknąć na filtr i zmienić okres próbkowania na 0.001 s.
16. Zmienić częstotliwość graniczną filtru na 10/500 i nacisnąć OK.
17. Uruchomić symulację wybierając w menu “simulation” opcję “start”
18. Zaobserwować przebieg sygnału na oscyloskopie
19. Zatrzymać symulację wybierając w menu “simulation” opcję “stop”
20. Powtórzyć kroki 16-19 dla częstotliwości filtru 20/500, 30/500, 40/500, 50/500 i 60/500.
21. Zamknąć okno Simulink i pozostałe biblioteki bez zapisywania zmian (save changes NO)