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