filtry fir

background image

Artur Rykala

5SST

Warszawa 19.01.2002

Pawel Przybylek

5SST

Dokumentacja koncowa z II projektu z UCYF

Temat: Filtry cyfrowe o skonczonej odpowiedzi impulsowej (FIR)

1. Analiza problemu

Sygnaly uzyteczne sa na ogól odbierane w obecnosci szumu (niekoniecznie bialego) i

innych sygnalów zaklócajacych. Usuniecie zaklócen i szumów z sygnalu odbieranego w taki
sposób, aby sygnal uzyteczny nie zostal nadmiernie znieksztalcony, jest podstawowym
zadaniem filtru cyfrowego. Np. jesli znane pasmo czestotliwosci sygnalów uzytecznych, a
widmo energetyczne zaklócen i szumów kolorowych lezy poza tym pasmem, to aby uniknac
znieksztalcen sygnalu, filtr powinien miec stala (rózna od zera) charakterystyke amplitudowa
w tym pasmie (pasmie przepustowym filtru) i liniowa charakterystyke fazowa.
Charakterystyka poza pasmem przepustowym powinna przyjmowac wartosci bliskie zeru
(pasmo zaporowe).

Rys.1 Filtry: a) filtr analogowy z harmonicznie zaszumionym sygnalem wejsciowym i harmonicznym

sygnalem wyjsciowym o zredukowanym szumie; b) cyfrowy odpowiednik filtru analogowego

Problem jest o wiele trudniejszy, jesli widmo zaklócen pokrywa sie czesciowo z widmem
sygnalu uzytecznego. Odfiltrowanie zaklócen prowadzi do powstania znieksztalcen sygnalu.

Warto zaznaczyc, ze przez termin filtry cyfrowe rozumie sie nie tylko uklady sluzace do
eliminacji (odfiltrowania) zaklócen, lecz równiez uklady stosowane do celowego
przeksztalcania danego sygnalu w inny sygnal. Przykladem moga byc np. filtry rózniczkujace,
filtry Hilberta (stosowane do tworzenia sygnalu analitycznego) lub tez bank (zestaw) filtrów
pasmowych (o stalych pasmach lub stalych dobrociach). Te ostanie sa coraz czesciaj
stosowane w analizie czasowo-czestotliwosciowej sygnalów, co w jezyku matematycznym

background image

oznacza dekompozycje sygnalu wzgledem funkcji bazowych. Metody te wykorzystuje sie w
kompresji sygnalu, wystarczy przeslac wspólczynniki rozwiniecia (zamiast próbek sygnalu) i
po stronie odbiorczej dokonac syntezy sygnalu na podstawie znajomosci funkcji bazowych.

Rys.2 Roznego rodzaju filtry wraz z przedzialami tolerancji: a) dolnoprzepustowy;

b)srodkowoprzepustowy; c)górnoprzepustowy d) srodkowozaporowy

Jedna z klas filtrów sa filtry o skonczonej odpowiedzi impulsowej SOI (ang. FIR –

Finite Impulse Resonse). Do uzyskania biezacej próbki sygnalu wyjsciowego wykorzystuja
próbke biezaca i próbki przeszle sygnalu wejsciowego, nie korzystajac z zadnych przeszlych
próbek sygnalu wyjsciowego. Dysponujac skonczonym ciagiem róznych od zera próbek
sygnalu wejsciowego, filtr SOI zawsze ma na wyjsciu skonczonej dlugosci ciag niezerowych
próbek sygnalu wejsciowego, skad bierze sie nazwa tego typu filtrów. Jezeli sygnal
wejsciowy staje sie nagle ciagiem zerowych wartosci, to sygnal wyjsciowy tez bedzie ciagiem
próbek zerowych.

Rys.3 Przykladowy filtr SOI 4 rzedu (4 ogniowy)

background image

Rys.4 Przykladowy filtr NOI

