LANDASAN TEORETIS
Abstrak— Pada praktikum. Pengolahan sinyal digital
A. Pengertian Filter FIR Real Time
dimodul ke 02 ini praktikan melakuakn praktikum secara
online dengan judul modul yaitu simulasi filter FIR realtime Sistem realtime disebut juga dengan sistem waktu nyata.
pada praktikum ini dilakukan 3 percobaan yang berbeda Sistem realtime harus dapatmemberikan respon yang tepat
yaitu percobaan yang pertama Percobaan membuat m-file dalam batasan waktu yang ditentukan. Realtime adalahmetode
untuk simulasi pem-filter-an realtime FIR, Percobaan realisasi, sehingga setiap tugas spesifik dapat dikerjakan pada
membuat m-file untuk simulasi pem-filter-an realtime FIR waktu spesifik dengansiklus clock sistem. Pada modul
dengan buffer sirkular dan percobaan yang ketiga sebelumnya kita menggunakan filter FIR offline (non
Percobaan membuat m-file untuk simulasi pem-filter-an realtime). Terdapat pebedaaan di antara algoritma sistem
realtime FIR realtime dan algoritma sistem offline. Ide dasar dari algoritma
dengan bilangan fraksional. Pada praktikum ini realtime adalah hanya input saat ini dan yang telah lewat yang
menggunakan simulasi pada dev c++ untuk melakukan tersedia. Kita tidak memiliki akses kepada input yang akan
simulasi filter FIR dan menggunakan simulasi pada datang berikutnya. Pada modul sebelumnya fungsi filter yang
MATLAB dan mengkonversi bilangan biner ke bilangan digunakan memiliki akses kepada keseluruhan sampel pada
konvensional sinyal input. Algoritma filter realtime diperlukan untuk
implementasi filter realtime dengan hardware DSP. Untuk
Kata Kunci — Dev C ++, Filter, FIR, keperluan ini maka diperlukan simulasi algoritma filter
realtime-like dan dibandingkan hasilnya dengan algoritma
I. PENDAHULUAN filter offline.Sistem DSP adalah sistem waktu diskrit yang
mengambil sampel sinyal input dan menghasilkan sampel
Pada modul kedua berjudul simulasi filter realtime , Sistem
sinyal output dengan frekuensi sampling tertentu yang
realtime disebut juga dengan sistem waktu nyata. Sistem
konstan.
realtime harus dapat memberikan respon yang tepat dalam Artinya pada sistem DSP realtime, pada rentang waktu antar
batasan waktu yang ditentukan. Realtime adalah metode sampling, haruslah dapat dilakukan proses perhitungan sampel
realisasi, sehingga setiap tugas spesifik dapat dikerjakan pada output yang merupakan hasil pengolahan sinyal digital (bisa
waktu spesifik dengan siklus clock sistem. Pada modul berupa filter). Artinya proses komputasi pengolahan sinyal
sebelumnya modul FIR offline kita menggunakan FIR non digital untuk tiap sampel haruslah dapat diselesaikan sebelum
realtime Terdapat pebedaaan di antara algoritma sistem sampel berikutnya diambil.
realtime dan algoritma sistem offline. Ide dasar dari algoritma
realtime adalah hanya input saat ini dan yang telah lewat yang Karakteristik simulasi realtime-like adalah sebagai berikut:
tersedia. Kita tidak memiliki akses kepada input yang akan 1. Loop untuk kesesuaian dengan kelakuan clock
datang berikutnya. Pada modul sebelumnya fungsi filter yang 2. Akses hanya kepada input yang telah ada pada array input
digunakan memiliki akses kepada keseluruhan sampel pada 3. Update output setiap siklus loop
sinyal input.
Tujuan Praktikum modul kedua adalah : Filter FIR adalah salah satu tipe dari filter digital yang dipakai
Mempelajari bagaimana mengimplementasikan pada aplikasi Digital SignalProcessing (DSP). FIR
dan melakukan simulasi filter FIR realtime kepanjangan dari Finite Impulse Response. Mengapa disebut
menggunakan Dev-C++ responsimpulsnya terbatas (finite)? Karena tidak ada feedback
didalam filter, jika anda memasukkansebuah impulse
Mengenal model bilangan fraksional untuk
(yaitu sebuah sinyal ‘1’ diikuti dengan banyak sinyal
prosesor DSP fixed point.
‘0’), sinyal nol akankeluar setelah sinyal 1 melewati
Mengimplementasikan dan melakukan simulasi semua delay line dengan koefisiennya.Keuntungan filter FIR
filter FIR realtime dengan bilangan fraksional antara lain adalah stabil dan memiliki phasa yang linier.
menggunakan Dev-C++ Sedangkankerugiannya adalah filter FIR terkadang
membutuhkan lebih banyak memory dan/atauperhitungan 2147483647 untuk –1 sampai 1.
untuk mencapai karakteristik respon filter yang diberikan. Dan Q31 adalah salah satu contoh format Q, yaitu penulisan
juga, respontertentu tidak mudah dilaksanakan untuk bilangan untuk bilangan fixed-point. Pada BF561 yang
diimplementasikan dengan filter FIR : merupakan prosesor fixed-point 32 bit, maka untuk N=32,
digunakan format Q31. Format Q31 ini merepresentasikan
fraksional 31 bit.Pada format ini, MSB adalah sign bit yang
diikuti oleh suatu titik imajiner, dan kemudian 31 bit atau
mantisa yang dinormalisasi ke 1. Bilangan Q31 memiliki
kisaran desimal antara –1 sampai 0.9999 (0x8000h) Konversi
bilangan real ke bilangan fraksional dilakukan dengan :
koef=round(2^31*koef);
koef=koef / 2^31;
Sub-bab pada percobaan ini, yaitu :
Percobaan membuat m-file untuk simulasi pem-filter-an
realtime FIR.
Percobaan membuat m-file untuk simulasi pem-filer-an
realtime FIR dengan buffer sirkular.
Percobaan membuat m-file untuk simulasi pem-filter-an
realtime FIR dengan bilangan fraksional.
B. ISU NUMERIK
III. METODOLOGI PERCOBAAN
Kebanyakan prosesor DSP merupakan prosesor fixed point.
Prosesor floating point jauh lebih rumit dari prosesor fixed A. Alat dan Bahan
point sehingga membutuhkan harga yang lebih mahal. Untuk Laptop/ PC
membuat sistem yang cost effective maka prosesor DSP Software
direalisasikan dengan prosesor fixed point. Prosesor fixed Software Matlab
point secara natural set intruksi dasar matematiknya hanya
mendukung operasi bilangan bulat (integer) B. Langkah Kerja
Memahami isu numerik adalah sangat penting untuk Sebelum Memulai Percobaan
memperoleh performansi terbaik dari sebuah prosesor fixed-
point. Masalahnya adalah kebanyakan sinyal dan juga
koefisien
bernilai bilangan real. Sehingga operasi pengolahan sinyal Pastikan komputer yang akan digunakan
merupakan operasi perkalian dan penjumlahan bilangan real. berfungsi dengan normal dan tidak ada
Namun DSP yang kita gunakan merupakan prosesor fixed masalah apapun.
point. Dari percobaan sebelumnya Anda telah memperoleh
koefisien filter untuk melakukan pem-filter-an. Kita akan
menggunakannya sebagai koefisien filter yang akan
diterapkan di BF561. Nantinya kita akan mencoba program
filter dalam bahasa pemograman C ataupun Assembly, jadi
kita dapat menuliskan koefisien tersebut di program kita,
seperti berikut (contoh)
-31 sampai 2
31
-1 atau –2147483648 –
A. Percobaan membuat m-file untuk simulasi pem-filter Pada bagian ini untuk memodifikasi hasil dari
an realtime FIR percobaan sebelumnya dengan menggunakan bilangan
fraksional 32 bit. Semua koefisien filter
direpresentasikan dengan bilangan fraksional.
Pada bagian ini dibuat m-file untuk melakukan
pemfilteran realtime FIR dengan Dev-C++. Fungsi
internal filter menggunakan metoda non relatime, karena
menghitung sinyall output dengan sinyal input yang
lengkap. Kemudian dibandingkan hasil simuasi dengan Buffer diisi dengan sampel input baru yang diisi dengan
fungsi internal filter sampel input yang telah dikonversikan dari bilangan real
menjadi bilangan fraksional. Modifikasi perkalian
bilangan real menjadi perkalian bilangan fraksional.
#include <cstdlib>
#include <iostream>
Pada setiap loop (clock) hitunglah sampel #include <stdio.h>
sinyal output yang dihasilkan pada loop #include <math.h>
tersebut, lalu tempatkan pada array output using namespace std;
// panjang tap filter
#define BUFFERLENGTH
9 #define LENGTH 100
#define PI 3.14159265
Lalu masukan source code pada Dev C+
float koef_filter[BUFFERLENGTH] = {0.020041, 0.064976,
yang ada pada modul percobaan dan edit
0.167492, 0.250847, 0.250847, 0.167492, 0.064976,
filter yang di desain pada MATLAB
0.020041};
float buffer[BUFFERLENGTH];
float x[LENGTH];
B. Percobaan membuat m-file untuk simulasi pem- float y[LENGTH];
filter-an realtime FIR dengan buffer sirkular int i, j;
float filter(float input)
{ float hasil;
Pada bagian ini dilakukan modfikasi hasil percobaan
//buffering
sebelumnya menggunakan metode buffering sirkular.
for(j = BUFFERLENGTH - 1; j > 0; j--) {
dengan metode ini maka setiap kali didapatkan sampel
input, maka sampel-sampel terdahulu pada buffer tidak buffer[j] = buffer[j-1];
perlu digeser. Setelah diperoleh hasilnya kemudian }
dibandingkan hasil simulasi dengan hasil sebelumnya. //input disimpan di buffer
0 buffer[0] = input;
// perhitungan
filter hasil = 0;
C Percobaan membuat m-file untuk simulasi pem- for(j = 0; j < BUFFERLENGTH; j++) {
filter-an realtime FIR dengan bilangan fraksional hasil = hasil + buffer[j] * koef_filter[j];
}
// kembalikan hasil pemfilteran
return hasil;
}
int main(int argc, char *argv[])
{
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(2*P
*5000/16000*i) )
/ 3;
} Gambar 4.2 Grafik MATLAB percobaan 1
//inisialisasi buffer dengan nol
Analisis :
for(i=0; i < BUFFERLENGTH; i++) {
buffer[i] = 0; Pada Percobaan pertama kita melakukan percobaan membuat
} m-File untuk simulasi pemfilteran FIR realtime. Pada
//loop mengambil input tiap sampel dan menaruhnya pada percobaan ini kita menggunakan software DEV C++ untuk
output memasukkan source code yang ada pada modul praktikum.
for(i=0; i < LENGTH; i++) { Setelah mengcompile dan run source code nya kita
y[i] = filter(x[i]); mendapatkan hasil output berupa nilai koefisien filter yang
} akan digunakan untuk melihat hasil keluaran sinyal output di
//tulis output ke file grafik pada Ms. Excel . pada hasil sinyal output dari orde/ N=
pFile = fopen("output.txt", "w"); 16 nilai koefisien filter berada di sumbu x dan y dengan
for(i=0; i < LENGTH; i++) { rentang nilai di sumbu y 0.8 hingga – 0.8 dan sumbu x dengan
rentang nilai dari 1 hingga 100. turun naiknya grafik
fprintf(pFile,"%4.4f\n", y[i]); menggambarkan kondisi filter Ketika digunakan. Setelah itu
dilakukan juga pengujian pada MATLAB dan mendapatkan
} hasil plot sinyal grafik yang sama dan ini membuktikan
pemfilteran filter FIR realtime yang telah dilakukan telah
berhasil.
fclose(pFile);
system("PAUSE"); B. Percobaan membuat m-file untuk simulasi pem-filter-
return EXIT_SUCCESS; an realtime FIR dengan buffer sirkular
}
Source code pada dev C++ :
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
// panjang tap filter
#define BUFFERLENGTH 9
#define LENGTH 100
#define PI 3.14159265
float koef_filter[BUFFERLENGTH] = {0.020041, 0.064976,
0.167492, 0.250847, 0.250847, 0.167492, 0.064976,
0.020041};
float buffer[BUFFERLENGTH];
float x[LENGTH];
Gambar 4.1 Grafik Excel Percobaan 1
float y[LENGTH];
Pada percobaan ke satu dilakukan juga pengujian dengan int i, j, k;
menggunakan MATLAB apakah sinyal yang dihasilkan sama float filter(float input)
seperti output pada EXCEL { float hasil;
for(j = BUFFERLENGTH - 1; j > 0; j--) {
buffer[j] = buffer[j-1];
}
//input disimpan di buffer 0
buffer[k] = input;
// perhitungan
hasil = 0;
for(j = 0; j < BUFFERLENGTH; j++) {
hasil = hasil + buffer[j+k] * koef_filter[j];
}
// kembalikan hasil pemfilteran
return hasil;
}
int main(int argc, char *argv[])
{
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(2*PI*5000/16000*i) )/ 3;
Gambar 4.4 Grafik Sinyal Pada Matlab
}
//inisialisasi buffer dengan nol Analisis :
for(i=0; i < BUFFERLENGTH; i++) { Pada percobaan ke 2 ini kita melakukan percobaan membuat
buffer[i] = 0; m-file untuk simulasi pemfilteran realtime FIR dengan buffer
} circular . untuk mekanisme percobaannya sama kita
//loop mengambil input tiap sampel dan menaruhnya pada memasukan source code pada dev c++ dan mendapatkan
output output nilai koefisien filter dan nilai koefisien filter tersebut
for(i=0; i < LENGTH; i++) { diinputkan di MS Excel dan mendapatkan plot grafik sinyal
y[i] = filter(x[i]); pemfilteran realtime. Yang membedakan pada percobaan ini
} kita menggunakan buffer circular pada source codenya dan
//tulis output ke file berikut inputan source code pada bagian buffer circular di
pFile = fopen("output.txt", "w"); MATLAB :
for(i=0; i < LENGTH; i++) {
fprintf(pFile,"%4.4f\n", y[i]); int i,j,k=0;
}
fclose(pFile); float filter(float input) {
system("PAUSE"); float hasil;
return EXIT_SUCCESS; //buffering
} buffer[k] = input;
hasil = 0;
for(j=0; j<BUFFERLENGHT; J++) {
hasil = hasil +
buffer [ (j+k)%BUFFERLENGHT] *
koef_filter[j];
}
I (k< =0) {
k= k+BUFFERLENGHT-1 ;
}
Else {
k-- ;
};
return hasil;
Gambar 4.3 Grafik Excel Percobaan 2 }
V. KESIMPULAN
Pada Modul II praktikum pengolahan sinyal digital dengan
judul modul yaitu “Simulasi Filter FIR realtime” dapat ditarik
kesimpulan bahwa :
Referensi
[1]http://repository.usu.ac.id/bitstream/handle/123456789/286
77/Chapter%20II.pdf;sequence=4
https://youtu.be/myWQgJw-L1Y