MODUL PRAKTIKUM Digital Signal Processing (DSP)
ADSP2181 EXPERIMENTS < Digital Signal Processor > Disusun Oleh : Suyatno Budiharjo
Laboratorium DSP Program Studi Telekomunikasi AKADEMI TELEKOMUNIKASI SANDY PUTRA JAKARTA 2006
KATA PENGANTAR
Alhamdulillah, segala puji bagi Allah Azza Wa Jalla, berkat rahmatNya telah terselesaikan Modul Praktikum Pengolahan Sinyal Digital (DSP) ini, lengkap dengan Software, Hardware dan Buku Panduannya. Modul Praktikum DSP ini dirancang, sedemikian rupa sehingga cukup merepresentasikan pembahasan Pengolahan Sinyal Digital dan secara konsep, algoritma dan implementasinya menggunakan program Software dan program dengan Hardware Processor Sinyal Digital atau DSP. Modul Praktikum DSP ini membahas permasalahan dalam implementasi Pengolahan Sinyal Digital, mulai dari Proses Sampling, Kuantisasi, Penundaan atau delay, FIR Filtering, IIR Filtering, dan Efek Audio Digital yang dinyatakan dalam 6 (Enam) Modul Praktek. Modul terdiri dari 3 Modul Software yang dibangun dengan MATLAB dan ke depan perlu pengembangan dengan SCILAB dan 3 Modul Hardware dengan kartu ADSP2181. Meski modul yang tersedia sangat terbatas, tetapi diharapkan cukup memadai dan merepresentasikan apa yang sedang dibahas. Dan dalam setiap kesempatan selalu dikatakan 'Tiada Gading yang Tak Retak' maka dalam Modul Praktikum DSP ini masih banyak kekurangan, dan sangat diharapkan masukan dan saran yang dapat digunakan untuk menutupi kekurangan dan melengkapi, serta mengembangkan ke arah aplikasi yang lebih komplek. Oleh sebab itu Modul Praktikum DSP ini dirancang dengan Software dan Hardware yang programmable dalam arti selalu dapat diupdate dan diupgrade sehingga selalu up to date dengan perkembangan teknologi DSP. Dan terakhir, diharapkan Modul Praktikum DSP yang kecil ini dapat membantu rekanrekan mahasiswa untuk mempelajari DSP dan pembaca pada umumnya untuk mengerti bagaimana Dunia Digital dikembangkan.
Bogor, 31 Maret 2006 Penyusun
Suyatno Budiharjo
MODUL 1 SAMPLING KUANTISASI DAN FORMAT DATA DSP
TUJUAN 1. Peserta mengerti permasalahan dalam sinyal Analog dan sinyal Digital. 2. Peserta memahami konsep Sampling, Rekonstruksi dan Kuantisasi 3. Peserta memahami permasalahan dalam proses Sampling dan Kuantisasi serta mengerti cara mengatasinya. 4. Peserta mengerti konsep Sampling dan Kuantisasi serta mampu mengimplementasikan dengan Perangkat Lunak maupun Perangkat Keras DSP. 5. Memahami Format Data dalam DSP. KONSEP TEORI Laboratorium DSP mempunyai dua komponen software dan hardware. Di dalam komponen sotfware, siswa diperkenalkan dengan sejumlah eksperimen komputer yang ditulis didalam bahasa C atau MATLAB, yang menggambarkan beberapa konsep dasar dan aplikasi dari pengolahan sinyal digital, seperti kuantisasi dan sampling, pengolahan blok dengan konvolusi, pemfilteran secara waktu nyata berbasis sampel demi sampel, perbaikan sinyal dan filter reduksi noise, realisasi langsung, kanonik dan kaskade dari filter digital, analisis spektral dengan DFT/FFT, dan perancangan filter digital FIR dan IIR. Bagian hardware dari lab, menggambarkan pemrograman dari algoritma pengolahan sinyal waktu nyata pada chip DSP secara kongkrit, dengan DSP fixed point ADSP2181. Eksperimen hardware termasuk didalamnya efek aliasing dan kuantisasi, implementasi buffer sirkular dari tunda, filter FIR dan IIR, penghapusan interferensi dengan filter notch, generator gelombang sinyal, dan beberapa efek audio digital, seperti filter combo, reverberator, beberapa multitap, multidelay, dan efek delay stereo. Diasumsikan siswa telah familiar dengan pemrograman C dan atau MATLAB, Fortran boleh digunakan tetapi tidak direkomendasikan. Kebanyakan diperlukan routin C dan MATLAB dan siswa dapat memasukkannya bersama didalam program utamanya. Pengolahan Sinyal Digital, memberikan pengertian bahwa apapun sinyalnya, akan diolah secara digital, dengan demikian sinyal yang dalam Real World atau Dunia Nyata merupakan sinyal analog, perlu dikonversikan ke dalam bentuk Digital. Proses Konversi dari Analog ke Digital memerlukan perangkat atau komponen yang disebut Analog to Digital Converter atau ADC. Terdapat banyak komponen ADC yang disediakan oleh vendor seperti Motorola, Intel, Analog Device, baik ADC 4 bit, 8 bit maupun 16 bit, mulai dari ADC yang tetap maupun ADC yang programmable. Seperti dalam kartu perangkat keras ADSP2181 menggunakan komponen ADC AD1847. Mengapa Harus Digital ? Pada awalnya, semua sistem dibuat dalam bentuk analog dengan komponen analog, dan masukan sinyal analog yang memang pada kenyataannya bentuk analog itu yang tersedia dari lingkungan. Namun pada perkembangannya, terdpat
sejumlah permasalahan ketika sistem analog digunakan, seperti component aging, pengaruh suhu, karena menggunakan power yang cukup besar, sehingga komponen lebih mudah panas, dan ketika sistem membutuhkan hal yang lebih komplek, dan lebih cepat, komponen analog tidak mampu menyelesaikan permasalahan ini, dan disisi lain terdapat sejumlah penemuan baru dengan perangkat digital yang menjanjikan solusi terhadap permasalahan tersebut, komsumsi daya kecil, sehingga komponen tidak cepat panas, dapat diprogram, sehingga lebih flesibel dalam banyak hal. Sehingga tidak ada alasan untuk tidak menggunakan perangkat digital. Dengan flesibilitas yang tinggi, karena programmable maka perkembangan algoritma DSP menjadi sangat pesat dengan kompleksitas yang tinggi. Kelebihan Kekurangan
Kelebihan Kekurangan
Sistem Analog Bandwidth lebar, Resolusi tinggi, Mudah dirancang Umur komponen Drift Temperatur Perancangan hardware Cocok untuk perancangan yang simpel Sistem Digital Solusi terprogram, tidak sensitif lingkungan, perilaku yang presisi, implementasi untuk algoritma yang komplek, dapat ditambahkan fungsi lain, konsumsi daya rendah, Menimbulkan sejumlah problem numerik, memerlukan processor performansi tinggi, sulit dirancang
Apakah anda memperhatikan, bagaimana berbagai hal menjadi digital saat ini? Filter digital, modem digital, transciever digital dan masih banyak lagi yang lain dan untuk alasan yang baik. Representasi digital dari sinyal dibanding analog mempunyai beberapa keuntungan : ✔ komponen lebih sedikit ✔ stabil, perfomansi deteministik ✔ cakupan aplikasi yang luas ✔ tanpa adjustment filter ✔ Filter dengan toleransi yang cukup kecil ✔ Filter adaptif lebih mudah diimplementasikan. Menjalankan Program C Software lab mungkin terdapat didalam beberapa komputer yang tersedia. Fasilitas komputer yang ada diset secara default dengan Unixbased Xterminal. Account komputer akan diberikan pada permulaan perkuliahan atau dapat diperoleh dengan menghubungi system administrator dari lab. dsp. Bahasa pemrograman C dapat dikompile menggunakan Unix C Compiler cc Standar atau GNU C Compiler gcc. Keduanya mempunyai sintak yang sama. Ini direkomendasikan bahwa program C disusun dalam mode modular, linking module terpisah secara bersamaan pada waktu kompilasi. Sebagai contoh dari penggunaan gcc, perhatikan program utama berikut sines.c yang membangkitkan dua sinosoidal yang diberi noise dan menyimpannya (dalam format ASCII) ke dalam file data y1.dat dan y2.dat: /* sines.c - noisy sinusoids */ #include <stdio.h> #include <math.h>
#define L 100 #define f1 0.05 #define f2 0.03 #define A1 5 #define A2 A1 double gran(); /* gaussian random number generator */ void main() { int n; long iseed=2001; /* gran requires iseed to be long int */ double y1, y2, mean = 0.0, sigma = 1.0, pi = 4 * atan(1.0); FILE *fp1, *fp2; fp1 = fopen("y1.dat", "w"); /* open file y1.dat for write */ fp2 = fopen("y2.dat", "w"); /* open file y2.dat for write */ for (n=0; n
} Ketiga program diatas, dapat dikompile dan dilink kedalam file yang dapat dieksekusi dengan memanggil baris perintah dari gcc berikut : gcc sines.c gran.c ran.c –o sines –lm (Versi Unix dari gcc) gcc sines.c gran.c ran.c –o sines.exe –lm(Versi Dos dari gcc) Pilihan baris perintah –lm untuk menghubungkan dengan math library dan harus selalu diletakkan di akhir baris. Pilihan –o membuat file sines yang dapat dieksekusi (atau, sines.exe untuk MSDOS). Jika pilihan ini dihilangkan, maka nama file yang dapat dieksekusi adalah a.out (atau a.exe) secara default.Pilihan yang bermanfaat lainnya adalah pilihan pesan peringatan –Wall : gcc –Wall sines.c gran.c ran.c –o sines –lm Jika baris perintah tersebut terlalu panjang dan cenderung untuk mengetik berulang ulang, Anda dapat menggunakan apa yang disebut dengan file respon, yang dapat berisi semua atau beberapa argumen baris perintah. Sebagai contoh, diberikan file argfile yang berisi barisbaris berikut : -Wall sines.c gran.c ran.c -o sines -lm Kemudian, perintah berikut akan mempunyai efek yang sama sebagaimana cara sebelumnya, dimana nama dari file respon harus didahului dengan karakter tanda @ : gcc @argfile Untuk hanya mengkompilasi, tanpa linking dan membuat file yang dapat dieksekusi, kita dapat menggunakan pilihan baris perintah –c: gcc –c sines.c gran.c ran.c Ini akan membuat modul kode obyek *.o, yang dapat secara berderet dihubungkan ke dalam file yang dapat eksekusi sebagai berikut : gcc –o sines.o gran.o ran.o –lm Menggunakan MATLAB Penggunaan routin DSP builtin MATLAB, seperti filter, conv, fft tidak diijinkan dalam eksperimen lab.Bagaimanapun, MATLAB boleh digunakan sebagai bahasa pemrograman yang mana siswa dapat memprogram versinya sendiri dari berbagai algoritma DSP. Plotting dari data dibuat dengan program C atau MATLAB dapat dilakukan menggunakan fasilitas plotting yang ada di MATLAB. Disini, kita menyajikan beberapa contoh untuk menunjukkan bagaimana mengambil dan menggambarkan ydata dari file data, menyesuaikan range sumbu, menambahkan label, judul, legenda, dan mengubah default font, menambahkan beberapa kurva pada grafik yang sama, dan bagaimana membuat subplot.
Sebagai contoh, bahwa anda ingin menggambarkan data sinusoidal ternoisy dalam file data y1.dat dan y2.dat yang dibuat dengan menjalankan program C sines. Potongan kode MATLAB berikut akan mengambil dan menampilkan data file : load y1.dat; % load data into vector y1 load y2.dat; % load data into vector y2 plot(y1); % plot y1 hold on; % add next plot plot(y2, ’r--’); % plot y2 in red dashed style axis([0, 100, -10, 10]); % redefine axes limits set(gca, ’ytick’, -10:5:10); % redefine yticks legend(’y1.dat’, ’y2.dat’); % add legends xlabel(’time samples’); % add labels and title ylabel(’amplitude’); title(’Noisy Sinusoids’); Hasil dari plot ditunjukkan sebagai berikut. Catat bahwa perintah load y1.dat melepaskan bagian ekstensi (*.dat) dari nama file dan menyatakan data ke dalam vektor yaitu y1.
Perintah hold on membiarkan plot yang pertama dan menambahkan plot yang kedua. Perintah axis menaikkan cakupan sumbu –y dengan maksud memberikan ruang untuk legenda. Legenda, label dan judul menggunakan default font dan ukuran font (Helvetica, size 10 untuk versi Windows). Cara yang lebih fleksibel dan terformat dari pembacaan dan penulisan data dari atau ke dalam file data adalah dengan pengertian dari perintah fscanf dan fprintf, yang terkait dengan fopen dan fclose. Fungsi ini mempunyai kesamaan penggunaan sebagaimana didalam C. Lihat ref.[3] untuk lebih jelasnya. Contoh berikutnya adalah mirip dengan apa yang dibutuhkan didalam Lab1. Contoh kode dibawah ini membangkitkan 2 sinyal x(t) dan y(t) dan menggambarkannya terhadap fungsi waktu t. Ini juga membangkitkan sampel waktu y(tn) pada waktu sesaat tn=nT. Ketiga sinyal x(t), y(t), dan y(tn) tercakup dalam interval waktu total yang sama [0,tmax], tetapi dinyataka oleh array yang berbeda dimensi x(t) dan y(t)
mempunyai panjang 101, sedangkan y(tn) mempunya panjang 11). Ketiga sinyal dapat diletakkan pada grafik yang sama seperti berikut : tmax = 1; % max time interval Nmax = 100; % number of time instants Dt = tmax/Nmax; % continuous-time increment T = 0.1; % sampling time interval t = 0:Dt:tmax; % continuous t x = sin(4*pi*t) + sin(16*pi*t) + 0.5 * sin(24*pi*t); % signal x(t) y = 0.5 * sin(4*pi*t); % signal y(t) tn = 0:T:tmax; % sampled version of t yn = 0.5 * sin(4*pi*tn); % sampled version of y(t) plot(t, x, t, y, ’--’, tn, yn, ’o’); % plot x(t), y(t), y(tn) axis([0, 1, -2, 2]) % redefine axis limits set(gca, ’xtick’, 0:0.1:1); % redefine x-tick locations set(gca, ’ytick’, -2:1:2); % redefine y-tick locations set(gca, ’fontname’, ’times’); % Times font set(gca, ’fontsize’, 16); % 16-point font size grid; % default grid xlabel(’t (sec)’); ylabel(’amplitude’); title(’x(t), y(t), y(tn)’); axes(legend(’original’, ’aliased’, ’sampled’)); % legend over grid Gambar berikut menampilkan hasil dari program diatas. Catatan bahwa sumbu x telah didefinisikan kembali agar sesuai dengan waktu sesaat tersampling tn=nT.
Perintah 'o' menampilkan sinyal tersampling y(tn) sebagai deretan lingkaran. Tanpa 'o' perintah plot akan terinterpolasi secara linier antara 11 titik dari y(tn). Huruf telah diubah ke TimesRoman, ukuran 16, dengan maksud membuat tulisan lebih tampak ketika grafik diperkecil untuk dimasukkan dalam manual ini. Perintah axes membuat set yang baru dari sumbu yang berisi legenda dan menggabungkannya dengan grid awal (jika tidak, grid akan tampak melewati kotak legenda).
Segmen program selanjutnya menampilkan penggunaan perintah subplot, yang sangat bermanfaat untuk penyusunan beberapa grafik pada satu halaman. Ini juga mengilustrasikan perintah stem, yang berguna untuk menampilkan sinyal tersampling. subplot(2, 2, 1); % upper left subplot plot(t, x, t, y, ’--’, tn, yn, ’o’); % plot x(t), y(t), y(tn) xlabel(’t (sec)’); ylabel(’amplitude’); title(’x(t), y(t), y(tn)’); subplot(2, 2, 2); % upper right subplot plot(t, y); % plot y(t) hold on; % add next plot stem(tn, yn); % stem plot of y(tn) axis([0, 1, -0.75, 0.75]); % redefine axis limits xlabel(’t (sec)’); ylabel(’y(t), y(tn)’); title(’stem plot’); Grafik yang dihasilkan ditunjukkan dibawah ini. Catatan bahwa pola subplot 2 x 2 digunakan untuk menampilkan 1 x 2, dengan maksud untuk mendapatkan aspek rasio yang lebih alami.
1.1 SAMPLING Tujuan dari laboratorium ini untuk mendemonstrasikan efek peningkatan aliasing dari sampling yang tidak tepat. Laboratorium ini lebih baik dikerjakan dengan pemograman MATLAB daripada pemrograman C. Diberikan sinyal analog x(t) yang disampling pada laju f s , menghasilkan sampel x(nT) yang kemudian direkonstruksi oleh reconstructor ideal k dalam sinyal analog x a t . Pemilihan yang tidak tepat dari f s akan menghasilkan dalam sinyal yang berbeda x a t ≠ x t , meskipun mreka memenuhi nilai sampelnya, yaitu x a nT = x nT . Prosedur ini dapat diilustrasikan dalam gambar berikut :
Prosedur Laboratorium : a. Diberikan sinyal analog x(t) terdiri dari tiga sinusoidal dengan frekuensi, f 1=1 kHz , f 2=4 kHz dan f 3=6 kHz :
x t =2sin2 f 1 t 2sin2 f 2 t sin 2 f 3 t dimana t dalam milidetik. Tunjukkan bahwa jika sinyal ini disampling pada laju f s=5 kHz , ini akan terjadi aliasing dngan sinyal berikut, dalam pengertian bahwa nilai sampelnya akan sama dengan :
x a t =sin 2 f 1 t
Pada grafik yang sama, plot dua sinyal x(t) dan x a t versus t dalam cakupan 0 t 2 mdetik. Untuk tujuan grafik, anda dapat mengevaluasi sinyal pada L = 200 yang sama dengan waktu sesaat dalam interval tersebut, yaitu t =2i/ L , dimana i=0,1,...,L1. Gunakan divisi xgrid 10 dengan tujuan untuk menunjukkan nilai tersampling yang terjadi pada interval dari interval sampling T =1/ f s=0.2 mdetik. Buktikan bahwa dua sinyal mempunyai nilai sampel yang sama. b. Ulangi bagian (a) dengan f s=10 kHz . Dalam kasus ini, tunjukkan bahwa x(t) bertumpang tindih dengan sinyal :
x a t =2sin2 f 1 t sin 2 f 2 t Plot keduanya x(t) dan x a t pada grafik yang sama melalui cakupan 0t 2 mdetik. Tetapi gunakan divisi xgrid 20 untuk menunjukkan nilai tersampling yang terjadi interval dari T = 0.1 mdetik. Buktikan bahwa dua sinyal berpotongan pada sampling sesaat.
Catatan untuk melakukan langkah diatas, gunakan program MATLAB yang telah tersedia, yaitu : i. Jalankan program MATLAB, sehingga anda akan mendapati tampilan sebagai berikut :
ii. ketikkan baris perintah pada MATLAB prompt sebagai berikut untuk mengubah current directory (cd) : >> cd c:\ezkit_r12_b05 ↵ Langkah ini akan menghasilkan tampilan sebagai berikut :
iii. ketik nama program dalam hal ini allaboutdsp.m pada MATLAB prompt untuk menjalankan modul praktikum : >> allaboutdsp ↵ Langkah ini akan menghasilkan tampilan sebagai berikut :
iv. Untuk pembahasan tentang sampling, sorot Menu Modul > Modul 1 : Sampling Kuantisasi > Sampling, kemudian masukkan parameter sesuai dengan langkah (a) dan (b).
1.2 KUANTISASI Tujuan dari laboratorium ini adalah untuk mempelajari proses kuantisasi dengan mensimulasikasi operasi conversi A/D and D/A menggunakan rutin adc dan dac yang didiskusikan dalam bab kuantisasi. Sinyal sinusiodal tersampling dibangkitkan dan kemudian dikuantisasikan menggunakan ADC dengan pendekatan succesive komplemen 2 dengan pembulatan. Sebagai tambahan nilai ratarata dan kuadrat rata secara teoritis dari error kuantisasi : 2
Q 2 e=0 , e = 12 akan diuji dengan pembangkitan sampel statistik dari error kuantisasi dan komputasi ratarata sampel yang berhubungan. Ini juga akan memberikan ksmpatan untuk bekerja dengan pembangkit bilangan random. Laboratorium ini terbaik dikerjakan dalam MATLAB. Kebutuhan fungsi dac.m dan adc.m juga bagian dari suplemen Mfile. Prosedur Laboratorium a. Bangkitkan L = 50 sampel dari sinyal sinusiodal x n = A cos2 f n , n=0,1,..,L1 dari frekuensi f = 0.02 [siklus/sampel] dan amplituda A =8. Penggunaan konverter A/D pendekatan successive komplemen 2 bipolar 3bit (B = 3), seperti diimplementasikan oleh rutin adc, dngan cakupan skala penuh R = 32, kuantisasikan x(n) dan notasikan sinyal terkuantisasi oleh x Q n . Ini dapat dikerjakan sebagai berikut : untuk setiap x(n), pertama memanggil adc untuk membangkitkan vektor bit komplemen 2 yang berhubungan, b =[ b1, b2,. .. ,b B] dan masukkan ini ke dalam dac untuk membangkitkan nilai terkuantisasi yang berhubungan, x Q n . Untuk n = 0,1,.., L – 1, cetak dalam 3 kolom paralel nilai analog yang benar, x(n), nilai terkuantisasi analog x Q n , dan berkorespondensi dengan vektor bit komplemen 2, b. Pada grafik yang sama, plot dua sinyal x(n) dan x Q n pada sumbu n. Skalakan skala vertikal dari [16,16] dan gunakan garis ygrid 8 untuk menunjukkan level kuantisasi 8. b. Ulangi bagian (a) menggunakan konverter A/D B = 4 bit. Dalam ploting x(n) dan x Q n menggunakan skala vertikal yang sama seperti diatas, yaitu dari [16,16], tetapi menggunakan garis ygrid 16 untuk menunjukkan level kuantisasi 16. c. Apa yang terjadi ketika sinyal analog yang dikuantisasikan mempunyai amplituda yang melebihi cakupan skala penuh dari Quantizer? Kebanyakan konverter D/A akan saturasi pada level terbesar (positif atau negatif). Untuk melihat hal ini, ulangi part (b) dengan pengambilan nilai amplituda dari sinusiodal menjadi A = 20. d. Akhirnya, kita akan mengetes nilai secara teoritis yang diberikan oleh persamaan (1.1) Catatan :
Gunakan program DSP yang tersedia seperti langkah iii. Kemudian dilanjutkan dengan menyorot menu Modul > Modul 1 : Sampling Kuantisasi > Kuantisasi. Kemudian masukkan parameter kuantisasi.
1.3 FORMAT DATA DSP Sebelum mengolah data nilai riil, kebanyakan chip DSP fixedpoint harus menskala data ke integer yang kmudian direpresentasikan dalam format biner atau heksadesimal. Sebagai contoh, chip Analog Device keluarga ADSP21xx 16bit menggunakan yang disebut dengan format 1.15 fixedpoint untuk merepresentasikan nilai riil. Kebanyakan inkarnasi dari chip ini, ADSP2181, adalah salah satu dari yang tercepat. Jika tidak tercepat, fixed point DSP, dengan waktu instruksi 30 nsec. Format 1.15 secara esensial adalah format integer 16bit komplemen 2 terskala yang bit pertamanya sebagai bit tanda, dan 15 bit sisanya menyatakan bagian pecahan dari bilangan. Untuk memahami format ini, kita mulai dengan representasi komplemen 2 yang diberikan oleh persamaan (2.35) dari referensi, dengan cakupan skala penuh R=1 dan B =16 :
x = b1 2−1b2 2−2b2 2−3... b16 2−16 −0.5
LSB adalah Q=2−16 dan cakupan bilangan x adalah [0.5,0.5): −16
−0.5 x 0.5−2
Kita sebut ini sebagai format fixedpoint 0.16. Penggantian b1 =1−b1 kita dapat menuliskan kembali ekspresi diatas dalam bentuk yang konvensional : (format 0.16) x =−b1 2−1 b2 2−2 b2 2−3 ...b16 2−16 Jika kita skala bilangan ini ke atas dengan faktor 2, kita akan peroleh format 1.15 : x =2 −b1 2−1 b2 2−2 b2 2−3 ...b 16 2−16 (format 1.15) Sekarang LSB adalah Q=2−15 , R=2 dan cakupan dari x adalah [1,1): −15
−1x 1−2
Secara umum, kita dapat mendefinisikan format 16bit a.b dengan penskalaan ke atas format 0.16 dengan faktor dari 2a dimana a+b = 16 : x =2a −b1 2−1b 2 2−2 b2 2−3 ...b16 2−16 (format a.b) dimana a dapat diambil nilai a=0,1,...16. LSB sekarang adalah Q=2a−16 =2b dan R =2a . Cakupan dari x adalah [ −2 a−1 , 2a−1 ):
−2 a−1 x2 a−1 −2−16
Untuk a = 16, yaitu format 16.0, bilangan x adalah integer 16bit komplemen 2, dan untuk nilai a yang lainnya, mereka adalah versi skala ke bawah dari integer. Bilangan x direpresentasikan oleh persamaan (1.5) adalah secara unik dicirikan oleh 16 bit
b =[ b1, b2,. . b16 ] yang kemudian dapat direpresentasikan oleh 4 digit 4bit heksadesimal, katakanlah h =[ h 1, h2, h3, h 4 ] Integer direpresentasikan oleh 16 bit bi dan 4 digit heksadesimal hi adalah sama. Jadi, jika diberikan format yang diharapkan a.b, bilangan riil dari x dapat secara unik digabungkan dengan integer : x b1, b2,. .b 162= h1, h 2, h 3, h4 16 Bilangan riil x dalam cakupan [ −2 a−1 , 2a−1 ) tidak akan secara tepat dapat direpresentasikan dalam bentuk dari persamaan (1.5). Ini harus dibulatkan ke bilangan terdekat yang dapat direpresentasikan. Ini dapat dilakukan dengan penggeseran x dengan setengah level spasi, yaitu Q / 2=2− b / 2 dan kemudian dilakukan pemotongan pada level yang lebih rendah. Sebagai contoh, dua bilangan ±0.995 dalam format 1.15 dan dua bilangan ±2.995 dalam format 3.13, akan diasosiasikan dengan bilangan heksadesimal : +0.995 7F5C = +0.9949951171875,
+2.995 5FD7 =+2.9949951171875
0.995 80A4 = +0.9949951171875,
2.995 A029 =+2.9949951171875
Catatan bahwa 80A4 dan A029 adalah komplemen 2 dari 7F5C dan 5FD7. Beberapa informasi lebih lanjut pada format ini terdapat dalam sub bab 2.2 dari manual ADSP 2181 Experiments”. Prosedur Laboratorium a. Tulis sebuah program Matlab yang mengambil masukan vektor kolomm bilangan riil x dalam cakupan [ −2 a −1 , 2a−1 ), konversikan masingmasing bilangan ke dalam representasi heksadesimal h1, h 2, h 3, h4 menurut format a.b (gunakan pembulatan) dan keluarkan mereka dalam susunan atau array keluaran. Konstruksi dari sebuah program dapat dikerjakan menurut baris berikut, pertama perlu dicatat bahwa representasi 16bit dari setiap x yang diberikan dapat diperoleh dengan bantuan fungsi adc : bits = adc(x,B,R), dimana B = 16 dan R = 2a Bit mungkin akan dikelompokkan dalam 4 bit yang mendefinisikan isi dari digit heksadesimal :
bits=[ b1, b2, b3, b4 , b5, b6, b7, b8 , b9, b10, b11, b12 , b13, b14, b15, b16 ] h1
h2
h3
h4
kemudian anda akan menghitung digit heksadesimal yang direpresentasikan oleh 4 bit dan mengkonversikannya ke heksadesimal menggunakan fungsi yang ada di MATLAB dec2hex, sebagai contoh :
h 1=dec2hex 23 b122 b2 21 b 320 b4 Catatan : Jalankan program MATLAB yang tersedia seperti langkahlangkah sebelumnya, kemudian sorot menu Modul > Modul 1 : Sampling Kuantisasi > Format Data DSP
ANALISA 1. Lakukan analisa terhadap data yang diperoleh setiap langkah prosedur laboratorium diatas. 2. Sertakan data berupa grafik, angka yang berasal dari hasil program. 3. Sesuaikan analisa anda dengan konsep yang sedang dibahas.
MODUL 2 KONVOLUSI DAN FIR FILTERING
TUJUAN 1. Peserta memahami arti filosofi dari Konvolusi, serta implementasinya dalam dunia nyata. 2. Peserta mengerti proses filtering dan mampu membuat filter Digital FIR. 3. Peserta memahami permasalahan dalam pembuatan filter Digital dan mengetahui perangkat atau komponen yang digunakan untuk membuat filter digital. KONSEP TEORI Konvolusi adalah penggabungan dua sinyal untuk membentuk sebuah sinyal ketiga secara matematis1. Ini adalah teknik yang paling penting didalam Pengolahan Sinyal Digital. Dengan strategi dari dekomposisi impulse, sistem yang dideskripsikan oleh sebuah sinyal disebut impulse response. Konvolusi menjadi penting, karena ini berhubungan dengan tiga sinyal terkait : sinyal masukan, sinyal keluaran dan respon pulsa. Sebuah sinyal dapat didekomposisi ke dalam kumpulan dari komponen yang disebut impulse, dimana sebuah sinyal disusun dari kumpulan nol, kecuali satu titik yang tidak nol. Dan ini mengakibatkan, dekomposisi impulse menyediakan cara untuk menganalisa sinyal satu sampel pada satu waktu. Gambar berikut mendefinisikan dua istilah yang penting yang digunakan dalam DSP. Pertama, fungsi delta, yang disimbolkan oleh huruf Yunani dengan huruf delta, (n). Fungsi delta adalah pulsa ternormalisasi, dimana sampel bernilai satu pada titik nol, dan bernilai nol pada titik yang lainnya. Istilah kedua adalah impulse response. Sesuai dengan namanya, respon impulse adalah sinyal yang keluar dari sistem ketika sistem diberikan masukan fungsi delta atau sinyal impulse. Jika dua sistem berbeda dalam berbagai hal, maka mereka akan mempunyai respon impuls yang berbeda pula. Biasanya, sinyal masukan dan keluaran sering dinotasikan dengan x(n) dan y(n) secara berurutan, dan respon impuls biasanya diberikan simbol, h(n). Tentu, ini dapat diubah, jika tersedia pendefinisian lebih lanjut, sebagai contoh f(n) bisa digunakan unruk mengidentifikasikan respon impuls dari sebuah filter. Konvolusi Berikut cara singkat untuk memahami, bagaimana sebuah sistem mengubah sinyal masukan ke dalam sinyal keluaran. Pertama, sinyal masukan dapat disekomposisikan kedalam set dari impuls, masingmasing dapat ditampilkan sebagai bentuk terskala dan tergeser dari fungsi delta. Kedua, keluaran yang dihasilkan dari setiap impuls adalah versi terskala dan tergeser dari respon impuls. Ketiga, keluaran sinyal secara keseluruhan, dapat diperoleh dari penjumlahan respon impuls terskala dan tergeser. Dengan kata lain, jika kita mengetahui respon impuls sistem, maka kita dapat menghitung keluaran apa yang akan diperoleh untuk berbagai sinyal masukan yang mungkin.
1 Ch. 6 Convolution, Steven W Smith
Gambar fungsi delta dan respon impuls Berikut adalah ilustrasi yang menyatakan hubungan antara sinyal masukan, x(n), respon impuls sistem, h(n) dan sinyal keluaran sistem, y(n).
Gambar hubungan sinyal x(n), h(n) dan y(n) Sedangkan respon impuls dapat diperoleh dengan hubungan seperti gambar berikut :
Secara matematis, konvolusi dapat dirumuskan sebagai persamaan berikut :
y n =∑ h i . x n − i
Tergantung pada aplikasi dan hardware, sebuah operasi pemfilteran digital dapat disusun untuk beroperasi berbasis blok atau sapel per sampel. Dalam kasus pengolahan blok, sinyal masukkan dipertimbangkan sebagai satu blok besar sari sampel sinyal. Blok difilter dengan mengkonvolusikan sinyal dengan filter, yang akan membangkitkan sinyal keluaran sebagai blok besar yang lainnya. Jika sinyal masukkan mempunyai durasi yang sangat panjang atau tak terbatas (infinite), maka metode ini memerlukan modifikasi, sebagai contoh pecah sinyal masukkan kedalam blok kecil yang lebih banyak. Sebagai alternatif yang lain, menggunakan pendekatan untuk mengatur atau mengolah berbasis sampelper sampel, seperti bahwa kapanpun sampel masukkan tiba, ini akan menghasilkan sinyal terfilter yang berhubungan dengan sampel keluaran. Pendekatan ini sangat bermanfaat dalam aplikasi waktu nyata meliputi
masukan sinyal yang panjang. Ini juga bermanfaat dalam aplikasi pemfilteran adaptif dimana filter sendiri berubah setelah setiap operasi pemfilteran dilakukan. Lebih lanjut, hal ini secaa efisien dapat diimplementaskan dengan processor DSP, seperti Texas Instrument, Motorola, Analog Device aatau Bell Labs DSP. Prosedur Laboratorium Modul ini membuat penggunaan dari rutin conv dan fir untuk membentuk pemfilteran digital. a. Konvolusi : Diberikan sebuah integrator seperti filter yang didefinisikan oleh persamaan I/O :
y n =0.1[ x n x n−1 x n −2... x n−14]
Seperti sebuah filter mengakumulasikan (mengintegrasi) 14 sampel saat ini dan yang lalu dari sinyal masukan. Faktor 0.1 menyatakan hanya faktor skala untuk eksperimen ini. Berikut ini adalah respon impuls dari filtrer akan menjadi :
Untuk mengobservasi respons steady state dari filter ini, dipertimbangkan sinya masukan gelobang segi empat dengan L =200 dan periode K =50 sampel. Sebuah sinyal dapat didefinisikan dengan loop for sendiri : for (n=0; n
Filter ini lebih mirip integrator tipe RC daripada akumulator. c. Ulangi langkah (a) untuk filter dengan fungsi transfer :
d. Pengolahan sampel per sampel. Ulangi langkaj (b) menggunakan rutin fir. Apakah keluaran sinya y(n) yang dihitung disini dan dalam (b) identik untuk semua n? e. Pemfilterang FIR dengan pengalamatan sirkular. Ulangi langkah (d) menngunakan rutin sirkular buffer cfir.
f. untuk menunjukkan konsep respon impuls, linieritas, dan tak ubah terhadap waktu, n diberikan filter dengan respon impuls terbatas, h n=0.95 untuk 0n 24 , sinyal masukan :
ANALISA 1. Lakukan analisa terhadap data yang diperoleh setiap langkah prosedur laboratorium diatas. 2. Sertakan data berupa grafik, angka yang berasal dari hasil program. 3. Sesuaikan analisa anda dengan konsep yang sedang dibahas.
MODUL 3 IIR FILTERING TUJUAN 1. Peserta mampu merancang dan mengimplementasikan filter IIR 2. Peserta memahami karakteristik filter IIR 3. Peserta dapat menggunakan filter IIR untuk aplikasi reduksi noise 4. Peserta mengerti konsep perbaikan sinyal dengan filtering
KONSEP TEORI Bagian pertama dari modul ini mengilustrasikan melalui contoh filter IIR sederhana, prinsip dari perbaikan sinyal dan reduksi noise. Bagian kedua mengilustrasikan perbedaan antara respon steady state dan transien dan trade off antara konstanta waktu dan ketajaman dari spesifikasi filter. Keduanya akan memberikan kesempatan untuk memprogram algoritma pengolahan sampel dari filter IIR menggunakan linier dan sirkular. Perbaikan Sinyal dan Reduksi Noise Diberikan sinyal sinusoidal dengan frekuensi f o = 500 Hz pada sampling rate f s = 10 kHz :
x n =cos0 n v n
dimana : 0 =2 f 0 / f s adalah frekuensi digital dan v(n) sebagai noise. Ini diharapkan untuk merancang filter H untuk mengekstraksi sinyal yang diharapkan s n =cos0 n dari sinyal terkena noise yang tersedia x(n). Seperti halnya sebuah filter harus mempunyai dua properti, pertama, ini harus membuang komponen noise v(n) sebanyak mungkin, dan kedua, harus membiarkan sinyal yang dirapkan s(n) lolos tanpa perubahan, kecuali mungkin waktu tunda. Kedua kebutuhan ini, dipenuhi oleh perancangan filter bandpass yang memiliki passband yang bersesuaian dengan passband sinyal yang diharapkan. Sedangkan komponen noise biasanya merupakan sinyal noise gaussian yang memiliki daya tersebar ke semua komponen frekuensi yang ada. Setelah pemfilteran, semua daya noise akan direduksi karena hanya daya yang dberada dalam passband dari filter yang akan bertahan selama proses pemfilteran. Dalam contoh kita, passband dari sinyal yang diharapkan hanya frekuensi 0 . Kemudian kita harus merancang filter lolos frekuensi tengah dengan pusat pada 0 dengan gain = 1 pada frekuensi tersebut, yaitu ∣H 0 ∣=1 . Pilihan yang mungkin dan paling sederhana untuk filter seperti ini adalah filter 2 pole resonator dengan pole pada R e± j dimana R harus dipilih menjadi 0 < R < 1 untuk kestabilan. Fungsi transfer akan menjadi bentuk : 0
H z =
G G = − j −1 z 1−R e 1a1 z a2 z−2
j 0 −1
1−R e
0
2 dimana a1=−2Rcos0 dan a2=R . Gain G adalah tetap, sehingga untuk menjamin ∣H 0 ∣=1 . Ini memberikan ekspresi untuk G sebagai berikut :
G=1−R 1−2R cos2 0 R 2 1/ 2 Dalam domain waktu, filter dijelaskan dengan persamaan perbedaan :
y n =−a1 y n−1−a 2 y n −2Gx n
Respon impuls dari filter dapat ditunjukkan :
h n =
G R n sin 0 n 0 , n = 0,1,2,.. sin 0
Akhirnya, respon magnituda kuadrat dapat ditunjukkan oleh :
∣H ∣2=
G2 [1−2Rcos−0R 2 ][1−2Rcos ¿ R 2 ]
Diagram blok implementasi persamaan perbedaan dan fungsi transfer diatas ditunjukkan oleh :
Cara terbaik untuk memprogram persamaan perbedaan diatas melalui algoritma pengolahan sampel. Untuk menurunkan hal ini, didefinisikan sinyal keluaran tertunda berikut : w1 n = y n −1 , w2 n = y n −2 Maka persamaan perbedaan diatas dibaca :
y n =−a1 w1 n −a 2 w2 n Gx n
Sekali y(n) dihitung, nilai dari w1 n dan w2 n mungkin diupdate pada waktu sesaat berikutnya oleh :
w2 n 1= w1 n
w1 n 1= y n Ini
secara
mudah
diturunkan
dari definisinya, yaitu : w2 n 1= y n 1−2= y n −1= w 1 n dan w1 n 1= y n 1−1= y n . Algoritma komputasi secara mudah sebagai berikut :
Untuk setiap sampel masukan x kerjakan :
y =−a 1 w1−a 2 w 2Gx w2 =w1 w1 = y
Prosedur Laboratorium Pertama, buktikan persamaan (3.3) melalui (3.6). Kemudian, untuk setiap tiga nilai R = 0.95, R = 0.97, R = 0.99, lakukan berikut : a. Plot respon magnituda kuadrat ∣H f ∣2 melalui cakupan frekuensi 0f 5 kHz. Saran : Untuk tujuan plotting, anda dapat menghitung 2 ∣H f ∣ pada 500 yang ekivalen frekuensi dalam cakupan frakuensi tersebut. Catatan =2 f / f s b. Hitung respon impuls h(n) dari filter oleh pengiriman impuls satuan pada masukan dari persamaan perbedaan dan iterasi ke depan dalam waktu (dengan kondisi awal 0). Bandingkan nilai yang hasil komputasi dengan nilai yang diperoleh dari persamaan. Plot kuantitas h(n)/G terhadap fungsi n dalam cakupan 0n 300 . Gunakan cakupan vertikal [4,4] untuk plot anda. c. Dengan menggunakan fungsi untuk membangkitkan bilangan random gaussian gran dengan ratarata = 0.0 dan sigma =1.0, bangkitkan 300 sampel dari sinyal derau putih v(n) dan sinyal sinusiodal terkena noise yang berhubungan, x(n). Mengacu pada program sines.c dari modul 1 untuk contoh dari bagaimana melakukan ini. Plot x(n) sebagai fungsi n menggunakan cakupan vertikal [4,4]. Jika anda bekerja dengan MATLAB, anda dapat menggunakan fungsi yang tersedia randn untuk membangkitkan noise. Sebagai contoh, untuk membangkitkan 300 sampel zero mean dan variansi sama dengan satu : I = 2003; % ubah ini dengan nilai integer yang lain randn('state'I); % inisialisasi pembangkit v=randn(1,300); % v adalah vektor baris dengan panjang 300 d. Menggunakan algoritma pengolahan sampel, filter x(n) melalui filter H(z) dan hitung serta plot sinyal keluaran y(n) dalam cakupan 0n 300 . Pada grafik yang sama, letakkan noise yang diharapkan sinyal bebas noise s(n). Lagi, gunakan cakupan vertikal [4,4]. Diskusikan trade off antara ketajaman filter bandpass dan kecepatan respon untuk mencapai keadaan tunak dalam sinyal terfilter. e. Filter sinyal noise v(n) secara terpisah melalui filter bandpass dan hitung noise keluaran terfilter yang berhubungan, katakanlah y v n . Jelaskan mengapa noise terfilter tampak seperti sinusiodal daripada noise.
Sifat Transient dan Steady State Kita melihat bahwa respon sinusiodal dari filter orde 2 dengan pole pada p1 , p2 mempunyai bentuk tepat seperti beriktu, untuk n 0 :
x n =cos0 n ⇒ y n =∣H 0 ∣cos0 n 0B1 pn1 B2 pn2 dimana phasa tergeser 0 adalah nilai dari respon phasa dari filter pada 0 dan B1, B2 tergantung pada bagian dari fungsi transfer. Pada bagian ini, anda akan mempelajari bagaimana istilah steady state merepresentasikan keluaran dari sinyal dengan durasi pendek dan efek dari istlah transient pada konstanta waktu dari filter. Dipertimbangkan sinyal berikut dengan durasi 3 detik yang didefinisikan sebagai 3 sinyal sinusoida amplituda satuan dari frekuensi f 1=5, f 2 =10, f 3=15Hz :
Sinyal ini disampling pada laju dari f s=300 sampel / detik . Dua filter berikut beroperasi pada laju f s , adalah filter notch yang telah dirancang untuk mempunyai notch pada f 2=10Hz , kemudian, mereka akan diredam pada bagian tengah dari x(t) :
Filter pertama mempunyai lebar 3dB dari f =10Hz dan filter kedua, mempunyai lebar f =1Hz . Respon magnituda ∣H f ∣ seperti ditunjukkan berikut. Kita akan mempelajari bagamana merancang filter. Mereka telah dirancang menggunakan toolbox MATLAB parmeq dengan parameter. [a,b] = parmeq(1,0,1/sqrt(s), 2*pi*f2/fs, 2*pi*Df/fs) dimanaa,b adalam vektor koefisien filter denumerator dan numerator. Dalam eksperimen ini, kita akan mempelajari hubungan antara lebar notch dan konstanta waktu transient. Prosedur Laboratorium a. Gambarkan realisasi kanonik dari setiap filter dan tuliskan algoritma pengolahan sampel menggunakan buffer delayline linier. Karena ini adalah seksi order 2, maka mereka diimplementasikan menggunakan fungsi sos.c atau sos.m b. Hitung konstanta waktu 1 % dari kedua filter ini dalam detik. c. Diberikan x t n menotasikan masukan tersampling dari x(t). Gambarkan x t n dan t n melalui 3 detik periode. Gunakan fungsi sos, filter masukan ini menggunakan H1 z dan plot keluaran y t n dan t n . d. Perhatikan seberapa cepat bagian tengah dari x t n dikeluarkan. Perhatikan juga bahwa bagian f 1 dan f 3 tidak lagi mempunyai amplituda satu. Uji bahwa amplituda steady state diberikan secara berturutturut oleh respon magnituda ∣H1 f 1∣ dan ∣H1 f 3∣ . Anda dapat mengerjakan hal ini dengan ploting baris horisontal dari bobot ∣H1 f 1∣ dan ∣H1 f 3∣ melalui hubungan porsi sinyal atau dengan menggunakan fungsi MATLAB max untuk menentukan nlai maksimum dari dua porsi dan kemudian membandingkan keduanya dengan menghitung nilai respon. e. Ulangi pertanyaan (c,d) untuk filter kedua H2 z f. Pada dua grafik yang terpisah, plot respon magnituda ∣H1 f 1∣ dan ∣H1 f 2∣ dalam cakupan 0n 30 Hz g. Untuk setiap filter, hitung frekuensi korespondensi 3dB kiri dan kanan, katakanlah fL dan fR, dan menunjukkan mereka pada grafik dari bagian (f) dengan menghubungkan mereka dengan segmen horisontal pada level 3dB. Uji bahwa perbedaan fR fL adalah sama dengan lebar 3dB yang diberikan dari 10 Hz dan 1 Hz secara berurutan.
ANALISA 1. Lakukan analisa terhadap data yang diperoleh setiap langkah prosedur laboratorium diatas. 2. Sertakan data berupa grafik, angka yang berasal dari hasil program. 3. Sesuaikan analisa anda dengan konsep yang sedang dibahas.
MODUL 4 ARSITEKTUR DAN SET INSTRUKSI ADSP2181 TUJUAN 1. Peserta mengerti dan memahami arsitektur dari Pocessor ADSP2181 2. Peserta mengenal dan dapat menggunakan set Instruksi pada ADSP21xx. 3. Peserta mampu melakukan Instalasi dan Konfigurasi Software dan Hardware ADSP2181 4. Peserta mampu membuat program Assembly untuk menjalankan processor DSP. 5. Peserta mengerti bagaimana menulis program, merakit, menghubungkan, membebankan dan menjalankan program DSP pada chip. KONSEP TEORI Terdapat sejumlah vendor yang memproduksi chip mulai dari komponen IC, mikrokontroller, sampai Processor yang dirancang khusus untuk Pengolahan Sinyal Digital, seperti vendor Motorola dengan produk DSP, semacam DSP5600, DSP56001/2, DSP96k, Texas Instrument dengan TMS320C5, TMS320C54, TMS320C6, Analog Device Inc. dengan ADSP2105, ADSP2110, ADSP2181, ADSP2196, dan masih banyak vendor yang lainnya. Berikut adalah daftar Perangkat komersial yang diproduksi yang menggunakan DSP antara lain adalah : 1. Aplikasi Elektronik Lanjut (http://www.timewave.com/aea.html) DSP232 MultiMode Data Controller DSP2232 MultiMode Data Controller 2. HAL Communication Corp. DSP4100 HF Radio DSP Modem 3. JPS Communication Corp.(http://www.jps.com) NIR12 DualDSP Noise & Interference Reduction unit NTR1 DSP Wideband Noise/Notch Filter 4. Special Communications Systems (http://www.spsptc.com) PTCII DSP Multimode PACTORController 5. Timewave Technology, Inc. (http://www.timewave.com) DSP599zx Audio Noise Reduction Filtr DSP59+ Digital Noise Filter 6. Motorola Digital Signal Processing (http://www.mot.com/SPS/DSP/) DSP56002EVM Evaluation Module (EVM) 7. Texas Instruments (http://www.ti.com/sc/docs/dsps/dsphome.htm) TMS320C2x DSP Starter Kit (DSK) TMS320C3x TMS320C5x TMS320C54x DSKplus 8. Analog Devics, Inc. (http://www.analog.com/ ) ADSP2101 EZKIT ADSP2103 ADSP2105 ADSP2115 ADSP2181
EZKIT ADSP21020 Digital Signal Processor Sebuah Prosessor Sinyal Digital merupakan sebuah CPU untuk tujuan khusus, yang menyediakan deretan instruksi yang sangat cepat seperti penggesaran dan jumalh, perkalian dan jumlah, yang secara bersamaan digunakan dalam aplikasi pengolahan sinyal intensif matematik. DSP tidak sama dengan mikroprosessor pada umumnya. Mikroprocessor yang umumnya merupakan perangkat tujuan umum yang berjalan dengan blok yang besar dari software. Mereka tidak digunakan untuk komputasi yang real time dan mereka bekerja pada bidang yang lebih lambat, memilih aksi tertentu, kemudian menunggu untuk menyelesaikan tugas yang ada sebelum merespon perintah pengguna berikutnya. DSP, disisi lain, sering digunakan sebagai tipe dari embedded controller atau processor yang dibangun ke dalam sisi yang lain dari perangkat dan diddikasikan untuk mengerjakan kelompok tunggal dari pekerjaan. Pengolahan Sinyal Digital Pengolahan Sinyal Digital merupakan sebuah teknik yang mengkonversi sinyal dari sumber dalam dunia riil (biasanya dalam bentuk analog) ke dalam data digital yang kemudian dapat dianalisa. Analisis dibentuk dalam format digital karena sekali sebuah sinyal telah direduksi ke dalam bilangan, komponennya daoat dipisahkan, dianalisa dan disusun kembali lebih mudah dari pada bentuk analog. Meskipun, ketika DSP telah menyelesaikan pekerjaannya, data digital kembalikan lagi ke dalam sinyal analog, dengan perbaikan kualitas. Sebagai contoh, Sebuah DSP dapat menyaring derau dari sinyal, membuang interferensi menguatkan frekuensi dan menekan yang lainnya, mengenkripsi informasi, atau menganalisa bentuk gelombang kompek ke dalam komponen spektralnya. Proses ini harus ditangani dalam real time, yang seringnya sangat cepat. Untuk secara singkat, perangkat stereo mengontrol sinyal suara sampai dengan 20 kHz (20.000 periode per detik), membutuhkan DSP untuk membentuk ratusan juta operasi per detik. Tipe DSP Karena berbeda aplikasi mempunyai variasi cakupan frekuensi, berbeda DSP yang dibutuhkan. DSP dikelompokkan berdasarkan dynamic rangenya, sebaran bilangan yang dapat diproses dalam aplikasi tertentu. Bilangan ini nerupakan fungsi dari lebar data prosessor (jumlah bit yang dimanipulasi) dan tipe aritmatik yang dibentuk ( fixed atau floating point). Sebagai contoh prosessor 32bit mempunyai dynamic range yang lebih lebar dibandingkan prosessor 24bitm yang mempunyai dynamic range lebih lebar dibandingkan prosessor 16bit. Chips floating point mempunyai range lebih lebar dibandingkan perangkat fixed point. Setiap tipe dari prosessor sesuai untuk range aplikasi tertentu. DSP 16bit fixed point yang digunakan untuk sistem untuk voice grade seperti sebuah phone, sejakmereka bekerja dengan range dari frekuensi yang lebih relatif sempit. Suara stereo dengan tingkat ketajaman tinggi mempunyai cakupan yang lebih lebar, katakan untuk ADC 16bit dan DSP fixed point 24bit. Pengolahan citra grafik 3D dan simulasi scientific
mempunyai dynamic range yang lebih lebar dan membutuhkan prosessor floating point 32bit.
Gambar Modul Evaluasi ADSP2181 EZKIT Aplikasi Berikut ini adalah berbagai aplikasi yang dapat menggunakan Processor DSP, antara lain adalah : • • • • • •
Speaker phones Smart phones Smartcard readers POS terminals Digital speech interpolation Video conferencing
• • • • •
Data encryption ISDN modems Pattern matching Global positioning Navigation
Arsitektur ADSP2181 Bab ini berisi deskripsi detail dari arsitektur ADSP2181.
Gambar 1: Diagram Blok ADSP2181 Unit Komputasional ADSP2181 berisi 3 unit komputasional secara bebas :
Unit Logika dan Aritmatika (ALU) : Membentuk set standar dari operasi aritmatika dan logika dalam penjumlahan atau pembagian primitif. Multiplier / Accumulator (MAC) : Membentuk satu siklus operasi kali, kali / jumlah, dan kali / kurang Barrel Shifter : Membentuk operasi penggeseran aritmatika dan logika, normalisasi, denormalisasi dan turunan eksponen. Prosedur Laboratorium Laboratorium ini mencakup topik pada sub bab 4.1 sebagai berikut : a. Diskusi dari bab 3 dari ADSP2181 Manual yang menjelaskan arsitektur, set instruksi, dan bagaimana menulis program DSP yang mengimplementasikan algoritma pengolahan sampel per sampel. b. Dengarkan efek dari kuantisasi. Dalam eksperimen ini, sinyal masukan disampling dengan frekuensi tertentu pada 16 bit per sampel. Kemudian dikuantisasi ulang dengan kurang dari 16 bit dan putar atau jalankan kembali. c. Dengarkan efek dari aliasing. Karena pemilihan dari sampling rate, dalam eksperimen ini sinyal masukan disampling dengan rate fs=48 kHz. Kemudian didecimasikan sampel dengan faktor L ke sampling rate yang baru dengan fs'=fs/L dan jalankan kembali. Faktor decimasi dapat diambil nilai L =1,2,3,... d. Dalam modul ini digunakan program MATLAB untuk menghubungkan ke perangkat ADSP2181 EZKIT Lite, baik untuk membangun program, memasukkan program dan menjalankan program. Ketik baris perintah berikut di command MATLAB : >> cd c:\ezkit_r12_b05 ↵ >> allaboutdsp ↵ Pilih Menu > Modul > Modul 4 : ADSP2181 – Arsitektur Set Instruksi seperti gambar berikut :
Untuk melihat Arsitektur dan Set Instruksi dari ADSP2181 pilih menu Arsitektur pada gambar diatas. Sedangkan untuk menghubngkan dengan ADSP2181 EZKIT Lite anda dapat memilih menu Matlab to EZ KIT Lite. Dan untuk menjalankan program VisualDSP Development dapat dipilih menu ke tiga sehingga anda dapat membuat program dsp dengannya.
Catatan : Untuk setiap prosedur pastikan bahwa perangkat telah siap baik hubungan power dan hubungan antara PC dan ADAP2181 EZKIT Lite serta perangkat pendukungnya. ANALISA 1. Lakukan analisa terhadap data yang diperoleh setiap langkah prosedur laboratorium diatas. 2. Sertakan data berupa grafik, angka yang berasal dari hasil program. 3. Sesuaikan analisa anda dengan konsep yang sedang dibahas.
MODUL 5 TUNDA DAN FILTER FIR
TUJUAN 1. Peserta mampu membuat program Assembly pada ADSP2181 untuk aplikasi penundaan sampel sinyal. 2. Peserta mampu mengembangkan program tunda untuk aplikasi yang bermanfaat dalam bidang Telekomunikasi. 3. Peserta mampu merancang dan mengimplementasikan Filter FIR dengan ADSP2181 4. Peserta memahami konsep Perancangan Filter Digital dan implementasinya.
KONSEP TEORI Konsep penundaan atau delay sering kalau tidak boleh menggunakan kata selalu untuk memanipulasi atau memodifikasi sinyal masukan. Konsep didalam pengolahan sinyal digital, dnyatakan bahwa hubungan antara sinyal masukan, sistem dan sinyal keluaran, dilakukan dengan cara konvolusi , dengan bentuk yang paling sederhana dapat dinyatakandengan mengikuti persamaan sebagai berikut :
y n =x n x n −1
Persamaan diatas memberikan pengertian bahwa sinyal keluaran, y(n) tergantung pada masukan saat ini, x(n) dan masukan sebelumnya, x(n1). Artinya pada waktu n, diperlukan sampel x pada saat n dan pada saat n1, yang berarti x(n) ditunda 1 sampel dimana penundaan 1 sampel ekivalen dengan satuan waktu yang tergantung dengan frekuensi sampling yang digunakan. Untuk penundaan 1 sampel dengan frekuensi sampling 8000 Hz yang berarti akan ada 8000 sampel per detik, dengan demikian penundaan 1 sampel ekivalen dengan 1/8000 detik atau 125 mikrodetik. Untuk melakukan penundaan khususnya didalam perangkat hardware yang programmable dapat dilakukan dengan menggunakan memori atau disimpan dulu, dan selanjutnya dipanggil atau diambil pada saat diperlukan sesuai dengan penundaan yang akan dibuat. Hubungan antara waktu tunda dan kebutuhan memori dapat dilihat dari persamaan sebagai berikut :
D=
TD = f s T D=8000 Hz x 0.75 sec =6000 T
untuk frekuensi sampling = 8000 Hz dan waktu tunda = 0.75 detik. Jadi, fungsi transfer dari penundaan akan menjadi H z = z−D=z−6000 . Ini dapat diimplementasikan dengan menggunakan buffer sirkular dengan dimensi 6001. {Based on cdelay.c of Introduction to Signal Processing, p.177. I/O equation: y(n) = x(n-d), range of delay d=1, 2, ..., D. Sample processing algorithm: for each input x do: y = tap(D, w, p, d) get d-th tap *p = x put input x into tap-0 cdelay(D, w, &p) update delay }
Tahap awal dari program mengeluarkan ke 2000 tap, yaitu sinyal y(n) = x(nd), yang berkorespondensi dengan waktu tunda dalam detik : Td = dT = d / fs = 2000 / 8000 = 0.25 detik. Algortima pengolahan sampel dalam notasi dari referensi [1] adalah : untuk setiap input x lakukan : y = tap (D,w,p,d) *p = x cdelay(D,w,&p) Prosedur Laboratorium a. Pindah ke direktori c:\adi_dsp\examples\delay dan kompile, link dan load program ini dengan perintah DOS berikut : cd c:\adi_dsp\examples\delay ezk delay ezl delay Berikan sistem sebuah impulse dengan melakukan ketukan pada mikropon, dan dengarkan impulse responnya. Kemudian, bicara ke mikropon. Bawa mikropon ke dekat speaker dan kemudian berikan sistem impulse. Anda seharusnya mendengar echo yang terulang. Jika anda membawa mikropon terlalu dekat dengan speaker, maka keluaran akan menjadi tidak stabil. Gambarkan realisasi diagram blok yang menjelaskan efek yang anda dengarkan. Secara eksperimen menentukan jarak dimana echo menyisakan margin stabil, yaitu tidak pernah berhenti atau divergen. (Secara teknis dapat dikatakan, pole dari sistem loop tertutup anda berada pada lingkaran satuan). b. Ubah laju sampling ke 16 kHz, recompile dan reload serta membiarkan nilai dari d tetap sama, yaitu d = 2000. Dengarkan impulse responnya. Berapa durasi tunda dalam detik sekarang ? c. Reset kembali laju sampling ke 8 kHz, dan kali ini mengubah d ke nilai maksimum d = D = 6000. Recompile, reload dan dengarkan impulse responnya. Eksperimen dengan nilai d yang lebih rendah dan denarkan suara anda yang tertunda, sampai anda tidak dapat membedakan echo yang terpisah. Berapa milidetik tunda yang berkorespondensi dengan hal ini? d. Set d = 0, recompile dan reload. Ini seharusnya berarti tidak ada tunda, yaitu y(n) = x(n). Tetapi apa yang anda dengar? Dapatkah anda menjelaskan, mengapa? Dapatkah anda memperbaikinya dengan mengubah program? Akankah program termodifikasi anda masih bekerja dengan d ≠ 0? Adakah alasan yang tepat untuk menyusun kembali program seperti aslinya (program tanpa tunda) ? Filter FIR (Finite Impulse Response) Program filter FIR secara umum Implementasi dari filter FIR dapat diketahui dengan bantuan dari macro cfir, yang merupakan kode assembly ekuivalen dengan teks rutin cfir.c dan cfir2.c. Berikut ini adalah program filtering FIR secara umum : {fir.dsp - FIR filter experiment} {Junior DSP Lab - Rutgers ECE Dept - S. J. Orfanidis - Jan 1996} {Based on cfir.c or cfir2.c of Introduction to Signal Processing}
{--- define sampling rate in kHz: ----------------------------------------} {0xc850 = 8 | 0xc851 = 5.5125 | 0xc852 = 16 } {0xc853 = 11.025 | 0xc854 = 27.42857 | 0xc855 = 18.9 } .const fs = 0xc850; {0xc856 = 32 | 0xc857 = 22.05 | 0xc859 = 37.8 } {0xc85b = 44.1 | 0xc85c = 48 | 0xc85d = 33.075} {0xc85e = 9.6 | 0xc85f = 6.615 } {------------------------------------------------------------------------} .include
; {initializations and DSP macros} {--- define constants, variables, and buffers ----------------------------} .const M = 206; {from firlp.m with fc=200 Hz, Df=100 Hz} .var/dm/circ w[M+1]; {circular delay-line buffer in DM} .var/pm/circ h[M+1]; {filter coefficient buffer in PM} i2 = ^w; L2 = %w; {delay-line buffer pointer and length} i4 = ^h; L4 = %h; {coefficient buffer pointer and length} zero(i2, m2, L2); {clear delay line} .init h: ; {read coefficients in 1.15 hex format} {from file fir.hex} {--- start processing input samples --------------------------------------} wait: idle; jump wait; {wait for interrupt and loop forever} {interrupt service routine starts here} input_samples: ena sec_reg; {enable secondary register set} {--- read input samples from codec ---------------------------------------} ax1 = dm(rx_buf + 1); {left input sample} mx1 = dm(rx_buf + 2); {right input sample} {--- sample processing algorithm --- process right input only ------------} cfir(M, i4, m4, i2, m2, mx1); {input from mx1, output in mr1} {--- write output samples to codec ---------------------------------------} dm(tx_buf + 1) = mr1; {left output sample} dm(tx_buf + 2) = mr1; {right output sample} {--- return from interrupt -----------------------------------------------} rti; .include ; {wrapup} Koefisien filter dibaca dari file hexsa fir.hex. Nilai dari order filer M harus diedit ke dalam program. buffer delayline dalam memori DM dan buffer koefisien filter di dalam PM. File Program MATLAB filp.m berikut mengimplementasikan perancangan Kaiser dari filter lolos rendah (LPF) dengan didefiniskan lebih dahulu frekuensi cuttoff dan lebar transisi. Redaman passband dan stopband diasumsikan 0.1 dB dan 40 dB, secara berurutan. Ini menggunakan fungsi dtft.m dan klh.m dari bab 10 referensi [1]: % firlp.m - lowpass FIR design % Junior DSP Lab - Rutgers ECE Dept - S. J. Orfanidis - Jan 1996 %
% the filter coeff file, lp.dec, in decimal format must be postprocessed % by dec2hex to convert it to the 1.15 format hex file lp.hex, that is, % dec2hex 1 15 < lp.dec > lp.hex % % to run it on the EZ-KIT Lite, % copy lp.hex into fir.hex, recompile and load fir.dsp % (you may also need to edit the designed filter order M into fir.dsp) fs = 8000; % 8 kHz rate Apass = 0.1; % 0.1 dB Astop = 40; % 40 dB, stopband ripple: delta = 0.01 fc = input(’cutoff frequency fc (in Hz) = ’); % e.g., fc = 200 Hz Df = input(’transition width Df (in Hz) = ’); % e.g., Df = 100 Hz fpass = fc - Df/2; fstop = fc + Df/2; h = klh(1, fs, fpass, fstop, Apass, Astop)’; % Kaiser design save lp.dec h /ascii % save in decimal format [N, N1] = size(h); M = N-1 % filter order M NF = 400; % number of frequencies w = (0:NF-1) * pi / NF; % NF freqs over positive Nyquist H = 20 * log10(abs(dtft(h’, w)))’; % magnitude response in dB save lpmag.dat H /ascii Dengan menggunakan program ini, kita telah mendesain dua filter FIR dengan laju sampling 8 kHz dan frekuensi cutoff dan lebar : fc ∆f 200 Hz 100 Hz 200 Hz 10 Hz Spesifikasi ini menerapkan range frekuensi passband, stopband dan transisi dalam Hz ( dimana stopband berada diluar frekuensi Nyquist fs/2 = 4000 Hz): Passband Transisi Stopband 0 – 150 150 – 250 250 – 4000 0 – 150 195 – 205 205 4000 Kemudian, didalam passband redaman harus kurang dari 0.1 dB dan didalam stopband, redaman harus lebih besar dari 40 dB. Respon magnituda |H(f)| dari dua filter diplot dalam satuan dB, yaitu 20 log10|H(f)|, dalam gambar berikut :
Filter yang dirancang mempunyai orde M = 206 dan M = 2054, sercara berurutan, dan respon impulsenya ada didalam file lp1.dec dan lp2.dec dalam format desimal (seperti dibangkitkan oleh firlp.m) Sebagaimana didiskusikan dalam Ch. 10 dari referensi [1] bahwa filter orde M dari filter FIR secara esensial proporsional dengan lebar transisinya, ∆f, dan kemudian, jangan heran jika filter kedua mempunyai order 10 kali lebih besar daripada yang pertama. ANALISA 1. Lakukan analisa terhadap data yang diperoleh setiap langkah prosedur laboratorium diatas. 2. Sertakan data berupa grafik, angka yang berasal dari hasil program. 3. Sesuaikan analisa anda dengan konsep yang sedang dibahas.
MODUL 6 EFEK AUDIO DIGITAL TUJUAN 1. Peserta mampu membuat aplikasi untuk efek audio dengan Processor ADSP 2181. 2. Peserta mengerti dan memahami pengolahan sinyal audio. 3. Peserta mampu mengolah dan memodifikasi sinyal audio untuk aplikasi tertentu, seperti Pengacak atau Scrambler, Echo dan lainlain.
KONSEP TEORI Secara prinsip bahwa ADSP2181 EZKIT Lite dirancang untuk pengolahan sinyal audio, dimana frekuensi sampling yang tersedia mulai dari 5.5 K\kHz sampai dengan 48 kHz, yang merupakan daerah cakupan sinyal audio. Pengolahan audio yang dapat dilakukan salah satunya adalah memberikan efek perulangan atau echo, baik sebagai asesoris audio, maupun efek yang terjadi di lingkungan seperti gema atau pantulan oleh alam, baik dinding maupun gunung dan lain sebagainya. Echo atau reverberator yang paling sederhana disebut sebagai plain reverberator dapat digunakan sebagai efek blok bangunan yang dasar, yang dapat dirumuskan sebagai persamaan berikut : y n =ay n −D x n atau dalam bentuk fungsi transfer dinyatakan sebagai berikut :
H z =
1 −D 1−az
Dan dalam bentuk rangkaian realisasi dapat digambarkan sebagai bentuk seperti berikut :
Rangkaian diatas digunakan untuk membangkitkan echo atau reverberator, yang akan memberikan efek pada sinyal audio yang dimasukkan. Dan sebaliknya jika kita dapat membangkitkan echo, maka secara prinsip dalam dilakukan untuk membuat program penghapusan echo atau disebut sebagai echo canceller dimana dalam dunia telekomunikasi digunakan untuk menghapus echo pada saluran telepon, sesuai dengan rekomendasi yang diberikan oleh ITU G723. Berikut ini adalah rutin yang digunakan untuk membangkitkan echo : input_samples: ena sec_reg; /* use shadow register bank */ sr0 = dm (rx_buf + 2); /* input is in sr0 */
echo_start:
ay0=dm(i0,m0); dm(i0,m1)=SR0; dm(i1,m1)=ay0;
/* READ OLDEST echo VALUE */
ar=ay0; ay0=sr0; mx0=ar, ar=ar+ay0; dm(tx_buf + 1) = ar; dm(tx_buf + 2) = ar; rti; Prosedur Laboratorium a. Jalankan aplikasi untuk memutar file audio, seperti winamp atau media player misalnya, dan putar sebuah lagu dengannya. b. Hubungan keluaran soundcard pada PC anda dengan port masukan audio pada ADSP2181 EZKIT Lite. c. Jalankan MATLAB, dan jalankan program allaboutdsp.m kemudian pilih menu Modul > Modul 6 : Efek Audio Digital d. Jalankan program untuk membuat file dsp dengan VisualDSP Development. e. Jalankan program dsp anda pada ADSP2181 EZKIT Lite dan perhatikan hasilnya. ANALISA 1. Lakukan analisa terhadap data yang diperoleh setiap langkah prosedur laboratorium diatas. 2. Sertakan data berupa grafik, angka yang berasal dari hasil program. 3. Sesuaikan analisa anda dengan konsep yang sedang dibahas.
REFERENSI 1. Sophocles J. Orfanidis, 'DSP Lab Manual', Rutgers University, 2005 2. Takeshi Ikuma, DSP Research Laboratory, Virginia Tech. 2003 3. www.mds.com Momentum Data Systems 4. www.analog.com Analog Device Inc. 5. Steven W. Smith, The scientist's and Engineer's Guide to Digital Signal Processing, 2nd Edition, 1999 6. www.dspguide.com 7. www.primeled.com Situs untuk aplikasi ADSP untuk bargraph LED
Bogor, 31 Maret 2006 Penyusun
Suyatno Budiharjo