W porównaniu do filtrów o nieskonczonej odpowiedzi impulsowej NOI (nie bedziemy sie
nimi tu zajmowac), filtry SOI posiadaja liniowa charakterystyke fazowa. Dzieje sie to jednak
kosztem dlugosci filtru. Aby uzyskac taka sama charakterystyke amplitudowa jak filtr NOI
nalezy uzyc znacznie dluzszego filtru SOI.

Rys.5 Przyklady charakterystyk filtrów SOI o róznych dlugosciach

background image

Rys.6 Charakterystyka filtru NOI i SOI nalozona na tym samym rysunku

background image

2. Opis sposobu rozwiazania problemu:

Na rys.4 widzimy przykladowa budowe filtru SOI. Sklada sie on z zestawy

przechowujacego próbki wejsciowe, ukladu modyfikujacego wartosci próbek, ukladu
sumujacego zmodyfikowane próbki.

Ze wzgledu na przyjete zalozenia:

- próbki wchodzace sa 16-bitowe;

- próbki reprezentowane w kodzie NKB, czyli wszystkie dodatnie;

- stworzyc filtr dolnoprzepustowy;

- filtr 6-rzedu, gdyz budowa filtrów wyzszego rzedu bedzie analogiczna;

- pasmo przepustowe to ok. 0,3 fs;

przyjeto nastepujacy sposób projektowania.

a) uklad przechowujacy próbki wejsciowe

Uklad przechowujacy próbki powinien miec dlugosc równa rzedowi filtru + 1 dla próbki o 0
opóznieniu. Powinien umozliwiac filtrowanie sygnalów o róznych czestotliwosciach
wzglednych dlatego wykorzystuje sie wejscie zegarowe clk. Pozadana jest równiez
mozliwosc sterowania pozwoleniem na zmiane wartosci rejestrów.

Stworzono

zestaw7

skladajacy sie z 7 rejestrów o wejsciu i wyjsciu równoleglym, sterowanych

sygnalami

clk

i

loa

. Uklad w formie gotowego symbolu oraz z struktura wewnetrzna znajduje

sie w Zalacznikach graficznych pkt a).

Sam rejestr 16-bitowy zostal stworzony przy pomocy pliku tekstowego. Jego zawartosc
znajduje sie w Zalacznikach tekstowych pkt a). Zrezygnowano z gotowych rejestrów gdyz
rejestry ze standardowej biblioteki posiadaly wiele funkcji dodatkowych, które nie byly
potrzebne do tego projektu, co powodowalo, ze zajmowaly one wiecej miejsca w ukladzie
(dazymy do minimalizacji jego).

b) uklad modyfikujacy wartosci próbek (uklad mnozacy)

Stworzenie ukladu mnozacego nie jest wielkim problemem. Trudnoscia jest wyznaczenie
odpowiednich wartosci wag dla ukladu mnozacego. Do wyznaczenia ich posluzono sie
pakietem MATLAB w wersji 5.3. Do tego celu stworzono skrypt umozliwiajacy wyznaczenie
wartosci poszczególnych próbek oraz dodatkowo pokazujacy transmitancje utworzonego
filtru, widmo sygnalu wejsciowego i przetworzonego.

Fs=100;

background image

t=(1:100)/Fs;,
s1=sin(2*pi*t*5); s2=sin(2*pi*t*15); s3=sin(2*pi*t*30);
s=s1+s2+s3;
plot(t,s);

N=6
[F]=[0 0.2 0.3 0.33 0.6 1]
[A]=[0.89 0.89 0.89 0.61 0.2 0.1]
[B]=remez(N,F,A);
B

[H,w]=freqz(B,1,512);
plot(w*Fs/(2*pi),abs(H));

sf=filter(B,1,s);
plot(t,sf);
xlabel('Time (seconds)');
ylabel('Time waveform');
axis([0 1 -1 1]);

S=fft(s,512);
SF=fft(sf,512);
w=(0:255)/256*(Fs/2);
plot(w,abs([S(1:256)' SF(1:256)']));
xlabel('Frequency (Hz)');
ylabel('Mag. of Fourier transform');

