MODUL IV Finite Impulse Response (FIR)
Click here to load reader
-
Upload
syamsulrizal123 -
Category
Documents
-
view
242 -
download
5
Transcript of MODUL IV Finite Impulse Response (FIR)
MODUL IV
FIR (Finite Impulse Response)
A. Tujuan
- Mahasiswa memahami filter FIR
- Mahasiswa dapat merancang filter FIR 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 terbatas pada filter FIR disebabkan tidak adanya feedback. Hal ini juga
menyebabkan system FIR selalu stabil. Dibandingkan dengan IIR, FIR lebih mudah
diimplementasikan. Pada sebagian besar DSP mikrosprocessor, system FIR dapat dilakukan
dengan me-looping instruksi tunggal. Namun kerugian penggunaan FIR adalah jumlah
komputasi yang lebih banyak sehingga menggunakan memori yang lebih banyak.
Berikut ini adalah fungsi transfer system FIR, dengan b merupakan koefisien filter
Gambar 1. Realisasi system FIR
C. Peralatan
Alat yang dibutuhkan:
- 1 set PC yang sudah terinstal Code Composer Studio Versi 3.1
25
- TMS320C6713 DSK board
- +5V universal Power Supply
- AC Power Cord
- USB Cable
- function generator
- Osiloskop
D. Prosedur Praktikum
MATLAB
1. Jalankan program matlab dan ketik program berikut untuk mencari nilai koefisien
masing-masing filter (HPF, LPF, dan BPF).
%Spesifikasi: %Cut-off frequency: 3 KHz %Sampling rate: 32000 samples/sec %Filter order: 20% LPF N=20;M=N+1;fc=1000;Fs=8000;wc=2*fc/Fs; win=rectwin(M);b=fir1(N,wc,win);a=1;freqz(b,a);title('FIR LPF menggunakan rectangular window');grid on;% HPFN=20;M=N+1;fc=1000;Fs=8000;wc=2*fc/Fs; win=rectwin(M);b=fir1(N,wc,'high',win)a=1;freqz(b,a);title('FIR HPF menggunakan rectangular window');grid on;
2. Untuk mendapatkan nilai koefisien LPF maka nonaktifkan program HPF terlebih dahulu
dengan cara member tanda (%) sebelum baris program.
3. Jalankan program dan simpan nilai koefisien yang didapat.
26
4. Lakukan hal yang sama untuk mendapatkan nilai koefisien untuk HPF.
5. Untuk mendapatkan nilai koefisien dari BPF maka ketik program berikut.
%Specifications: %Cut-off frequencies: 3 KHz and 18kHz%Sampling rate: 32000 samples/sec %Filter order: 10%Beta: 4N=20;M=N+1;fc=[5000 10000];Fs=32000;beta=4;wc=2*fc/Fs; win=kaiser(M,beta);b=fir1(N,wc,win)a=1;freqz(b,a);title('FIR BPF using Kaiser window');grid on;
6. Jalankan program dan simpan nilai koefisien yang didapat.
7. Gabungkan semua nilai koefisien tersebut sehingga tampilan menjadi seperti berikut.
//Filter coefficients//uncomment untuk memilih koefisien filterconst float h[]={//LPF, fc=1kHz, Fs=8kHz, N=20, Rectangular window/*0.0312,0.0245,-0.0000,-0.0315,-0.0519,-0.0441,0.0000,0.0734,0.1558,0.2203,0.2447,0.2203,0.1558,0.0734,0.0000,-0.0441,-0.0519,-0.0315,-0.0000,0.0245,0.0312*///HPF, fc=1kHz, Fs=8kHz, N=20, Rectangular window/*-0.0328,-0.0258,-0.0000,0.0331,0.0547,0.0464,-0.0000,-0.0773,-0.1641,-0.2320,0.7732,-0.2320,-0.1641,-0.0773,-0.0000,0.0464,0.0547,0.0331,-0.0000,-0.0258,-0.0328*///BPF, fc1=5kHz, fc2=10kHz, Fs=32kHz, N=20, Kaiser window, Beta =4/*0.0353,-0.0533,-0.0405,0.0171,-0.0175,0.0388,0.1384,-0.0625,-0.2644,0.0300,0.3184,0.0300,-0.2644,-0.0625,0.1384,0.0388,-0.0175,0.0171,-0.0405,-0.0533,0.0353*/};
27
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 “fir”
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 “fir_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.
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 “fir.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 “fir.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\
28
include. Pada kolom Pre-Define Symbol (-d), isi dengan _DEBUG; SHIP_6713, lalu klik
tombol OK.
12. Masukkan kode berikut ke dalam fir.c
#include "fircfg.h"##include "dsk6713.h"#include "dsk6713_aic23.h"#define N 20 // order of filterextern signed long FIR_FILTER(signed int);
//Filter coefficients//uncomment untuk memilih koefisien filterconst float h[]={//LPF, fc=1kHz, Fs=8kHz, N=20, Rectangular window/*0.0312,0.0245,-0.0000,-0.0315,-0.0519,-0.0441,0.0000,0.0734,0.1558,0.2203,0.2447,0.2203,0.1558,0.0734,0.0000,-0.0441,-0.0519,-0.0315,-0.0000,0.0245,0.0312*/
//HPF, fc=1kHz, Fs=8kHz, N=20, Rectangular window/*-0.0328,-0.0258,-0.0000,0.0331,0.0547,0.0464,-0.0000,-0.0773,-0.1641,-0.2320,0.7732,-0.2320,-0.1641,-0.0773,-0.0000,0.0464,0.0547,0.0331,-0.0000,-0.0258,-0.0328*/
//BPF, fc1=5kHz, fc2=10kHz, Fs=32kHz, N=20, Kaiser window, Beta =4/*0.0353,-0.0533,-0.0405,0.0171,-0.0175,0.0388,0.1384,-0.0625,-0.2644,0.0300,0.3184,0.0300,-0.2644,-0.0625,0.1384,0.0388,-0.0175,0.0171,-0.0405,-0.0533,0.0353*/};
static short in_buffer[N]; //buffer variableDSK6713_AIC23_Config config = { \ 0x0017, /* 0 DSK6713_AIC23_LEFTINVOL Left line input channel volume */ \ 0x0017, /* 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume */\ 0x00d8, /* 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone volume */ \ 0x00d8, /* 3 DSK6713_AIC23_RIGHTHPVOL 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 */ \
29
0x0081, /* 8 DSK6713_AIC23_SAMPLERATE Sample rate control */ \ 0x0001 /* 9 DSK6713_AIC23_DIGACT Digital interface activation */ \};
//Main programvoid main(){ DSK6713_AIC23_CodecHandle hCodec; Uint32 l_input, r_input,l_output, r_output; /* Initialize the board support library, must be called first */ DSK6713_init(); /* Start the codec */ hCodec = DSK6713_AIC23_openCodec(0, &config); /* Set sampling rate*/ DSK6713_AIC23_setFreq(hCodec, 4); while(1) { /* Read a sample to the left channel */ while (!DSK6713_AIC23_read(hCodec, &l_input)); /* Read a sample to the right channel */ while (!DSK6713_AIC23_read(hCodec, &r_input)); l_output=(Int16)FIR_FILTER(l_input); r_output=l_output; /* Send a sample to the left channel */ while (!DSK6713_AIC23_write(hCodec, l_output));
/* Send a sample to the right channel */ while (!DSK6713_AIC23_write(hCodec, r_output)); }}//Subprogram bodysigned long FIR_FILTER(signed int x){int i,M;signed long y=0; //output variableM=N+1;in_buffer[0] = x; // new input at buffer[0] for(i=M;i>0;i--) in_buffer[i] = in_buffer[i-1]; // shuffle the buffer for(i=0;i<M;i++) y += h[i] * in_buffer[i]; //filter return(y);}
30
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 “fir.out” dan klik Open.
15. Untuk menjalankan program pilih Debug - Run (F5)
16. Setting function generator dengan spesifikasi amplitude 1Vpp dan frekuensi 500Hz.
17. Amati hasil keluaran sinyal pada layar Osiloskop.
18. Berikut adalah gambar sinya input, filter dan output
Sinyal Input (Freq: 500Hz, Amp=1V) Filter (LPF. Fc: 1KHz, Fs:8000, N=20,
rectangular windowing)
Sinyal Output
19. Ubah-ubahlah nilai sinyal input dari 1 kHz – 6 kHz secara bertahap (kenaikan 500Hz)
pada Function Generator untuk melihat respon filter. Dan lihatlah bentuk sinyal serta
parameter lainnya.
31
E. Evaluasi
1. Lakukan pengukuran sesuai table di bawah
a. LPF, fc=1kHz, Fs=8kHz, N=20, Rectangular window, Amplitudo = 1 Vpp
Frekuensi (Hz) Vout (Vpp)
500
1000
2000
3000
4000
5000
b. HPF, fc=1kHz, Fs=8kHz, N=20, Rectangular window, Amplitudo = 1 Vpp
Frekuensi (Hz) Vout (Vpp)
500
1000
2000
3000
4000
5000
c. BPF, fc1=5kHz, fc2=10kHz, Fs=32kHz, N=20, Kaiser window, Beta =4,
Amplitudo = 1Vpp
Frekuensi (Hz) Vout (Vpp)
4000
5000
7500
10000
13000
Amati Vout setiap perubahan frekuensi dan berilah kesimpulan.
32