You are on page 1of 24

MATLAB ve ISE ile FIR Filtre

Tasarm ve Gereklenmesi
Saysal Filtreler ve Sistemler Dersi
Uygulama Notu
Ara. Gr. Ramazan Yenieri
yenicerir@itu.edu.tr
24.03.2010

Hakknda & Balarken Gerekenler

Bu uygulama notunda MATLAB (R2009a) ve Xilinx ISE (i9.2) kullanlmtr.


MATLAB ile istenen frekans cevabn veren FIR filtre en dk dereceli olarak
tasarlanm, katsaylar kuantalanarak saysal gereklemeye hazr hale getirilmi ve
rnek giri dizisi olulturulmutur. Saysal filtre FPGA zerinde gereklenebilecek
ekilde ISE ile tasarlanm ve ISE ile benzetimi yaplmtr. Benzetim sonucu oluan
k dizisi yine MATLAB ile analiz edilmi ve gereklenen filtrenin istenen karakteri
sergiledii gsterilmitir.
Notlarn anlalabilmesi iin MATLAB dili ve Verilog Donanm Tasarlama Dili (HDL)
bilinmelidir.
2

Filter Design & Analysis Toolun altrlmas

Grafiksel kullanc arayz (GUI) ile saysal filtre tasarlamaya yarayan ara
altrmak iin MATLAB komut satrna:
>> fdatool
Sadaki pencere alacaktr:

Tasarlanan filtreyi Men>File>Save Session ile fda uzantl bir dosya olarak
kaydedebilir, daha sonra bu dosya zerinden alabilirsiniz.

FDAtool ile rnek alak geiren filtre tasarm (1)

FDAtoolun en sol alttaki butonuna tklanarak Design Filter


ekran alr.
Bu ekrandan filtrenin cevap tr alak geiren,
iren tasarm
metodu FIR Equiripple olarak seilir.
Filtrenin FPGA zerinde en az alan kaplamas iin en az
sayda arpma ve toplama ilemi gerekleiyor olmas gerekir.
Bunun iin filtre derecesi minimum derece olarak seilir.
Gereklenecek filtrenin rnekleme frekans 100 KHz olarak
seilsin. 20 KHze kadar geirme band, 30 KHzden sonras
sndrme band olsun.
Ayrca geirme bandnda iaretin en fazla 0.1 dB
bastrlmasna ya da kuvvetlendirilmesine izin verilirken,
sndrme bandnda en az 10 dB bastrma gereklesin.
Bu seimlerden sonra Design Filter butonu tklanarak filtre
katsaylar retilmi olur. Bu admdan sonra pencerede
tasarlanan filtrenin genlik cevab grlr.
4

FDAtool ile rnek alak geiren filtre tasarm (2)

FDAtool, aadaki genlik cevab grafiini retecektir.


Grafik zerinde tklanarak yerletirilen iaretiler ile filtemizin 20 KHzde yaklak 0.044
dB bastrdn, 20 KHzden sonra frekans arttka bastrmann arttn, 26 KHzin 3
dB bastrma ile kesim frekans olduunu, 30 KHze gelindiinde bastrma iddetinin
11.45 dBe ulatn ve daha yksek frekanslarda bastrma iddetinin en az 11.34 dB
olduunu grmek mmkn olur.

FDAtool ile rnek alak geiren filtre tasarm (3)

FDAtool, tasarlanan filtrenin Direct-Form FIR yapsnda, 11.


dereceden,
dereceden kararl bir filtre olduunu filtre bilgilendirme
blgesinde gsterir.
FIR filtre tasarladmz iin kararl sonu vereceini zaten
bekleriz.
st sradaki Phase response butonu ile filtrenin faz cevabn
grmek mmkn olur.

Yine st sradaki butonlardan filtrenin darbe cevabn, basamak


giri cevabn, kutup ve sfrlarnn yerlerini grmek
mmkndr.
Ayrca, Filter coefficients butonu ile FDAtoolun hesaplad
filtre katsaylar grlebilir.
6

FDAtool ile rnek alak geiren filtre tasarm (4)

11. dereceden FIR filtrenin 12 adet katsays sada gsterildii


gibi bulunmutur. Katsaylarn simetrik olduuna dikkat ediniz.
Elde edilen bu katsaylar ile FPGA zerinde filtre gereklenmek
istenirse kayan nokta aritmetii gerekletirebilen devre
paralar kullanlmas gerekir.
Bu tr bir gerekleme yerine, sabit noktal iaretli say aritmetii
kullanlmas FPGA gereklemesini kolaylatrr.
aretli saynn 2nin tmleyeni formunda gsterilmesi saysal
devre zerinde toplama ve karma ilemlerini tanmlamak
olduka kolaylar. Fakat arpma ilemi iin biraz daha aba
sarfetmek gerekir.
FDAtoolda soldaki butonlardan Set quantization parameters
butonu ile katsaylar sabit noktaya dntren pencere alr.

