BAB 3 ALGORITMA DAN MODEL 2K FFT-IFFT CORE Pada Bab ini dibahas mengenai penentuan algoritma, menentukan deskripsi matematis dari algoritma, pembuatan model fixed point menggunakan Matlab, dan pengukuran performa model untuk memperkirakan kinerja 2k FFT-IFFT Core yang akan dibuat. Bab ini adalah awal dari seluruh proses perancangan dan implemnetasi 2k FFT-IFFT Core. Perancangan didasarkan pada spesifikasi sistem yang telah dibahas pada BAB 1 seperti yang ditunjukkan pada Tabel 3-1. Tabel 3-1 Spesifikasi 2k FFT-IFFT Core Parameter Keterangan panjang FFT-IFFT 2048 frekuensi kerja 40 MHz durasi 224 μs input dan output 2x14 bit bilangan kompleks twiddle factor 2x12 bit bilangan kompleks format data fixed point range data ±1.080 (untuk real dan imajiner) pengkodean bit I/O sign integer fractional 1 bit 1 bit 12 bit pengkodean bit twiddle sign integer fractional 1 bit 0 bit 11 bit gain FFT 1x (nilai standar) 1x 32x gain IFFT 1/2048x (nilai standar) 1/2048x 1/64x 20
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 21 Proses perancangan dimulai dari penentuan algoritma FFT atau faktorisasi DFT menjadi FFT. Pemilihan algoritma radix yang tepat adalah sangat penting karena akan mempengaruhi berbagai aspek perancangan selanjutnya. Aspek ini meliputi kompleksitas modul, kecepatan pemrosesan data, dan area yang diperlukan untuk implementasi. Berdasarkan algoritma yang dipilih, dapat dibuat deskripsi matematis untuk menjelaskan proses komputasi aritmatika dari FFT itu sendiri. Deskripsi ini selanjutnya diubah kedalam model Matlab dengan memasukkan parameter lebar bit fixed point sehingga menjadi bit-true model. Model ini kemudian diukur performanya dengan berdasarkan pada fungsi FFT dan IFFT yang dimiliki oleh Matlab. Pada perancangan sistem RTL, performa diukur sejak awal tahap pemodelan untuk mempercepat waktu pengembangan sistem. Modul RTL yang dibuat harus semirip mungkin dengan model Matlab-nya sehingga diharapkan akan mendapatkan performa yang sama. 3.1 Faktorisasi 2048-Point DFT-IDFT Faktorisasi 2048-point DFT atau IDFT dapat dilakukan dengan menggunakan salah satu atau kombinasi dari algoritma FFT DIF yang telah dijelaskan pada subbab 2.3. Masing-masing algoritma memiliki kelebihan dan kekurangan. Pemilihan algoritma yang tepat dapat didasarkan pada panjang FFT yang dibuat, kecepatan komputasi yang diinginkan, fleksibilitas rancangan, dan konsumsi daya. 3.1.1 Penentuan Radix Panjang FFT yang dibuat akan mempengaruhi jumlah elemen memori yang diperlukan, dan jumlah operasi aritmatiknya. Pada FFT dan IFFT operasi aritmatika yang digunakan adalah penjumlahan (termasuk pengurangan) dan perkalian. Tabel 3-2 dan Tabel 3-3 memberikan ilustrasi jumlah operasi aritmatika yang diperlukan untuk beberapa point FFT dengan berbagai radix. Tabel tersebut menunjukkan bahwa semakin besar radix yang digunakan maka semakin sedikit operasi perkalian yang diperlukan. Namun, tidak demikian halnya dengan operasi penjumlahan, operasi ini ini akan mencapai minimum untuk kemudian naik kembali[7].
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 22 Tabel 3-2 Operasi artimatika yang diperlukan untuk berbagai radix N Radix Operasi Perkalian Operasi Penjumlahan 256 2 4096 6144 4 3072 5632 512 2 9216 13824 8 6144 12672 4096 2 98304 147456 4 73728 135168 8 65536 135168 16 61440 136704 Tabel 3-3 Jumlah Operasi perkalian kompleks yang diperlukan untuk berbagai radix Radix Jumlah Operasi Perkalian Kompleks 2 0.5000 log 1 4 0.3750log 1 8 0.3333log 1 Selain itu, perlu diperhatikan bahwa semakin besar operasi radix, maka semakin kompleks pula arsitekturnya. Sehingga, delay propagasi FFT juga akan semakin besar. Dengan demikian harus diperhatikan delay dari radix tersebut apakah akan memenuhi batasan pewaktuan yang ditentukan[12]. Ditinjau dari aspek fleksibilitas rancangan, maka semakin besar radix, FFT Core akan semakin tidak fleksibel. Sebagai contoh, apabila menggunakan algoritma Radix-2 maka dapat digunakan untuk berbagai kombinasi point FFT yang merupakan pangkat dari 2, misalnya: 2, 4, 8, 16, dan seterusnya. Namun apabila menggunakan radix-8, maka hanya akan mendukung FFT dengan panjang yang merupakan pangkat dari delapan, misalnya: 8, 64, atau 512. Fleksibilitas rancangan dengan radix yang besar da-
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 23 pat ditingkatkan dengan melakukan kombinasi dengan algoritma radix yang lebih kecil. Salah satu faktor yang mempengaruhi konsumsi daya adalah intensitas penggunaan memori. Dengan menggunakan algoritma dengan radix yang kecil maka frekuensi akses ke memori akan lebih besar. Radix yang besar akan membagi memori menjadi memori yang lebih kecil, sehingga pada satu waktu hanya satu bagian kecil memori yang aktif. Ditinjau dari aspek ini, penggunaan algoritma radix yang besar lebih baik. Dari pembahasan diatas, terlihat bahwa akan ada trade-off antara kompleksitas dan fleksibilitas rancangan yang lebih baik dengan radix kecil, dan dengan operasi aritmatik dan konsumsi daya yang akan lebih baik dengan radix besar. Karena FFT-IFFT Core hanya dibuat untuk aplikasi DVB-T dengan panjang transformasi tetap, maka faktor fleksibilitas dapat diabaikan. Selain itu kompleksitas desain dapat dihindari atau dikurangi dengan menggunakan arsitektur yang tepat. Berdasarkan argumen diatas maka untuk FFT-IFFT Core yang akan dirancang, dipilih menggunakan algoritma radix-8. Namun karena 2048 bukan merupakan bilangan pangkat dari delapan, maka perlu ditambahkan Radix-4 di awal tahap komputasi. Sehingga untuk 2048-point FFT-IFFT yang dirancang didapatkan 4 tahap komputasi yaitu Radix-4 pada tahap 1 dan tiga tahap Radix-8 pada tahap kedua, ketiga, dan keempat. Tabel 3-4 Algoritma radix yang digunakan pada tiap tahapnya Tahap Algoritma Radix yang Dipilih 1 Radix-4 2 Radix-8 3 Radix-8 4 Radix-8
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 24 3.1.2 Deskripsi Matematis Algoritma Seperti yang telah ditunjukkan pada persamaan (2.1), perumusan untuk 2048-Point DFT ditunjukkan sebagai penjumlahan dari beberapa nilai yang telah dikalikan dengan kontanta twiddle factor yang bersesuaian. Perumusan ini kemudian dipecah menjadi beberapa tahap sesuai dengan algoritma radix yang telah dipilih., dengan n,k0,1,, 2047 (3.1) Selanjutnya dilakukan dekomposisi nilai dan menurut persamaan (3.2). Dekomposisi ini merujuk pada algoritma radix yang telah dipilih untuk tiap tahap FFT. 8 64 512 4 32 256 Subtitusikan persamaan (3.2) ke persamaan (3.1). (3.2) 8 64 512 Ekspansi persamaan (3.3) berdasarkan nilai. (3.3) 8 64 8 64 512 8 64 1024 8 64 1536 (3.4) Didefinisikan variabel baru 1 berdasarkan persamaan (3.4). Ini adalah persamaan DFT 4 titik untuk tahap 1 FFT. 1 8 64 512 8 64 8 64 512 8 64 1024 8 64 1536 (3.5)
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 25 Sehingga didapatkan nilai baru seperti persamaan (3.6). 1 8 64 Ekspansi persamaan (3.6) berdasarkan ni lai. 512 1 8 512 1 8 64 512 1 8 128 512 1 8 192 512 1 8 256 512 1 8 320 512 1 8 384 512 1 8 448 512 (3.6) (3.7) Didefinisikan variabel baru 2 berdasarkan persamaan (3.7). Ini adalah persamaan DFT 8 titik untuk tahap ke-2 FFT. 2 8 64 512 1 8 512 1 8 64 512 1 8 128 512 1 8 192 512 1 8 256 512 1 8 320 512 1 8 384 512 1 8 448 512 Sehingga didapatkan nilai baru seperti persamaan (3.8). (3.8) 2 8 64 512 (3.9)
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 26 Ekspansi persamaan (3.9) berdasarkan nilai. 2 64 512 2 8 64 512 2 16 64 512 2 24 64 512 2 32 64 512 2 40 64 512 2 48 64 512 2 56 64 512 (3.10) Didefinisikan variabel baru 3 berdasarkan persamaan (3.10). Ini adalah DFT 8 titik untuk tahap ke-3 FFT. 3 8 64 512 2 64 512 2 864 512 2 16 64 512 2 24 64 512 2 32 64 512 2 40 64 512 2 48 64 512 2 56 64 512 Sehingga didapatkan nilai baru seperti persamaan (3.11). (3.11) 3 8 64 512 (3.12)
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 27 Ekspansi persamaan (3.12) berdasarkan nilai. 38 64 512 318 64 512 328 64 512 338 64 512 348 64 512 358 64 512 368 64 512 378 64 512 (3.13) Didefinisikan variabel baru 4 berdasarkan persamaan (3.13). Ini adalah tahap terakhir FFT berupa DFT 8 titik tanpa perkalian twiddle factor. 4 8 64 512 38 64 512 318 64 512 328 64 512 338 64 512 348 64 512 358 64 512 368 64 512 378 64 512 (3.14) Sehingga didapatkan persamaan akhir seperti yang ditunjukkan pada persamaan (3.15). Persamaan ini menunjukkan perubahan indeks antara input dengan output. 4 8 64 512 4 32 256 4 8 64 512 (3.15)
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 28 3.2 Model Matlab 3.2.1 Menentukan Lebar Bit Fixed Point Algoritma matematis yang telah diturunkan selanjutnya dibuat menjadi model algoritma script Matlab. Model Matlab yang dibuat akan menunjukkan aliran pemrosesan data pada setiap tahap. Model ini juga akan memodelkan lebar bit fixed point yang akan digunakan pada implementasi perangkat keras. Gambar 3-1 Formar bit fixed point untuk I/O Sebelum membuat model algoritma, terlebih dahulu harus ditentukan lebar bit fixed point untuk representasi data. Telah ditentukan bahwa lebar bit input dan output adalah 14 bit dengan format seperti Gambar 3-1. Dalam subbab 1.3 telah disebutkan bahwa representasi fixed point dilakukan dengan pendekatan variable datapath. Pendekatan ini menggunakan lebar bit yang berbeda-beda, sesuai dengan kebutuhan pada titik tersebut. Sehingga untuk 2k FFT-IFFT Core yang dirancang, lebar bit akan terus mengalami peningkatan pada setiap tahap. Dengan demikian, pada akhir tahap lebar bit datapath akan menjadi 2x25 bit. Lebar bit ini akan dipotong kembali menjadi 2x14bit pada output sistem. Metode ini lebih sederhana dibandingkan dengan metode-metode lain seperti metode Block Floating Point (BFP), Convergence Block Floating Point (CBFP)[10], Dynamic Scaling Method (DSM)[11], dan sebagainya. Selain itu Variable Datapath tidak memerlukan sistem kontrol khusus untuk melakukan penyesuaian bit. Pemotongan bit di akhir tidak akan berpengaruh untuk mode IFFT, namun dapat berpengaruh untuk mode FFT. Hal ini karena pada mode IFFT ada faktor normalisasi dengan 1 sedangkan FFT tidak ada. Namun, dengan asumsi bahwa data output dari FFT adalah data input IFFT di stasiun pengirim dan kanal tidak menambahkan gain maka pemotongan bit ini tidak akan menyebabkan overflow.
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 29 sign integer fractional lebar bit 25 20 15 10 5 0 input tahap 1 tahap 2 tahap 3 tahap 4 output Gambar 3-2 Lebar bit pada tiap tahap FFT Telah disebutkan pula dalam spesifikasi sistem, lebar bit untuk twiddle factor adalah 12 bit dengan format 1 sign bit dan 11 fractional bit. Nilai twiddle ini didapatkan dari ROM sinus dan cosinus dengan lebar bit yang sama. ROM sinus dan cosinus berisi 256 sampel pertama dari fungsi sinus dan cosinus pada persamaan (2.3). Matlab menggunakan nilai double (64 bit) untuk menyimpan seluruh variabelnya. Untuk memodelkan bilangan fixed point diperlukan metode khusus. Pada akhir setiap perhitungan, data dimasukkan ke dalam fungsi khusus yang akan mengubah data double tersebut menjadi data biner dengan panjang bit yang diinginkan. Data biner ini kemudian diubah kembali ke dalam format bilangan double. Dengan metode ini, data akan mengalami kuantisasi dengan tingkat presisi sepanjang lebar bit binernya. Metode ini dianggap cukup untuk mendekati format fixed point. 3.2.2 Proses Pemodelan Model Matlab yang dibuat memiliki 3 argumen yaitu, 1. Argumen datain, adalah input bilangan kompleks fixed point 14 bit. 2. Argumen inverse, adalah argumen kontrol untuk menentukan fungsi (FFT atau IFFT). 3. Argumen gain, adalah argumen kontrol untuk mentukan besar gain.
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 30 Gambar 3-3 Partisi FFT-IFFT Core menjadi 4 tahap komputasi ditambah tahap input dan output Selain itu, model yang dibuat membagi FFT menjadi 4 tahap ditambah dua tahap tambahan, yaitu tahap input dan tahap output (Gambar 3-3). Tahap input untuk menentukan fungsi yang dipilih apakah FFT atau IFFT dan membalik input jika IFFT. Tahap output berguna untuk melakukan normalisasi dan membalik output apabila fungsi yang dipilih adalah IFFT dan juga mengatur gain FFT-IFFT Core. Tahap 1 menggunakan algoritma radix-4 yang terdiri dari unit butterfly perkalian dan twiddle factor. Di akhir tahap dilakukan pemotongan bit. Tahap kedua dan ketiga adalah tahap yang mirip. Keduanya menggunakan algoritma radix-8. Perbedaanya terletak pada panjang data yang dikomputasi. Untuk tahap 2, masing-masing blok memiliki panjang 64, sedangkan pada tahap ketiga memiliki panjang 8. Panjang data ini disesuaikan dengan deskripsi matematis pada persamaan (3.8) dan persamaan (3.11). Tahap keempat juga menggunakan algoritma radix-8, namun tanpa perkalian twiddle factor seperti pada persamaan (3.14). 3.3 Pengukuran Performa Model Tahap berikutnya adalah mengukur performa dari model yang dibuat. Pengukuran ini penting untuk memperkirakan performa sistem yang akan dibuat. Pengukuran dilakukan dengan memodelkan sistem modulasi-demodulasi OFDM pada kondisi kanal AWGN. Parameter model sistem dapat dilihat pada Tabel 3-5.
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 31 konstelasi Tabel 3-5 Parameter model sistem untuk pengukuran performa Parameter 64-QAM Keterangan faktor normalisasi 1 42 (didekati dengan nilai jumlah bit per simbol OFDM total bit data tiap iterasi oversampling rate 1 tipe kanal EbNo gain select 1 6. 4605 2048x6 bit (seluruh subcarrier digunakan) 122880 bit AWGN bervariasi dari 0 db - 20 db bervariasi dari 1x (2 ) 32x (2 ) 3.3.1 Performa SQNR Gambar 3-4 dan Gambar 3-5 menunjukkan performa model Matlab 2k FFT-IFFT Core dilihat dari SQNR (Signal to Noise Quantization Ratio). SQNR menunjukkan seberapa besar distorsi yang diberikan oleh sistem akibat lebar bit yang terbatas. Performa SQNR diukur dengan cara membandingkan hasil komputasi model dengan fungsi FFT dan IFFT standar library dari Matlab. Gambar 3-4 memperlihatkan SQNR untuk FFT. Pada kondisi EbNo kanal yang rendah SQNR juga akan rendah karena distorsi sinyal yang besar. Berbeda dengan Gambar 3-5 yang menunjukkan kondisi SQNR untuk mode IFFT. Nilai SQNR cenderung konstan karena input IFFT diperoleh langsung dari modulator. Pengaturan nilai gain internal juga mempengaruhi besar SQNR. Untuk sinyal OFDM 64-QAM, gain optimum didapatkan pada gain 5 atau dengan kata lain sinyal output dari IFFT diberikan atau penguatan 32 kali dibandingkan gain standar. Apabila diberikan pengaturan gain yang lebih besar maka SQNR akan jatuh karena telah terjadi overflow dan sinyal tidak dapat dikembalikan dengan sempurna ke domain frekuensi oleh FFT Core. Dengan gain standar didapatkan SQNR sebesar ±40 db baik pada konfigurasi FFT maupun IFFT. Sehingga berdasarkan model ini, 2k FFT-IFFT Core
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 32 yang dirancang memiliki SQNR antara 40 db hingga 60 db tergantung amplitudo sinyal. 70.00 gain 1 gain 2 gain 3 gain 4 gain 5 60.00 SQNR FFT 50.00 40.00 30.00 0 2 4 6 8 10 12 14 16 18 20 EbNo Gambar 3-4 SQNR FFT Core model untuk berbagai kondisi EBNo 70.00 gain 1 gain 2 gain 3 gain 4 gain 5 60.00 SQNR IFFT 50.00 40.00 30.00 0 2 4 6 8 10 12 14 16 18 20 EbNo Gambar 3-5 SQNR IFFT Core untuk berbagai kondisi EbNo
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 33 3.3.2 Performa BER Bit Error Rate atau BER adalah perbandingan jumlah bit data yang error terhadap jumlah bit data total yang ditransmisikan. BER dihitung dengan menggunakan fungsi perhitungan BER yang dimiliki oleh Matlab (biterr) dengan membandingkan bit yang ditramsmisikan dengan bit keluaran dari demodulator. Nilai BER cenderung sebanding dengan kualitas kanal yang dilalui. Dari Gambar 3-6 terlihat bahwa nilai parameter gain tidak terlalu mempengaruhi BER untuk kondisi kanal dengan EbNo 15 db. Diatas nilai tersebut sinyal dengan gain yang lebih besar (amplitudo besar) akan memiliki BER yang lebih baik (kecil). gain 1 gain 2 gain 3 gain 4 gain 5 lib 1.00E+00 1.00E-01 0 2 4 6 8 10 12 14 16 18 20 1.00E-02 BER 1.00E-03 1.00E-04 1.00E-05 EbNo Gambar 3-6 BER model OFDM dengan menggunakan FFT-IFFT Core