Kategori
Pengolahan Sinyal Informasi

Filter FIR

Filter FIR adalah salah satu tipe dari filter digital yang dipakai pada aplikasi Digital Signal Processing (DSP). FIR kepanjangan dari Finite Impulse Response. Mengapa disebut respons impulsnya terbatas (finite)? Karena tidak ada feedback didalam filter, jika anda memasukkan sebuah impulse (yaitu sebuah sinyal ‘1’ diikuti dengan banyak sinyal ‘0’), sinyal nol akan keluar setelah sinyal 1 melewati semua delay line dengan koefisiennya.

Keuntungan filter FIR antara lain adalah stabil dan memiliki phasa yang linier. Sedangkan kerugiannya adalah filter FIR terkadang membutuhkan lebih banyak memory dan/atau perhitungan untuk mencapai karakteristik respon filter yang diberikan. Dan juga, respon tertentu tidak mudah dilaksanakan untuk diimplementasikan dengan filter FIR.

Flow graph dari filter FIR

4 jenis filter FIR fase linier

Itu tergantung pada apakah N genap atau ganjil dan apakah h (n) memiliki simetri positif atau negatif

Ada beberapa metode untuk menghitung koefisien FIR tetapi hanya 3 yang paling umum digunakan
Perhitungan koefisien FIR memiliki tujuan untuk mendapatkan nilai h(n) sehingga filter yang dihasilkan memenuhi spesifikasi desain, respons frekuensi amplitudo dan persyaratan throughput
Ingat lagi dua persamaan yang menunjukkan karakteristik FIR!

Metode Window

Kunci utamanya adalah: respons frekuensi filter, HD (ω), dan respons impuls terkait, hD (n), terkait dengan transformasi Fourier inverse:

Subscript D digunakan untuk membedakan antara respon impuls ideal dan praktis
Pendekatan praktis adalah mengalikan respon impuls ideal, hD (n) dengan fungsi jendela yang sesuai w(n), yang durasinya terbatas
Sehingga, respon impuls yang dihasilkan meluruh dengan lancar menuju nol

4 langkah untuk mendapatkan koefisien FIR oleh metode Window

LANGKAH 1: Tentukan respons frekuensi ideal HD(ω)
LANGKAH 2: Dapatkan respon impuls hD(n) dengan menggunakan Inverse Fourier Transform
LANGKAH 3: Pilih fungsi jendela w(n)
LANGKAH 4: Dapatkan nilai koefisien FIR aktual h (n) dengan mengalikan hD(n) dan w(n)

Lihatlah pada Gambar berikut. Ini adalah ilustrasi proses bagaimana koefisien filter, h (n) ditentukan oleh metode window
Gambar 1a menunjukkan respons frekuensi ideal dan respons impuls ideal yang sesuai
Gambar 1b menunjukkan fungsi jendela berdurasi terbatas dan spektrumnya
Gambar 1c menunjukkan h(n) yang diperoleh dengan mengalikan angka 1a dan 1b.

Ada 3 fungsi metode jendela umum Rectangular, Hamming, dan Blackman
Parameter untuk memilih metode diringkas di atas meja
Perhatikan parameternya:
lebar transisi (Hz)
Ripple passband dan atenuasi stopband (dB)
mainlobe relatif terhadap lobe samping (dB)

Rectangular Window

Berikut ini adalah perbandingan waktu dan karakteristik domain frekuensi dari fungsi Rectangular Window

Hamming Window

Berikut adalah perbandingan waktu dan karakteristik domain frekuensi dari fungsi Hamming Window

Metode Optimal

Metode ini sangat kuat, fleksibel dan sangat mudah diterapkan
Metode ini didasarkan pada konsep equiripple passband dan stopband
Ingat parameter berikut ini:

  1. N: jumlah koefisien filter, yaitu panjang filter. Nilai N, dapat diperoleh dengan beberapa pola, mis. lowpass, bandpass
  2. Jtype: jenis filter, mis. beberapa filter passband atau stopband pada lowpass, highpass
  3. W (ω): fungsi pembobotan. Ini menentukan kepentingan relatif masing-masing band
  4. Ngrid: kepadatan jaringan. Ini adalah jumlah titik frekuensi di mana, selama proses pencarian frekuensi eksternal. Nilai default untuk Ngrid adalah 16.
  5. Edge: frekuensi bandedge, frek tepi band bawah dan atas untuk filter. Semua nilai harus dimasukkan dalam b

7 langkah untuk mendapatkan koefisien filter:

LANGKAH 1: Tentukan frekuensi tepi band, ripple passband dan atenuasi stopband dan frekuensi sampling.
LANGKAH 2: Normalisasikan setiap pita frekuensi tepi dengan membaginya dengan frekuensi sampling
LANGKAH 3: Gunakan ripple passband dan atenuasi stopband yang dinyatakan dalam satuan biasa, untuk memperkirakan N
LANGKAH 4: Dapatkan bobot untuk setiap band dari rasio passband untuk ripple passband, diekspresikan dalam satuan biasa
LANGKAH 5: Masukkan parameter ke program desain yang optimal untuk mendapatkan koefisien: frekuensi dan berat gelombang N band, kepadatan grid
LANGKAH 6: Periksa ripple passband dan atenuasi stopband yang dihasilkan oleh program
LANGKAH 7: Jika spesifikasi tidak memuaskan, tambahkan nilai N dan ulangi langkah 5 dan 6 sampai dapat; kemudian dapatkan dan periksa respons frekuensi untuk memastikan bahwa memenuhi spesifikasi

