Anda di halaman 1dari 6

MODUL II

SIMULASI FILTER
FIR REALTIME
Arimbi Ayuningtyas(14117140)
Asisten : Muhammad Anbia Senggagau (13117056)
Tanggal Percobaan : 19/04/2020
IF3243 Praktikum Pengolahan Sinyal Digital
Laboratorium Multimedia
Institut Teknologi Sumatera

Abstrak—Pada praktikum Modul II ini dilakukan


beberapa percobaan yang pertama adalah Percobaan sistem ini tidak dapat membaca input yang akan datang.
membuat m-file untuk simulasi pem-filter-an realtime FIR, Proses yang dikerjakan adalah sesuatu yang spesifik atau bisa
dengan menggunakan software Dev C++ dalam percobaan di katakan waktu yang diproses juga spesifik
ini diberikan sebuah source code dan kita akan Tujuan yang ingin dicapai pada modul ini yaitu :
mendapatkan sebuah grafik yang menampilkan mengenai
filter yang menjadi pembanding denagn percobaan  Mempelajari bagaimana mengimplementasikan dan
sebelumnya. Pada percoaan kedua kita melakukan melakukan simulasi filter FIR realtime
Percobaan membuat m-file untuk simulasi pem-filter-an menggunakan Dev-C++
realtime FIR dengan buffer sirkular kita akan memodifikasi  Mengenal model bilangan fraksional untuk prosesor
source code yang telah ada dengan salah satu imputan DSP fixed point.
adalah niali yang kita dapatkan dipercobaan lowpass filter  Mengimplementasikan dan melakukan simulasi
dan kita mendapatkan sebuah grafik yang akan menjadi filter FIR realtime dengan bilangan fraksional
pembanding dari percobaan sebelumnya. Dan pada menggunakan Dev-C++
percobaan ketiga kita akan melakukan Percobaan membuat
m-file untuk simulasi pemfilter-an realtime FIR dengan
II. LANDASAN TEORI
bilangan fraksional, seperti pada percobaan kedua kita
memodifikasi source code, agar dapat Konversi bilangan
A. Filter FIR Realtime
real ke bilangan fraksional atau pun sebaliknya mengonversi
Sistem realtime disebut juga dengan sistem waktu nyata. Sistem
bilangan fraksional ke bilangan real.
realtime harus dapat memberikan respon yang tepat dalam
batasan waktu yang ditentukan. Realtime adalah metode
Kata Kunci—Dev-C++, Buffer sirkular, Bilangan realisasi, sehingga setiap tugas spesifik dapat dikerjakan pada
fraksional. waktu spesifik dengan siklus clock sistem. Pada modul
sebelumnya kita menggunakan filter FIR offline (non realtime).
Terdapat pebedaaan di antara algoritma sistem realtime dan
I. PENDAHULUAN algoritma sistem offline. Ide dasar dari algoritma realtime
adalah hanya input saat ini dan yang telah lewat yang tersedia.
Dalam Digital Signal Processing (DSP) terdapat dua jenis Kita tidak memiliki akses kepada input yang akan datang
filter yaitu Finite Impluse Filter (FIR) dan Infinite Impluse berikutnya. Pada modul sebelumnya fungsi filter yang
Filter (IIR). Dalam percobaan kali ini kita akan menggunakan digunakan memiliki akses kepada keseluruhan sampel pada
filter FIR yang merupakan filter yang memiliki keterbatasan sinyal input.
implus, dalam artiang filter ini memiliki rentang nilai (n) yang
telah ditentukan serta memiliki keterbatasan dalam Algoritma filter realtime diperlukan untuk implementasi filter
penggunaan memori, dalam perubahan phasa FIR memiliki realtime dengan hardware DSP. Untuk keperluan ini maka
phasa linier oleh karena itu filter FIR akan lebih stabil. diperlukan simulasi algoritma filter realtime-like dan
dibandingkan hasilnya dengan algoritma filter offline. Sistem
DSP adalah sistem waktu diskrit yang mengambil sampel sinyal
Filter FIR memiliki beberapa input dan menghasilkan sampel sinyal output dengan frekuensi
metode pemfilteran salah satunya filter FIR1, jenis sampling tertentu yang konstan. Artinya pada sistem DSP
pemfilteran ini menggunakan metode window serta filter realtime, pada rentang waktu antar sampling, haruslah dapat
FIR2 menggunakan metode frekuensi sampling untuk dilakukan proses perhitungan sampel output yang merupakan
melakukan pemfilterannya.Sistem Realtime adalah sistem hasil pengolahan sinyal digital (bisa berupa filter). Artinya
yang inputannya adalah inputan waktu saat ini atau waktu proses komputasi pengolahan sinyal digital untuk tiap sampel
sebelumnnya, haruslah dapat diselesaikan sebelum sampel berikutnya diambil.
Karakteristik simulasi realtime-like adalah sebagai berikut :
Buat perhitungan filter realtime FIR
1. Loop untuk kesesuaian dengan kelakuan clock. dengan menggunakan Dev-C++
2. Akses hanya kepada input yang telah ada di array input.
3. Update output setiap siklus loop.
Gunakan buffer input sepanjang order filter
B. Isu Numerik (contoh: jika order filter adalah 16 maka
Kebanyakan prosesor DSP merupakan prosesor fixed point. buffer input adalah 16)
Prosesor floating point jauh lebih rumit dari prosesor fixed
point sehingga membutuhkan harga yang lebih mahal.
Untuk membuat sistem yang cost effective maka prosesor
DSP direalisasikan dengan prosesor fixed point. Prosesor Gunakan metoda loop sejumlah sampel
fixed point secara natural set intruksi dasar matematiknya sinyal input untuk simulasi clock
hanya mendukung operasi bilangan bulat (integer)
Memahami isu numerik adalah sangat penting untuk
memperoleh performansi terbaik dari sebuah prosesor
fixed-point.
Pada setiap loop (clock) mengindikasikan
adanya sampel input yang baru. Ambil input
Masalahnya adalah kebanyakan sinyal dan juga koefisien baru dan tempatkan pada buffer input
bernilai bilangan real. Sehingga operasi pengolahan sinyal
merupakan operasi perkalian dan penjumlahan bilangan real.
Namun DSP yang kita gunakan merupakan prosesor fixed
point. Pada setiap loop (clock) hitunglah sampel sinyal
output yang dihasilkan pada loop tersebut, lalu
Dari percobaan sebelumnya Anda telah memperoleh tempatkan pada array output
koefisien filter untuk melakukan pem-filter-an. Kita akan
menggunakannya sebagai koefisien filter yang akan
diterapkan di BF561. Nantinya kita akan mencoba program Jalankan software Dev-C++. Pilih File > New
filter dalam bahasa pemograman C ataupun Assembly, jadi Project. Kemudian pilih Jenis Console
kita dapat menuliskan koefisien tersebut di program kita, Application. Ganti nama project sesuai
seperti berikut (contoh) int koef={a1,a2,a3,a4}; keinginan anda misalkan FIR.