Funkcja biblioteczna, która umozliwia nam obliczenie wspólczynników to remez .
Dobierano takie parametry dla funkcji remez, aby transmitancja filtru w pasmie
przepustowym nie przekroczyla 1.

Po kilku iteracjach wyznaczono nastepujace wspólczynniki dla poszczególnych próbek:

B

: -0.0406 0.0704 0.2381 0.4652 0.2381 0.0704 -0.0406

z

-0

z

-1

z

-2

z

-3

z

-4

z

-5

z

-6

Gdzie potega oznacza przesuniecie próbki w czasie (opóznienie).

background image

Rys.7 Transmitancja uzyskanego filtru

Rys.8 Widmo sygnalu oryginalne(niebieski) go i po filtracji(zielkony)

background image

Realizacja ukladu byla mozliwa na kilka sposobów:

a) wykorzystanie gotowych modulów zawartych w ALTERZE (megafunkcje);
b) wykorzystanie mechanizmu mnozenie implementowanego w procesorach

sygnalowych, stalopozycyjnych;

c) próba przyblizenia wartosci wspólczynników wielomianem postaci

y=1/2

0

+1/2

1

+1/2

2

+....+1/2

n

;

d) inne sposoby.

Rozwiazanie:
ad a) Megafunkcje nadaja sie do tego ukladu, jednak ich zajetosc powierzchni ukladu

powoduje, ze zalaczenie ich jako ukladu mnozacego nie nadaje sie do implementacji;

ad b) W procesorach stalopozycyjnych implementuje sie dzielenie jako mnozenie danej

liczby przez inna reprezentowana na X bajtach. Jezeli argument jest reprezentowany na
Y bajtach to wynik takiego dzialania bedzie na X+Y bajtach. Dodatkowo dzielnik
traktuje sie jako liczbe z przedzialu od 0 do 1, co powoduje, ze nie osiagniemy
przepelnienia (przeniesienia na ostatnich bitach wyniku). Po wykonaniu takiego
dzialania nalezy tylko zinterpretowac odpowiednio wynik. Aby uzyskac oczekiwana
wartosc nalezy z wyniku (tu o dlugosci X+Y) pominac Y najmniej znaczacych bitów.
Przyklad:

X=16 bitów, liczba =25437

binarnie=01100011 01011101

Y=16 bitów, mnoznik = 0,3

binarnie=01001100 11001101

Oczekiwany wynik to 7631

Po przemnozeniu:

X+Y=32 bity liczba=00011101 11001110 11001010 00011100

Po odrzuceniu najmniej znaczacych bitów mamy:
00011101 11001111, a to jest równe 7631

Algorytm ten daje dobre wyniki, ale równiez wymaga odpowiednio duzej powierzchni
w ukladzie.

ad c) Przyblizenie wagi za pomoca takiego wielomianu jest mozliwe, gdyz suma takiego

szeregu wynosi 2. Jest mozliwe wykorzystanie tego przyblizenia, ale liczba sumatorów
bylaby dosc duza.

Uwagi do powyzszych rozwiazan:

Wszystkie rozwiazania powyzsze zajmuja znaczaca powierzchnie ukladu.

Mozliwe byloby ich wykorzystanie, gdyby stworzyc 1 uklad mnozacy, a nastepnie prze
pomocy jego obliczac wagi poszczególnych galezi. Koszt takiego rozwiazania to przede
wszystkim zmniejszenie powierzchni (w stosunku do 1 galaz=1 uklad mnozacy), ale
równiez zmniejszenie czestotliwosci granicznej dla filtru (gdyz uklad musialby czekac
na obsluzenie po kolei wszystkich galezi).

Zdecydowano sie na inne rozwiazanie.

ad d) Mozna próbowac przyblizyc poszczególne wagi nie calym wielomianem z pkt. C, a