Implementasi Filter FIR

Secara singkat, tahapan-tahapan untuk membuat filter digital FIR adalah:

  1. Menentukan respon frekuensi filter yang diinginkan
  2. Menghitung nilai koefesien filter dengan Matlab
  3. Menuliskan koefesien filter kedalam program filter
  4. Mengkompilasi program dan mendownload kode mesin ke DSP
  5. Menguji sistem dengan memberikan sinyal input dari function generator dan melihat sinyal output pada oscilloscope
Ilustrasi alur implementasi filter FIR

Menghitung koefesien filter FIR menggunakan fungsi FIR2 pada Matlab

Inti dari disain filter FIR adalah perhitungan koefisien. Cara termudah adalah menggunakan bantuan Matlab. Pada praktikum ini digunakan fungsi FIR2 yang disediakan oleh Matlab.

Perintah B = FIR2(N,F,M); pada Matlab digunakan untuk mendisain filter digital FIR orde N dengan respon frekuensi yang ditentukan oleh vektor F dan M, dan menghasilkan koefisien filter pada vektor B sebanyak N+1. Vektor F dan M menetapkan frekuensi dan magnitude untuk filter sehingga bila dilakukan perintah PLOT(F,M) akan dihasilkan gambar dari respon frekuensi yang diinginkan. Nilai frekuensi pada vektor F haruslah bernilai antara 0.0 < F < 1.0, dimana 1.0 menunjukkan setengah dari frekuensi sampling. Nilai pada vektor F harus bertambah, dimulai dari 0.0 dan berakhir pada 1.0.

Secara default, FIR2 menggunakan window jenis Hamming. Tipe window yang lain seperti Boxcar, Hanning, Barlett, Blackman, Kaiser dan Chebwin juga dapat digunakan. Misalnya B=FIR2(N,F,M,Blackman(N+1)) menggunakan window Blackman.

Langkah-langkah mendisain filter FIR low-pass menggunakan FIR2

  1. Pilih orde filter, misal N=10
  2. Menentukan vektor F dan M yang menujukkan bentuk dari respon frekuensi filter. Nilai F bernilai antara 0.0 < F < 1.0, dimana 1.0 adalah setengah dari frekuensi sampling. Jumlah vekor F dan M harus sama.
  3. Koefesien filter dapat dihitung menggunakan perintah FIR2 pada Matlab.
  4. Simpan nilai koefesien pada file, yang nantinya digunakan untuk mengimplementasikan filter FIR dengan konvolusi pada pemrograman DSP.

Langkah-langkah mendisain filter FIR low-pass menggunakan FIR2

  1. Pilih orde filter, misal N=10
  2. Menentukan vektor F dan M yang menujukkan bentuk dari respon frekuensi filter. Nilai F bernilai antara 0.0 < F < 1.0, dimana 1.0 adalah setengah dari frekuensi sampling. Jumlah vekor F dan M harus sama.
  3. Koefesien filter dapat dihitung menggunakan perintah FIR2 pada Matlab.
  4. Simpan nilai koefesien pada file, yang nantinya digunakan untuk mengimplementasikan filter FIR dengan konvolusi pada pemrograman DSP.

Program Matlab untuk menghasilkan koefesien filter menggunakan FIR2

Berikut contoh disain program Matlab untuk menghasilkan koifesien filter FIR low-pass dengan frekuensi cut-off 2KHz pada frekuensi sampling sebesar 16KHz. Nilai koefisien yang dihasilkan akan disimpan dalam file bertipe teks.
Pertama, tentukan berapa frekuensi sampling yang akan digunakan Frekuensi sampling filter = 16KHz, Setengah frekuensi sampling filter = 8KHz


Kedua, tentukan berapa frekuensi cut-off filter Frekuensi cut-off filter = 2KHz, Sehingga titik cut-off ini pada vektor F jatuh disekitar


Ketiga, menuliskan nilai vektor F dan vektor M. Maka nilai untuk vektor F dan M adalah:

Code Program :

Nilai koefesien yang disimpan didalam file fir.txt dapat anda lihat pada command window Matlab dengan mengetikkan perintah type fir.txt

Respon frekuensi filter FIR orde 16 hasil disain tersebut ditunjukkan oleh gambar

Membuat program filter FIR pada DSP

Ilustrasi langkah program filter FIR orde 3

Setiap data yang masuk (x[n]) ditampung pada sebuah buffer, kemudian tiap elemen buffer dikalikan dengan koefesien dan dijumlahkan untuk menghasilkan sebuah output. Untuk data berikutnya, isi buffer digeser, lalu tiap elemen buffer dikalikan dengan koefesien dan dijumlahkan untuk menghasilkan sebuah output, begitu seterusnya.

Ref : [1][2][3]