Anda di halaman 1dari 11

MODUL III IIR (Infinite Impulse Response)

A. Tujuan Mahasiswa memahami filter IIR Mahasiswa dapat merancang filter IIR pada TMS320C6713

B. Dasar Teori Dalam perancangan filter digital dikenal istilah filter IIR (Infinite Impulse Response) dan filter FIR (Finite Impulse Response). Perbedaannya terletak pada respon impuls, filter IIR memilki respon impulse yang tidak terbatas sedangkan filter FIR memiliki respon impuls yang terbatas. Respon impuls yang tidak terbatas pada IIR disebabkan oleh adanya feedback atau umpan balik pada filter. Filter IIR secara komputasi lebih efektif dibanding filter FIR karena membutuhkan koefisien filter yang lebih sedikit. Fungsi transfer filter IIR ditunjukkan pada persamaan di bawah ini dengan ak dan bk adalah koefisien filter.

H (z) =

1 b0 +b1 z + +bN z N 1 1 +a1 z + +a M z M

= k =0 M 1+ a k z k

z k

k= 1

Sedangkan persamaan perbedaan filter IIR adalah sebagai berikut


y[ n] = h[ k ] x[ n k ]
k =0 N

= bk x[ n k ] a k y[ n k ]
k =0 k =1

18