jedynie 1 z elementów szeregu postaci 1/2

n

.

Zaproponowano nastepujace wartosci w stosunku do pierwotnych:

background image

B: -0.0406 0.0704 0.2381 0.4652 0.2381 0.0704 -0.0406

z

-0

z

-1

z

-2

z

-3

z

-4

z

-5

z

-6

B’: -0.0625 0.0625 0.2500 0.5000 0.2500 0.0635 -0.0625

Po zasymulowaniu w MATLABIE nowy filtr ma nastepujace charakterystyki:

Rys.9 Transmitancja filtru dla nowych wspólczynników

Rys.10 Dla nowego filtru: widmo sygnalu oryginalnego (niebieski) i po filtracji(zielony)

background image

Widac, ze w nowym filtrze nastapila poprawa transmitancji dla pasma przepustowego, teraz
wynosi ok. 1. Nastapilo to kosztem poszerzenia pasma przejsciowego oraz zwiekszeniem
poziomu listków bocznych.
Przyjeto taki schemat realizacji.

Budowa con1620:
Uklad ten zbudowany zostal edytorze tekstowym jako uklad przesuwajacy bity o zadana
liczbe w prawo. Do realizacji tego ukladu nie wykorzystano rejestrów przesuwajacych, a
jedynie „przesunieto polaczenia” wychodzace na uklad sumujacy. Przesuniecie
spowodowalo, ze uklad dziala jakby dzielil sygnaly z poszczególnych galezi o zadana potege
2. Dodatkowo uklad dostosowuje szerokosc wyjscia z galezi na wejscie sumatorów.
Zawartosc pliku tekstowego opisujacego uklad zawarta jest w Zalacznikach tekstowych
pkt. b)
a symbol ukladu zawarty jest w Zalacznikach graficznych pkt. b).

c) uklad sumujacy przemnozone próbki

Uklad sumujacy zostal oparty o gotowe bloki wygenerowane przez megafunkcje

lpm_add_sub. Powodem do wykorzystania tej funkcji jest jej szybkosc. Wlasny uklad
sumujacy mial znacznie dluzszy czas dzialania, przy czym zajetosc ukladu jest do przyjecia.
Próbki przychodzace z ukladu mnozacego con1620 zostaja rozszerzone do 20 bitów.
Spowodowane jest to kolejna wartoscia szerokosci dodawanego slowa. Musimy przyjac
równiez wiekszy zakres gdyz w przypadku szczególnym tj. gdy przyjdzie 5 próbek o
maksymalnej wartosci, na wyjsciu sumatora pojawi sie przetworzona próbka o wartosci
równej 2,125 wartosci maksymalnej. Dlatego równiez wymagane jest rozszerzenie zakresu o
co najmniej 2 bity.

Uklad sumujacy dziala w ten sposób, ze najpierw sumuje wszystkie sygnaly pochodzace od
dodatnich wag filtru, równolegle dodaje sygnaly pochodzace od ujemnych wag. Nastepnie
sprawdza czy suma dodatnich galezi jest wieksza od sumy ujemnych galezi. Na tej podstawie
ustala znak wyniku. Dalej przesyla wynik oraz znak (1 dla liczby ujemnej).

Porównywanie liczb oraz ustalanie znaku nastepuje w module com20bit (opis w
Zalacznikach tekstowych pkt. c).

Pliki graficzne przedstawiajace rozmieszczenie i polaczenie poszczególnych sumatorów
przedstawiono w Zalacznikach graficznych pkt. c.

d) uklad sprawdzajacy nasycenie wyniku

Uklad sprawdza czy nie nastapilo nasycenie wyniku na 16 bitach (a dokladniej, czy pojawila
sie 1 któryms na bicie bardziej znaczacym od 16). Jesli tak, nastepuje podanie na wyjsciu
maksymalnej liczby reprezentowanej na 16 bitach tj. 0xFFFF.
Plik zawierajacy opis ukladu zawarty jest w Zalacznikach tekstowych pkt. d. W
Zalacznikach graficznych pkt. d przedstawiony jest symbol modulu.

