Abstrak— Pada percobaan modul 4 ini akan dilakukan II. LANDASAN TEORI
percobaan untuk mendesain filter dan implementasi algoritma
A. Blackfin BF561EZ
DSP. Dimana model atau rancangan filter FIR yang akan
Blackfin BF561EZ adalah sebuah development board
dibuat ini adalah filter lowpass, bandpass dan highpas. Yang
produksi dari Analog Devices yang digunakan untuk penelitian
kemudian mengeksekusi nilai koefisien yang diperoleh dari
dan pengembangan aplikasi menggunakan Prosesor ADSP
FIR1 kedalam sebuah source code visual DSP yang kemudian
BF561. BF561EZ ini terdiri dari bermacam-macam peripheral
akan dilakukan debugging ke board Blackfin BF561EZ. Setelah
yang digunakan untuk pengembangan. BF561EZ mempunyai
itu output diamati dengan audacity. Adapun percobaan yang
fitur :
akan dilakukan yaitu pertama percobaan implementasi filter
Prosesor ADSP-BF561 Blackfin
FIR Low-pass filter, kedua percobaan implementasi filter FIR
Band-pass filter dan yang terahir Percobaan implementasi filter 64 MB (16 M x 16-bit x 2) SDRAM
FIR High-pass filter. 8 MB (4 M x 16-bit) FLASH memory
AD1836 multichannel 96 kHz audio codec
Kata Kunci— Visual DSP+++ 5.1.2, Audacity ,Blackfin 3 RCA jack untuk composite (CVBS), differential
BF561EZ, FIR Lowpass, FIR Highpass dan FIR Bandpass component (YUV) atau S video (Y/C) input
RCA jack untuk input/output audio stereo
I. PENDAHULUAN
Digital signal prosessing (DSP) adalah teknik , algoritma dan 10-bit video decoder ADV7183A
bentuk matematis yang digunakanuntuk memanipulasi data NTSC/PAL video encoder ADV7179
sinyal kedalam bentuk digital . Tujuan dari DSP ini adalah
Pada Gambar 1 ditampilkan blok diagram dari Blackfin
untuk mendapatkan informasi yang dibawa oleh sinyal seperti
BF561EZ. ADSP-BF561 merupakan anggota dari keluarga
meningkatkan kualitas gambar , suara kompresi data dan lain-
prosesor Blackfin yang memang ditargetkan untuk konsumen
lain. Dalam pemrosesan sinyal umunya digunakan software
aplikasiaplikasi multimedia. Di dalam perangkat ini terdapat
visual DSP++ yang di integrasikan pada board development
dua core prosesor Blackfin yang independen satu sama lain
blackfin.
yang menawarkan performa tinggi serta konsumsi daya yang
Pemfilteran FIR merupakan sebuah filter yang memiliki respon
rendah dengan tetap menjaga kemudahan penggunaan serta
impulse dengan batasan tertentu. Filter FIR ini umumnya ada 3
kompatibilitas. Arsitektur inti mengombinasikan mesin
jenis yaitu FIR Lowpass, FIR Bandpass dan FIR Highpass.
pengolah sinyal dual-MAC, kemampuan single-instruction
Dalam praktikum ini praktikan akan mempelajari cara
multipledata (SIMD) yang fleksibel dan fitur-fitur multimedia
mendesain filter dengan algortima DSP. Yang kemudian akan
ke dalam arsitektur single-instructionset.
diimplementasikan ke board BF561EZ dengan arsitektur
SMID. Selanjutnya hasil output akan diamati dengan software
eksternal audacity.
Percobaan ini memiliki tujuan sebagai berikut :
1. Praktikan mampu menjelaskan bagian-bagian penting
dari BlackfinnBF561EZ beserta fungsinya.
2. Praktikan mampu melakukan trouble-shooting
BF561EZ.
3. Mengimplementasikan pemfilteran FIR untuk
berbagai macam filter di Blackfin BF561EZ.
4. Melakukan verivikasi filter FIR hasil implementasi
Dengan cara yang sudah dibahas pada modul dua dan metode Dengan cara yang sudah dibahas pada modul dua dan metode
pengambilan koefisien yang telah dibahas pada subbab 4 di pengambilan koefisien yang telah dibahas pada subbab 4 di
atas FIR buat filter tipe low-pass orde 31 dengan frekuensi pass atas FIR buat filter tipe low-pass orde 31 dengan frekuensi cut-
1000 Hz -3000 Hz dengan MATLAB. off 6000 Hz dengan MATLAB.
Ditampilkan VisualDSP++ dan siapkan program yang Ditampilkan VisualDSP++ dan siapkan program yang
digunakan pada modul tiga. Buka Process_data.c pada bagian digunakan pada modul tiga. Buka Process_data.c pada bagian
CoreA->SourceFiles (dengan jalan CoreA->SourceFiles (dengan jalan
diklik tanda (+) pada tulisan CoreA dan Source Files) dari diklik tanda (+) pada tulisan CoreA dan Source Files) dari
Project window Perhatikan bagian: //Filter Coefficients (from Project window Perhatikan bagian: //Filter Coefficients (from
MATLAB): MATLAB):
intfilter[BUFFERLENGTH]={…};////////////////////////////////// intfilter[BUFFERLENGTH]={…};//////////////////////////////////
////////////////// Perhatikan bahwa nilai-nilai yang ////////////////// Perhatikan bahwa nilai-nilai yang
dimasukkan di atas merupakan koefisien koefisien dari filter dimasukkan di atas merupakan koefisien koefisien dari filter
FIR. FIR.
Diganti koefisien-koefisien tersebut dengan koefisien Band- Diganti koefisien-koefisien tersebut dengan koefisien High-
pass filter yang telah didapatkan dalam MATLAB pass filter yang telah didapatkan dalam MATLAB
Pada menu bar klik Project -> Build Project lalu di jalankan Pada menu bar klik Project -> Build Project lalu di jalankan
program yang telah di-build, pada menu bar klik Debug ->Run. program yang telah di-build, pada menu bar klik Debug ->Run.
Diakukan pengamatan pada sinyal masukan dan keluaran. Diakukan pengamatan pada sinyal masukan dan keluaran.
Perhatikan efek pemfilteran (Band-pass filtering) yang telah Perhatikan efek pemfilteran (High-pass filtering) yang telah
diterapkan. diterapkan.
Diuji filter yang telah dibuat dengan menggunakan White Diuji filter yang telah dibuat dengan menggunakan White
noise sebagai input. Rekam keluaran filter dengan program noise sebagai input. Rekam keluaran filter dengan program
Audacity. Periksa spektrum sinyal hasil. Audacity. Periksa spektrum sinyal hasil.
// time a complete audio
IV. HASIL DAN ANALISIS frame has been received. The new //
// input samples can be
A. Percobaan Implementasi Filter FIR Low-Pass Filter found in the variables iChannel0LeftIn,//
Pada percobaan ini pertama dilakukan pengambilan nilai // iChannel0RightIn,
koefisien low-pass pada percobaan FIR1 pada modul 1. iChannel1LeftIn and iChannel1RightIn //
kemudian nilai koefisien di konvert menjadi bilangan // respectively. The
fraksional, pengubahan kebilangan fraksional ini bertujuan agar processed data should be stored in //
blackfin dapat melakukan operasi, karena blackfin hanya bisa // iChannel0LeftOut,
mengoprasikan bilangan integer Q31. Untuk mengkonvert pada iChannel0RightOut, iChannel1LeftOut, //
matlab menggunakan perintah berikut : // iChannel1RightOut,
iChannel2LeftOut and iChannel2RightOut //
>>fs =16000; // respectively.
>>Wn1=800/(fs/2);
>>Lowpass=fir1(N,Wn1,’Low’); //
>>frak=round(2^31*Lowpass); //--------------------------------------------------------------------------
//
Dari perintah diatas diperoleh nilai koefisien lowpas yang void Process_Data(void)
sudah di convert ke fraksional sebagai berikut : {
//Left
//Buffering input
bufferLeft[i] = iChannel0LeftIn;
//convolution with circular buffer
tempLeft=0;
for (j = 0; j < BUFFERLENGTH; j++)
{
tempLeft += (filter[j] >> 16) * (bufferLeft[(i + j) %
BUFFERLENGTH] >> 15);
}
//Output
Dari nilai-nilai koefisien yang diperoleh diatas kemudian iChannel0LeftOut = tempLeft;
dimasukan dalam source code seperti berikut : // //Right
//Buffering input
#include "Talkthrough.h" bufferRight[i]= iChannel0RightIn;
#define BUFFERLENGTH 32 //convolution with circular buffer
int tempRight=0;
bufferLeft[BUFFERLENGTH],bufferRight[BUFFERLENGT for (j = 0; j < BUFFERLENGTH; j++)
H]={0,0,0}; {
int tempLeft, tempRight = 0; tempRight += (filter[j] >> 16) * (bufferRight[(i + j) %
int i,j=0; BUFFERLENGTH] >> 15);
//Filter Coefficients (from MATLAB): }
int filter[BUFFERLENGTH]= {-3283169,-4089104,- //Output
5394501,-6768273,-7261877,- iChannel0RightOut=tempRight;
5516883,0,10673790,27392986,50250325,78362065,1098553 //decreasing i (circular)
26,142041242,171754609,195805997,211467481,216903618, i=(i+BUFFERLENGTH-1)%BUFFERLENGTH;
211467481,195805997,171754609,142041242,109855326,78 //
362065,50250325,27392986,10673790,0,-5516883,- //channel1
7261877,-6768273,-5394501,-4089104,-3283169} ; //Left
iChannel1LeftOut = iChannel1LeftIn;
//right
//-------------------------------------------------------------------------- iChannel1RightOut = iChannel1RightIn;
//
// Function: Process_Data() }
//
// Description: This function is called from inside the SPORT0
ISR every //
Berdasarkan hasil dari gambar diatas terlihat bahwa sinyal
domain waktu dan analisis frekuensi pada filter lowpass
bentuknya jauh berbeda dengan sinyal inputan white noise, hal
ini karena sinyal telah difilter dengan model lowpas . kemudian
pada analisi frekuensi ketika sinyal memiliki frekuensi dibawah
3000 Hz sinyal memiliki amplitude sangat besar. Sedangkan
pada sinyal yang frekuensinya lebih dari 3000 HZ sinyalnya
sangat kecil. Hal ini menunjukan bahwa pemfilteran yang
dilakukan hanya akan meloloskan sinyal yang
memilikifrekuensi dibawah 3000 HZ dan akan meredam sinyal
Gambar 3. Sinyal White Noise yang memiliki frekuensi lebih dari 3000 Hz. Kemudian dilihat
dari gambar juga frekuensi mulai mengalami penurunan
dikisaran 800 Hz, dimana 800 Hz ini merupakan frekuensi cut-
offnya. Dengan demikian percobaan implementasi dengan FIR
Lowpass ini sudah benar dan sesuai dengan teori.
#include "Talkthrough.h"
#define BUFFERLENGTH 32
int
bufferLeft[BUFFERLENGTH],bufferRight[BUFFERLENGT
H]={0,0,0};
int tempLeft, tempRight = 0;
int i,j=0;
//Filter Coefficients (from MATLAB):
int filter[BUFFERLENGTH]= {0,-
2181204,0,10773679,24354187,22990859,0,-
18424869,0,33132130,0,-141470186,-294409348,-
Gambar 6. Frekuensi analysis Hasil 273397515,0,365030666,534466228,365030666,0,-
pemfilteran Lowpass 273397515,-294409348,-141470186,0,33132130,0,-
18424869,0,22990859,24354187,10773679,0,-2181204,0} ;
//right
//-------------------------------------------------------------------------- iChannel1RightOut = iChannel1RightIn;
//
// Function: Process_Data() }
//
//--------------------------------------------------------------------------
//
void Process_Data(void)
{
//Left
//Buffering input
bufferLeft[i] = iChannel0LeftIn;
//convolution with circular buffer
tempLeft=0;
for (j = 0; j < BUFFERLENGTH; j++)
{
tempLeft += (filter[j] >> 16) * (bufferLeft[(i + j) % Gambar 8. Frekuensi Analyze Hasil
pemfilteran Bandpass
BUFFERLENGTH] >> 15);
}
//Output Berdasarkan Gambar diatas terlihat bahwa sinyal pada domain
iChannel0LeftOut = tempLeft; waktu dan analisis frekuensi bentuknya berbeda dengan
// //Right inputanya hal ini dikarenakan sinyal white noise telah
//Buffering input dilakukan pemfilteran dengan model bandpass filter. Kemudian
bufferRight[i]= iChannel0RightIn; jika dibandingkan dengan sinyal lowpass amplitudenya sinyal
//convolution with circular buffer domain waktu pada bandpass lebih besar dari pada amplitude
tempRight=0; lowpas. Kemudian pada analisis frekuensi pada rentan
for (j = 0; j < BUFFERLENGTH; j++) frekuensi 100-300 Hz amplitude rendah muncul, kemudian
{ mulai muncul dengan amplitude mulai naik ketika frekuensi
tempRight += (filter[j] >> 16) * (bufferRight[(i + j) % diatas 1000Hz. Kemudian ketika frekuensi lebih dari 7000 Hz
BUFFERLENGTH] >> 15); amplitudenya mulai mengalami penurunan. Selain itu terlihat
} juga bahwa rentan frekuensi pasnya berubah pada dari rentan
//Output 1000-3000 Hz pada percobaan 1 berubah menjadi antara 3000
iChannel0RightOut=tempRight; -7000 Hz. Terjadinya perubahan frekuensi pas ini kemungkinan
//decreasing i (circular) karena adanya effek 40-bit shifter yang ada pada brackfin
i=(i+BUFFERLENGTH-1)%BUFFERLENGTH; BF561EZ yang menyebabkan frekuensi pasnya bergeser. Hal
// ini menyebabkan filter hanya meloloskan sinyal dengan rentan
//channel1 frekunesi pas antara 3000 – 7000 Hz . meskipun demikian
//Left bentuk frekuensi yang dihasilkan ini sesuai dengan karakteristik
iChannel1LeftOut = iChannel1LeftIn; pemfikteran FIR Bandpass. Sehingga percobaan yang
dilakukan untuk implementasi bandpass menggunakan blackfin // Function: Process_Data()
BF561 dapat dikatakan benar.
//
//
C. Percobaan Implementasi Filter FIR High-Pass Filter
Pada percobaan ini dilakukan pengambilan nilai koefisien //
high-pass pada percobaan FIR1 pada modul 1. kemudian nilai // Description: This function is called from inside the SPORT0
koefisien di konvert menjadi bilangan fraksional. pengubahan ISR every //
kebilangan fraksional ini bertujuan agar blackfin dapat // time a complete audio
melakukan operasi, karena blackfin hanya bisa mengoprasikan frame has been received. The new //
bilangan integer Q31. Untuk mengkonvert pada matlab // input samples can be
menggunakan perintah berikut : found in the variables iChannel0LeftIn,//
// iChannel0RightIn,
>>fs =16000; iChannel1LeftIn and iChannel1RightIn //
>>Wn3=6000/(fs/2); // respectively. The
>>highpass=fir1(N,Wn3,’high’); processed data should be stored in //
>>frak=round(2^31*highpass); // iChannel0LeftOut,
iChannel0RightOut, iChannel1LeftOut, //
Dari perintah diatas diperoleh nilai koefisien highpass yang // iChannel1RightOut,
sudah di convert ke fraksional sebagai berikut : iChannel2LeftOut and iChannel2RightOut //
// respectively.
//
//--------------------------------------------------------------------------
//
void Process_Data(void)
{
//Left
//Buffering input
bufferLeft[i] = iChannel0LeftIn;
//convolution with circular buffer
tempLeft=0;
for (j = 0; j < BUFFERLENGTH; j++)
{
tempLeft += (filter[j] >> 16) * (bufferLeft[(i + j) %
BUFFERLENGTH] >> 15);
}
Dari nilai-nilai koefisien yang diperoleh diatas kemudian //Output
dimasukan dalam source code seperti berikut : iChannel0LeftOut = tempLeft;
// //Right
#include "Talkthrough.h" //Buffering input
#define BUFFERLENGTH 32 bufferRight[i]= iChannel0RightIn;
int //convolution with circular buffer
bufferLeft[BUFFERLENGTH],bufferRight[BUFFERLENGT tempRight=0;
H]={0,0,0}; for (j = 0; j < BUFFERLENGTH; j++)
int tempLeft, tempRight = 0; {
int i,j=0; tempRight += (filter[j] >> 16) * (bufferRight[(i + j) %
//Filter Coefficients (from MATLAB): BUFFERLENGTH] >> 15);
int filter[BUFFERLENGTH]= {0,2869454,- }
5628996,5870718,0,-12528018,24938095,- //Output
24238586,0,43586522,-81768406,77088945,0,- iChannel0RightOut=tempRight;
148977863,330592721,-480211122,538136919,- //decreasing i (circular)
480211122,330592721,-148977863,0,77088945,- i=(i+BUFFERLENGTH-1)%BUFFERLENGTH;
81768406,43586522,0,-24238586,24938095,- //
12528018,0,5870718,-5628996,2869454,0} ; //channel1
//Left
iChannel1LeftOut = iChannel1LeftIn;
//-------------------------------------------------------------------------- //right
// iChannel1RightOut = iChannel1RightIn;
}
Blackfin BF561EZ dapat digunakan untuk pemrosessan
Dari source code diatas selanjutnya dilakukan implementasi sinyal digital untuk mendapatkan sinyal output sesuai yang
filter lowpass pada board Blackfin BF561EZ melalui visual di harapkan.
DSP++ Dengan sinyal inputan berupa white noise sehingga Pemodelan filter Fir lowpas , bandpass dan highpass dapat
diperoleh hasil sebagai berikut : diimplementasikan pada BF561EZ dengan menggunakan
nilai koefisien pada filter lowpas, highpass dan bandpass
yang diperoleh dari Fir1 pada matlab. kemudian diproses
dengan algoritma pemfilteran circular buffer pada visual
DSP++.
Hasil implementasi filter dengan algoritma DSP yang
diberi inputan white noise dapat menghasilkan sinyal
output yang menyerupai filter lowpass,bandpass, dan
highpass.
REFERENSI
[1]. Ingle, V. K. and J. G. Proakis, Digital Signal Processing
Gambar 9. Sinyal Hasil pemfilteran Highpass
Using Matlab v.4. Boston, MA: PWS Publishing
Company, 1997.
[2]. Proakis, J.G. and D. G. Manolakis, Digital Signal
Processing, Principles, Algorithms, and Applications 4th
ed. Upper Saddle River, NJ: Prentice Hall, 2006.
[3]. Higham,Desmond J. and Nicholas J. Higham, Matlab
Guide 2nd.Philadelphia:SIAM,2005
[4]. Kananda,kiki,dkk. Praktikum Pengolahan Sinyal Digital.
Laboratorium Dasar Teknik Elektro ITERA, Lampung,
2018
V. SIMPULAN