FDAtool ile rnek alak geiren filtre tasarm (5)

Bu pencerede ncelikle filtre aritmetii Doubleprecision floating-pointten Fixed pointe


point alnmaldr.
Filtre hassasiyeti Fullden Specify alla
all alnr.
Filtrenin giri iareti -1 ~ +1 arasnda genlie sahip
olacak ekilde ayarlanabilir. Bakldnda katsaylarn
da -0.2 ~ +0.5 aralnda olduu grlmektedir.
Filtrenin geirme bandnda birim kazanl olmas
sebebiyle k iaretinin de -1 ~ +1 genlikli olaca
bilinir. Katsaylarla arlklandrlan rneklerin ise -0.5
~ +0.5 arasnda olaca aktr. Dolays ile -2 ~ +2
araln gsteren sabit noktal say aritmetii
kullanlmas bizim iin yeterli olacaktr.
Bunun iin katsaylar 8 bit ile ifade etmeli ve ondalk
ksm iin 6 bit ayrmalyz.

FDAtool ile rnek alak geiren filtre tasarm (6)

Giri-k iaretleri iin de benzer ilemler


Input/Output sekmesini kullanlarak gerekletirilir.

Yine filtrenin ara deerleri iin bit genilii ve ondalk


ksm tanmlanmaldr.

Apply butonu ile aritmetik zerinde yaplan


deiiklikler filtreye uygulanr.
9

FDAtool ile rnek alak geiren filtre tasarm (7)

Kuantalanan filtre katsaylar, Filter Coefficients penceresinde


grlr.
Tekrar genlik cevab penceresine geildiinde kuantalama ilemi
sonucunda filtre karakteristiinin ne kadar deitii gzlenir.

Grafikten grld zere, yaplan deiiklikler filtre


karakteristiini byk lde ayn tutarken, aritmetik ilemleri
kolaylatrmas asndan ok ciddi avantaj salar.
10

FDAtool ile rnek alak geiren filtre tasarm (8)

Bu noktadan sonra filtrenin .fda dosyas olarak kaydedilmesi


nerilir.
Ardndan Men > File > Export ilevi ile sadaki pencere alr.
MATLAB alma uzayna, Num deiken ismi ile katsaylarn
en son hali (kuantalanm) aktarlabilir.
Artk MATLAB komut satrna geilebilir.
Katsaylar onaltlk ya da ikilik forma dntrmek iin tercih
ettiimiz say tipini tanmlayan bir kuantalayc (quantizer)
quantizer da
burada olutururuz. Bunun iin:
>> q = quantizer('fixed','floor','saturate',[8 6])
q =

DataMode
RoundMode
OverflowMode
Format

=
=
=
=

fixed
floor
saturate
[8 6]

Bu kuantalayc ile herhangi bir say kullandmz say


formatna dndrlebilir ya da geri alnabilir.

11

FDAtool ile rnek alak geiren filtre tasarm (9)

Artk, katsaylarn ikili


tabanda ifadesi iin:

Onaltlk tabanda
ifadesi iin:

>> num2bin(
num2bin q, Num )

>> num2hex(
num2hex q, Num )

ans =

ans =

11111110
00000011
00000001
11110111
00001001
00011110
00011110
00001001
11110111
00000001
00000011
11111110

fe
03
01
f7
09
1e
1e
09
f7
01
03
fe

Bu fonksiyonlarn tersi
bin2num ve hex2num
mevcuttur.
Verilog ile filtre devresini
tanmlarken bu ikilik taban ya da
onaltlk tabandaki katsay
ifadeleri kullanlacaktr.
Katsaylar yukardan aaya,
girile arplacak katsay, birinci
geciktirilmi giri ile arplacak
katsay, , yedinci geciktirilmi
giri ile arplacak katsay
olarak sraldr.

12

MATLABde filtre iin giri iareti hazrlama (1)

Filtrenin tasarmndan sonra filtre iin giri iareti hazrlanr.


