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. f RF Analog Demodulator f IF(analog) f RF(digital) f Base A/D 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
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 f 0 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 Sinyal 2 Input Sinyal 1 Gambar 2.3. Skematik Quadrature Transmitter Sinyal Informasi Sin (ωt + θ) Cos(ωt + θ) Sin (ωt + θ) Cos(ωt + θ) Out Sin Out Cos Gambar 2.4. Skematik Quadrature Receiver Pada Quadratur Amplitude Modulation, bentuk sinyal yang ditransmisikan : Dengan menggunakan standart identitas trgonometri, dapat ditulis : Selanjutnya, digunakan filter untuk menghilangkan frekuensi tinggi (pada 4πf 0 t), 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 : x i+1 = x i d i. 2 -i. y i y i+1 = y i + d i. 2 -i. x i z i+1 = z i d i. α i Dengan : di = ±1 z i+1 = Angle Accumulator α i = sudut pada tabel look-up x i+1 = nilai cos y i+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 z 0 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. 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 45.0 0 1 = 2-0 1 26.6 0 0.5 = 2-1 2 14.0 0 0.25 = 2-2 3 7.1 0 0.125 = 2-3 4 3.6 0 0.0625 = 2-4 5 1.8 0 0.03125 = 2-5 6 0.9 0 0.015625 = 2-6 7 0.4 0 0.0078125 = 2-7 8 0.2 0 0.00390625 = 2-8 9 0.1 0 0.001953125 = 2-9 10 0.056 0 0.000976563 = 2-10 11 0.028 0 0.000488281 = 2-11 12 0.014 0 0.000244141 = 2-12 13 0.007 0 0.000122070 = 2-13 14 0.004 0 0.000061035 = 2-14 15 0.002 0 0.000030518 = 2-15 sinus cosinus dengan z 0 = 30 0, serta flowchart perancangan sistem pada gambar 3.2. (a) Gambar 3.1. (a). Rotation Mode dengan sudut awal z 0. (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. Input digital Sin Cos x i+1 = x i d i. 2 -i. y i y i+1 = y i + d i. 2 -i. x i z i+1 = z i d i. α i CORDIC (b) Out Mixer Sin Out Mixer Cos Pada tabel look-up diatas nilai tan(α i ) = 2 -i, nilai ini didalam algoritma CORDIC digunakan sebagai shifter. 3. PERANCANGAN SISTEM Perancangan sistem yang dibuat meliputi desain CORDIC dan desain mixer digital. Berikut ini penjelasan dari kedua desain DESAIN CORDIC Pada desain penggunaan CORDIC untuk menghasilkan nilai sinus dan cosinus digunakan Rotation mode. Pada metode ini, nilai awal yang diberikan meliputi x 0 = 0.6073, y 0 = 0, dan z 0 = nilai sudut yang dikehendaki, antara 0 0 90 0, 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 z 0, serta sebaliknya. Iterasi yang diberikan dirancang 16 kali iterasi dan nilai zi akan mendekati nol, dapat dilihat pada gambar 3.1. perolehan 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. 3
Start X 0 = 0.60725, Y 0 = 0, i = 0 Z 0 = sudut yang dicari i = i+1 If z i > di = -1 Y T x i+1 = x i d i. 2 -i. y i y i+1 = y i + d i. 2 -i. x i z i+1 = z i d i. α i di = +1 Tabel 4.1. Data Simulasi Pembentukan Sinusoida Sudut 30 o i Simulasi Simulasi Konversi Konversi ISE Sinus ISE Cosinus Sinus Cosinus 0 0 9949 0 0.60724 1 9949 9949 0.60724 0.60724 2 4975 14923 0.30365 0.91083 3 8705 13680 0.53131 0.83496 4 6995 14768 0.42694 0.90137 5 7918 14331 0.48328 0.87469 6 8365 14084 0.51056 0.85962 7 8145 14214 0.49713 0.86755 8 8256 14151 0.50391 0.86371 9 8201 14183 0.50055 0.86566 10 8174 14199 0.4989 0.86664 11 8187 14192 0.49969 0.86621 12 8193 14189 0.50006 0.86603 13 8190 14191 0.49988 0.86615 14 8189 14191 0.49982 0.86615 15 8189 14191 0.49982 0.86615 If i>15 Y cnt=cnt+1 T Pada tabel diatas merupakan hasil fungsi sinus pada sampling 30 o, untuk menghasilkan gelombang sinusoida diperlukan adanya repeater CORDIC. Pada gambar dibawah ini hasil simulasi gelombang continue dengan sudut 10 derajat. Zn + sudut sampling Out Sinus, Cosinus Data input Hasil cnt >cnt-n 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 T 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. Gambar 4.1. Simulasi Perubahan Sudut 10 o Tabel 4.1. Konversi Nilai pada Sampling 10 o Simulasi Perubahan 10 o Data Dalam OUT_FINISH Simulasi Derajat 1 4 0 o 2 2847 10 o 3 5605 20 o 4 8189 30 o 5 10529 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 10 o 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 5 o. Gambar 4.3. Plot Gelombang Cosinus Sampling 10 o 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 5 o T gel = 0.1 µs x 18 clock x counter f gel = 1/T gel Tabel 4.2. Frekuensi-Periode Sinus dan Cosinus Gelombang Perubahan Derajat Frekuensi Periode 30 o 46.3 KHz 21.6 µs Sin 10 o 15.4 KHz 64.8 µs 5 o 7.70 KHz 129.6 µs 30 o 46.3 KHz 21.6 µs Cos 10 o 15.4 KHz 64.8 µs 5 o 7.70 KHz 129.6 µs 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.4. Mixing Input Data dengan Sinusoida Perubahan Sudut 10 o Tabel 4.3. Simulasi Perkalian Digital Mixer Variabel Perkalian Sampling 10 o Multiplier 30 Multiplicand Sinus 2847 Cosinus 16134 Hasil Sinus 85410 Cosinus 484020 Gambar 4.6. Multiplier Pada Sampling 5 o Gambar 4.7. Hasil Mixer Sinus dengan Sampling 5 o Prosentase keberhasilan pengujian digital mixer pada sampling 5 o 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. 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. Gamba 5
Out Mixer Sin 7 segment-1 Sin PB1 = 0 CORDIC LED switch Cos PB1 = 1 7 segment-2 Out Mixer Cos Gambar 5.1. Blok Implementasi dan Testing Perancangan Tabel 5.1. Pengujian Blok Implementasi Dan Testing 2. Waktu yang dibutuhkan untuk membentuk satu periode gelombang sinusoida berbeda pada tiap sampling, yaitu untuk sampling 30 o diperlukan 21.6µs, sampling 10 o diperlukan 64.8µs, dan pada 5 o 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. 3. 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. 4. 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. 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. 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. 7. DAFTAR PUSTAKA 1. Andraka, Ray, A survey of CORDIC algorithms for FPGA based computers, 1998. 2. 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. 3. 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. 4. 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. 5. T. Lang, E. Antelo, "CORDIC Vectoring with Arbitrary Target Value," IEEE Trans. Computers, vol. 47, no. 7, pp. 736-749, July 1998. 6. B. Gisuthan, T. Srikanthan, "Pipelining flat CORDIC based trigonometric function generators," Microelectronic Journal 33, pp. 77-89, 2002. 7. Kia Bazargan, CORDIC Algorithms, University of Minnesota, 2006. 8. Ken Gentile, Fundamental of Digital Quadrature Modulation, RF Mixed Signal Journal, 2003. 6