x ( n

y ( n

- 1

- 1

- 1

- 1

Gambar 1. Struktur IIR dengan M=N=2

C. Peralatan Alat yang dibutuhkan:


-

1 set PC yang dilengkapi Code Composer Studio Versi 3.1 TMS320C6713 DSK board +5V universal Power Supply AC Power Cord USB Cable Osiloskop Function Generator

D. Prosedur Praktikum MATLAB

19

1. Jalankan MATLAB dan ketikkan program berikut untuk mendapat nilai koefisien dari LPF dan HPF
2. %IIR Low Pass Butterworth filter %sampling rate-24000 order = 2 cf=[2500/12000]; %cutoff freq - 2500 [num_bw,den_bw1]=butter(order,cf,'low');

3. Program di atas untuk mencari nilai koefisien dari LPF dengan spesifikasi orde 2, frekuesi cutoff 2500. 4. Untuk simpanlah nilai koefisien yang didapat dan carilah nilai koefisien lain dengan spesifikasi sebagai berikut. a. LPF (Freq cutoff = 800) b. HPF (Freq cutoff = 2500) c. HPF (Freq cutoff = 4000) d. HPF (Freq cutoff = 7000)
5. Untuk

mendapat

nilai

koefisien

HPF,

ubahlan

program

dari menjadi

[num_bw,den_bw1]=butter(order,cf,'low'); [num_bw,den_bw1]=butter(order,cf,'high'); 6. Gabungkan nilai koefisien yang didapat sehingga menjadi format sebagai berikut. const signed int filter_Coeff[]= { 0.6268,-1.2537,0.6268,1.0000,-1.1092,0.3982 // // // // }; 0.0095,0.0191,0.0095,1.0000,-1.7056,0.7437 0.0722,0.1445,0.0722, 1.0000,-1.1092,0.3982 0.4652,-0.9303,0.4652,1.0000,-0.6202,0.2404 0.2202,-0.4404,0.2202,1.0000,0.3076,0.1883 /*HPF 2500*/ /*LPF 800 */ /*LPF 2500 */ /*HPF 4000 */ /*HPF 7000 */

20

7. hilangkan tanda (//) jika ingin mengaktifkan filter. DSK 6713 1. Hubungkan DSP board pada PC kemudian nyalakan 2. Buka Code Composer Studio
3. Pilih Debug Connect, untuk menghubungkan CCS dengan DSK6713 4. Pilih Project New

Arahkan lokasi direktori ke tempat lain jika perlu (folder baru). Berilah nama project dengan nama iir Pilih Project Type dengan Executable (.out) Pilih Target dengan TMS320C67XX Klik tombol Finish
5. Pilih File New DSP/BIOS Configuration. Pilih dsk6713.cdb dan klik tombol OK.

Biarkan konfigurasi sesuai defaultnya. Pilih File Save, simpan di folder project yang sebelumnya dibuat (harus 1 folder) dan beri nama fft_bios lalu klik Save. Maka 7 file akan terbentuk secara otomatis pada folder tersebut.
6. Masukkan file-file DSP/BIOS ke dalam project, pilih Project Add Files to Project.

Pilih Files of type dengan Configuration Files (*.cdb), lalu pilih iir_bios.cdb dan kemudian klik Open.
7. Pilih Project Scan All File Dependencies. Maka secara otomatis file-file bentukan

DSP/BIOS yang lain akan masuk ke dalam project.


8. Masukkan file library yang diperlukan. Pilih Project Add Files to Project, Pilih Files

of type dengan Object and Library Files (*.o*;*.l*), arahkan lokasi direktori ke C:\CCStudio_v3.1\C6000\dsk6713\lib lalu pilih dsk6713bsl.lib dan klik tombol Open.

21

9. Menambahkan file source. Pilih File New Source File. Setelah halaman kerja terbuka

pilih File Save. Arahkan kembali ke lokasi direktori ke dalam folder project yang telah dibuat. Beri nama iir.c, klik tombol Save.
10. Tambahkan file source ke dalam project. Pilih Project Add Files to Project. Arahkan

lokasi direktori ke folder project iir. Pilih Files of type dengan C Source Files (*.c;*.cpp), pilih file iir.c lalu klik tombol Open.
11. Mengatur pilihan proses build. Pilih Project Build Options. Pilih kategri Prepocessor.

Pada

kolom

Include

Search

Path

(-i),

isi

dengan

C:\CCStudio_v3.1\C6000\dsk6713\include. Pada kolom Pre-Define Symbol (-d), isi dengan _DEBUG; SHIP_6713, lalu klik tombol OK.
12. Masukkan kode berikut ke dalam iir.c

#include "IIR_bioscfg.h" #include "dsk6713.h" #include "dsk6713_aic23.h"

const signed int filter_Coeff[]= { 0.6268,-1.2537,0.6268,1.0000,-1.1092,0.3982 // // // // }; /* konfigurasi codec */ DSK6713_AIC23_Config config = {\ 0x0017, /* 0 DSK6713_AIC23_LEFTINVOL left line input channel volume */\ 0.0095,0.0191,0.0095,1.0000,-1.7056,0.7437 0.0722,0.1445,0.0722, 1.0000,-1.1092,0.3982 0.4652,-0.9303,0.4652,1.0000,-0.6202,0.2404 0.2202,-0.4404,0.2202,1.0000,0.3076,0.1883 /*HPF 2500*/ /*LPF 800 */ /*LPF 2500 */ /*HPF 4000 */ /*HPF 7000 */

22

0x0017, /* 1 DSK6713_AIC23_RIGHTINVOL right line input channel volume */\ 0x00d8, /* 2 DSK6713_AIC23_LEFTPVOL left channel headphone volume */\ 0x00d8, /* 3 DSK6713_AIC23_RIGHTPVOL right channel headphone volume */\ 0x0011, /* 4 DSK6713_AIC23_ANAPATH Analog audio path control */\ 0x0000, /* 5 DSK6713_AIC23_DIGPATH Digital audio path control */\ 0x0000, /* 6 DSK6713_AIC23_POWERDOWN Power down control*/\ 0x0043, /* 7 DSK6713_AIC23_DIGIF Digital audio interface format */\ 0x0081, /* 8 DSK6713_AIC23_SAMPLERATE Sample rate control */\ 0x0001 /* 9 DSK6713_AIC23_DIGACT Digital interface activation */\ }; int l_input, r_input, l_output, r_output;

void main() { DSK6713_AIC23_CodecHandle hCodec;

/* Inisialisasi library untuk board */ DSK6713_init();

/* memulai codec */ hCodec = DSK6713_AIC23_openCodec(0,&config);

DSK6713_AIC23_setFreq(hCodec,3);

while(1) {
23

/* baca sample untuk channel kiri */ while(!DSK6713_AIC23_read(hCodec,&l_input)); /* baca sample untuk channel kanan */ while(!DSK6713_AIC23_read(hCodec,&r_input));

l_output = IIR_FILTER(&filter_Coeff, l_input); r_output = l_output;

/* kirim sample ke channel kiri */ while(!DSK6713_AIC23_write(hCodec,l_output)); /* kirim sample ke channel kanan */ while(!DSK6713_AIC23_write(hCodec,r_output)); } /* tutup codec */ DSK6713_AIC23_closeCodec(hCodec); } signed int IIR_FILTER(const signed int * h, signed int x1) { static signed int x[6]={0,0,0,0,0,0}; /* x(n),x(n-1),x(n-2). harus static */ static signed int y[6]={0,0,0,0,0,0}; /* y(n),y(n-1),y(n-2). harus static */ int temp=0;

temp = (short int)x1; /* menyalin input ke variable temp */

x[0]=(signed int)temp; /* menyalin input untuk x[stages][0] */ temp = ((int)h[0]*x[0]); /* B0*x(n) */

24

temp += ((int)h[1]*x[1]); /* B1/2*x(n-1) */ temp += ((int)h[1]*x[1]); /* B1/2*x(n-1) */ temp += ((int)h[2]*x[2]); /* B2*x(n-2) */ temp -= ((int)h[4]*y[1]); /* A1/2*y(n-1) */ temp -= ((int)h[4]*y[1]); /* A1/2*y(n-1) */ temp -= ((int)h[5]*y[2]); /* A2*y(n-2) */

/* membagi nilai temp dengan koefisien [A0] */

temp>>=15;

if(temp>32767) { temp = 32767; } else if(temp<-32767) { temp = -32767; }

y[0] = temp;

/* shuffle calues along one place for next time */

y[2]=y[1]; y[1]=y[0];

25

x[2]=x[1]; x[1]=x[0];

return (temp<<2); }

13. Pilih Project Rebuild All 14. Load Program yang telah dibuat, pilih File Load Program. Masuk ke folder iir, di

dalam folder tersebut masuk ke folder bernama Debug. Lalu pilih iir.out dan klik Open.
15. Untuk menjalankan program pilih Debug - Run (F5)

16. Setting function generator dengan amplitude (1Vpp) dan frekuensi 500Hz. 17. Amati hasil keluaran sinyal pada layar Osiloskop.
18. Ubah-ubahlah nilai frekuensi pada Function Generator secara bertahap (kenaikan 500Hz)

hingga mencapai 5000Hz untuk melihat respon filter. 19. Catatlah perubahan yang terjadi setiap penggantian frekuensi tersebut.

E. Evaluasi 1. Lakukan pengukuran sesuai table di bawah a. HPF, Fc=2500Hz, Amplitudo = 1 Vpp Frekuensi (Hz) 500 1000 2000 3000 4000 5000 Vout (Vpp)

26

b. LPF, Fc=800Hz, Amplitudo = 1 Vpp Frekuensi (Hz) 500 1000 2000 3000 4000 5000 Vout (Vpp)

c. LPF, Fc=2500Hz, Amplitudo = 1Vpp Frekuensi (Hz) 500 1000 2000 3000 4000 5000 Vout (Vpp)

d. HPF, Fc=4000Hz, Amplitudo = 1Vpp Frekuensi (Hz) 1000 2000 3000 4000 5000 7000 Vout (Vpp)

e. HPF, Fc=7000Hz, Amplitudo = 1Vpp Frekuensi (Hz) 2000 3000 Vout (Vpp)

27

5000 6000 7000 10000

Amati Vout setiap perubahan frekuensi dan berilah kesimpulan.

28