Filtre karakteristiini doru olarak test edebilmek iin giri iaret dizisi, farkl
frekanslardaki sinslerin toplam ya da farkl zaman aralklarnda farkl tek
frekansa sahip sins iareti olarak hazrlanmaldr.
kinci yntem ile iaret dizisi hazrlanacaksa u rnek kod kullanlabilir:
Ts = 10e-6;
% rnekleme periyodu 10 us, fs=100KHz
fNy = 1 / Ts / 2;
% Nyquist frekans
ns = 1000;
% dizideki rnek says
nf = 10;
% dizide ka farkl frekansta iaret olaca
for i = 1:ns
freq(i) = (fNy/ns) * round(i/ns*nf)*ns/nf;
% rneklerin frekans
end
for i = 1:ns
S(i) = cos(2*pi*freq(i)*Ts*i);
end
QS = num2hex(q, S );

QS deikeni 1000 adet kuantalanm giri rneinden olumaktadr. Bu dizi


ve frekans spectrumu u rnek kodla izdirilebilir:
S2 = hex2num(q, QS );
figure;
subplot(2,1,1);plot(S2)
spec = abs(fft(S2));
subplot(2,1,2);plot([0:100:50e3-100],spec2(1:ns/2));

Ve dosyaya kaydedilir:
dosya = fopen('giris_data.txt','w');
for i = 1:ns
fprintf(dosya, '%s\n', QS(i,:));
end
fclose(dosya);

13

MATLABde filtre iin giri iareti hazrlama (2)

Bu sayede elde edilen


QS dizisi
izdirdiimizde stteki
grafii, QSin frekans
spectrumunu
izdirdiimizde alttaki
grafii elde ederiz.
Frekans spektrumu 50
KHzye yani Nyquist
frekansna kadar
izdirilmitir. 50 ~ 100
KHz aralnda 0 ~ 50
KHznin simetrii, 100
KHzden sonra
Shannonun
Shannon
rnekleme teoreminin
dedii gibi 0 ~ 100
KHzlik spektrum
paras kendini tekrar
eder.
14

ISEde filtreyi Verilog HDL ile tasarlama (1)

Ondalk ksm 6 bit olan 8 bitlik 2nin tmleyeni formunda filtre katsaylarn ve
ayn formda 1000 rneklik giri dizisini elde ettikten sonra Xilinx ISE ile filtre
tasarlanr.
lk olarak ISEde bo bir proje oluturulur. lk pencerede projenin yeri ve ad
belirlenirken ikinci pencerede filtrenin zerinde gereklenecei FPGA,
sentezleyici, benzetim arac ve tercih edilen HDL dili seilir. Dier pencereler
deitirilmeden ilerlenir.

15

ISEde filtreyi Verilog HDL ile tasarlama (2)

Projeye yeni bir Verilog modul eklenir. Bu modle filtre.v adn verelim.
Katsaylarla arlklandrp toplayarak k oluturma bu modl ierisinde
kombinezonsal olarak gereklenecek, giri iaretinin tutucular zerinde
geciktirilmesi ise ardl olarak gerekletirilecektir.
imdi filtreyi, tanmlayan Verilog kodu zerinden inceleyelim.

timescale satr benzetim iin ISEnin


dosyaya otomatik ekledii bir satrdr.
2. satrda moduln ad da otomatik
olarak eklenmi gelir fakat parantez
ierisindeki giri-k listesini
tasarmc ekler.
3.-4. satrlarda saat girii, filtre girii
ve filtre k tanmlanr.
6.-17. satrlarda da katsaylarmz
sabit kablo balantlar olarak
tanmlanr.
16

ISEde filtreyi Verilog HDL ile tasarlama (3)

18.-28. satrlarda giri iaretinin


gemi deerlerini saklayacak
kaydediciler, balangta deerleri 0
olacak ekilde tanmlanr.
29.-40. satrlarda arpc alt
modllerinin klarn kullanabilmek
iin gereken kablolar tanmlanr.
2nin tmleyeni ile toplama pozitif ve
negatif saylar iin tanmlyken,
arpma tanmszdr. Yani * operatr
ile arpma ilemi, arplan saylar 2nin
tmleyeni olarak tanmlanm bile olsa,
onlar ikilik tabanda tamsayym gibi
sonu retir.
Bu yzden iaretli saylarla arpma
ilemi yapan alt modller tasarma
eklenmeli ve filtre modlnde katsay
ile rnek deerleri bu alt modller ile
arplmaldr.
41.-52. satrlar arasnda da bu alt
17
modller filtreye modlne eklenmitir.

ISEde filtreyi Verilog HDL ile tasarlama (4)

53-.65. satrlarda always blounda saat


