implementasi algoritma cordic - Digilib ITS

advertisement
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
Download