background image

Po polaczeniu wszystkich bloków w calosc otrzymujemy nastepujaca strukture:

Rys.11 Zrealizowany filtr z wyszczególnionymi blokami logiczno-operacyjnymi

background image

3. Symulacje zaprojektowanego ukladów

Na wejsciu podano wektor zlozony z nastepujacych wartosci:

0, 0, 400, 800,800,100,100,65535,65535,65535,0,0

Na wyjsciu powinny pojawiac sie nastepujace wartosci, stan poczatkowy przyjmiemy jako
zaladowanie do rejestru pierwszej nie zerowej wartosci:
Na wyjsciu:

I

y=-400/16=-25

II

y=-800/16+400/16=-25

III

y=-800/16+800/16+400/4=100

IV

y=-1000/16+800/16+800/4+400/2=388

V

y=-1000/16+1000/16+800/4+800/2+400/4=700

VI

y=-65535/16+1000/16+1000/4+800/2+800/4+400/16=-3158

VII

y=-65535/16+65535/16+1000/4+1000/2+800/4+800/16-400/16=975

VIII

y=-65535/16+65535/16+65535/4+1000/2+1000/4+800/16-800/16=17133

IX

y=-0/16+65535/16+65535/4+65535/2+1000/4+1000/16-800/16=53507

Takie wartosci powinny sie pojawic na wyjsciu ukladu.

Rys.12 Symulacja przebiegu czasowego w zbudowanym ukladzie.

Widac, ze uklad zachowuje sie zgodnie z oczekiwaniami. Dwie pierwsze nie zerowe wartosci
na wyjsciu oraz 3158 sa ze znakiem -, gdyz stan znak przyjmuje VCC.
Pominieto zmieszczenie symulacji poszczególnych elementów, gdyz podczas tworzenia filtru,
przed przystapieniem do nastepnej fazy projektu dokladnie symulowano dotychczasowy
uklad. W razie jakis nieprawidlowosci symulacja calego ukladu powinna dac wynik
negatywny, tak sie jednak nie stalo.

background image

4. Analiza rozwiazania, ograniczenia oraz parametry.

Uklad sklada sie z 2 zasadniczych czesci:

I-sekwencyjnej : zestaw rejestrów zestaw7
II-kombinacyjnej: pozostala czesc tj. con1620, add_6, spr_nasyc

Podstawowe ograniczenie wynika z szybkosci dzialania czesci kombinacyjnej. Najdluzsza
sciezka, która propaguje sygnal daje opóznienie:129,4 ns
Opóznienie dawane przez czesc sekwencyjna wynosi: 10,9 ns

Zajetosc ukladu wynosi 287 LCs dla ukladu serii FLEX10K .
Nie jest mozliwe podanie zajetosci poszczególnych modulów gdyz w wyniku optymalizacji
czesc LCs jest niepotrzebna i jest pomijana przez kompilator Krytycznym modulem jest
con1620, który sam zajmuje kilkadziesiat LCs, a po zlaczeniu z innymi modulami jego udzial
drastycznie spada.

Bibliografia:

1. Adam Dabrowski „Przetwarzanie sygnalów przy uzyciu procesorów sygnalowych”
2. Richard G. LyonsWprowadzenie do cyfrowego przetwarzania sygnalów”
3. T.Luba, B.Zbierzchowski ” Komputerowe projektowanie ukladów cyfrowych”
4. A.Wojtkiewicz „Cyfrowe przetwarzanie sygnalów-cwiczenia laboratoryjne”

background image

Zalaczniki tekstowe:

a) plik opisujacy rejestr 16 bitowy

SUBDESIGN

reg16

%Uklad majacy za zadanie przekazywanie danych 16 bitowych " rejestr 16
bitowy"

posiada wejscie zezwalajace na zmniane stanu.

