9. Realizacja projektowanie i pomiary filtrów FIR
Transkrypt
9. Realizacja projektowanie i pomiary filtrów FIR
66 9. Realizacja projektowanie i pomiary filtrów FIR Cele ćwiczenia Zapoznanie ze sposobem realizacji filtrów FIR na platformie TMX320C5515 eZdsp. Zapoznanie z procedurą projektowania filtru FIR przy pomocy programu MATLAB i eksportu wyników do Code Composer Studio. Projektowanie, realizacja i pomiary filtrów o różnych charakterystykach amplitudowych. Struktura filtrów FIR Filtry FIR (ang. Finite Impulse Response) są filtrami o skończonej odpowiedzi impulsowej. W filtrach FIR nie występuje sprzężenie zwrotne i filtry te są stabilne. Próbki sygnału wyjściowego filtru FIR są obliczane, jako średnia ważona próbek sygnału wejściowego, wagami są współczynniki filtru h[k], k = 0, 1, …, N − 1, gdzie N jest rzędem filtru. Próbki sygnału wyjściowego filtru FIR można obliczać na podstawie wzoru N 1 y[n] h[k ]x[n k ] , n = 0, 1, 2, … , ( 8.1) k 0 gdzie: x[n] – sygnał wejściowy, y[n] – sygnał wyjściowy, h[n] – odpowiedź impulsowa filtru – współczynniki filtru, N – długości odpowiedzi impulsowej – rząd filtru. Powyższy wzór realizuje dyskretny splot sygnału x[n] z odpowiedzią impulsową filtru h[n]. Splot jest łatwo realizowalny programowo i układowo. Rysunek 8.1 67 przedstawia graficzną reprezentację wzoru (8.1); z−1 oznacza tu opóźnienie jednostkowe. x[n] h[0] z−1 x[n−1] h[1] x[n−2] z−1 h[2] z−1 x[n−N+2] h[N−2] z−1 x[n−N+1] h[N−1] y[n] + + + + Rys. 8.1. Graficzna reprezentacja splotu (8.1), struktura filtru FIR Przedstawiona graficzna reprezentacja splotu jest podstawą układowej realizacji filtru FIR zawierającej N − 1 układów opóźniających, N układów mnożących oraz N dwuwejściowych sumatorów, które można zastąpić jednym N wejściowym sumatorem. Współcześnie układowo realizuje się filtry cyfrowe przede wszystkim, jako dedykowane układy scalone. Realizacja programowa filtru FIR na TMX320C5515 eZdsp Do realizacji filtru FIR przez procesory rodziny TMS320C55x można wykorzystać funkcje z biblioteki TMS320C55x DSP Library. Najprościej jest skorzystać z funkcji FIR o nagłówku ushort fir(DATA *x, DATA *h, DATA *r, DATA *dbuffer, ushort nx, ushort nh) gdzie: x[nx] – wskaźnik do tablicy nx rzeczywistych próbek wejściowych, h[nh] – wskaźnik do tablicy nh rzeczywistych współczynników filtru, r[nx] – wskaźnik do tablicy nx rzeczywistych próbek wyjściowych, dbuffer[nh+2] – wskaźnik do bufora, w którym zapisywane są przeszłe próbki sygnału wejściowego, nx – wymiar tablicy próbek wejściowych, nh – rząd filtru równy wymiarowi tablicy współczynników filtru. 68 funkcja zwraca wartość = 0, jeśli nie nastąpiło przepełnienie i wartośc = 1, gdy przepełnienie wystąpiło. Koszt wywołania funkcji fir wynosi nx * (2 + nh) + 25 taktów zegara. Współczynniki filtru zapisane w tablicy h trzeba w dowolny sposób obliczyć i zapisać w kodzie języka C, najwygodniej jako plik nagłowkowy. Istnieje wiele programów projektujących filtry FIR i zapisujących obliczone współczynniki filtru w pliku nagłówkowym języka C, który następnie można wykorzystać w programie. Jednym z rozwiązań jest wykorzystanie narzędzia fdatool środowiska MATLAB, które pozwala na zaprojektowanie filtru i zapisanie wyników w wielu formatach. W celu zapisania wyniku projektu w pliku nagłówkowym z menu fdatool należy wybrać Targets > Generate C header … następnie w oknie dialogowym nadać nazwę tablicy współczynników filtru i stałej określającej rząd filtru oraz wybrać docelowy format współczynników. MATLAB wykonuje obliczenia na liczbach zmiennoprzecinkowych podwójnej precyzji, tak obliczone współczynniki są efektem projektu filtru i wykresy charakterystyk są obliczone na podstawie tych współczynników. Danymi dla funkcji fir są współczynniki filtru zapisane w formacie Q1.15 i w takim formacie powinny być zapisane w pliku nagłówkowym. Konwersja z formatu double na Q1.15 polega na wymnożeniu współczynników zmiennoprzecinkowych przez 215 i zaokrągleniu wyników do liczb całkowitych. Duża utrata cyfr znaczących, w wyniku konwersji, może spowodować zmianę charakterystyk filtru. Wpływ kwantyzacji współczynników na charakterystyki filtrów można ocenić klikając ikonę Set quantization parameters – trzecia od góry u dołu po lewej stronie przypominająca schody, ikona pojawia tylko wtedy, gdy wykupiony jest odpowiedni Toolbox. Po wprowadzeniu formatu współczynników na wykresach pojawią się charakterystyki filtru przed i po kwantyzacji. Plik nagłówkowy ze współczynnikami filtru należy dołączyć do projektu. Pliki współczynników uzyskane różnymi programami często należy 69 zmodyfikować, aby dopasować je do wymogów projektu, dotyczy to między innymi plików stworzonych przez fdatool. W bieżącym ćwiczeniu będzie wykorzystywany program FIR, który realizuje jednocześnie dwa filtry FIR, jeden w kanale lewym drugi w kanale prawym. W programie są cztery pary filtrów przełączane przyciskami. Współczynniki filtrów zapisane są w plikach nagłówkowych o nazwach od FIR_1.h do FIR_8.h. Na listingu 8.1 przedstawiono przykładowy plik nagłówkowy FIR_1.h zawierający współczynniki filtrów. Listing 8.1. Przykładowy plik nagłówkowy FIR_1.h zawierający współczynniki filtrów #define N_1 6 DATA H_1[6] = {354, 2582, -995, -810, -307, 725}; Przyjęto konwencję, że w pliku FIR_x.h rząd filtru oznaczono jako N_x a tablicę współczynników jako H_x. Szybkość próbkowania ustawiona jest na 48 kHz. Doświadczenie 8.1. Projekt i realizacja filtrów FIR – program FIR. 1. Uruchomić program FIR i przyrząd Charakterystyki. 2. Pomierzyć charakterystyki 8 filtrów realizowanych przez program. 3. Zaprojektować narzędziem fdatool zadane przez prowadzącego zajęcia filtry FIR. 4. Zapisać współczynniki filtrów jako pliki nagłówkowe w katalogu projektu – zastępując dowolne z istniejących plików od FIR_1.h do FIR_8.h. 5. Dokonać zmian w nowych plikach, na podstawie listingu 8.1. 6. Skompilować i uruchomić program. 7. Pomierzyć charakterystyki amplitudowe zaprojektowanych filtrów. W sprawozdaniu: 1. Podać parametry projektowe filtrów, łącznie z typem zastosowanego okna. 70 2. Porównać pomierzone charakterystyki amplitudowe zaprojektowanych filtrów z charakterystykami obliczonymi przez program MATLAB, z uwzględnieniem kwantyzacji współczynników.