Perhatikan bahwa koefisien harus ditulis dalam format Q32


dan jangan lupa bahwa prosesor yang kita gunakan adalah
prosesor fixed-point 32 bit sehingga setiap bilangan keluar jendela baru dan pilih folder untuk
direpresentasikan dalam 32 bit dengan kisaran sampai menempatkan project yang akan dibuat. Akan
atau -2147483648 - 2147483647 untuk -1 otomatis
sampai 1. dibuat file source code main.cpp. Edit file ini dengan
source code berikut:
Konversi bilangan real ke bilangan fraksional dilakukan
dengan
koef=round(2^31*koef); #include <cstdlib>
Untuk konversi bilangan fraksional ke bilangan real #include <iostream>
dilakukan #include <stdio.h>
dengan #include <math.h>
koef=koef / 2^31;. using namespace std;
// panjang tap filter
#define BUFFERLENGTH
III. METODOLOGI 9 #define LENGTH 100
#define PI 3.14159265
A. Alat dan Bahan float koef_filter[BUFFERLENGTH] =
{0.020041,
1. Satu unit komputer/laptop 0.064976,
2. Software MATLAB 0.167492, 0.250847, 0.250847, 0.167492,
0.064976, 0.020041};
B. Langkah Kerja float buffer[BUFFERLENGTH];
B.1 Percobaan membuat m-file untuk simulasi pem-filter-an float x[LENGTH];
realtime FIR float y[LENGTH];
int i, j;
float filter(float input) B.3 Percobaan membuat m-file untuk simulasi pem-
{ float hasil; filter-an realtime FIR dengan bilangan fraksional.
//buffering
for(j = BUFFERLENGTH - 1; j > 0; j--) {
buffer[j] = buffer[j-1]; Edit source code dari bagian sebelumnya
} dengan mengubah fungsi filter, juga koefisien
//input disimpan di buffer dan buffer menjadi tipe integer. Tambahkan
0 buffer[0] = input; bagian konversi output menjadi float sebelum
// perhitungan ditulis ke file. (Gunakan casting).
filter hasil = 0;
for(j = 0; j < BUFFERLENGTH; j++) {
hasil = hasil + buffer[j] * koef_filter[j];
}
// kembalikan hasil pemfilteran
return hasil;
} Bandingkan hasil simulasi ini dengan hasil
int main(int argc, char *argv[]) sebelumnya.
{
FILE *pFile;
//siapkan input
for(i=0; i < LENGTH; i++) {
x[i] =
(sin(2*PI*200/16000*i)+sin(2*PI*1000/16000*i)+sin(
IV. HASIL DAN PEMBAHASAN
2*
PI*5000/16000*i) )
/ 3; A. Percobaan membuat m-file untuk simulasi pem-
} filter-an realtime FIR
//inisialisasi buffer dengan nol Pada percbaan ini terlebih dahulu dibuat m-file untuk
for(i=0; i < BUFFERLENGTH; i++) {
filter FIR realtime dengan mengcopy source code yang
buffer[i] = 0;
}
sudah ada pada modul praktikum dan menjalankannya
//loop mengambil input tiap sampel dan menaruhnya menggunakan Dev-C++, disini kita akan mendapat
pada output berupa txt dan selanjutnya dilakukan plot grafik
output dengan menggunakan Microsoft Office Excel. Hasilnya
for(i=0; i < LENGTH; i++) { yaitu sebagai berikut :
y[i] = filter(x[i]);
}
//tulis output ke file
pFile = fopen("output.txt", "w");
for(i=0; i < LENGTH; i++) {
fprintf(pFile,"%4.4f\n", y[i]);
}
fclose(pFile);
system("PAUSE");
return EXIT_SUCCESS;
}

