MODUL 2 DESAIN DAN IMPLEMENTASI ALGORITMA FILTER DIJITAL IIR
1. Tujuan 1. Dapat mendesain filter IIR dengan metode transformasi impulse invariance dan bilinear menggunakan bahasa pemrograman MATLAB. 2. Dapat mengimplementasikan filter IIR untuk pemrosesan sinyal menggunakan DSK TMS320C6713. 3. Dapat menggambarkan respon magnituda suatu sistem linier tidak berubah terhadap waktu dari suatu sistem linier tidak berubah terhadap waktu berdasarkan hasil data pengukuran. 2. Perangkat Praktikum Perangkat – perangkat yang digunakan dalam praktikum ini adalah : 1. Satu set komputer. 2. Satu paket DSK TMS320C6713 terdiri atas : DSK TMS320C6713, kabel USB, +5 V power supply, AC Power Cord dan 1 set kabel audio. 3. Osiloskop. 4. Generator sinyal. 5. Speaker. 3. Dasar Teori Filter IIR merupakan tipe filter dijital dengan respon impuls tak terbatas. Filter IIR sesuai dengan filter analog yang biasanya memiliki respon impuls dengan panjang tak hingga. Filter IIR memiliki fungsi sistem dalam domain z sebagai berikut. Y ( z) b0 + b1 z −1 + b2 z −2 + b3 z −3 + ... H ( z) = = (2.1) X ( z) 1 + a1z −1 + a2 z −2 + a3 z −3 + ... dengan a merupakan koefisien denominator sedangkan b merupakan koefisien numerator. Desain filter IIR dapat dilakukan dengan cara mentransformasikan filter analog ke dalam filter dijital menggunakan complex-valued mapping. Untuk dapat mendesain filter frequency selective yang dikehendaki diperlukan transformasi frequency-band. Desain filter analog lowpass
Transformasi Frequency-band
Transformasi filter
s à z
Filter IIR
z à z
Gambar 2.1 Diagram blok pendekatan desain filter IIR
Langkah – langkah yang dilakukan untuk mendesain filter IIR adalah : 1. Desain filter analog lowpass. Filter-filter analog yang biasanya digunakan sebagai prototipe desain adalah filter Butterworth, Chebyshev dan Elliptic. 2. Mengaplikasikan transformasi filter analog lowpass untuk mendapatkan filter dijital lowpass. Terdapat 4 metode transformasi filter yaitu : a. Transformasi impulse invariance. Transformasi ini digunakan jika dikehendaki bentuk respon impuls yang sama antara filter analog dan filter dijital. b. Transformasi finite difference approximation. Teknik ini digunakan untuk mengubah sebuah representasi persamaan perbedaan ke dalam representasi persamaan perbedaan yang sesuai. TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
1
c. Transformasi step invariance. Transformasi ini digunakan untuk menghasilkan respon step yang sama antara filter analog dan dijital. d. Transformasi bilinear yaitu mengubah representasi fungsi sistem dari domain analog ke domain dijital. 3. Mengaplikasikan transformasi frequency-band untuk menghasilkan filter dijital lainnya dari filter dijital lowpass. 3.1 Transformasi Impulse Invariance Pada transformasi ini, filter analog ha (t) disampling dengan interval sampling T untuk menghasilkan h(n) yaitu : (2.2) h(n) = ha (nT ) Parameter T dipilih sedemikian rupa sehingga ha (t) dapat disampling dengan baik. Hubungan frekuensi analog dan dijital adalah : ω = ΩT atau e jω = e jΩT (2.3) jω z = e jΩ s = dengan pada unit circle dan pada sumbu imajiner, maka persamaan transformasi dari bidang s ke bidang z adalah : z = e sT (2.4) Fungsi sistem H ( z) dan H a (s) berelasi dalam formula aliasing domain frekuensi: H ( z) =
1 T
∝
∑H k =−∝
a
2π k s − j T
(2.5)
Transformasi bidang komplek dengan pemetaan pada persamaan 2.4 ditunjukkan oleh gambar 2.2. jΩ Im( z) Transformasi banyak-ke-satu
3π/ T
π/ T −π/ T s - plane
σ
Unit circle
e sT = z Re( z)
−3π/ T
z - plane
Gambar 2.2 Pemetaan bidang komplek pada transformasi Impulse Invariance
Dari gambar tersebut didapat : a. Dengan mendefinisikan σ = Re(s) maka : σ < 0 dip etakan ke z < 1 (di dalam unit circle)
σ = 0 dip etakan ke z = 1 (p ada unit circle)
(2.6)
σ > 0 dip etakan ke z > 1 (di luar unit circle) b. Semua daerah semi-infinite dengan lebar 2π / T dipetakan ke z < 1. Pemetaan ini merupakan pemetaan dari banyak-ke-satu. c. Daerah di sebelah kiri pada bidang s dipetakan ke unit circle sehingga filter analog yang kausal dan stabil dipetakan ke filter dijital yang kausal dan stabil pula. d. Jika H a ( jΩ) = H a ( jω / T ) = 0 untuk Ω ≥ π / T maka, TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
2
H a ( j ω) =
1 H a ( jω / T ), ω ≤ π T
(2.7)
sehingga tidak terjadi aliasing. 3.1.1 Prosedur Desain Jika diberikan spesifikasi filter dijital lowpass ωs , ω p , R p , dan As dan diinginkan mendapatkan H ( z) dengan terlebih dahulu mendesain filter analog ekivalen kemudian memetakan ke filter yang diinginkan maka prosedur desain yang dapat dilakukan adalah : 1. Pilih T dan definisikan frekuensi analog : ω ω (2.8) Ω p = p dan Ωs = s T T 2. Desain filter analog H a (s) dengan spesifikasi Ω p, Ω s , R p , dan As . Filter analog yang dapat dipilih adalah salah satu dari filter prototipe. 3. Gunakan ekspansi fraksi parsial dengan mengubah H a (s) menjadi : N
Rk k =1 s − p k
Ha (s) = ∑
(2.9)
{ } untuk menghasilkan filter
4. Transformasikan pole analog {pk } ke dalam pole dijital e pk T dijital : N Rk H ( z) = ∑ p T −1 k =1 1 − e k z
(2.10)
3.1.2 Contoh Desain Filter IIR Transformasi Impulse Invariance dengan MATLAB Berikut ini merupakan contoh program MATLAB yang dapat digunakan untuk mendesain filter dijital lowpass dengan menggunakan filter prototipe Butterworth. Pada simulasi ini digunakan 6 program yaitu : 1. function [b,a] = u_buttap(N,Omegac); % Prototipe filter analog lowpass Butterworth tidak dinormalisasi % b = koefisien polinomial numerator dari Ha(s) % a = koefisien polinomial denominator dari Ha(s) % Omegac = frekuensi cutoff dalam rad/s [z,p,k] = buttap(N); p = p*Omegac; k = k*Omegac^N; B = real(poly(z)); b0 = k; b = k*B; a = real(poly(p)); 2. function [b,a] = afd_butt(wp,ws,Rp,As); % Desain filter analog lowpass Butterworth % wp = frekuensi passband (rad/s); wp > 0 % ws = frekuensi stopband (rad/s); ws > wp > 0 % Rp = ripple passband (dB) (Rp > 0) % As = redaman stopband (dB) (As > 0) if wp <= 0 error('Passband edge harus > 0') end if ws <= wp error('Stopband edge harus > passband edge') end TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
3
if (Rp <= 0) | (As < 0) error('PB ripple dan/atau redaman SB harus > 0') end N = ceil((log10((10^(Rp/10)-1)/(10^(As/10)-1)))/(2*log10(wp/ws))); Omegac = wp/((10^(Rp/10)-1)^(1/(2*N))); [b,a] = u_buttap(N,Omegac); 3. function [b,a] = imp_invr(c,d,T); % Transformasi impulse invariance ADC % b = polinomial numerator z^(-1) filter dijital % a = polinomial denominator z^(-1) filter dijital % c = polinomial numerator s filter analog % d = polinomial denominator s filter analog % T = parameter sampling [R,p,k] = residue(c,d); p = exp(p*T); [b,a] = residuez(R,p,k); b = real(b'); a = real(a'); 4. function I = cplxcomp(p1,p2) I=[]; for j = 1:1:length(p2) for i = 1:1:length(p1) if(abs(p1(i)-p2(j)) < 0.0001) I = [I,i]; end end end I=I'; 5. function [C,B,A] = dir2par(b,a) % konversi struktur Direct-form ke struktur Parallel-form % b dan a adalah koefisien numerator dan denominator filter dijital M = length(b); N = length(a); [r1,p1,C] = residuez(b,a); p = cplxpair(p1,10000000*eps); I = cplxcomp(p1,p); r = r1(I); K =floor(N/2); B =zeros(K,2); A = zeros(K,3); if K*2 == N for i=1:2:N-2 Brow = r(i:1:i+1,:); Arow = p(i:1:i+1,:); [Brow,Arow] = residuez(Brow,Arow,[]); B(fix((i+1)/2),:) = real(Brow); A(fix((i+1)/2),:) = real(Arow); end [Brow,Arow] = residuez(r(N-1),p(N-1),[]); B(K,:) = [real(Brow) 0]; A(K,:) = [real(Arow) 0]; else for i = 1:2:N-1 Brow = r(i:1:i+1,:); Arow = p(i:1:i+1,:); [Brow,Arow] = residuez(Brow,Arow,[]); B(fix((i+1)/2),:) = real(Brow); A(fix((i+1)/2),:) = real(Arow); TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
4
end end 6. function [b0,B,A] = dir2cas(b,a); % konversi struktur Direct-form ke struktur Cascade-form % b dan a adalah koefisien numerator dan denominator filter dijital b0 = b(1); b = b/b0; a0 = a(1); a = a/a0; b0 = b0/a0; M = length(b); N = length(a); if N > M b = [b zeros(1,N-M)]; elseif M > N a = [a zeros(1,M-N)]; N = M; else NM = 0; end K = floor(N/2); B =zeros(K,3); A = zeros(K,3); if K*2 == N b = [b 0]; a = [a 0] end broots = cplxpair(roots(b)); aroots = cplxpair(roots(a)); for i = 1:2:2*K Brow = broots(i:1:i+1,:); Brow = real(poly(Brow)); B(fix((i+1)/2),:) = Brow; Arow = aroots(i:1:i+1,:); Arow = real(poly(Arow)); A(fix((i+1)/2),:) = Arow; end Misal filter dijital lowpass yang akan didesain memiliki spesifikasi ω p = 0.2π , ωs = 0.3π , Rp = 1 dB, As = 15 dB . Skrip MATLAB yang digunakan adalah sebagai berikut. >> wp = 0.2*pi; ws = 0.3*pi; Rp = 1; As = 15; >> T = 1; OmegaP = wp/T; OmegaS = ws/T; >> [cs,ds] = afd_butt(OmegaP,OmegaS,Rp,As); >> [b,a] = imp_invr(cs,ds,T) b = -0.0000 0.0006 0.0101 0.0161 0.0041 0.0001 a= 1.0000 -3.3635 5.0684 -4.2759 2.1066 -0.5706 0.0661 >> [C,B,A] = dir2par(b,a) % Menghitung second-order sections C=[] B = 1.8557 -0.6304 -2.1428 1.1454 0.2871 -0.4466 A = 1.0000 -0.9973 0.2570 1.0000 -1.0691 0.3699 1.0000 -1.2972 0.6949 Fungsi sistem filter H ( z) dengan orde 6 yaitu : TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
5
H ( z) =
1.8587 − 0.6304z −1 −2.1428 +1.1454z −1 0.2871− 0.4463z −1 + + 1 − 0.9973z −1 + 0.2570z −2 1−1.0691z −1 + 0.3699z −2 1−1.2972z −1 + 0.6449z −2
3.2 Transformasi Bilinear Transformasi bilinear merupakan teknik pemetaan dengan memetakan fungsi : 1 + sT / 2 2 1 − z −1 s= ⇒z= −1 1 − sT / 2 T 1+ z dengan T merupakan parameter.
(2.11)
Im( z)
jΩ Transformasi satu-ke-satu
σ
Unit circle
1 + sT / 2 =z 1 − sT / 2
Re( z)
z - plane s - plane
Gambar 2.4 Pemetaan bidang komplek pada transformasi bilinear
Dari pemetaan bidang komplek pada gambar 2.4 didapat bahwa : a. Dengan mendefinisikan s = σ + jΩ pada persamaan 2.11 maka didapat : σT =ΩT +j 1 + 2 2 z= σT =ΩT 1 − 2 − j 2
TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
(2.12)
Semester I 2012/2013
6
σT ΩT +j 2 2 σT ΩT 1− −j 2 2 σT ΩT 1+ +j 2 2 >1 σT ΩT 1− −j 2 2
sehingga jika : σ < 0 ⇒ z =
dan σ > 0 ⇒ z =
1+
<1, σ = 0 ⇒ z =
ΩT 2 ΩT 1− j 2
1+ j
=1
b. Daerah di sebelah kiri pada bidang s dipetakan ke dalam unit circle. Ini merupakan transformasi yang stabil. c. Sumbu imajiner dipetakan ke dalam unit circle secara satu-ke-satu. Hal ini menyebabkan tidak terjadinya aliasing pada domain frekuensi. Dengan mengganti σ = 0 pada persamaan 2.12 maka didapat : ΩT 1+ j 2 = e jω (2.13) z= ΩT 1− j 2 dengan magnituda sama dengan satu. Dengan mengasumsikan ω sebagai fungsi Ω maka didapat : 2 ω ΩT atau Ω = tan ω = 2 tan −1 (2.14) T 2 2 3.2.1 Prosedur Desain Prosedur desain jika diberikan spesifikasi filter ωs , ω p , R p , dan As dan diinginkan mendapatkan H ( z) adalah : 1. Pilih nilai T. Nilai standar T = 1. 2. Dengan menggunakan frekuensi cutoff ω p dan ωs didapat nilai Ω p dan Ω s dengan ωp 2 2 ωs tan dan Ω s = tan . T T 2 2 3. Desain filter analog H a (s) yang sesuai dengan spesifikasi Ω p , Ωs , Rp , As . 4. Transformasikan : 2 1 − z −1 H ( z) = H a −1 T 1+ z menggunakan persamaan : Ω p =
(2.15)
dan sederhanakan sehingga H ( z) merupakan fungsi rasional dalam z −1 . 3.2.2 Contoh Desain Filter IIR Transformasi Bilinear dengan MATLAB Berikut ini merupakan contoh program MATLAB yang dapat digunakan untuk mendesain filter dijital lowpass dengan menggunakan filter prototipe Butterworth. Misal filter dijital lowpass yang akan didesain memiliki spesifikasi ω p = 0.2π , ωs = 0.3π , Rp = 1 dB, As = 15 dB . Skrip MATLAB yang digunakan adalah sebagai berikut. >> wp = 0.2*pi; ws = 0.3*pi; Rp = 1; As = 15; >> T = 1; Fs = 1/T; >> OmegaP = (2/T)*tan(wp/2); OmegaS = (2/T)*tan(ws/2); >> [cs,ds] = afd_butt(OmegaP,OmegaS,Rp,As); >> [b,a] = bilinear(cs,ds,Fs); >> [C,B,A] = dir2cas(b,a) % Menghitung second-order sections C = 5.7969e-004 TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
7
B = 1.0000 1.0000 1.0000 A = 1.0000 1.0000 1.0000
2.0183 1.9814 2.0004 -0.9459 -1.0541 -1.3143
1.0186 0.9817 1.0000 0.2342 0.3753 0.7149
TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
8
4. Prosedur Praktikum Pada praktikum ini dilakukan implementasi filter IIR secara real-time dengan menggunakan DSK TMS320C6713. File – file pendukung praktikum terdapat di dalam folder C:\CCStudio_v3.1\MyProjects. Berikut langkah – langkah praktikum yang harus Anda perhatikan. a. Nyalakan komputer dan hubungkan kabel USB DSK ke konektor USB komputer. b. Nyalakan generator sinyal dan hubungkan outputnya dengan kanal 1 osiloskop. Atur output generator sinyal berupa sinyal sinusoidal dengan tegangan 1 Volt peak-to-peak dan frekuensi 100 Hz kemudian amati sinyalnya pada kanal 1 osiloskop. Matikan kembali generator sinyal dan osiloskop. c. Pasang perangkat praktikum seperti pada percobaan I praktikum modul 1 Filter FIR. d. Nyalakan DSK dan lakukan prosedur DSK diagnostic. e. Pada CCS, koneksikan CCS dengan DSK kemudian buka project Filter IIR dalam folder C:\CCStudio_v3.1 \MyProjects \Filter IIR. f. Pada panel project bagian source terdapat 7 file yaitu DSK_Support.c, filtcoeff.c, IIR_ISRs.c, main.c, StartUp.c, vectors.asm dan lnk7.cmd. Pada panel project bagian include terdapat 5 file yaitu c6x.h, c6x11dsk.h, DSK_Config.h, DSK_Support.c, dan filtcoeff.h. Pada file filtcoeff.h terdapat koefisien filter IIR yang digunakan. Perhatikan koefisien filter yang ada dalam file ini. g. Ganti koefisien filter pada file filtcoeff.h dengan cara sebagai berikut. • Buka MATLAB. Pastikan current directory MATLAB berada pada folder C:\CCStudio_v3.1 \MyProjects \Filter IIR. • Masukkan koefisien numerator dan denominator filter IIR yang diberikan oleh asisten masing-masing dengan variabel b dan a. • Pada command window ketikkan : >> coeff = iircoeff(b,a,’filtcoeff’) • Pada command window akan tampil koefisien filter IIR hasil konversi ke cascadeform. • Pada CCS, nilai koefisien pada file filtcoeff.h akan berubah sesuai nilai koefisien yang ditampilkan pada command window MATLAB. h. Nyalakan generator sinyal dan osiloskop. i. Lakukan proses build project pada CCS dan load program ke DSK. j. Jalankan program yang telah di-load ke DSK (run) sehingga output hasil pemrosesan DSK terlihat di osiloskop. Amati tegangan output DSK dan catat hasilnya. k. Ubah frekuensi generator sinyal dengan tingkat kenaikan 100 Hz hingga mencapai frekuensi 1000 Hz. Kemudian ubah dari frekuensi 1000 Hz hingga 24000 Hz dengan kenaikan 1000 Hz. Amati tegangan output DSK setiap frekuensinya dan catat hasilnya. l. Dengan hasil yang Anda dapat, perkirakan tipe filter IIR pada project ini dan plot respon magnituda filternya. m. Hentikan pemrosesan pada DSK (Halt). Matikan generator sinyal dan osiloskop. (Jangan ubah tegangan output generator sinyal (tetap 1 Voltpp) dan atur kembali frekuensi pada posisi 100 Hz). n. Ulangi kembali dari langkah (g) untuk percobaan dengan koefisien filter yang baru. o. Ulangi untuk 2 koefisien berbeda yang diberikan oleh asisten. 5. Tugas Pada Laporan Praktikum 1. Buatlah gambar respon magnituda dari hasil percobaan I untuk setiap koefisien filter yang diberikan! 2. Plot respon magnituda dari tiap koefisien filter yang digunakan dalam praktikum dengan menggunakan MATLAB! 3. Bandingkan dan analisis hasil yang Anda peroleh dari tugas No.1 dan No.2!. Identifikasi jenis filter apa sajakah yang digunakan pada praktikum ini! Tentukan frekuensi cut off masing-masing filternya! TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
9
4. Jelaskan keunggulan dan kekurangan filter IIR dibandingkan dengan filter FIR! 5. Jelaskan bagaimana cara mendesain filter IIR dengan menggunakan metode transformasi bilinear dan impulse invariance! 6. Jelaskan aplikasi dari filter IIR! 7. Tuliskan apa yang dapat Anda simpulkan dari praktikum ini! 6. Referensi [1] Vinay K. Ingle, John G. Proakis. Digital Signal Processing using MATLAB. Brook Cole/Thomson Learning. 2000. [2] Thab B. Welch, Cameron H. G. Wright, Michael G. Morrow. Real-time Digital Signal processing from MATLAB to C with TMS320C6x DSK. Taylor & Francis Group. 2006.
TIM PRAKTIKUM ET 3085 PENGOLAHAN SINYAL
Semester I 2012/2013
10