IMPLEMENTASI ALGORITMA CORDIC (COORDINATE ROTATION DIGITAL COMPUTER) PADA FPGA UNTUK APLIKASI DIGITAL MIXER. Mahasiswa Bagus Rijalul Haq 2207 100 548 Dosen Pembimbing Ir. Totok Mujiono, M.Kom Jurusan Teknik Elektro – FTI, Institut Teknologi Sepuluh Nopember Kampus ITS, Surabaya – 60111 Abstrak - FPGA (Field Programmable Gate Array) banyak digunakan untuk berbagai aplikasi khusus berkecepatan tinggi, seperti modulasi dan demodulasi pada base station. Operasi standar seperti perkalian, penambahan, dan pengurangan telah umum dipergunakan. Untuk operasi khusus seperti akar, pembagian, trigonometri, dan logaritmik perlu digunakan metoda khusus untuk mempercepat operasi, salah satunya menggunakan metoda algoritma CORDIC. Pada tugas akhir ini akan dilakukan implementasi algoritma CORDIC pada FPGA untuk aplikasi digital mixer yang banyak dipakai pada modulasi dan demodulasi digital. Kata kunci: FPGA, CORDIC (Coordinate Rotation Digital Computer), Quadratur Digital Mixer. 1. PENDAHULUAN Perkembangan teknologi komunikasi dewasa ini begitu pesat. Proses komunikasi selalu melibatkan adanya pengiriman dan penerimaan informasi. Dalam pengolahan informasi tersebut, proses modulasi dan demodulasi digital mutlak diperlukan. Dalam operasi tersebut diperlukan adanya mixer untuk pengubahan frekuensi untuk memindahkan frekuensi sinyal dari frekuensi tinggi (ƒRF) ke frekuensi sedang (ƒIF) atau sebaliknya. Metode quadratur mixer memerlukan kepresisian sudut sebesar 90° pada kedua gelombang oscilator yang akan sulit memperoleh kepresisian yang tinggi jika dibuat dalam bentuk analog. Algoritma CORDIC merupakan salah satu metoda yang digunakan untuk membangkitkan sinyal oscilator berupa sinusoida, sinus dan cosinus. Algoritma CORDIC merupakan algoritma yang mampu menyelesaikan operasi – operasi aritmatik rumit yang menggunakan metode iterasi dari bentuk rotation mode dengan sudut bebas. Proses ini dilakukan dengan menggunakan pergeseran, penambahan, dan tabel lookup. Pengunaan FPGA sebagai aplikasi dari metode ini dikarenakan FPGA memiliki spesifikasi yang berkecepatan tinggi untuk menyelesaikan operasi-operasi khusus pada modulasi dan demodulasi. Pada tugas akhir ini dilakukan implementasi algoritma CORDIC untuk menghasilkan fungsi sinusoida, serta pembuatan aplikasi digital mixer pada FPGA yang banyak dipakai pada receiver demodulasi digital. 2. STUDI PUSTAKA Studi pustaka digunakan sebagai dasar dan teori penunjang dalam pembuatan tugas akhir ini. Berikut ini beberapa studi pustaka. Demodulasi Demodulasi merupakan pemisahan frequency pembawa dengan base band frequency. Proses ini merupakan kebalikan dari modulasi yaitu proses mencampurkan Analog base band frequency kedalam frequency pembawa analog. Frequency analog adalah frequency yang berbentuk gelombang Sinusoida. Sehingga dari proses demodulasi didapatkan suatu informasi asli. Peralatan untuk melaksanakan proses demodulasi disebut demodulator. Untuk pengolahan informasi yang diterima melalui antena yang berfrekuensi tinggi ƒRF ke frekuensi sedang ƒIF diperlukan adanya modulator, yaitu analog modulator dan digital modulator. fRF fIF(analog) Analog Demodulator A/D fRF(digital) fBase Digital Demodulator Gambar 2.1. Diagram Blok Proses Demodulasi Mixer Untuk melakukan operasi mixing atau perkalian diperlukan dua operand. Operand pertama adalah bilangan yang akan dikalikan, operand kedua adalah bilangan pengalinya, sedangkan operand ketiga adalah hasil kalinya. Jika operand pertama dan kedua berukuran masing-masing 3 bit (n-bit), maka operand ketiga berukuran 6 byte (2n-bit). Mixer dalam aplikasi demodulasi merupakan suatu sirkuit pengali dua buah frekuensi menghasilkan frekuensi baru, dari suatu sinyal dengan frekuensi tinggi ke frekuensi yang lebih rendah, frekuensi yang dihasilkan merupakan penjumlahan dan pengurangan dari frekuensi asal dengan frekuensi pembawanya. 1 Proceeding Seminar Tugas Akhir Jurusan Teknik Elektro FTI-ITS Secara ideal pengoperasian mixer melakukan fungsi trigonometri dengan sistim multiplying 2 gelombang sinus. Jika masukan berupa sinyal sinusoidal, maka keluaran mixer ideal merupakan jumlah dan perbedaan dari frekuensi yang diberikan sebagai berikut : Dengan menggunakan identitas trigonometri, didapatkan: Dengan I(t) dan Q(t) adalah sinyal termodulasi dan f0 frekuensi carrier. Pada receiver, terdapat dua modulasi sinyal yang dapat dimodulasi. Sinyal secara terpisah diterima dari receiver dan dikalikan sinus dan cosinus. Bentuk I(t) dan Q(t) di demodulasi dengan mengalikan masing-masing dengan cosinus dan sinus. Berikut ini bentuk pada I(t) : Gambar 2.2. Blok Diagram Mixer Quadrature Metode quadratur adalah sebuah skema modulasi yang membawa data dengan mengubah amplitudo dari dua gelombang pembawa. Kedua gelombang tersebut merupakan gelombang sinusoida, berbeda fase dengan yang lainnya sebesar 90°. Dalam proses komunikasi, metode quadrature digunakan pada proses transmitter sebagai modulasi gelombang dan juga pada receiver sebagai demodulasi gelombang. Keunggulan metode quadrature adalah memiliki performansi interferensi yang lebih baik, lebih tahan noise, dan kecepatan lebih tinggi. Input Sinyal2 Sin (ωt + θ) Cos(ωt + θ) Input Sinyal1 Gambar 2.3. Skematik Quadrature Transmitter Out Sin Sinyal Informasi Sin (ωt + θ) Cos(ωt + θ) Out Cos Gambar 2.4. Skematik Quadrature Receiver Pada Quadratur Amplitude Modulation, bentuk sinyal yang ditransmisikan : Proceeding Seminar Tugas Akhir Jurusan Teknik Elektro FTI-ITS Dengan menggunakan standart identitas trgonometri, dapat ditulis : Selanjutnya, digunakan filter untuk menghilangkan frekuensi tinggi (pada 4πf0t), dan hanya meninggalkan I(t). dengan cara yang sama, dapat mengkalikan s(t) dengan gelombang sinus kemudian difilter untuk mendapatkan Q(t). CORDIC CORDIC (COordinate Rotation DIgital Computer) adalah algoritma sederhana dan efisien untuk menghitung operasi khusus seperti akar, hiperbolik, trigonometri, dan logaritmik. Pada umumnya CORDIC memiliki kecepatan yang lebih tinggi daripada metoda pendekatan lain karena metodenya yang sederhana. Pada FPGA metoda ini dapat meminimalisir jumlah gate yang hendak dipakai dalam perancangan. Algoritma CORDIC menggunakan metode iterasi dari bentuk rotation mode dengan sudut bebas, proses ini dilakukan hanya dengan menggunakan pergeseran dan penambahan. Rumusan untuk algoritma CORDIC yaitu : xi+1= xi – di . 2-i . yi yi+1 = yi + di . 2-i . xi zi+1 = zi – di . αi Dengan : di = ±1 zi+1 = Angle Accumulator αi = sudut pada tabel look-up xi+1 = nilai cos yi+1 = nilai sin 2-i = shift factor 2 Angle Accumulator memiliki fungsi sebagai penjumlahan sudut rotasi pada setiap iterasi dengan nilai sudut pengurang atau penjumlah tetap. Nilai awal z0 yang diberikan pada angle accumulator merupakan nilai sudut yang dicari dengan selisih mendekati nol. Dari rumusan diatas dapat diketahui komponen-komponen CORDIC yaitu 2 shift, 1 tabel look-up, dan 3 penambahan. sinus cosinus dengan z0 = 300 , serta flowchart perancangan sistem pada gambar 3.2. xi+1= xi – di . 2-i . yi yi+1 = yi + di . 2-i . xi zi+1 = zi – di . αi Table look-up yang digunakan pada algoritma cordic dapat dilihat pada tabel dibawah ini. Tabel 2.1. Tabel Look-up i αi tan (αi) 0 1 0 0.5 =2 -1 0 0.25 =2 -2 3 7.10 0.125 = 2 -3 4 3.60 0.0625 = 2 -4 5 1.8 0 0.03125 =2 -5 6 0 0.9 0.015625 =2 -6 7 0.40 0.0078125 = 2 -7 8 0.20 0.00390625 = 2 -8 9 0 0.1 0.001953125 = 2 -9 10 0.056 0 0.000976563 =2 11 0.0280 0.000488281 = 2 -11 12 0 0.014 0.000244141 = 2 -12 13 0.007 0 0.000122070 =2 -13 -14 0 45.0 1 26.6 2 14.0 = 2 -0 -10 14 0 0.004 0.000061035 =2 15 0.0020 0.000030518 = 2 -15 Pada tabel look-up diatas nilai tan(αi) = 2-i , nilai ini didalam algoritma CORDIC digunakan sebagai shifter. 3. (b) (a) PERANCANGAN SISTEM Perancangan sistem yang dibuat meliputi desain CORDIC dan desain mixer digital. Berikut ini penjelasan dari kedua desain Gambar 3.1. (a). Rotation Mode dengan sudut awal z0. (b). Rumus Algoritma CORDIC Format data hasil fungsi sinus dan cosinus diberikan sebesar 16 bit dengan bit ke-14 sebagai sign dan bit ke-0 sampai bit ke-13 data hasil CORDIC. DESAIN MIXER Desain mixer yang digunakan adalah bentuk quadratur mixer. Pada bentuk ini diperlukan dua oscillator yang merupakan gelombang sinusoida dan memiliki beda fase satu dengan lainnya sebesar 90°. Perbedaan fase ini diambil pada bentuk sinus dan cosinus. Out Mixer Sin Input digital Sin CORDIC Cos Out Mixer Cos Gambar 3.2. Quadratur Mixer Mode. Diberikan format data pada input sebesar 8 bit, dan output masing-masing sebesar 24 bit. Sedangkan pada sinus cosinus lebar data sebesar 16 bit. Pada gambar menunjukkan input data sebagai multiplier atau pengkali, sin dan cos sebagai multiplicand atau bilangan yang dikali dan menghasilkan dua output, output mixer sinus dan output mixer cosinus. DESAIN CORDIC Pada desain penggunaan CORDIC untuk menghasilkan nilai sinus dan cosinus digunakan Rotation mode. Pada metode ini, nilai awal yang diberikan meliputi x0 = 0.6073, y0 = 0, dan z0 = nilai sudut yang dikehendaki, antara 00 – 900, range nilai sudut ini sudah mewakili untuk gelombang sinus. Dan nilai di akan bernilai positif jika nilai zi lebih kecil dari nilai sudut yang hendak dicari z0, serta sebaliknya. Iterasi yang diberikan dirancang 16 kali iterasi dan nilai zi akan mendekati nol, dapat dilihat pada gambar 3.1. perolehan Proceeding Seminar Tugas Akhir Jurusan Teknik Elektro FTI-ITS 3 Tabel 4.1. Data Simulasi Pembentukan Sinusoida Sudut 30o Start X0 = 0.60725, Y0 = 0, i = 0 Z0 = sudut yang dicari i i = i+1 T If zi > di = +1 Y di = -1 xi+1= xi – di . 2-i . yi yi+1 = yi + di . 2-i . xi zi+1 = zi – di . αi Simulasi ISE Cosinus 9949 9949 14923 13680 14768 14331 14084 14214 14151 14183 14199 14192 14189 14191 14191 14191 Konversi Sinus 0 0.60724 0.30365 0.53131 0.42694 0.48328 0.51056 0.49713 0.50391 0.50055 0.4989 0.49969 0.50006 0.49988 0.49982 0.49982 Konversi Cosinus 0.60724 0.60724 0.91083 0.83496 0.90137 0.87469 0.85962 0.86755 0.86371 0.86566 0.86664 0.86621 0.86603 0.86615 0.86615 0.86615 Pada tabel diatas merupakan hasil fungsi sinus pada sampling 30o, untuk menghasilkan gelombang sinusoida diperlukan adanya repeater CORDIC. Pada gambar dibawah ini hasil simulasi gelombang continue dengan sudut 10 derajat. T If i>15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Simulasi ISE Sinus 0 9949 4975 8705 6995 7918 8365 8145 8256 8201 8174 8187 8193 8190 8189 8189 Y cnt=cnt+1 Zn + sudut sampling Out Sinus, Cosinus Data input Hasil cnt >cnt-n Gambar 4.1. Simulasi Perubahan Sudut 10o T Y Cnt = 0 Gambar 3.2. Flowchart Perancangan Sistem 4. SIMULASI DAN PENGUJIAN Simulasi dan pengujian dilakukan pada desain CORDIC dan desain digital mixer. Berikut ini hasil simulasi dan pengujian pada tugas akhir. SINUS DAN COSINUS Pada bagian ini disimulasikan program algoritma CORDIC untuk menghasilkan nilai sin dan cos dari sudut awal yang diberikan. Data yang diolah pada program ini berupa bilangan integer untuk mempermudah proses perhitungan pada program, sehingga diperlukan konversi dari bilangan integer program ke nilai pecahan desimal. Tabel 4.1. Konversi Nilai pada Sampling 10o Simulasi OUT_FINISH Perubahan 10o 1 2 3 4 5 Data Simulasi 4 2847 5605 8189 10529 Dalam Derajat 0o 10 o 20 o 30 o 40 o Pada saat OUT_FINISH menghasilkan pulsa, data perubahan sudut terbentuk. Pulsa pertama OUT_FINISH pada perubahan 10o menghasilkan nilai 4 pada data simulasi, nilai tersebut dalam konversi derajad mendekati 0o, selanjutnya pulsa ke-2 menghasilkan nilai 2847 atau dalam derajat mendekati 10o, demikian seterusnya, juga pada sampling derajat lainnya. Plot hasil gelombang 1 periode dapat dilihat pada gambar berikut. Gambar 4.2. Plot Gelombang Sinus Sampling 10o Proceeding Seminar Tugas Akhir Jurusan Teknik Elektro FTI-ITS 4 Pada gambar diatas proses mixer dilakukan hanya pada sampling 10 derajat. Pada gambar dibawah ini merupakan proses mixer pada 1 periode sinusoida pada Sampling 5o. Gambar 4.3. Plot Gelombang Cosinus Sampling 10o Frekuensi yang digunakan pada perancangan FPGA adalah sebesar 10 MHz, sehingga waktu tiap clock sebesar 0.1 µs atau 100 ns. Frekuensi masingmasing gelombang dinyatakan sebagai berikut : Gambar 4.5. Plot Sinus dengan Sampling 5o Tgel = 0.1 µs x 18 clock x counter fgel = 1/Tgel Tabel 4.2. Frekuensi-Periode Sinus dan Cosinus Perubahan Gelombang Frekuensi Periode Derajat o 30 46.3 KHz 21.6 µs Sin 10o 15.4 KHz 64.8 µs 5o 7.70 KHz 129.6 µs 30o 46.3 KHz 21.6 µs Cos 10o 15.4 KHz 64.8 µs 5o 7.70 KHz 129.6 µs Gambar 4.6. Multiplier Pada Sampling 5o Gamba DIGITAL MIXER Pengujian digital mixer dilakukan dengan memberikan dua nilai input yang berasal dari gelombang sinus dan cosinus dikalikan dengan data input 8 bit. Lebar data masing - masing pada sinusoida sinus dan cosinus adalah 16 bit. Lebar data hasil perkalian adalah 24 bit. Gambar 4.7. Hasil Mixer Sinus dengan Sampling 5o Prosentase keberhasilan pengujian digital mixer pada sampling 5o sebesar 100% ditunjukkan pada kolom evaluasi pada lampiran buku. Demikian juga untuk sampling lainnya. Pada gambar 5.2 merupakan gelombang multiplicand dikalikan dengan gelombang multiplier pada gambar 5.3, sehingga menghasilkan bentuk gelombang baru, ditunjukkan pada gambar 5.4. 5. Gambar 4.4. Mixing Input Data dengan Sinusoida Perubahan Sudut 10o Tabel 4.3. Simulasi Perkalian Digital Mixer Variabel Perkalian Multiplier Sinus Multiplicand Cosinus Sinus Hasil Cosinus Sampling 10o 30 2847 16134 85410 484020 Proceeding Seminar Tugas Akhir Jurusan Teknik Elektro FTI-ITS IMPLEMENTASI DAN TESTING Adanya keterbatasan input-output pada board FPGA, input digital diberikan 8 bit berupa 4 bit switch 2-1 sampai switch 2-4 dengan 4 bit fixed program, sedang keluarannya sebesar 7 bit MSB untuk sin dan 7 bit MSB untuk cos pada LED, 1 bit MSB merupakan sign. Adapun nilai keluaran dari CORDIC sin dan cos masing-masing adalah 16 bit dikeluarkan pada 7 segment1 untuk sinus dan 7 segment2 untuk cosinus dalam 7 bit MSB dan 1 bit MSB berupa sign. 5 2. Out Mixer Sin 7 segment-1 Sin PB1 = 0 LED CORDIC switch Cos PB1 = 1 3. 7 segment-2 Out Mixer Cos 4. Gambar 5.1. Blok Implementasi dan Testing Perancangan Tabel 5.1. Pengujian Blok Implementasi Dan Testing Waktu yang dibutuhkan untuk membentuk satu periode gelombang sinusoida berbeda pada tiap sampling, yaitu untuk sampling 30o diperlukan 21.6µs, sampling 10o diperlukan 64.8µs, dan pada 5o diperlukan 129.6µs. Semakin kecil sampling yang dipergunakan waktu yang diperlukan untuk membuat satu periode gelombang semakin besar, akan tetapi gelombang yang dihasilkan lebih akurat. Digital Mixer dapat melakukan proses mixing dengan cara perkalian antara multiplicand dan multiplier dikalikan pada saat sampling yang bersamaan. Perkalian antara gelombang sinusoida pada proses digital Mixer diperlukan adanya sign untuk membedakan nilai positif dan negatif dari hasil perkalian. Hasil simulasi pada Xilinx ISE 8.2i dan hasil uji coba pada board FPGA dapat berjalan sesuai perancangan, serta hasil sintesa menunjukkan bahwa diperlukan sebanyak 1244 blok logika untuk mengimplementasikan generator sinus dan cosinus beserta quadrature mixer. 6.2 Saran Untuk pengembangan aplikasi digital mixer pada FPGA lebih lanjut, pengunaan clock untuk membentuk satu fungsi sinusoida bisa dibuat lebih kecil dari 16 clock agar proses pembentukan gelombang sinusoida bisa lebih cepat. Hal ini dapat dilakukan dengan penambahan sudut diberikan pada saat selisih angle accumulator mendekati nol tanpa menunggu selesainya proses iterasi. 7. Pada tabel 5.1 ditunjukkan data hasil pengujian. Pada proram yang dibuat input outputnya masih dalam bentuk bilangan integer, sehingga untuk menghasilkan nilai input output yang diharapkan dilakukan konversi nilai dari bilangan derajat ke bilangan biner dan sebaliknya. Prosentase keberhasilan pengujian data mixer adalah 100%, untuk Cordic sin memiliki error 2.31% dan Cordic cos dengan error 2.72%. Output yang dihasilkan pada pengujian-implementasi diambil 8 bit MSB. 6. PENUTUP Dari hasil perancangan dan pengujian algoritma CORDIC dan digital mixer pada FPGA, dapat diambil suatu kesimpulan dan saran – saran untuk pengembangan selanjutnya. 1. 2. 3. 4. 5. 6.1 Kesimpulan Kesimpulan dari tugas akhir “Implementasi Algoritma CORDIC Pada FPGA untuk Aplikasi Digital Mixer” adalah sebagai berikut : 1. Untuk menghasilkan satu nilai fungsi sinusoida menggunakan algoritma CORDIC diperlukan 16 clock. Proceeding Seminar Tugas Akhir Jurusan Teknik Elektro FTI-ITS 6. 7. 8. DAFTAR PUSTAKA Andraka, Ray, A survey of CORDIC algorithms for FPGA based computers, 1998. S. Ravichandra, V. Asari, “Implementation of Unidirectional CORDIC Algorithm Using Precomputed Rotation Bits“, Circuits and Systems, 2002. MWSCAS-2002. Vol.3 , pp. III-453 - III-456, 4-7 Aug. 2002. N. Takagi, T. Asada, and S. Yajima, "Redundant CORDIC methods with a constant scale factor for sine and cosine computation," IEEE Trans. Computers, vol. 40, no. 9, pp. 989-995, Sep. 1991. J.-A. Lee, T. Lang, "Constant-Factor Redundant CORDIC for Angle Calculation and Rotation," IEEE Trans. Computers, vol. 41, no. 8, pp. 1016-1025 , Aug. 1992. T. Lang, E. Antelo, "CORDIC Vectoring with Arbitrary Target Value," IEEE Trans. Computers, vol. 47, no. 7, pp. 736 -749, July 1998. B. Gisuthan, T. Srikanthan, "Pipelining flat CORDIC based trigonometric function generators," Microelectronic Journal 33, pp. 77-89, 2002. Kia Bazargan , “CORDIC Algorithms”, University of Minnesota, 2006. Ken Gentile , “Fundamental of Digital Quadrature Modulation”, RF Mixed Signal Journal, 2003. 6