%

(

d[15..0], load, clk

:

INPUT

;

% wejscie rejestru %

q[15..0]

:

OUTPUT

;

% wyjscie rejestru %

)

VARIABLE

ff[15..0]

:

DFFE

;

BEGIN

ff[].clk=clk;
ff[].ena=load;
ff[].d=d[];
q[]=ff[].q;

END;

b) plik opisujacy uklad mnozacy con1620

SUBDESIGN

con1620

(

i[15..0], i_1[15..0], i_2[15..0], i_3[15..0], i_4[15..0], i_5[15..0],

i_6[15..0]

:

INPUT;

o[19..0], o_1[19..0], o_2[19..0], o_3[19..0], o_4[19..0], o_5[19..0],

o_6[19..0]

:

OUTPUT;

)

%

"Uproszczony" uklad mnozacy tj przesuwajacy bity o zadana liczbe,

podaje we wlasciwe miejsce na wyjsciu

poprawne wartosci juz po przesunieciu %

BEGIN

o[11..0]=i[15..4];
o[19..12]=

GND

;

o_1[11..0]=i_1[15..4];
o_1[19..12]=

GND

;

o_2[13..0]=i_2[15..2];
o_2[19..14]=

GND

;

o_3[14..0]=i_3[15..1];
o_3[19..15]=

GND

;

o_4[13..0]=i_4[15..2];
o_4[19..14]=

GND

;

o_5[11..0]=i_5[15..4];
o_5[19..12]=

GND

;

o_6[11..0]=i_6[15..4];
o_6[19..12]=

GND

;

END;

background image

c) plik opisujacy uklad porównujacy com20bit

SUBDESIGN

comp20bit

(

a_i[19..0], b_i[19..0]

:

INPUT

;

a_o[19..0], b_o[19..0], znak

:

OUTPUT

;

)

% Jesli a_i jest wieksze od b_i, to trzeba zamienic kanaly (szyny)%

BEGIN

IF

(a_i[]>b_i[])

THEN

a_o[]=a_i[];
b_o[]=b_i[];
znak=

GND

;

%wynik jest liczba dodatnia%

ELSE

a_o[]=b_i[];
b_o[]=a_i[];
znak=

VCC

;

%wynik jest liczba ujemna %

END IF

;

END

;

d) plik opisujacy spr_nasyc

SUBDESIGN

spr_nasyc

(

i[19..0]

:

INPUT

;

o[15..0]

:

OUTPUT

;

)

BEGIN

IF

((i19#i18#i17#i16))

THEN

o[15..0]=B"

1111111111111111

";

ELSE

o[15..0]=i[15..0];

END IF;

END

;

background image

Zalaczniki graficzne:

a) rysunki przedstawiajace strukture zestaw7

Opis: Symbol gotowego do uzycia modulu zestaw7

Opis: struktura wewnetrzna ukladu zestaw7 wraz z polaczeniami u wyprowadzeniami

background image

b) rysunki przedstawiajace con1620

Opis: symbol gotowego do uzycia modulu con1620

c) rysunki przedstawiajace uklad add_6

Opis: struktura wewnetrzna modulu add_6

Opis: symbol ukladu add_6

background image

d) rysunki przedstawiajace spr_nasyc

Opis: symbol ukladu spr_nasyc


Wyszukiwarka

Podobne podstrony:
[Sygnały] Cw 9 - Okna czasowe i filtry FIR, PWR, pps, Sygnały
cw 9 Okna czasowe i filtry FIR
Sygnały, [Sygnały] Cw 10 - filtry FIR i IIR, Przetwarzanie Sygnałów 2
filtry cyfrowe, porównanie charaktrystyk filtrów FIR, Marek Korejwo
FIR
FiR matma w2N
FILTRY UV 2
FiR Zmienne losowe1
FiR Matma w7 2011
FiR Prawdopodobieństwo2
FiR matma 11
filtry aktywne(1)

więcej podobnych podstron