B.2 Percobaan membuat m-file untuk simulasi pem-filter-an


realtime FIRdengan buffer sirkular.

Edit source code dari bagian


sebelumnya dengan mengubah bagian Gambar 1 Filter FIR realtime
buffering daperhitungan filter. Lakukan
simulasi dan buatlah grafiknya.

Bandingkan hasil simulasi ini dengan


hasil sebelumnya.
Setelah source code di modifikasi, menghasilkan
grafik :

Gambar 2 Filter FIR realtime dengan MATLAB Gambar 3 Filter FIR


realtime dengan metode
Terlihat bahwa hasil dari percobaan sebelumnya buffer sirkular
terlihat hampir sama atau hampir mendekati, oleh Terlihat bahwa grafik filter yang dihasilkan dengan
karena itu hasil konvulasi pada percobaan ini dapat metoda buffer sirkular sama dengan grafik filter
diindikasikan berhasil, perbedaan yang terlihat pada dengan sebelumnya. Hal ini mengindikasikan bahwa
percobaan MATLAB bentuk sinyalnya memiliki source code yang dibuat telah benar.
kerapatan yang berbeda dengan hasil source code . Ini
dikarenakan pemfilteran menggunakan source code C. Percobaan membuat m-file untuk simulasi pem-
adalah pemfilteran realtime. filteran realtime FIR dengan bilangan fraksional,

Dipercobaan ketiga, kita masih menggunakan source


B. Percobaan membuat m-file untuk simulasi pem- code yang sebelumnya dengan menambahkan konversi
filteran realtime FIR dengan buffer sirkular. bilangan real ke bilangan fraksional

Percobaan kedua melakukan modifikasi hasil


percobaan pertama dengan menggunakan metode
buffering sirkular. Dengan metode ini setiap kali
didapatkan sampel input, maka sampel-sampel
terdahulu pada buffer yang tidak perlu digeser. Hasil
nilai-nilai pada file text dari program kemudian dibuat
kedalam grafik dengan menggunakan Excel. Di atas merupakan modifikasi dari source sebelumnya
agar dapat mengonversi dari bilangan real menjadi
bilangan fraksional.
Source code untuk buffer sirkular ditambahkan
variabel k yang di assign dengan niali = 0 serta
terdapat perhitungan filter dengan circular buffer.
Berikut contoh source codenya:

Gambar 4 Filter FIR realtime dengan metode


bilangan fraksioal
Gambar di atas adalah hasil interface dari code yang
sudah di modifikasi . terlihat bahwa plot grafik filter
yang dihasilkan sama dengan grafik filter sebelumnya.
Ini mengindikasi bahwa code yg di buat sudah
benar/berhasil.
V. SIMPULAN

1. Dari percobaan yang sudah dilakukan, didapat kesimpulan


bahwa filter FIR realtime dapat disimulasikan dan dapat
diimplementasikan dengan membuat source code
menggunakan Dev-C++.
2. Dev C++ dapat mengimemlementasikan filter FIR Realtime
dari source code yang telah diberikan dengan menggunakan
Microsoft Excel yang digunakan untuk Menampilkan
interface outputnaya.
3. Filter dengan metode Fraksional memiliki kelebihan yaitu
hasil yang didapatkan berada pada hasil yang terbaik
sedangkan dengan menggunakan buffer sirkur akan lebih
sederhana dan menghemat memori.
4. Filter FIR realtime yang diperoleh dengan MATLAB, Dev-
C++, metoda buffer sirkular, dan metode bilangan fraksioal
menampilkan output hasil konvolusi yang sama.

VI. REFERENSI

[1] Marvin T Hutabara ,Praktikum Pengolahan Sinyal


Digital Laboratorium Dasar Teknik Elektro ITB,
Bandung 2015.
[2] Proakis, Jhon. Manolakis, Dimitris, Digital Signal
Processing, principles, algoritm, and application,
Prentice Hall, 1998.
Lampiran

Anda mungkin juga menyukai