iaretinin her ykselen kenarnda
tetiklenen bir ardl devre kurulmutur.
Bu yap esasen bir kaymal kaydedicidir.
Her saat tetiklemesinde giri deeri bir
nceki girii saklayan kaydediciye
aktarlr, bir ncekinin deeri iki ncekini
tutan kaydediciye aktarlr
66. satrda k arpclarn tamamnn
toplam olarak atanr. Assign ile yaplan
bu atama kombinezonsal bir ifadedir.
67. satrda modl kodu sonlandrlr. Bu
satr ISE otomatik eklemektedir.
rneklerin geciktirilmesi her saat
tetiklemesi ile gerekletiinden, devrenin
saat frekans, filtrenin rnekleme frekans
ile ayn, 100 KHz, olmaldr.
18

ISEde filtreyi Verilog HDL ile tasarlama (5)

Filtre modln tanmladktan sonra arpc


modl tanmlanr.
arpc modln ilevi, arplacak saylarn
ilk bitlerine (2nin tmleyeni formatnda
iareti belirtir) bakarak negatif saylar
pozitife evirmek, ardndan pozitif saylar
arpmak ve girilerin iaretlerin ex-or
ifadesine gre arpm sonucunu pozitif
brakmak ya da negatife evirmektir.
Bu ekilde tanmlanan 11. dereceden FIR
filtre devresinin bata seilen FPGAda ne
kadar alan kulland sadaki tablodadr.

19

ISEde filtrenin benzetimi (1)

MATLAB ile hazrlanan 1000 rneklik giri


dizisini kullanarak benzetim yaplamas iin
gereken test kodu yine Verilog ile yazlr. lk
adm kaynak dosyalara Behavioral
Simulation iin bakmaktr. Bunun iin
sadaki seenek seilir.
Daha sonra filtre_test adnda yeni bir
Verilog Test Fixture projeye eklenir.
Eklenen dosyada ISEnin hazrlad satrlar
sadaki gibidir.

20

ISEde filtrenin benzetimi (2)

Benzetim iin test fixture kodu


sadaki hale getirilir.
Bu kodda giri iaretleri
dosyadan okunur, 100 KHz
frekansl saat iareti filtre
modlne uygulanr ve k
deerleri baka bir dosyaya
onaltlk tabanda yazlr.
Benzetim altrldnda ve
10 ms srdrldnde
aadaki gibi bir dalga formu
elde edilir.
Benzetim penceresi
kapatldnda k
deerlerinin yazld metin
dosyas da hazr hale gelir.

21

ISEde filtrenin benzetimi (3)

k deerlerini tutan dosya MATLAB tarafndan alr, okunur, izdirilir ve frekans


spektrumu izdirilir. Bunun iin MATLABde u kodlar altrlabilir:
dosya = fopen('cikis_data.txt','r');
ns = 1000;
for i = 1:ns
FS(i,:) = fscanf(dosya, '%s', 1);
end
fclose(dosya);
q = quantizer('fixed', 'ceil', 'saturate', [8 6]);
FS = hex2num(q, FS );
spec = abs(fft(FS));
figure;
subplot(2,1,1);plot(FS)
subplot(2,1,2);plot([0:100:50e3-100],spec(1:ns/2))

22

ISEde filtrenin benzetimi (3)

Sada k rneklerinin
MATLAB kodu ile
izdirilmi grafii mevcut.
Geirme bandnda (giri
iareti frekans 0 iken)
filtre k genlii 1de
kalmakta fakat sndrme
bandnda olan 30 KHzde
genlik 0.2813e
dmektedir.
20log(0.2813) = -11.0166
dB bastrmaya karlk
gelmektedir. Filtre
tasarmna balarken
(FDAtoolda) 30 KHzin 11.44678 bastrlaca
bekleniyordu.
Dolaysyla tasarlanan
filtre ile saysal
gereklemesi
rtmektedir.
23

Sonu

Filtre katsaylarnn FDAtool gibi aralarla elde edilmesi tasarmcya kolaylk


salamaktadr. Bu aralar ile filtrenin zellikleri detayl olarak analiz
edilebilmektedir.
Kuantalanm katsaylar (burada 8 bit sabit noktal iaretli saylar
kullanlmtr), filtre gereklemesi esnasnda daha az FPGA alan
kullanlmasn salarken, filtre karakterini bozmamtr.
Xilinx XC3S500E FPGAs zerinde 20 adet hazr arpma blou
bulundurduundan 19. dereceden bir FIR filtre, en kt 20 MHz gibi bir
maksimum rnekleme frekans ile dorudan gereklenebilir. Pipeline yaplar
kullanarak rnekleme frekans 100 MHz zerine kartlabilir.

24

You might also like