BAB 2 DASAR TEORI FFT-IFFT Pada Bab ini dibahas tentang hubungan antara Discrete Fourier Transform (DFT) dan algoritma Fast Fourier Transform (FFT), dan hubungan antara algoritma FFT dan IFFT. Dua tipe algoritma FFT dibahas yaitu Decimation in Frequency dan Decimation in Time. Kedua tipe algoritma ini dapat diimplementasikan kedalam beberapa algoritma FFT seperti Cooley-Tukey dan Sande-Tukey. Pembahasan berlanjut mengenai perbandingan algoritma radix yang umum digunakan juga dibahas yaitu algoritma Radix-2, Radix-4, dan Radix-8. Selain itu juga dibahas tetang konstanta twiddle factor dan bagaimana cara membangkitkannya. Pada bagian akhir dibahas tentang penggunaan algoritma FFT dan IFFT dalam sistem OFDM baik dalam sistem pengirim maupun penerima. 2.1 DFT dan FFT FFT adalah algoritma yang efisien untuk melakukan komputasi DFT. DFT sendiri adalah nama untuk transformasi matematis untuk suatu sinyal waktu diskrit, sedangkan FFT lebih merujuk kepada algoritma untuk melakukan komputasi tersebut. Algoritma FFT dan inverse-nya (IFFT), menfasilitasi proses transformasi yang cepat dan efisien antara domain frekuensi dan domain waktu dan sebaliknya. DFT untuk N-point sekuens data dengan 0,1,.., 1 didefinisikan pada persamaan (2.1). (2.1) Dengan 0,1,, 1 dan. Nilai sering pula disebut sebagai panjang transformasi (N-point) dan indeks dan adalah indeks domain waktu dan domain frekuensi. 8
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 9 Kebalikannya, inversee DFT untuk sekuens didefinisikan pada persamaan (2.2). data dengan 0,1,, 1 Untuk 0,1,, 1. 1 (2.2) Dari (2.1) dan (2.2) terlihat bahwa perbedaan antara komputasi DFT dan IDFT terle- tak pada d ua hal, yaitu adanya faktor skala 1 pada IDFT dan tanda pangkat ekspo- nensial untuk. Karena kemiripan ini, algoritma dan arsitektur dari FFT Core dapat digunakann pula untuk menghitungg IFFT dengan dua modifikasi kecil sebagai berikut, 1. Membalik input dan outpu FFT Core antara nila i real dan imajiner. 2. Membagi output dari FFT Core dengan 1. Modifikasii ini ditunjukkan oleh Gambar 2-1. Dengan demikian sebuah FFT Core da- pat digunakan sebagai FFT Core dan IFFT Core[3]. Gambar 2-1 IFFT Core berbasis FFT Core Persamaan (2.1) dan (2.2) merupakan komputasi yang sangat kompleks dan memer- lukan implementasi perangkat keras yang besar. Komputasi DFT dan IDFT memerlu- kan 1 penjumlahan dan 1 perkalian. Sehingga kompleksitas kompu- khusus untuk mengurangi kompleksitas perhitungan. Coley-Tukey memberikan solusi algor- tima yang dapat mengurangi kompleksitas komputasi menjadi dengan mengeksploitasi karakteristik simetri dari komputasi DFT[4]. Algoritma Coley-Tukey dan algoritma komputasi DFT lainnya kemudian disebut dengan Fast Fourier Trans- form (FFT) dan algoritma komputasi IDFT disebut dengan Inverse Fast Fourier Transform tasi untuk N-point DFT adalah. Oleh karena itu diperlukan algoritma (IFFT).
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 10 Gambar 2-2 Perbandingan kompleksitas komputasi antara DFT dan FFT 2.2 Algoritma FFT Desain prosesor FFT, sangat tergantung kepada komputasi matematis yang digunakan pada algoritma yang dipilih. Pemilihan algoritma tepat akan mempengaruhi kecepatan komputasi, kompleksitas perangkat keras, dan konsumsi daya yang diperlukan. 2.2.1 Algoritma Cooley-Tukey Algortima FFT didasarkan pada prinsip yang disebut dengan divide-and-conquer untuk mengurangi jumlah komputasi (penjumlahan atau perkalian) untuk mendapatkan hasil yang sama dengan DFT. Teknik ini secara rekursif membagi DFT yang besar menjadi beberapa komputasi DFT yang lebih kecil. Tiap-tiap DFT kemudian dikerjakan secara independen dan hasilnya digabungkan untuk mendapatkan DFT keseluruhan[5]. Cooley dan Tukey mendemonstrasikan keunggulan metode ini dengan menggunakan algoritma yang kemudian disebut dengan algoritma radix-2. Algoritma ini secara efektif membagi komputasi DFT menjadi 2 pada setiap tahap rekursi sehingga pada akhirnya didapatkan 2-point DFT. Karena panjang data harus dibagi menjadi dua pada setiap tahap rekursi, maka DFT awal harus merupakan bilangan pangkat dari dua. DFT dengan panjang bukan bilangan pangkat dua harus dilakukan penambahan dengan nilai nol (zero padding). Tipe algoritma seperti yang digunakan oleh Coley-Tukey disebut sebagai Decimation in Time (DIT). Hal ini karena algoritma ini menghitung setiap blok kecil DFT pada
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 11 domain waktu dan pada akhirnya akan didapatkan DFT utuh pada domain frekuensi. Algoritma ini memiliki persyaratan dalam implementasi ke perangkat keras yaitu input dari DIT memiliki indeks bit-reversed. Sebagai contoh untuk 8-point DFT, input data pertama adalah tetap indeks ke-0, tetapi input data kedua adalah indeks ke-4 karena bit-reversed dari indeks 001 adalah 100 dan seterusnya. Gambar 2-3 Radix-2 butterfly untuk algoritma Cooley-Tukey 2.2.2 Algoritma Sande-Tukey Input data bit-reversed tidak terlalu disukai untuk implementasi. Oleh karena itu, digunakan tipe algoritma lain yang disebut dengan Decimation in Frequency (DIF). Tipe algoritma ini merupakan kebalikan dari DIT karena ukuran komputasi DFT pada tahap berikutnya selalu lebih kecil dibanding tahapan sebelumnya. DIF mensyaratkan output dari FFT memiliki indeks bit-reversed sedangkan inputnya indeksnya tetap. Gambar 2-4 Radix-2 butterfly untuk algoritma Sande-Tukey Algoritma Sande-Tukey memiliki kompleksitas komputasi yang sama dengan Coley- Tukey. Namun, algoritma ini dan DIF pada umumnya, lebih disukai daripada DIT untuk diimplementasikan ke perangkat keras. Struktur butterfly dari DIF yang melakukan komputasi perkalian dengan twiddle factor dan pemotongan bit (bit-truncation) setelah penjumlahan butterfly memberikan nilai SNR yang lebih baik dibanding DIT yang melakukan hal sebaliknya[6].
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 12 2.3 Algoritma Mode Decimation in Frequency 2.3.1 Algoritma Radix-2 Seperti telah dijelaskan sebelumnya, algoritma Sande-Tukey adalah algoritma FFT Radix-2 bertipe DIF. Algoritma Radix-2 membagi data menjadi dua sama besar. Setiap kombinasi data akan dieksekusi dengan operasi yang disebut dengan butterfly. Butterfly adalah unit terkecil FFT [7]. Gambar 2-3 dan Gambar 2-4 memperlihatkan satu unit butterfly Radix-2 bertipe DIT dan DIF. Seluruh komputasi FFT dapat ditunjukkan/digambarkan dengan menggambar unit radix secara repetitif untuk setiap output radix tahap sebelumnya. Pada algoritma Radix-2, dan, pada Gambar 2-4 merupakan data dengan indeks yang terpisah 2. Maka apabila memiliki indeks maka memiliki indeks 2. Demikian pula dengan dan, mereka juga memiliki indeks dengan pola yang sama sehingga implementasi pada perangkat keras menjadi lebih sederhana. Pengalamantan data yang sama antara input dan output ini disebut dengan pola inplace addressing karena data output dapat menempati posisi yang sama dengan yang digunakan oleh input. Proses ini diulangi terus menerus hingga tahap terakhir. Gambar 2-5 menunjukkan contoh signal flowgraph dari 8-point DFT yang dikomputasi dengan menggunakan 3 tahap Radix-2 FFT. Tahap pertama membagi data menjadi 2 blok dengan panjang masing-masing 4. Tahap kedua membagi output dari tahap pertama menjadi 2 lagi dengan panjang 2 dan tahap terikhir merupakan satu unit Radix-2 FFT. Gambar 2-5 Contoh signal flowgraph untuk 8-point DFT
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 13 Pada perkembangannya, disadari bahwa proses faktorisasi tidak harus dengan nilai 2, setiap DFT dapat pula difaktorisasi dengan nilai lain asalkan tetap memenuhi syarat bahwa perkalian seluruh nilai faktor adalah besar DFT itu sendiri. Misalnya, 64-point DFT dapat dipecah menjadi 6 tahap 2-point DFT atau 3 tahap 4-point DFT atau 2 tahap 8-point DFT. Bahkan beberapa kombinasi DFT dapat digunakan, misalnya menggunakan radix-2 diteruskan dengan radix-4 dan radix-8 untuk menyusun 64- point DFT tersebut. Selain algoritma radix-2, terdapat dua tipe radix yang biasa digunakan yaitu radix-4 dan radix-8. 2.3.2 Algoritma Radix-4 Algoritma Radix-4 membagi data menjadi 4 blok data. Dengan demikian setiap tahap komputasi akan membagi tahap sebelumnya menjadi 4. Pada kenyataannya, Radix-4 merupakan dua tahap Radix-2 FFT untuk 4-point DFT. Oleh karena Radix-4 hanya merupakan generalisasi dari Radix-2, maka seluruh sifat dari Radix-2 juga dimiliki oleh Radix-4 termasuk struktur yang regular, in-place addressing, dan pipelining. Gambar 2-6 Radix-4 node Gambar 2-7 Signal flow graph Radix-4 butterfly Keunggulan Radix-4 dibandingkan dengan Radix-2 adalah adanya trivial twiddle factor yang dapat dikeluarkan dari daftar multiplikasi twiddle factor. Trivial twiddle factor adalah nilai twiddle factor yang tidak memerlukan multiplikasi untuk diimplemen-
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 14 tasikan. Algoritma Radix-4 dapat mengeluarkan nilai twiddle untuk dan yang masing-masing bernilai dan. Jika data kompleks dikalikan dengan, maka yang perlu dilakukan hanya menjadikan nilai sebagai data real dan sebagai data imajiner sehingga didapatkan. Demikian pula dengan perkalian dengan. Maka yang perlu dilakukan hanya menjadikan nilai sebagai data imajiner dan nilai sebagai nilai realnya sehingga didapatkan. Dengan demikian salah satu keuntungaan adalah, presisi dapat ditingkatkan dibanding perkalian dengan nilai dan dengan nilai bit-precission. Radix-4 memerlukan 4 input pada setiap tahapnya, oleh karenanya, panjang FFT yang dikalkulasi haruslah merupakanbilangan pangkat dari 4. Maka terdapat beberapa nilai FFT yang dapat dikerjakan dengan Radix-2 namun tidak dapat dengan Radix-4. Salah satu metode untuk mengatasi hal ini adalah dengan menggabungkan komputasi Radix-4 dengan Radix-2 untuk menghasilkan FFT mixed-radix. 2.3.3 Algoritma Radix-8 Algoritma Radix-8 membagi data menjadi 8 blok data. Dengan demikian setiap tahap perhitungan akan membagi data tahap sebelumnya menjadi 8. Seperti halnya Radix-4, Radix-8 juga merupakan turunan dari Radix-2. Pada kenyatannya, gambar flowgraph Radix-8 merupakan 3 tahap Radix-2 FFT untuk 8-point DFT. Gambar 2-8 Radix-8 node
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 15 Gambar 2-9 Signal flow graph Radix-8 butterfly Algoritma Radix-8 menambahkan dua buah trivial twiddle factor yang dapat dikeluarkan dari daftar multiplikasi twiddle factor. Nilai trivial twiddle factor tersebut adalah 1 2 dan 1 2. Karena terdapat faktor pembagian dengan 2 maka diperlukan unit scaling. Unit ini dapat diimplementasikan dengan menggunakan sirkuit shift-and-add nilai konstan yang tidak memerlukan kebutuhan perangkat keras yang tinggi. Selain itu nilai presisi untuk kedua twiddle factor ini dapat ditingkatkan dengan menambahkan level sirkuit shift-and-add. 2.4 Twiddle Factor Twiddle factor adalah konstanta trigonometri yang akan dikalikan dengan data pada algoritma FFT. Dari persamaan (2.1) konstanta twiddle factor adalah, sehingga 2048-point FFT memerlukan 2048 nilai konstanta kompleks twiddle factor. Nilai konstanta ini dapat diperoleh dengan melakukan sampling satu siklus nilai cosinus dan nilai sinus untuk twiddle factor real dan twiddle factor imajiner seperti yang ditunjukkan oleh (2.3). cos 2 2 sin 2048 2048 (2.3)
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 16 Untuk menyimpan seluruh nilai twiddle factor ini memerlukan ROM yang besar. Oleh karena itu tidak seluruh nilai twiddle factor disimpan. Gambar 2-10 menunjukkan bahwa hanya 1 8 nilai twiddle factor awal saja yang perlu disimpan (dari indeks 0 sampai dengan 256), sedangkan nilai twiddle factor lainnya dapat dihasilkan dari nilai ini[8]. Gambar 2-10 Seperdelapan siklus nilai cosinus (kiri) dan sinus (kanan) 2.5 FFT-IFFT dalam OFDM Ortogonal Frequency Division Multiplexing (OFDM) merupakan teknik multiplexing dengan cara membagi sebuah kanal lebar menjadi beberapa kanal sempit, yang dapat mengirimkan informasi secara parallel pada waktu yang bersamaan. Keunggulan OFDM dibandingkan dengan teknik modulasi lainnya adalah kemampuannya untuk mengatasi multipath. Pengiriman data secara parallel memungkinkan tiap bit dikirimkan dengan rate yang lebih kecil. Rate yang lebih kecil berarti perioda simbol yang lebih panjang. Jika delay spread yang terjadi akibat multipath cukup kecil jika dibandingkan dengan perioda simbol, maka efek dari multipath tidak akan terlalu signifikan lagi[9]. Perbedaan antara OFDM dengan FDM (Frequency Division Multiplexing) adalah bentuk spektrumnya yang berupa sin diatur sedemikian rupa sehingga sinyalsinyal carrier yang ada secara matematis bersifat ortogonal sehingga spektrumspektrum dari subcarrier dimungkinkan tumpang tindih tanpa saling mengganggu.
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 17 Gambar 2-11 Spektrum Sinyal OFDM[9] Suatu sinyal disebut ortogonal jika memenuhi persamaan (2.4).,jika p q 0, jika p q (2.4) Dengan merupakan kompleks konjugat dari, adalah konstanta bukan nol, dan adalah periode simbol OFDM. DFT memiliki sifat ortogonal. Oleh karena itu OFDM menggunakan IDFT (dalam hal ini algoritma IFFT) untuk membangkitkan sinyal ortogonal yang akan ditransmisikan, dan algoritma FFT untuk mengembalikan transformasi ke domain frekuensi, untuk didapat demodulasi kembali. Dengan demikian, secara sederhana OFDM modulator diimplementasikan dengan menggunakan satu IFFT core dan modulator baseband. Sedangkann OFDM demodulator diimplementasikan dengan satu FFT core dan demo- dulator baseband.
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 18 Gambar 2-12 Sistem OFDM berbasis IFFT dan FFT Proses pembangkitan sinyal OFDM pada umumnya menggunakan IFFT dengan panjang yang lebih besar dibanding jumlah subcarrier yang digunakan. Sebagai contoh, untuk modulasi OFDM yang digunakan pada DVB-T, dari 2048 subcarrier yang mungkin digunakan hanya 1705 subcarrier yang dipakai, sedangkan sisanya diberi nilai nol (zero padding). Hal ini bermanfaat untuk menghindari terjadinya efek aliasing pada saat sinyal OFDM diubah ke bentuk analog dengan DAC. Selain itu, input 0 juga diberikan pada masukan dari IFFT pada frekuensi 0, yang berguna untuk menghilangkan komponen DC pada sinyal OFDM. Input IFFT berasal dari blok frame adaptation (Gambar 1-1). Blok frame adaptation menerima data dari modulator (QPSK, 16-QAM, atau 64-QAM) dan menambahkan data pilot dan TPS carrier untuk dibentuk menjadi simbol OFDM. Masing-masing modulator memiliki range output yang berbeda-beda yang ditunjukkan pada Tabel 2-1. Dari tabel tersebut, 64-QAM memiliki range yang terbesar. Untuk mengkodekannya dalam format fixed point maka paling tidak diperlukan satu buah sign bit, satu buah integer bit, dan bit sisanya untuk mengkodekan nilai pecahan. Dari persamaan (2.2), diperoleh bahwa range output dari IFFT akan sama dengan range inputnya sehingga sistem pengkodean yang sama dapat diterapkan pada output IFFT.
Desain dan Implementasi 2k Pipeline FFT-IFFT Core untuk DVB-T 19 Tabel 2-1 Nilai output dari tiap tipe modulasi Modulasi MAX MIN N orm. Range Output QPSK 1-1 2 0.707 s.d -0.707 16-QAM 3-3 10 0.949 s.d -0.949 64-QAM 7-7 42 1.080 s.d -1.080 Pada kenyatannya, untuk input berupa simbol OFDM, apabila IFFT dilakukan dengan menggunakan faktor normalisasi 1 seperti yang ditunjukkan dengan persamaan (2.2) maka output akan memiliki amplitudo yang sangat kecil. Sehingga beberapa faktor normalisasi lain diperkenalkan seperti menggunakan faktor normalisasi gain tetap 1, automatic data scaling[10][11], dan sebagainya. Implikasinya, IFFT yang terjadi menjadi tidak standar lagi. Untuk mengurangi kompleksitas rancangan dan tetap menjaga standarisasi komputasi, maka 2k FFT-IFFT Core yang dirancang akan menggunakan sistem pengaturan gain manual. Faktor normalisasi dapat diatur secara manual dengan nilai standar adalah gain standar (1 ). Input FFT berasal dari data hasil digitalisasi ADC. Data ini terlebih dahulu harus melalui tahap Automatic Gain Control untuk menghilangkan penguatan yang diperoleh sinyal dari kanal. Dengan demikian sinyal yang diterima oleh FFT dianggap tidak mendapat penguatan oleh kanal. Output dari FFT akan di-demodulasi menggunakan demodulator yang sesuai dengan modulator pengirim. Oleh karena itu sinyal output FFT akan memiliki range yang sama dengan input IFFT. Sehingga, lebar bit dan pengkodean bit yang sama dapat dipergunakan. Pengaturan gain yang sama dengan IFFT juga harus digunakan agar simbol OFDM dapat ditransformasi dengan sempurna. Karena FFT dan IFFT adalah sistem linier, maka penguatan di satu domain dapat dihilangkan dengan membagi output transformasi dengan nilai yang sama. Dengan demikian, apabila pada output IFFT dilakukan penguatan sebesar, maka output dari FFT harus dikalikan dengan 1.