Projektowanie filtrów cyfrowych

Transkrypt

Projektowanie filtrów cyfrowych
DSP Blockset
LABORATORIUM PROCESORY SYGNALOWE W
AUTOMATYCE PRZEMYSLOWEJ
PROJEKTOWANIA FILTRÓW CYFROWYCH
PRZY WYKORZYSTANIU MATLAB-SIMULINK
(DSP BLOCKSET).
DSP Blockset
Modelowanie i symulacja systemów i komponentów przetwarzania sygnalów.
WPROWADZENIE
Toolbox DSP Blockset rozszerza pakiet MATLAB (srodowisko SIMULINK) o
podstawowe mozliwosci modelowania i symulacji przetwarzania sygnalów. Toolbox
umozliwia, w szerokim zakresie, cyfrowe przetwarzanie sygnalów, buforowanie, filtrowanie
cyfrowe, szybkie projektowanie i symulacje systemów czasu rzeczywistego bez koniecznosci
programowania na „niskim poziomie”.
Jednym z elementów DSP Blockset jest blok (narzedzie) Digital Filter Design.
Narzedzie sluzy do wspomagania projektowania oraz implementacji filtrów cyfrowych.
Charakteryzuje sie latwa obsluga oraz duzymi mozliwosciami. Projektowany filtr moze byc
uzyty do filtrowania jedno i wielokanalowych sygnalów. Dzieki Digital Filter Design mozna
wygenerowac plik w jezyku C zawierajacy parametry filtra.
Alternatywnym rozwiazaniem jest zastosowanie narzedzia Filter Design Toolbox z
Signal Processing Toolbox. Jego konfiguracja jest identyczna jak Digital Filter Design.
URUCHOMIENIE Digital Filter Design
Aby rozpoczac prace z toolboxem Digital Filter Design nalezy w MATLABie
uruchomic srodowisko SIMULINK. Uruchomienie SIMULINKa nastepuje poprzez wpisanie
w oknie MATLABa polecenia simulink i zatwierdzenia go (klawiszem Enter). Drugim
sposobem jest klikniecie ikony Simulink umieszczonej w pasku menu (rysunek nr 1).
Rys. 1 Ikona uruchamiajaca Simulink .
Strona 2 z 15
Nastepnie z Library Browser nalezy wybrac pozycje:
/ DSP Blockset / Filtering / Filter Designs
Rys. 2 Wybór grupy bloczków do projektowania filtrów.
W oknie po prawej stronie pojawia sie bloczki modulu Filter Design. Aby zaprojektowac i
przetestowac filtr nalezy utworzyc nowy model w SIMULINKu a nastepnie przeciagnac do
niego bloczek Digital Filter Design. Dwukrotne klikniecie na bloczek spowoduje otwarcie
okna toolboxu (rysunek nr 3).
Rys. 3 Okno glówne bloku Digital Filter Design.
Strona 3 z 15
Digital Filter Design – opis
Okno Digital Filter Design podzielone zawiera siedem pól, w któryc h mozemy podgladac
charakterystyki projektowanego filtra, dane filtra, oraz konfigurowac jego parametry. Ponizej
zamieszczono opis zawartosci poszczególnych okien
Current Filter Information
Okno Current Filter Information znajduje sie w lewym górnym rogu okna Digital Filter
Design. Jego wyglad przedstawiono na rysunku nr 4.
Rys. 4 Okno Current Filter Information
W oknie tym znajdziemy informacje o strukturze filtra (Filter Structure) oraz mozliwosc
konwersji struktury (opcja Convert Structure). Nastepnie informacje o filtrze:
zródlo (Source) wskazuje, czy filtr byl projektowany w toolboxie
(Designed), czy importowany (Imported)
rzad filtra (Order) wyswietla rzad projektowanego filtra
stabilnosc filtra (Stable) wskazuje, czy filtr jest stabilny (Yes), czy niestabilny
(No)
liczba sekcji (Section) wskazuje liczbe sekcji w projektowanym filtrze
Analysis
Jest to prawe górne okno. Jego zawartosc i nazwa róznia sie w zaleznosci od wybranej
funkcji. W oknie tym mozna wyswietlac charakterystyki i analizy projektowanego filtra lub
wykres z opisem charakterystycznych dla projektowanych filtrów wartosci. Wyboru
wyswietlanego wykresu mozna dokonac poprzez zaznaczenie odpowiedniej pozycji z menu
tekstowego: / Analysis / lub klikniecie jednej z ikon.
Strona 4 z 15
Filter Specification
Wyswietla wykres schematu parametrów filtra. Osie opisane sa jednostkami aktualnie
wybranymi z menu Units. Wykres nie odzwierciedla aktualnych wartosci filtra.
Magnitude Response
Tworzy wykres charakterystyki amplitudowej filtra.
Phase Response
Tworzy wykres charakterystyki fazowej filtra.
Magnitude and Phase Response
(Frequency Response)
Tworzy wykres z charakterystyka amplitudowa oraz fazowa filtra.
Group Delay
Impulse Response
Tworzy wykres odpowiedzi impulsowej projektowanego filtra.
Step Response
Tworzy wykres odpowiedzi skokowej projektowanego filtra.
Pole / Zero Plot
Tworzy na plaszczyznie „z” wykres zawierajacy zera i bieguny projektowanego filtra.
Strona 5 z 15
Filter Coeffiecents
Otwiera okno zawierajace wspólczynniki projektowanego filtra. Oddzielnie podane sa
wspólczynniki dla mianownika (denominator) oraz licznika (numerator) transmitancji
filtra.
Filter Type
W oknie tym nalezy wybrac typ filtra.
Rys. 5 Okno Filter Type
Podstawowe typy filtrów:
Lowpass
(dolnoprzepustowy)
Highpass
(górnoprzepustowy)
Strona 6 z 15
Bandpass
(pasmowoprzepustowy)
Bandstop
(pasmowozaporowy)
Design Method
W oknie tym wybieramy metode projektowania filtra. Filtr o skonczonej odpowiedzi
impulsowej FIR lub o nieskonczonej odpowiedzi impulsowej IIR.
Filter Order
Okno pozawala na wybór rzedu filtra. Mozna dokonac „recznego” wyboru, poprzez
zaznaczenie pozycji Specify order i wpisanie rzedu filtra.
Mozna takze dokonac wyboru automatycznego, zaznaczajac Minimum order. Wówczas rzad
filtra zostanie dobrany automatycznie.
Strona 7 z 15
Frequency Specifications & Magnitude Specifications
Ponizej przedstawiono przykladowe ustawienia dla róznych rodzajów filtrów:
Lowpass
(dolnoprzepustowy)
Highpass
(górnoprzepustowy)
Bandpass
(pasmowoprzepustowy)
Bandstop
(pasmowozaporowy)
Strona 8 z 15
MENU
Menu zawiera dodatkowe funkcje, które mozna wywolac klikajac na ikony pod menu oraz
funkcje uzupelniajace mozliwosci toolboxu. Ponizej przedstawiono najwazniejsze z nich.
menu File / Export...
Pozwala na eksport wspólczynników filtra do przestrzeni roboczej MATLABa (Workspace),
pliku tekstowego (Text-file) lub pliku MATLABA (MAT-file).
W czesci Variable Names mozna podac nazwy, pod którymi bedzie przypisany licznik i
mianownik transmitancji (Numerator, Denominator). Zaznaczenie opcji Overwrite existing
variables spowoduje, ze nowo wyeksportowane dane zastapia stare.
menu File / Export to C header File
Pozwala na eksport do pliku naglówkowego w jezyku C.
Strona 9 z 15
Opcje w Variable names in C header file umozliwiaja wybór nazwy zmiennych, natomiast w
Data type to use in export wybór typu eksportowanych danych.
menu Transformations / FIR & IIR
Poszczególne pozycje me nu umozliwiaja transformacje filtrów. Np.:
/ FIR / Lowpass to Lowpass
pozwala na przeksztalcenie filtra szerokopasmowego dolnoprzepustowego w
waskopasmowy dolnoprzepustowy i odwrotnie
/ FIR / Lowpass to Highpass
pozwala na przeksztalcenie filtru dolnoprzepustowego w szerokopasmowy lub
waskopasmowy filtr górnoprzepustowy.
PRZYKLAD
CEL PRZYKLADU: zaprojektowac filtr dolnoprzepustowy o wlasciwosciach z tabeli:
typ filtra
dolnoprzepustowy
Lowpass
czestotliwosc odciecia
100 Hz
Fpass
czestotliwosc graniczna
150 Hz
Fstop
10
Filter order
1000 Hz
Fs
rzad filtra
szerokosc pasma
Po wpisaniu ustawien filtru, w oknie toolboxa, nalezy kliknac na przyciski “Design
Filter”. Wówczas zostaja wyliczone parametry filtru. Aby wyeksportowac parametry do
MATLABa, nalezy uzyc opcji:
File/Export...
Otrzymane parametry nalezy przeliczyc w dziedzine „Z”. Wykorzystano do tego funkcje:
trans = tf( licz,mian,okres_probkowania)
gdzie licz, mian, to licznik i mianownik transmitancji w dziedzinie „s”, natomiast
okres_probkowania, to okres próbkowania (w naszym przypadku 1/25000).
Otrzymano transmitancje filtra:
G(z) = 0.02679z 10+0.05527z 9+0.09512z 8+0.1353z 7+0.1654z 6+0.1765z 5+0.1654z 4+0.1353z 3+ +0.09512z 2+0.05527z+0.02679
Zaprojektowany filtr zamodelowano w SIMULINKu. Na filtr podano sinusoide i
zaklócenia o nastepujacych parametrach:
Strona 10 z 15
sygnal nosny: sinusoida, 50 Hz
zaklócenia: sinusoida, 5000 Hz
Uklad do badania filtra.
Panel toolboxu „Filter Design & Analysis”
Charakterystyka Bodego
Panel toolboxu „Filter Design & Analysis”
Charakterystyka Bodego
Strona 11 z 15
Odpowiedz impulsowa
Odpowiedz na skok jednostkowy
Zera i bieguny transmitancji
Charakterystyka Nyquista.
Zaprojektowany filtr mozna równiez zaimplementowac na procesor sygnalowy.
Wspólczynniki filtra:
wspólczynnik
wartosc dziesietna
wartosc Q15
1
0.022928
02EE
2
0.047295
060E
3
0.081405
0A6B
4
0.11583
0ED3
5
0.14151
121D
6
0.15102
1354
7
0.14151
121D
8
0.11583
0ED3
9
0.081405
0A6B
10
0.047295
060E
11
0.022928
02EE
Strona 12 z 15
Implementacja filtra na procesor sygnalowy polegala na napisaniu funkcji realizujacej filtr
cyfrowy, pobraniu próbek z generatora, poddaniu ich filtracji (dzialaniu funkcji filtrujacej)
oraz wyprowadzeniu z procesora sygnalowego w postaci analogowej. Do odczytu próbek
sygnalu uzyto przetwornika A/C, który zostal skonfigurowany podczas poprzednich
cwiczen laboratoryjnych. Do wyswietlenia przefiltrowanych przebiegów uzyto
przetwornika C/A.
Funkcja filtrujaca:
int filtr(void)
{
int i,wynik;
wynik=0;
for
(i=0;i<11;i++)
wynik+=mul_q(tablica[i],15,tablica2[i],15,15);
//mnozenie
for (i=10;i>0;i--) tablica[i]=tablica[i-1];//przesuniecie o jeden element
wstecz
return wynik;
}
W poczatkowej czesci funkcji „filtr” zadeklarowano zmienne lokalne i oraz wynik
potrzebne do realizacji algorytmu filtrowania. Na poczatku funkcji nastepuje
wyzerowanie zmiennej wynik. Nastepnie sa dwie petle. W pierwszej z nich do zmiennej
wynik (ustawionej jako akumulator) przypisywany jest wynik operacji mnozenia
zawartosci tablicy z odczytanymi próbkami (tablica) oraz tablicy z wspólczynnikami
filtru (tablica2). W drugiej petli realizowane jest przesuniecie elementów tablicy tablica o
jeden element wstecz.
Odczytanie wartosci sygnalu filtrowanego nastepuje poprzez przetwornik A/C w funkcji
obslugi przerwania drugiego. Wykonywane sa nastepujace polecenia:
//update przetwornika ADC
przetwornik.update(&przetwornik);
// koniec updatu przetwornika
//zapisanie sumy wejsc z kanalow 1 i 2 do tablicy
tablica[0]=przetwornik.c1_out+przetwornik.c2_out;
//uruchomienie funkcji FILTR
odpowiedz=filtr();
//update DAC
dac.update(&dac);
Po wywolaniu przerwania nastepuje odczytanie zawartosci przetwornika A/C , nastepnie
przypisanie sumy wejsc z kanalów 1 i 2 do tablicy tablica. Nastepnie uruchomienie
funkcji filtr (filtrowanie sygnalu) oraz update przetwornika C/A.
W programie glównym wykonywane jest przepisanie zmiennej odpowiedz (sygnal
przefiltrowany) na wyjscie nr 3:
//przepisywanie odpowiedzi na wyjcie DSP (sygnal po filtracji)
dac.qptr3=&odpowiedz;
Strona 13 z 15
Rys. 2 Przebieg sygnalu nosnego – bez zaklócenia (niebieski) oraz sygnalu zaklóconego (zielony)
Rys. 3 Przebieg sygnalu nosnego – bez zaklócen (niebieski) oraz przefiltrowanego (fioletowy).
Rys. 4 Przebieg sygnalu nosnego – bez zaklócen (niebieski) oraz przefiltrowanego (fioletowy).
Strona 14 z 15
Dzialanie zaprojektowanego filtru, zaimplementowanego na procesorze sygnalowym
bylo prawidlowe. Sygnal byl prawidlowo filtrowany, wyeliminowano zaklócenia. Zgodnie
z wlasciwosciami filtru, amplituda sygnalu przefiltrowanego ulegla obnizeniu. Wystepuje
takze przesuniecie fazowe zalezne od czestotliwosci. Na rysunku nr 3 widac, iz dla
nizszych czestotliwosci przesuniecie przekracza 180°. Natomiast na rysunku nr 4
widoczne jest, iz dla wyzszych czestotliwosci przesuniecie jest mniejsze niz 180°. Takie
przesuniecia fazowe sa zgodne z charakterystyka zaprojektowanego filtru:
Strona 15 z 15