KOCAELİ ÜNİVERSİTESİ * FEN BİLİMLERİ ENSTİTÜSÜ
FPGA TABANLI OFDM MODEM GERÇEKLENMESİ
swdasdasdasdasdasdasdasdasd
DOKTORA TEZİ
Y. Müh. Suhap ŞAHİN
Anabilim Dalı: Elektronik ve Haberleşme Mühendisliği
Danışman: Doç. Dr. Adnan KAVAK
i
ÖNSÖZ VE TEŞEKKÜR
Günümüzde Internet kullanıcıları sınırlı sayıda Internet erişimlerinden(DSL, Kablonet, Dial-up) birini kullanmak zorundadırlar. Mevcut kablolu alt yapıyı kullanmayan Wimax (IEEE 802.16) standardı, getirdiği bir çok avantajdan dolayı son kullanıcıya hizmet verebilecek bir teknolojidir. Kanal kodlama, modülasyon ve anten çoğullama teknikleri kullanarak fiziksel katmanda birçok seçenek sunan Wimax standardı için gerekli olan temel bant sinyal işleme karmaşıklığı da oldukça yüksektir. Wimax standardı için FPGA kullanılarak gerçeklenen yazılım tabanlı OFDM modem sayesinde Wimax temel bant baz istasyonundan, hız ve esneklik bakımından tatmin edici sonuç almak mümkün olabilecektir. Bu tez çalışmasındaki amaç, Texas firmasının bazı DSP'lerinde kullandığı IQ-Math sabit noktalı sayı formatını FPGA üzerinde gerçeklemek, ayrıca IQ-Math kütüphanesi kullanılarak FPGA üzerinde gerçeklenen yazılım tabanlı OFDM modem sayesinde Wimax temel bant baz istasyondan maksimum verimi alabilmektir.
Tez çalışması süresince her türlü bilgi birikimini benimle paylaşan, çalışmanın tamamlanmasında rehberlik eden danışmanım sayın Doç. Dr. Adnan KAVAK‟a (Kocaeli Üniversitesi), tez izleme jüri üyesi olan sayın Prof. Dr. Hasan DİNÇER‟e (Kocaeli Üniversitesi) ve sayın Yrd.Doç. Dr. Ahmet Turan ÖZCERİT‟e (Sakarya Üniversitesi) ve Doç. Dr. Hacı Ali MANTAR‟a yardım ve destekleri için teşekkürlerimi sunarım. Çalışmalarım sırasında destekleri ile beni onurlandıran tüm dostlarıma ve arkadaşlarıma da yardımlarından dolayı teşekkür ederim. Çalışmalarım sırasında desteklerini eksik etmeyen Yrd. Doç Dr. Ali TANGEL ve Mehmet Ali ÇAVUŞLU’ya yardımlarından dolayı teşekkürü bir borç bilirim.
Beni büyüten çok değerli babam ve anneme, sürekli yanımda olan eşim Kübra‟ya teşekkürlerimi, sevgili oğlum Ahmet Yasin‟e sevgilerimi sunarım.
ii İÇİNDEKİLER ÖNSÖZ VE TEŞEKKÜR ... i İÇİNDEKİLER ... ii ŞEKİLLER DİZİNİ ... iv TABLOLAR DİZİNİ ... vii SİMGELER VE KISALTMALAR ... ix ÖZET ... x İNGİLİZCE ÖZET ... xi 1.GİRİŞ ... 1 1.1.Problemin Tanımlanması ... 2
1.2.İlgili Çalışmaların Özeti ... 3
1.3.Tez Çalışmasının Amacı ... 7
1.4.Çalışmanın Özgün Katkıları ... 8
1.5.Tezin Organizasyonu ... 10
2.İKİLİK SAYI SİSTEMLERİNİN FPGA ÜZERİNDE GERÇEKLENMESİ ... 12
2.1.Sayı Sistemleri ... 14
2.1.1. İkilik sayı sistemleri ... 14
2.1.2. Sabit noktalı sayı (fixed number) sayı biçimi ... 17
2.1.2.1. Tam sayı biçimi ... 17
2.1.2.2. Kesirli sayı biçimi ... 19
2.1.2.3. IQ-Math sayı biçimi ... 20
2.1.2.4. IEEE-754 kayan noktalı sayı biçimi ... 25
2.1.3. IEEE-754 Kayan noktalı ve IQ-Math sabit noktalı sayı formatlarının karşılaştırılması ... 28
2.2.IQ-Math Kütüphanesinin FPGA Üzerinde Gerçekleştirimi ... 29
2.2.1. Toplama ve çıkarma ... 29
2.2.2. Çarpma ... 37
2.3.IEEE-754 Kayan Noktalı Sayı Kütüphanesinin FPGA Üzerinde Gerçekleştirimi ... 45
2.3.1. Toplama ve Çıkarma ... 45
2.3.2. Çarpma ... 53
2.4.Xilinx LogiCORE Floting Point Operator v3.0 ... 60
2.4.1. Toplama Çıkarma ... 63
2.4.2. Çarpma ... 68
3.WIMAX TEMEL BANT FİZİKSEL KATMANIN FPGA ÜZERİNDE GERÇEKLENMESİ ... 74
3.1.WIMAX (Worldwide Interoperability for Microwave Access) (802.16) ... 76
3.2.Wimax Fiziksel Katman ... 78
3.3.Dik Frekans Bölümlemeli Çoğullama ( OFDM ) ... 78
3.3.1. 16-QAM (Karesel Genlik Modülasyonu) FPGA üzerinde gerçekleştirimi ... 80
3.3.2. Hızlı Fourier Dönüşümü ... 96
3.3.3. Dairesel Ön Ek ... 104
iii
3.4.1. OFDM giriş hafıza mimarisi ... 108
3.4.2. FFT modülü 1. adım mimarisi ... 111
3.4.3. FFT modülü 2. adım mimarisi ... 113
3.4.4. FFT modülü 3. adım mimarisi ... 115
3.4.5. Sonuçların değerlendirilmesi ... 117
4.SONUÇLAR VE ÖNERİLER ... 129
5.KAYNAKLAR ... 135
iv
ŞEKİLLER DİZİNİ
Şekil 2.1: Toplama işleminin hiyerarşik yapısı ... 14
Şekil 2.2: 32 bit I8Q24 sabit noktalı sayı formatı ... 21
Şekil 2.3: I4Q6 sayı formatının I2Q3 sayı formatına çevrilmesi ... 24
Şekil 2.4: IEEE 754 Tek duyarlıklı kayan noktalı sayı formatı ... 26
Şekil 2.5: Toplama fonksiyonuna ait kod akış diyagramı ... 30
Şekil 2.6: Toplama algortimasının Modelsim çıktısı ... 31
Şekil 2.7: I8Q24 sayı formatı ile gerçeklenen toplama donanımı ... 33
Şekil 2.8: I4Q12 sayı formatı ile gerçeklenen toplama donanımı ... 34
Şekil 2.9: I4Q16 sayı formatı ile gerçeklenen toplama donanımına ait zamanlama sonuçları ... 35
Şekil 2.10: I8Q24 sayı formatı ile gerçeklenen toplama donanımına ait zamanlama sonuçları ... 36
Şekil 2.11: Çarpma fonksiyonuna ait kod akış diyagramı ... 38
Şekil 2.12: IQ-Math Çarpma algortimasının Modelsim tarafından test edilmesi ... 39
Şekil 2.13: I8Q24 sayı formatı ile gerçeklenen çarpma donanımı ... 41
Şekil 2.14: I4Q12 sayı formatı ile gerçeklenen çarpma donanımı ... 42
Şekil 2.15: I4Q16 sayı formatı ile gerçeklenen çarpma donanımına ait zamanlama sonuçları ... 43
Şekil 2.16: I8Q24 sayı formatı ile gerçeklenen çarpma donanımına ait zamanlama sonuçları ... 44
Şekil 2.17: IEEE-754 toplama fonksiyonuna ait kod akış diyagramı ... 48
Şekil 2.18: IEEE-754 toplama algortimasının Modelsim tarafından test edilmesi .... 49
Şekil 2.19: IEEE-754 sayı formatı ile gerçeklenen toplama donanımına ait ekran görüntüsü ... 51
Şekil 2.20: Single point sayı formatı ile gerçeklenen toplama devresinin zamanlama sonuçlarına ait ekran görüntüsü ... 52
Şekil 2.21: IEEE-754 çarpma fonksiyonuna ait kod akış diyagramı ... 55
Şekil 2.22: IEEE-754 çarpma algortimasının Modelsim tarafından test edilmesi ... 56
Şekil 2.23: IEEE-754 sayı formatı ile gerçeklenen çarpma donanımına ait ekran görüntüsü ... 58
Şekil 2.24: IEEE-754 sayı formatı ile gerçeklenen çarpma devresinin zamanlama sonuçlarına ait ekran görüntüsü ... 59
Şekil 2.25: Xilinx LogiCORE‟a ait ekran görüntüsü(Xilinx Corporation 2010) ... 61
Şekil 2.26: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi blok diyagramı (Xilinx Corporation 2010) ... 62
Şekil 2.27: Xilinx LogiCORE kullanarak toplama modülünün oluşturulmasına ait ekran görüntüsü (Xilinx Corporation 2010) ... 63
Şekil 2.28: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen toplama algortimasının Modelsim tarafından test edilmesi ... 64
Şekil 2.29: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen toplama donanımına ait ekran görüntüsü ... 66
v
Şekil 2.30: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak
gerçeklenen toplama devresinin zamanlama sonuçlarına ait ekran görüntüsü .. 67
Şekil 2.31: Xilinx LogiCORE kullanarak çarpma modülünün oluşturulmasına ait ekran görüntüsü (Xilinx Corporation (2010) ... 68
Şekil 2.32: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen çarpma algortimasının Modelsim tarafından test edilmesi ... 69
Şekil 2.33: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen çarpma donanımına ait ekran görüntüsü ... 71
Şekil 2.34: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen çarpma devresinin zamanlama sonuçlarına ait ekran görüntüsü ... 72
Şekil 3.1: OFDM Sinyal İşleme Blokları ... 74
Şekil 3.2: OFDM ve FDM taşıyıcıları ... 79
Şekil 3.3: 16 QAM modülasyonu takım yıldız düzlemi ... 80
Şekil 3.4: Giriş verileri ... 82
Şekil 3.5: 16 QAM modülasyonun ölçeklenmiş takım yıldız düzlemi ... 82
Şekil 3.6: QAM kodlarının saklandığı qam_tbl_rom modülü ... 84
Şekil 3.7: QAM takımyıldızı tablosu ve düzlemi... 85
Şekil 3.8: i4q12 QAM kodlarının saklandığı ram yapısına ait ModelSim benzetimine ait ekran görüntüsü ... 87
Şekil 3.9: IEEE-754 QAM kodlarının saklandığı ram yapısına ait ModelSim benzetimine ait ekran görüntüsü ... 89
Şekil 3.10: QAM kodlarının saklandığı ram yapısının ISE projesine ait ekran görüntüsü ... 90
Şekil 3.11: i4q12 sayı formatı ile gerçeklenen qam_ram donanımına ait ekran görüntüsü ... 92
Şekil 3.12: i8q24 sayı formatı ile gerçeklenen qam_ram donanımına ait ekran görüntüsü ... 93
Şekil 3.13: i4q12 sayı formatı ile gerçeklenen qam_ram devresinin zamanlama sonuçlarına ait ekran görüntüsü ... 94
Şekil 3.14: i8q24 ve IEEE-754 sayı formatları ile gerçeklenen qam_ram devresinin zamanlama sonuçlarına ait ekran görüntüsü ... 95
Şekil 3.15: Faz faktörü katsayıları ... 97
Şekil 3.16: Temel Kelebek Gösterimi ... 99
Şekil 3.17: 8 Noktalı DFT işlemi için 4 Noktalı DFT işlemi ve ... 100
Şekil 3.18: 8 Noktalı DFT işlemi için 2 Noktalı DFT işlemi ve ... 101
Şekil 3.19: Noktalı DFT işlemi için 4 Noktalı DFT işlemi ve ... 102
Şekil 3.20: Çokluyol Kablosuz Haberleşmede çoklu yollar ... 104
Şekil 3.21: Çokluyol(Multipath)‟un alınan sinyale etkisi ... 104
Şekil 3.22: Dairesel ön ek eklenmesi ... 105
Şekil 3.23: FPGA üzerinde gereçeklenen FFT/IFFT varlığına ait işlem ve hafıza modüllerinin gösterimi ... 107
Şekil 3.24: “qam_grs_rom”, “qam_tbl_rom” ve “fft_grs_ram” modülleri ... 109
Şekil 3.25: FFT modülüne girecek ilk 64 veriyi saklayan modül ... 111
Şekil 3.26: FFT modül 1. Adım mimarisi ... 112
Şekil 3.27: FFT modül 2. Adım mimarisi ... 114
Şekil 3.28: FFT modül 3. Adım mimarisi ... 116
Şekil 3.29: i4q12 OFDM mimarisine ait ModelSim benzetimine ait ekran görüntüsü ... 117
Şekil 3.30: i4q12 OFDM mimarisine ait ModelSim benzetimi ve Matlab çıktılarının karşılaştırılması ... 118
vi
Şekil 3.31: i8q24 OFDM mimarisine ait ModelSim benzetimine ait ekran görüntüsü ... 119 Şekil 3.32: i8q24 OFDM mimarisine ait ModelSim benzetimi ve Matlab çıktılarının
karşılaştırılması ... 120 Şekil 3.33: IEEE-754 OFDM mimarisine ait ModelSim benzetimine ait ekran
görüntüsü ... 121 Şekil 3.34: Kayan noktalı sayı formatında OFDM mimarisine ait ModelSim
benzetimi ve Matlab çıktılarının karşılaştırılması ... 122 Şekil 3.35: i4q12 sayı formatı ile gerçeklenen OFDM donanımına ait ekran
görüntüsü ... 124 Şekil 3.36: i8q24 sayı formatı ile gerçeklenen OFDM donanımına ait ekran
görüntüsü ... 125 Şekil 3.37: i4q12 sayı formatı ile gerçeklenen ofdm devresinin zamanlama
sonuçlarına ait ekran görüntüsü ... 126 Şekil 3.38: i8q24 sayı formatı ile gerçeklenen ofdm devresinin zamanlama
sonuçlarına ait ekran görüntüsü ... 127
vii
TABLOLAR DİZİNİ
Tablo 1.1: 4DSP LLC IP-Core IFFT ve FFT modülleri için FPGA kaynak kullanımı
(4DSP LLC, 2010) ... 4
Tablo 1.2: Radix-24 SDF Pipelined IFFT ve FFT için FPGA kaynak kullanımı (Santhi, M. ve diğ. 2008) ... 5
Tablo 1.3: IEEE 802.11a OFDM modem için FPGA kaynak kullanımı (Manavi ve Shayan, 2004) ... 5
Tablo 1.4: IEEE 802.11a Temel bant işelmeci prototipi için FPGA kaynak kullanımı (Dejan ve diğ. 2004) ... 6
Tablo 1.5: IEEE 802.11a Tememl bant OFDM Modülatör için FPGA kaynak kullanımı (Joaquin ve Rene, 2005) ... 6
Tablo 1.6: 256 noktalı Radix-24 SDF FFT mimarisi için FPGA kaynak kullanımı (Chih-Peng, F. ve diğ. 2006) ... 6
Tablo 1.7: WLAN OFDM mimarisi için FPGA kaynak kullanımı (Altera Corporation, 2004) ... 7
Tablo 2.1: 17 Sayısının sabit noktalı ikilik tabana çevrimi ... 18
Tablo 2.2: 0.1875 Sayısının ondalık kısmının 32 bit sabit noktalı ikilik tabana çevrimi ... 20
Tablo 2.3: I8Q24-Math sayı formatında toplama ve çıkarma işlemi ... 22
Tablo 2.4: I2Q3-Math sayı formatında pozitif sayılarla yapılan çarpma işlemi ... 23
Tablo 2.5: I2Q3-Math sayı formatında negatif sayılarla yapılan çarpma işlemi ... 23
Tablo 2.6: Kelime uzunluklarına göre kayan noktalı sayı formatı... 25
Tablo 2.7: IQ-Math toplama fonksiyonu ... 29
Tablo 2.8: I8Q24-Math sayı formatında toplama ve çıkarma işlemi ... 31
Tablo 2.9: 16 bit ve 32 bit IQ-Math sayı formatlarına ait toplama algoritmalarının Virtex-5 FPGA üzerinde kullandığı donanım kayanakları ... 32
Tablo 2.10: IQ-Math çarpma fonksiyonu... 37
Tablo 2.11: I8Q24-Math sayı formatında çarpma işlemi ... 39
Tablo 2.12: 16 bit ve 32 bit IQ-Math sayı formatlarına ait çarpma algoritmalarının Virtex-5 FPGA üzerinde kullandığı donanım kayanakları ... 40
Tablo 2.13: IEEE-754 toplama fonksiyonu ... 46
Tablo 2.14: IEEE-754 sayı formatında toplama ve çıkarma işlemi ... 49
Tablo 2.15: IEEE-754 half(16 bit) ve single(32 bit) sayı formatları ile gerçeklenen toplama algoritmasının Virtex-5 FPGA üzerinde kullandığı donanım kaynakları ... 50
Tablo 2.16: IEEE-754 çarpma fonksiyonu... 53
Tablo 2.17 IEEE-754 sayı formatında çarpma işlemi ... 56
Tablo 2.18: IEEE-754 half(16 bit) ve single(32 bit) sayı formatları ile gerçeklenen çarpma algoritmasının Virtex-5 FPGA üzerinde kullandığı donanım kaynakları ... 57
Tablo 2.19: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi blok diyagramına ait giriş çıkışlar (Xilinx Corporation 2010) ... 62
viii
Tablo 2.21: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen toplama algortimasının Virtex-5 FPGA üzerinde kullandığı
donanım kaynakları ... 65 Tablo 2.22: IEEE-754 sayı formatında çarpma işlemi ... 69 Tablo 2.23: Xilinx LogiCORE Floating-Point Operator v3.0 kütüphanesi kullanılarak gerçeklenen çarpma algortimasının Virtex-5 FPGA üzerinde kullandığı donanım kaynakları ... 70 Tablo 3.1: 802.16 standardına ait temel özellikler (Andrews ve dig. 2007) ... 78 Tablo 3.2: Gray Kod Tablosu... 81 Tablo 3.3: QAM Modülünün Virtex-5 FPGA üzerinde kullandığı donanım
kaynakları ... 91 Tablo 3.4: OFDM Modülünün Virtex-5 FPGA üzerinde kullandığı donanım
kaynakları ... 123 Tablo 4.1: IQ-Math/IEEE754 sayı formatı ve Xilinx IP-Core kütüphanesi kullanan
devrelerin yayılım gecikmeleri ... 131 Tablo 4.2: IQ-Math/IEEE754 sayı formatı ve Xilinx IP-Core kütüphanesi kullanan
devrelerin Xilinx Virtex®-5 XC5VLX110T FPGA üzerindeki donanım kaynağı kullanma oranları ... 132 Tablo 4.3: IQ-Math/IEEE754 sayı formatı ve Xilinx IP-Core kütüphanesi kullanan
ix
SİMGELER VE KISALTMALAR
Simgeler
N : İkilik tabandaki sayı
S : İkilik tabandaki sayıya ait basamak değeri w : İkilik tabandaki sayıya ait basamak ağırlığı WL : İkilik tabandaki sayının kelime uzunluğu WNk : Faz faktörü
xcp : dairesel ön eke eklenmiş OFDM sinyali
Kısaltmalar
ASIC : Application Specific Integrated Circuit (Uygulamaya Özel Bütünleşik dDevre)
CP : Cyclic Prefix (Dairesel ön ek)
DSP : Digital Signal Processor (Sayısal İşaret İşlemcisi) FFT : Fast Fourier Transform (Hızlı Fourier Dönüşümü)
FPGA : Field Programmable Gate Array (Alan Programlamalı Kapı Dizileri) GSM : Global System for Mobile Communications (Mobil İletişim için Küresel
dSistem)
HDL : Hardware Description Language (Donanım Tanımlama Dili) HDS : Hardware Design System (Donanım Tasarım Sistemi)
IFFT : Inverse Fast Fourier Transform (Ters Hızlı Fourier Dönüşümü) IP-CORE : Intellectual Property CORE (Zeki Varlık Çekirdeği)
ISE : Integrated Software Environment (Tümleşik Yazılım Ortamı) ISI : Inter Symbol Interference (İç Sembol Karışımı)
OFDM : Orthogonal Frequency Division Multiplication (Dik Frekans Bölümlemeli Çoğullama)
RAM : Random Access Memory (Rastgele Erişimli Bellek) SDF : Single Delay Feedback (Tekli Gecikmeli Geribesleme)
UMTS : Universal Mobile Technology System (Evrensel Gezici Teknoloji Sistemi)
YTBİ : Yazılım Temelli Baz İstasyonu
VHDL : Very-high-speed integrated circuit Hardware Description Language (Çok hızlı tümleşik Devre Donanım Tanımlama Dili)
QPSK : Quadrature Phase Shift Keying (Karesel Faz Kaydırmalı Anahtarlama) QAM : Quadrature Amplitude Modulation (Karesel Genlik Modülasyonu)
WIMAX : Worldwide Interoperability for Microwave Access (Mikrodalga ssssss ssErişimim için Evrensel Birlikte Çalışabilirlik)
x
FPGA TABANLI OFDM MODEM GERÇEKLENMESİ Suhap ŞAHİN
Anahtar Kelimeler: Kablosuz sistemler, Wimax, OFDM, FFT, IFFT, CORDIC,
FPGA, VHDL, DSP
Özet: Geniş bant kablosuz haberleşme için geliştirilmiş olan Wimax (IEEE 802.16)
standardı, getirdiği bir çok avantajdan dolayı önümüzdeki yıllarda kullanım alanımıza girmesi beklenen yeni nesil teknolojidir. Wimax , fiziksel katmanda iletim tekniği olarak Dikgen Frekans Bölmeli Çoğullama (OFDM) tekniğine dayanan bir teknolojidir. Kablosuz operatörler açısından cazip olan mümkün olduğunca aynı altyapıyı kullanarak farklı servisleri -GSM (2G), 3G ve Wimax - sunabilmesi olacaktır ki bu da yazılım tabanlı baz istasyonları sayesinde daha kolay hale gelecektir. Wimax fiziksel katmandaki işlem yükünün istenilen performansta ve esneklikte yerine getirilebilmesi için, OFDM temel bant işaret işlemlerinin geleneksel işlemciler üzerinde veya ASIC modem olarak sabit bir yapıda gerçeklenmesi yerine FPGA veya DSP gibi farklı bir donanım ile esnek yapıda gerçekleştirilmesi gerekmektedir.
Bu tez çalışmasında, bazı DSP işlemcilerinde uygulanan IQ-Math sabit noktalı sayı formatının FPGA üzerinde OFDM bloklarının gerçeklenmesi için kullanılması önerilmektedir. Bu amaçla, Wimax fiziksel katmanını oluşturan OFDM işaret işleme bloklarının, IQ-Math sabit noktalı ve IEEE-754 kayan noktalı sayı formatları kullanılarak FPGA üzerinde VHDL donanım tanımlama dili ile gerçeklenmiştir. . IEEE-754, IQ-Math, Xilinx IP-Core hazır blokları kullanılarak gerçeklenen üç ayrı modeme ait tasarım, FPGA üzerinde kapladığı alan, çalışma hızı ve kullanılan sayı formatının hassasiyeti baz alınarak karşılaştırılmıştır. IQ-Math gerçeklenmesi sayı hassasiyeti açısından kayan noktalı sayı başarımına yaklaşırken, hız ve donanım kaynaklarının kullanımı açısından sabit noktalı sayı formatının başarımını sağlamaktadır.
xi
FPGA BASED OFDM MODEM IMPLEMENTATION
Suhap ŞAHİN
Keywords: Wireless systems, Wimax, OFDM, FFT, IFFT, CORDIC, FPGA,
VHDL, DSP
Abstract: Wimax standard (IEEE 802.16) developed for wideband wireless
communications is expected to be used as a new technology in recent future due to its many advantages. Wimax technology is based on Orthogonal Frequency Division Multiplexing (OFDM) as a physical layer transmission technique. It is preferable for wireless operators to use the same infrastructure as possible for different services such as GSM, 3G and Wimax. This becomes possible with the development of software defined base stations. To obtain desired performance and flexibility in signal processing at baseband, OFDM baseband processing needs to be implemented on programmable processors instead of traditional processors and ASIC modem.
This dissertation proposes using IQ-Math fixed point number format, which is commmonly used in some DSPs, for FPGA implementation of OFDM signal processing blocks For this purpose, Implementation of OFDM blocks that form Wimax physical layer is realized on Xilinx Virtex-5 FPGA via VHDL hardware description language using proposed IQ-Math format and IEEE-754 floating point format. OFDM modem implementations realized via IQ-Math, IEEE-754, and Xilinx IP Core Library are compared in terms of processing speed (propagation delay), hardware resource utilization, and number sensitivity. IQ-Math implementation of OFDM modem results in similar performance to floating point implementation in terms of number sensitivity, and its performance is nearly the same as the fixed point implementation in terms of propgation delay and resource usage.
1 1. GİRİŞ
Kablosuz haberleşme alanındaki gelişmeler ve bu sistemlere olan talepler her geçen gün artmaktadır. Bu sistemlerdeki temel amaç farklı hizmetleri (ses, veri, video, Internet, interaktif oyunlar vb.) kablosuz ortamda mümkün olduğunca yüksek hızda ve iyi kalitede kullanıcı hizmetine sunmaktır. Halen kullanılan ve UMTS olarak da adlandırılan 3G sistemler, 200-400 kbps hız sağlayabilmekte ve en iyimser durumda ise (bina içi, ideal kanal koşullarında) 2Mbps seviyesine kadar çıkabilmektedir. Ayrıca ofislerde ve kapalı alanlarda kullanılan kablosuz Internet ağı olan Wi-Fi teknolojisine ait etkin noktalar (hot spot) 30-40 metrelik mesafede yaklaşık 10 Mb/s hızında Internet bağlantısı sağlamaktadır.
Günlük hayata yeni giren ve 802.16 standardı olarak da adlandırılan WiMAX ise 50 km2‟lik bir alanda 70 Mb/s hızında Internet bağlantısı öngörmektedir. Şehir merkezlerine kurulan WiMAX vericileri, en fazla 1 km uzağa ve en çok 30 Mbit hızla Interneti ulaştırabilecek kabiliyettedirler.
Mobil operatörler açısından cazip olan mümkün olduğunca aynı altyapıyı kullanarak aynı baz istasyonundan hibrid yapıda GSM (2G), 3G ve WiMAX servislerini sunabilmesidir ki bu istek ancak yazılım temelli (software defined) baz istasyonları sayesinde karşılanabilmektedir.
Kablosuz haberleşme sistemleri gibi veri girişinin olabildiğince hızlı bir şekilde işlenmesi gereken sistemler, ancak ASIC (Application Specific Integrated Circuit) tasarımlar sayesinde arzu edilen hızları yakalanabilmektedir. Ayrıca ASIC tasarımlar ile daha düşük güç harcayan sistemler gerçeklenebilmektedir. Ancak, ASIC üzerinde mevcut yapıya yeni bir tasarım eklemek veya tasarımı yeni baştan yapmak oldukça fazla zaman alan zahmetli ve masraflı bir iştir.
2
FPGA(Field Programmable Gate Array, Alan Programlamalı Kapı Dizileri) üzerinde çalışan tasarımların, ASIC kullanılarak gerçeklenen uygulamalar kadar hızlı çalışmasının ve az güç harcamasının yanında geleneksel işlemciler üzerinde gerçeklenen uygulamalar kadar esnek tasarımları desteklemesi ve ayrıca pazara çıkış süresini en aza indirebilmesi önemli bir avantaj olarak karşımıza çıkmaktadır (Zhu ve Gunther 1999). FPGA üzerinde gerçeklenen uygulamaların diğer önemli avantajlarından biri de paralel çalışabilmeleri sayesinde geleneksel işlemcilere göre başarımlarının oldukça yüksek olmasıdır (Poliac ve diğ. 1993).
WiMAX 802.16 standardı birçok kanal kodlama seçeneği ile birlikte yüksek veri hızlarını (70Mbps üzeri) desteklemektedir. Ayrıca WiMAX sistemi hesaplama yoğunluğunun oldukça yüksek modüller içermesinin yanında birçok kodlamayı desteklemek için hatırı sayılır ölçüde bant genişliği ve hafızaya ihtiyaç duymaktadır. Yüksek veri hızı ve hesaplama yoğunluğu geleneksel işlemcilerin veya DSP (Digital signal processor) mimarisinin karşılayamayacağı bir gerekliliktir. Bu tip yapıların gerçekleştirimi için özel mimariler tercih edilmektedir. Bu özel mimariler, ASIC‟ler veya FPGA‟ler olabilmektedir.
WiMAX baz istasyonlarında mevcut teknolojide temel bant modem için genellikle ASIC bir devre üzerinde gerçeklenmesinin tercih edilmesi durumunda, baz istasyonuna sonradan eklenecek bir özellik (örneğin akıllı anten sistemi v.b.) zaman ve kaynak açısından oldukça maliyetli olacaktır. Diğer alternatif gerçekleştirim ise, ASIC bir devrenin çalışma hızına yakın hızlarda çalışabilecek tekrar programlanabilir yeteneğe sahip FPGA‟leri kullanmaktır.
1.1. Problemin Tanımlanması
Yazılım Tanımlı Baz İstasyonu (YTBİ) FPGA üzerinde gerçeklenmesi sırasında aşağıdaki problemlemlerle karşılaşılır.
YTBİ‟ye ait matematiksel işlemlerin yoğunluğunun çok fazla olması dolayısıyla FPGA üzerinde çalışacak sistemin tasarımının oldukça zor olması.
3
Yazılım Temelli Baz İstasyonun kullandığı matematiksel işlemler için kullanılan sayı duyarlılığına ve çalışma aralığına karar verilmesi.
Gerçekleştirimin FPGA‟lerin sınırlı donanım kaynaklarına sığdırılması
FPGA‟in donanım kaynakları, sistemin hız, sayı duyarlılığı ve çalışma aralığı gereksinimleri göz önüne alınarak gerçeklemenin seri, paralel veya sıralı(pipeline) mimarilerinden hangisinin kullanılacağının belirlenmesi
Bu tez kapsamında, WiMAX temel bant sinyal işlemenin temelini oluşturan OFDM iletim tekniği kayan noktalı ve sabit noktalı sayı formatı kullanılarak FPGA üzerinde iki ayrı tasarım gerçeklenmiştir. Bu iki gerçekleştirim, Xilinx firmasının hazır modülleri kullanılarak oluşturulan gerçekleştirimle, literatürdeki gerçekleştirimlerle ve kendi aralarında ayrı ayrı karşılaştırılmıştır. Yukarıdaki problemler göz önüne alınarak bir çok yönden en iyi başarıma sahip gerçekleştirim mimarisi ortaya çıkarılmıştır.
1.2. İlgili Çalışmaların Özeti
Aşağıda verilen literatür taramasında WiMAX sistemler hakkında (WiMAX temel bant baz istasyonuna ait sinyal işleme algoritmalarının incelenmesi v.b.) yapılan çalışmalar ile bu sistemlerin FPGA üzerinde gerçeklenmeleri için yapılan çalışmalar sunulmuştur.
FPGA IP-Core modülleri geliştiren 4DSP LLC firması FFT( Hızlı Fourier Dönüşümü - Fast Fourier Transform) ve IFFT(Ters Hızlı Fourier Dönüşümü – Inverse Fast Fourier Transform) işlemlerini yapan modüller gerçeklemişlerdir. VHDL (Very high speed integrated circuit Hardware Description Language – Çok hızlı tümleşik devre Donanım Tasarım Dili) dili kullanılarak tasarlanan bu modülleri diğerlerinden ayıran en önemli özellik hem kayan noktalı hem de sabit noktalı sayılarla çalışıyor olabilmesidir.. Ayrıca tasarlanan mimarinin 2m
(8 ≤ m ≤ 20) noktalı FFT ve IFFT işlemlerini yapabilmesi çok büyük bir avantaj olarak karşımıza çıkmaktadır. Xilinx( Virtex-II, Virtex-II Pro, Spartan-3 ve Virtex-4) ve Altera (Stratix, Cyclone-IIve StratixII) FPGA‟leri üzerinde çalışabilen sistemin en büyük dezavantajı ise ikişer adet giriş çıkış verileri, ve ara işlem verilerini, ve bir adet de faz
4
faktörü katsayılarını saklamak için beş adet harici bellek birimi kullanmasıdır. Harici bellek (RAM) kullanımı, devreyi hem FPGA dışındaki donanımlara bağımlı hale getirir hem de mimarinin hızını (200MHz çalışma hızında 256 noktalı IFFT/FFT işlemini 3.68µs‟) önemli ölçüde düşürür (4DSP LLC, 2010).
Tablo 1.1: 4DSP LLC IP-Core IFFT ve FFT modülleri için FPGA kaynak kullanımı (4DSP LLC, 2010)
FPGA Dilim Çarpıcılar Blok RAM Fmax
Virtex-5 XC4VLX50T -3 6620 40 36 240.7 MHz Virtex-4 XC4VLX40 -12 12394 40 36 200.2 MHz Virtex-II Pro XC2VP40 -7 12293 40 36 175.0 MHz
Dick ve diğ.(2003) Xilinx firmasının Matlab Simulink programı içerisinde FPGA‟ler için görsel sistem tasarımı yapmaya yarayan IP-Core modüllerini kullanarak IFFT/FFT modüllerini gerçeklemişlerdir. 16-bit sayı formatını kullanan bu modüller ile 100MHz‟lik çalışma hızında 64 noktalı IFFT/FFT gerçekleştirim 1.92µs‟de yapılmaktadır. Bu tasarım yöntemi, hızlı ve basit geliştirim araçları sunmaktadır fakat geliştirilen sistem Xilinx firmasının IP-Core modüllerine bağımlıdır. Ayrıca tasarımın hızı ve FPGA üzerinde kapladığı alan kriterlerine göre başarımı VHDL ile gerçeklenen sitemlere göre oldukça düşüktür.
Santhi, M. ve diğ. (2008) FFT algortimasını FPGA üzerinde gerçeklemek için donanım kaynak kullanımını en aza indiren sıralı (pipeline) mimariyi kullanmışlardır. Ayrıca kullanılan faz faktörü katsayısının simetrik olmasından faydalanarak hafıza biriminden yer kazanmışlarıdır. Gerçekleştirim için OFDM(Orthogonal Frequency Division Multiplication – Dik Frekans Bölümlemeli Çoğullama) sistemine ait bazı modüller ALTERA firmasına ait Megawizard Plug-in programı tarafından otomatik oluşturulur iken diğer modüller Quartus II-8.0 programı ile VerilogHDL kullanılarak oluşturulmuşlardır. 6 bit 2‟ye evrik sayı formatı kullanılan FFT algortimasını ALTERA Stratix III FPGA üzerinde Tablo 1.2‟deki gösterilen kaynak kullanım oranları ile gerçeklemişlerdir. Bu
5
gerçekleştirimde, Altera firmasının IP-Core modülerine bağımlı kalınmıştır. Ayrıca FFT/IFFT modülleri için kullanılan sayı formatı oldukça düşük çözünürlüktedir.
Tablo 1.2: Radix-24 SDF Pipelined IFFT ve FFT için FPGA kaynak kullanımı (Santhi, M. ve diğ. 2008)
FPGA LUTs DSP blok Saklayıcı sayısı Fmax
ALTERA Stratix III
EP3SL50F484C2 %3 %3 %20 528 MHz
ALTERA Stratix II
EP2s60FI020C4 %16 %2 %20 350 MHz
Manavi ve Shayan (2004) Cadence Signal Processing Worksystem (SPW) programı kullanılarak kayan noktalı sayı formatında tasarlanan OFDM algortimasını yazmışlardır. Bu algoritma sabit noktalı sayı formatına çevrilerek, HDS(Hardware Design System) tarafından VHDL kodları otomatik olarak üretilmiştir. Bu şekilde sistem tasarımı kayan noktalı formatta yapılmıştır. Tasarlanan sistem HDS programı içerisindeki Xilinx IP-Core teknolojisi ile gerçeklenmiştir. 64 noktalı IFFT/FFT işlemini 192 (3.2µs) saat darbesinde yapan tasarımın Virtex-II‟e ait donanım kaynak kullanım oranı Tablo 1.3‟de verilmiştir.
Tablo 1.3: IEEE 802.11a OFDM modem için FPGA kaynak kullanımı (Manavi ve Shayan, 2004) Virtex-II XC2V2000 Dilim (10752) Saklayıcı Sayısı (56) Toplam kapı Verici 1115 10 690048 Alıcı 1150 10 690533
Dejan ve diğ. (2004) System Generator tasarım aracını kullanılarak Sistem Nallatech ExtremeDSP kartı bünyesindeki Xilinx Virtex-2 XC2V2000-4 FPGA kartı üzerinde gerçeklenen 802.11a temel bant mimariyi gerçeklemişlerdir. Bu gerçekleştirime ait kaynak kullanım oranı Tablo 1.4‟de verilmiştir.
6
Tablo 1.4: IEEE 802.11a Temel bant işelmeci prototipi için FPGA kaynak kullanımı (Dejan ve diğ. 2004) Virtex-II XC2V2000 Dilim (10752) Saklayıcı Sayısı (56) Çarpıcı (56) Verici 5439 (50%) 15 (27%) 2 (4%) Alıcı 9553 (89%) 50 (90%) 16 (29%)
Joaquin ve Rene (2005) System Generator tasarım aracı kullanılarak IEEE 802.11a standardı için temel bant OFDM modülatör yapılabileceğini göstermişlerdir (Garcia ve Cumplido, 2005). Radix-4 mimarisindeki Xilinx IP-Core modülü kullanılarak oluşturulan 64 noktalı IFFT modülü 192 saat darbesi sürmüştür. 10 bitlik sayı formatı ile gerçeklenen sistem Virtex II‟i üzerindeki kaynak kullanım oranları Tablo 1.5‟de verilmiştir.
Tablo 1.5: IEEE 802.11a Tememl bant OFDM Modülatör için FPGA kaynak kullanımı (Joaquin ve Rene, 2005) Virtex-II XC2V3000-4FG676 Dilim Dilim Flip Flop 4 girişli LUT Bock RAM 1678 (11%) 2353(8%) 2814(9%) 12 (12%)
Chih-Peng, F. ve diğ. (2006) FFT algortimasını Tekli Gecikmeli Geribesleme (SDF – Single Delay Feedback) algoritması ile FPGA üzerinde gerçekleyerek daha düşük oranda donanım kaynağı kullanmışlardır. Radix-24
mimarisi 256 noktalı SDF mimarisindeki FFT algortimasının donanım kaynağı kullanma oranı Tablo 1.6‟da verilmiştir.
Tablo 1.6: 256 noktalı Radix-24 SDF FFT mimarisi için FPGA kaynak kullanımı (Chih-Peng, F. ve diğ. 2006)
Virtex-II 1500 FG676 -4
Kullanılan Kapı sayısı 176127
Altera Corporation (2004) Altera firması tarafından Stratix II‟i kullanılarak oluşturulan mimarinin kaynak kullanım oranları Tablo 1.7‟de verilmiştir. Bu mimarideki tüm modüller ALTERA firmasına ait Megawizard Plug-in programı tarafından otomatik oluşturulmuştur.
7
Tablo 1.7: WLAN OFDM mimarisi için FPGA kaynak kullanımı (Altera Corporation, 2004)
Stratix-II EP2S15F484C3 Lojik Eleman (LEs) Çarpıcı 18x18 Maximum Frekans (MHz) Saat Darbesi Saayısı 4360 9 335.23 256
1.3. Tez Çalışmasının Amacı
WiMAX sisteminin temel bant sinyal işleme bloklarının, yazılım esnekliğine ve donanım performansına sahip FPGA‟ler üzerinde gerçeklenmesine yönelik mevcut çalışmalara bakıldığında iki ana yöntem görülmektedir. Bu hedefe ulaşmak için iki yöntem mevcuttur. İlk yöntem Xilinx veya Altera gibi sektörde lider firmaların geliştirdiği hazır modülleri kullanarak tasarım yapmaktır. Bu yöntemde tasarım zamanı çok kısa ve gerçekleştirim oldukça zahmetsiz olacaktır. Fakat kullanılan blokların sahibi olan firmaya bağımlı kalınacaktır. Ayrıca bu yöntemin başka bir dezavantajı ise kullanılan blokların uygulamaya özel tasarlanmamış olmasından doğan performans kaybıdır.
İkinci yöntem ise tasarlanacak sistemin (VHDL veya Verilog gibi) donanım tanımlama dilli yardımıyla veya şematik tasarım kullanarak sistemin gerçeklenmesidir. Donanım tanımlama dilleri tasarım sürecini kısaltan ve dökümantasyona son derce uyumlu tasarım gerçeklemektedir. Bu sebeple seçilen bir donanım tanımlama dili ile gerçekleme yapılması hedeflenmiştir. Bu yöntemde, tasarım için gerekli bütün algoritmalar bir donanım dili kullanılarak gerçeklenmektedir. Bu tip tasarımlarda oluşturulan bütün bloklar uygulamaya özel olduğu için FPGA üzerindeki donanım kaynaklarını az kullanmalarının yanında oldukça hızlı çalışabilmektedirler. Bu tasarımın en büyük dezavantajı ise geliştirme aşamasının çok zor olması ve oldukça uzun sürmesidir. Örneğin VHDL dili kullanılarak FFT bloğunu gerçeklemek için algoritma içerisinde geçen karekök işlemini gerçekleyen CORDIC algoritmasını gerçeklemek gerekmektedir. Takdir edilir ki CORDIC algoritması gibi karışık sistemleri sadece donanım tanımlama dili kullanarak FPGA üzerinde gerçeklemek çok uzun zaman ve emek isteyen bir iştir.
8
Bu tez çalışmasının amacı, Texas firmasının DSP‟lerinde kullanılan IQ-Math sabit noktalı sayı formatı temel alınarak OFDM sinyal işleme bloklarının FPGA üzerinde gerçeklenebildiğini göstermektir. Bu amaçla önerilen yöntem, literatürde mevcut bulunan sabit noktalı sayı formatı ve IEEE-754 kayan noktalı sayı formatı kullanılarak yapılan gerçeklemeler ile karşılaştırılmaktadır. IQ-Math sayı formatının performansı; çalışma hızı, kullanılan sayı formatının hassasiyeti ve çalışma aralığı kriterleri kullanılarak analiz edilmiştir.
Bu amaç doğrultusunda Wimax temel bant modem mimarisinde kullanılan matematiksel işlemlerin FPGA üzerinde gerçeklenebilmesi için VHDL dili kullanılarak iki sayı formatına(IEEE-754 kayan noktalı ve IQ-Math sabit noktalı) ait toplama, çıkarma, çarpma (Sahin ve diğ. 2007) ve üs alma işlemlerini yapan modüller gerçeklenmiştir (Cavuslu ve diğ. 2006).
Kayan noktalı ve IQ-Math sayı formatlarına ait matematiksel modüller kullanılarak Wimax temel bant fiziksel katman mimarisinde bulunan QAM (Quadrature Amplitude Modulation – Karesel Genlik Modülasyonu), FFT (Kaptan ve diğ. 2007), dairesel ön ek alt modülleri gerçeklenmiştir. Gerçeklenen bu modüllere ve IP-Core(QAM, FFT) modüllerine ait hız ve donanım kaynağı kullanım miktarı ölçütleri karşılaştırılmıştır. Ayrıca gerçekleştirimde kullanılan sayı formatlarının QAM, FFT gibi modüllerin ihtiyaç duyduğu sayı hassasiyeti ve çalışma aralığını ne kadar karşıladığına dair karşılaştırmalar da yapılmıştır. Son olarak iki sayı formatı modülleri ve IP-Core modülleri ile gerçeklenen WiMAX Fiziksel Katman temel bant modem mimarileri karşılaştırılmıştır.
1.4. Çalışmanın Özgün Katkıları
FPGA‟ler kullanılarak gerçeklenen temel bant Wimax modem mimarilerinde kullanılan çarpma, bölme, toplama, çıkarma ve karekök gibi matematiksel işlemleri gerçekleyecek açık kaynak kodlu modüller mevcut değildir. Literatur çalışmalarında bu modüller en yüksek 16 bit sabit noktalı sayı formatı ile veya ticari firmalar tarafından üretilen hazır modüller kullanılarak gerçeklenmiştir. Halbuki donanım tanımlama dili kullanılarak kayan noktalı sayı formatı veya 32 bit sabit noktalı sayı
9
formatında yazılan modüler hem ticari modüllere olan bağımılılığı ortadan kaldıracak hem de sundukları yüksek çözünürlülük sayesinde 512 veya daha yüksek noktalı FFT modüller için çok daha iyi sonuçlar vereceklerdir.
Bu tez kapsamında ilgili modüller VHDL donanım tanımlama dili kullanılarak IEEE-754 kayan noktalı sayı formatı ile veya I8Q24 sabit noktalı sayı formatı ile yazılmış ve hedeflenen OFDM modem mimarisi gerçeklenmiştir. FPGA üzerindeki OFDM modem mimarisine ait en küçük modül içerisindeki matematiksel işlemlerin (çarpma, bölme v.s.) gerçekleneceği veri yapısı, WiMAX temel bant modem tarafından kullanılacak veri yapısıdır. Dolayısıyla tez kapsamında literatürdeki örneklerine göre ticari bağımlılığı olmayan ve yüksek sayı hassasiyeti sayesinde 512 noktalı veya daha yüksek hassasiyetli FFT modüller için çok daha iyi sonuçlar veren temel bant Wimax modemler geçeklenmiştir.
Bu doğrultuda ilk olarak tez kapsamı dışında gerçeklenen kayan noktalı sayı formatına ait toplama, çıkarma, çarpma ve bölme modüllerinde kullanılan algoritmalar üzerinde bazı iyileştirmeler yapılmış ve bu iyileştirmeler sayesinde ortaya çıkan yeni modüllerin Xilinx Floating Point IP-Core modüllerine ve literatürdeki modüllere göre hem daha hızlı çalışması hem de daha az donanım kaynağı tüketmesi sağlanmıştır.
İkinci aşamada, Texas firmasına ait bazı DSP işlemcilerde kullanılan IQ-Math sabit noktalı sayı formatına ait toplama, çıkarma, çarpma ve üs alma işlemlerini yapabilen FPGA tabanlı modüller gerçeklenmiştir.
Üçüncü aşamada, kayan noktalı(IEEE-754) ve IQ-Math sayı formatı kullanılarak gerçeklenen bu modüller ile Xilinx firmasına ait Cordic IP-CORE modülleri (Mintizer 1996) karşılaştırılmıştır. Bu karşılaştırmalar sonucunda, Kayan noktalı sayı formatı ile gerçeklenen matematiksel dört işlem ve üs alma işlemi yapan modüllerin sayı hassasiyeti çok yüksek olmasına karşın IQ-Math sayı formatı ile gerçeklenen kütüphaneye göre daha yavaş çalıştığı ve FPGA üzerinde daha fazla donanım kaynağı tükettiği gözlenmiştir. IP Core modülleri ise diğer iki tip modüle göre hem yavaş çalışmakta hem de çok daha fazla donanım kaynağı tüketmektedir.
10
Son olarak Kayan noktalı ve IQ-Math sayı formatlarına ait matematiksel modüller kullanılarak Wimax temel bant fiziksel katman mimarisinde bulunan QAM, FFT (Kaptan ve diğ. 2007), dairesel ön ek alt modülleri gerçeklenmiştir. Gerçeklenen bu modüllere ve IP-Core(QAM, FFT) modüllerine ait hız, donanım kaynağı tüketim miktarları karşılaştırılmıştır.
1.5. Tezin Organizasyonu
Tez organizasyonu aşağıda özetlenen 4 bölümden oluşmaktadır:
Bölüm 1: Giriş bölümünde Wimax haberleşme sistemi ve yazılım tanımlı radyo gerçekleştirim yöntemlerine genel bakış, tez çalışmasına konu olan problemin tanımı, çalışmanın amacı, literatürde yapılan çalışmalar, bu çalışmanın özgün katkıları ile tez organizasyonu hakkında bilgi sunulmaktadır.
Bölüm 2: İkilik sayı sistemlerinin FPGA üzerinde gerçekleştirim yöntemleri genel olarak anlatılmaktadır. Güncellenmiş IEEE-754 kayan noktalı ve IQ-Math sabit noktalı sayı formatında toplama, çıkarma, çarpma modüllerinin FPGA üzerinde VHDL kullanılarak gerçekleştirim yöntemleri ayrıntılı olarak incelenmektedir. Gerçekleştirilen modüllerin kendi aralarında ve Xilinx firmasına ait IP-Core modülleri ile hız ve donanım kaynağı tüketim performansları karşılaştırılmıştır.
Bölüm 3: Wimax sistemleri genel anlamda açıklanmıştır. Wimax fiziksel katman mimarisi tanıtılmış ve bu mimarinin dayandığı OFDM teknolojisine ait detaylar sunulmuştur. Ayrıca IEEE-754 kayan noktalı, IQ-Math sabit noktalı ve IP-Core kütüphaneleri kullanılarak gerçeklenen üç ayrı Wimax temel bant fiziksel katman mimarisi anlatılmıştır. Gerçeklenen bu mimarilerin avantajları ve dezavantajları karşılaştırmalı olarak analiz edilmiştir.
Sonuçlar ve öneriler bölümünde, yapılan çalışmalardan elde edilen sonuçlar genel hatlarıyla literatürdeki benzer çalışmalarla karşılaştırılarak çalışmanın bilime ve
11
günümüz teknolojisine sağlayabileceği katkıları tartışılmıştır. Ayrıca ileriye dönük yapılabilecek çalışmalar için önerilerde bulunulmuştur.
12
2. İKİLİK SAYI SİSTEMLERİNİN FPGA ÜZERİNDE GERÇEKLENMESİ
Hız, paralel çalışabilme ve sayısal mimariye sahip olma gibi avantajlarından dolayı, bir çok uygulama için FPGA tercih edilmektedir. Özellikle ikilik tabandaki sayı sistemlerinin donanımsal gerçekleştirimi için FPGA kullanımı en uygun çözümlerden biridir. Bütün bu avantajlarının yanında FPGA donanım kaynakları bazı karmaşık sistem tasarımları için yetersiz kalmaktadır.
FPGA‟in avantajları ile kayan noktalı sayıların avantajlarının birleştirilmesi ile ortaya çıkarılacak bir sayısal sistemin oldukça güçlü bir platform olacağı kesindir (Şahin ve diğ. 2007). Fakat kayan noktalı sayı formatı ile düşünülen bir çok uygulama için FPGA‟lerin iç donanım kaynakları yetersiz gelmektedir. Bu durumda FPGA‟lerin donanım kaynakları düşünülerek, kayan noktalı sayılar kadar yetenekli olan farklı sayı formatlarının FPGA üzerinde gerçeklenmesi yollları aranmıştır.
FPGA üzerinde sayısal sistem gerçekleştirim mimarisini üç bağımsız kriter belirlemektedir.
Gerçeklenen sistem için gereken sayı hassasiyeti ve sayı aralığının karşılanması.
Gerçeklenen sistemin FPGA‟in donanım kaynaklarına sığdırılması.
Gerçeklenen sistemin istenilen hızlarda çalıştırılması.
Bu kriterlerin sağlanması ile sistemin hangi sayı biçimi ile FPGA üzerinde gerçekleneceği ortaya çıkacaktır.
Tezde, FPGA üzerinde gerçeklenen toplama, çıkarma, çarpma algoritmaları için iki ayrı sayı biçimi(kayan noktalı sayı biçimi, IQ-Math sayı biçimi ) kullanılmıştır. Ayrıca Xilinx firmasına ait toplama, çıkarma, çarpma algoritmalarını gerçekleyen IPCore mimarisi de bu karşılaştırmada yerini almıştır. Bu algoritmaların FPGA
13
üzerindeki performansları Xilinx firmasına ait ISE ve ModelTech firmasına ait Modelsim programları yardımı ile ayrıntılı olarak analiz edilmiştir.
FPGA üzerinde gerçeklenen bütün aritmetik işlemlere ait modüller VHDL donanım tanımlama dili bünyesindeki alt modül (component) oluşturma metodolojisi ile gerçekleştirilmiştir. Böylece davranışsal (behavioral) model tanımlama yerine yapısal (structural) devre tasarım yöntemi tercih edilmiştir. Örnek bir component tanımlama kodu aşağıdaki gibidir:
-- Component decleration
component toplama
port ( sayi1 : in std_logic_vector(i+q-1 downto 0); sayi2 : in std_logic_vector(i+q-1 downto 0); scikis : out std_logic_vector(i+q-1 downto 0); clk : in std_logic);
end component; ....
....
tp : toplama port map(sayi1,sayi2,scikis,clk);
Bu tez çalışmasındaki mevcut “component” hiyerarşisinde en üst modül “ust” varlığıdır. “ust” varlığı yukarıdaki kod parçacıkları sayesinde altındaki “tp” isimli toplama varlığını çağırabilmektedir.
14
Şekil 2.1: Toplama işleminin hiyerarşik yapısı
Xilinx ISE programı kullanılarak elde edilen hiyerarşik yapı Şekil 2.1‟de gösterilmiştir. Burada “ust” isimli varlığın asıl görevi, altındaki varlığın çalışmasını kontrol etmek ve üst modüllerle doğrudan ilişkisini engelleyerek(varlığı soyutlayarak) daha kullanışlı ve daha güvenilir bir yapı ortaya çıkarmaktır. Bu noktadan hareket ile sanal kayan noktalı sayılar kütüphanesinde bulunan bütün algoritmaların (toplama, çıkarma, çarpma, bölme) ayrı birer “ust” varlığına sahip oldukları görülmektedir.
2.1. Sayı Sistemleri
Sayıların belli bir tabana(10 lu taban, 2lik taban v.s.) göre yapılandırılması için konulmuş kurallar bütününe sayı sistemi denir. Sayılar rakam sıraları ve değerleri ile ifade edilirler. Herbir rakam bulunduğu tabanın kendi sırasına denk düşen üssü ile çarpılarak sayının değerine katkıda bulunur.
2.1.1. İkilik sayı sistemleri
Günlük hayatta sayılar onluk tabanda ifade edilirler. Bu tabanda ise her bir sayı için 0, 1, 2, 3, 4, 5, 6, 7, 8 ve 9 sembolleri kullanılmaktadır. Eğer kullanılan sayı sistemi 0 ve 1 olmak üzere iki tane sembol içeriyor ise iki tabanına göre yapılandırılmış sayı sistemidir. İkilik sayı sistemi, sayısal elektronik sistemlerde kolay uygulanabilir
15
olması nedeniyle günümüz bilgisayarlar sistemlerinin neredeyse tamamında kullanılırlar.
Temel ikilik tabanda her ikilik kelime pozitif tamsayı olarak yorumlanır. İkilik tabanda 32 bit kelime uzunluğuna sahip bir sayı aşağıdaki gibi yazılır.
N=b31b30b29b28b27b26………b5b4b3b2b1b0 (2.1)
İkilik tabandaki N sayısının en soldaki biti (b31) en büyük değerlilikli bit (Most
Significant Bit), en sağdaki biti (b0) ise en düşük değerlilikli bit (Least Significant
Bit) olarak isimlendirilir ve aşağıdaki gibi yazılabilir.
N=b31*231+b30*230+…+b1*21+b0*20 (2.2)
Yukarıdaki denklemde eşitliğin sağındaki ilk ifade olan „b31‟ basam değeri olarak
isimlendirilir. İkinci ifade olan „231‟ ifadedeki 2 sayısı taban değeri, iki tabanının
üssü „31‟ ise basamak ağırlığı olarak ifade edilir. N(Number) ifade edilecek sayıyı, w(weigth) basamak ağırlığını, S(Step) basamak değerinin gösterdiği kabul edilerek (2.2) denklemi genelleştirilir ise (2.3) ifadesini elde edilir.
N= 31w=0Sw2w (2.3) Bununla beraber uygulamalarda sadece pozitif sayılar kullanılmamaktadır. Dolayısıyla ikilik taban kullanılarak gerçeklenecek bir sistemin içerisinde işaretli sayılar iki şekilde kodlanabilir. İlk yöntemde sayıya işaretini gösteren bir bit eklenir. Eklenen bu bit genellikle sayının en değerli bitidir fakat sayının değerine bir etkisi yoktur; yanlızca sayının işaretini göstermek için kullanılır ve işaret biti olarak ile isimlendirilir.
İkinci yöntemde ise sayıya özel bir bit ilave etmek yerine, sayının bulunduğu tabana göre tümleyeni(tersi) alınır. Örneğin 2 tabanına göre 8 bit ile temsil edilen bir sayının tümleyeni (tersi), 2 tabanına göre 8 bit sayı duyarlılığındaki sayıların en büyüğünden sayının çıkarılması ile bulunmaktadır. Aslında bir sayı ile onun tümleyeninin(tamamlayanının) toplanması ile bulunduğumuz tabanda ve kelime
16
uzunluğundaki (Kull, 2003) en büyük sayıya ulaşırız. Tümleyen yöntemi kendi içerisinde iki metoda ayrılır. İlk metod bir sayı hangi tabanda olursa olsun 1‟e tümleyeninin alınması yöntemidir. İkinci yöntem ise sayının bulunduğu tabana göre tümleyeninin alınması yöntemidir.
FPGA üzerinde gerçeklenecek sayı sistemlerinde sayıların ya pozitif ya da negatif olma ihtimali vardır. Eğer sayı pozitifse, işaret biti “0” olarak ele alınır bunun dışındaki tüm kodları kendisine eşittir. Eğer sayı negatifse, işaret biti “1” olarak ele alınır bunun dışındaki tüm kodları kendisine eşittir. İşaretli sayı formatı denklem 2.4‟de gösterilmektedir.
-(10111)2 = (1 (işaret biti) 10111)2(işaretli sayı) = (110111)2(işaretli sayı) (2.4)
Denklem 2.5‟de 1‟e tümleyen mantığı ile gösterilen bir negatif sayının işaret biti “1” olarak yazılır ve sayının bitleri 1‟den çıkarılır (veya 1‟ler 0‟lara; 0‟lar 1‟lere dönüştürülür.)
(1(işaret biti)0111)2(işaretli sayı) = (1(işaret biti)1000) 2(1‟e tümleyen) (2.5)
1‟ ye tümleyen iki sayıya ait çıkarma işminin nasıl yapıldığı denkelem 2.6 ile denklem 2.9‟ arasında açıkca anlatılmıştır.
5-3 = +2 (2.6) (+5)10 = (0(işaret biti)101)2 = (0101)2(1‟e tümleyen) (2.7)
(-3)10 = (1(işaret biti)011)2 = (1100) 2(1‟e tümleyen) (2.8)
(+2)10 = (0(işaret biti)010)2 =1(elde biti) (0001) 2 = (0001) 2 + 1 = (0010)2(1‟e tümleyen) (2.9)
Eğer işlemin sonucunda elde „1‟ varsa sonuç pozitiftir ve işlem sonucu ile elde toplanarak gerçek sonuca ulaşılır. Elde „1‟ olmamış ise sonuç negatifdir ve gerçek sonuç, sonucun terslenmesi ile bulunur.
Denklem 2.10‟da gösterilen bir negatif sayı 2‟ye tümleyen mantığı ile gösterilir iken sayının işaret biti 1 olarak yazılır; sayının bitlerinden en sağdaki en değerliksiz bit
17
2‟den çıkarılır, diğer bitler 1‟den çıkarılır veya önce 1‟e tümleme mantığı alınır sonra en değerliksiz bite 1 eklenir.
(-1010000)2 = (10101111)1‟ + (1)2 = (10110000)2‟ye tümleyen (2.10)
Denklem 2.11a ile denklem 2.11d‟de 2‟ ye tümleyen iki sayıya ait çıkarma işminin nasıl yapıldığı aşağıdaki örnekte açıkca anlatılmıştır.
5-3 = +2 (2.11a) (+5)10 = (0(işaret biti)101)2 = = (0101) 2‟ye tümleyen (2.11b)
(-3)10 = (1(işaret biti)011)2 = (1100)1 = (1101)2‟ye tümleyen (2.11c)
(+2)10 = (0(işaret biti)010)2 = = (0010) 2‟ye tümleyen (2.11d)
Uygulamalarda kullanılan sayıların ikilik tabanda gösterimi aşağıdaki başlıklarda incelenebilir.
Sabit Noktalı Sayı (fixed number) sayılar. Tam sayı
Kesirli sayı IQ-Math
Kayan Noktalı Sayı (floating-point number) sayılar.
2.1.2. Sabit noktalı sayı (fixed number) sayı biçimi
Sabit noktalı sayı biçimi sayesinde sayıların bitleri arasına ikilik nokta koyabilme imkanı sağlanmaktadır (Kim ve Sung, 1994). Bu sayede kullanılacak sayının büyüklüğü ve hassasiyeti kullanıldığı uygulamaya özel olarak belirlenebilir.
2.1.2.1. Tam sayı biçimi
Doğal sayıları sabit noktalı sayı formatı içerisinde göstermek ister isek bu sayı formatını tam kısmı ve kesir kısmı şeklinde iki bağımsız kısma bölmemiz gerekmektedir. İfade edilecek doğal sayının büyüklüğü(en büyük ve en küçük ifade edilebilecek sayı) tam sayı kısmının sahip olduğu kelime uzunluğu (bit sayısı) ile sınırlıdır. Nt sayının tam kısmını, w(weigth) basamak ağırlığını, S(Step) basamak
18
değerini gösterdiği kabul edilerek, N(Number) doğal sayısı ikilik tam sayı biçiminde denklem 2.12‟deki gibi ifade elde edilir.
2.2 denklemi genelleştirir isek denklem 2.12 ve 2.13 ifadelerini elde ediriz.
Nt= 31w=0Sw2w (2.12)
Nt=2* S0+2* S1+2* S2+…2* Sw-1 (2.13) İkilik tabandaki Nt sayısının basamak değerleri bulunmak istenirse sayı denklem
2.14‟deki gibi devamlı ikiye bölünür.
Nt
2 =S0+
2* S1+2* S2+…2* Sw-1
2 (2.14)
Bu bölümler sonucunda kalan değerler S0 ve Sw-1 şeklindeki basamak değerleridir.
Yukarıda anlatılan teoriler ışığında aşağıda 17 doğal sayısının ikilik tabana çevrilmesi Tablo 2.1‟de gösterilmiştir.
Tablo 2.1: 17 Sayısının sabit noktalı ikilik tabana çevrimi
17 / 2 = 8.5 8 / 2 = 4 4 / 2 = 2 2 / 2 = 1 1 / 2 = 0.5 0 / 2 = 0 ... ... ... ... ... ... ... ... ... 0 / 2 = 0 8*2 + 1 4*2 + 0 2*2 + 0 1*2 + 0 1*1 + 1 0*0 + 0 ... ... ... ... ... ... ... ... ... 0*0 + 0 S0 = 1 S1 = 0 S2 = 0 S3 = 0 S4 = 1 S5 = 0 ... ... ... ... ... ... ... ... ... S31 = 0 (17)10 = (00000000000000000000000000010001)2
Sayıların tümünün pozitif tam sayılardan oluştuğu varsayılan bu yöntemde kelime uzunluğu WL= k ( k tane bit) olan ikilik tabandaki bir sayı 0 ile 2k
-1 aralığındaki doğal sayıları temsil edebilmektedir.
19
2.1.2.2. Kesirli sayı biçimi
İkilik tabanda kesirli sayı biçiminde gösterilmek istenen doğal sayının tam kısmı, kesir kısmına dahil olacak şekilde normalleştirilmelidir. Normalleştirilmiş doğal sayının tam kısmında sadece „0‟ sayısı olacaktır. Böylece doğal sayının bütün basamak değerleri kesir kısmında olmaktadır. Normalleşen sayı -1 ile +1 aralığında gösterilir. Dolayısıyla ikilik tabandaki kesirli sayı biçiminde MSB biti sadece işaret bitinin değerini(0 ise sayı pozitif, 1 ise sayı negatif) göstermek için kullanılmaktadır.
Nk sayının kesir kısmını, w(weigth) basamak ağırlığını, S(Step) basamak değerini
gösterdiği kabul ederek N(Number) doğal sayısı ikilik kesirli sayı biçiminde 2.15 denklemindeki gibi ifade elde edilir.
Nk=S0.S-1S-2S-3S-4……… S-28S-29S-30S-31 (2.15)
MSB biti (S0) ve LSB biti (S-31) olan N sayısının bitleri arasında bulunan nokta ikilik
nokta(Binary point) olarak isimlendirilir
N = S0*20+S-1*2-1+…+S-30*2-30+S-31*2-31 (2.16)
Denklem 2.16 ifadesini genelleştirir isek 2.17 ve 2.18 denklemlerini elde ederiz.
Nk= 31k=1S-k2-k (2.17)
Nk=2-1* S-1+2-1* S-2+2-1* S-3+…2-1* Sk (2.18)
Kesirli kısmının bulunması için sayı denklem 2.19‟daki gibi devamlı „2‟ ile çarpılır.
N*2=S-1+ 2-1* S-2+2-1* S-3+…2-1* S-k *2 (2.19)
Bu çarpımlar sonucunda kalan değerler S-1 ve S-k şeklindeki basamak değerleridir.
Yukarıda anlatılan teoriler ışığında aşağıda 0.1875 doğal sayısının ikilik tabana çevrilmesi aşağıdaki Tablo 2.2‟de gösterilmiştir.
20
Tablo 2.2: 0.1875 Sayısının ondalık kısmının 32 bit sabit noktalı ikilik tabana çevrimi
0.1875* 2 = 0.375 0.375 * 2 = 0.75 0.75 * 2 = 1.5 0.5 * 2 = 1 0.0 * 2 = 0 0.0 * 2 = 0 0.0 * 2 = 0 ... ... ... ... ... ... ... ... ... 0.0 * 2 = 0 + 0 0.75 + 0 0.5 + 1 0.0 + 1 + 1 ... ... ... ... ... ... ... ... ... 0.0 + 0 S31 = 0 S30 = 0 S29 = 1 S28 = 1 S27 = 0 S26 = 0 ... ... ... ... ... ... ... ... ... S0 = 0 (0.1875)10 = (0.00110000000000000000000000000000)2
2.1.2.3. IQ-Math sayı biçimi
Eğer bir sayı hem kesir hem de tam kısmından oluşmuş ise ikilik tabanda kullanılacak sabit noktalı sayı biçimi IQ-Math‟dir. Bu tezde Texas Instruments firmasının TMS320C64x+ IQmath kütüphanesinde kullanılan sayı sistemi notasyonu kullanılacaktır. Bu notasyonda sabit noktalı sayıların tam kısmı (integer part - I) ve kesir kısmı (fractional part - Q quotient) ile temsil edilmektedir. Dolayısıyla tam kısmının bit sayısı I ve kesirin bit sayısı Q temsil edilen sayının bit sayısına eşittir. I ve Q toplamı kelime uzunluğu ve uygulama tarafından desteklenen değişken uzunluğuna eşittir.
Kelime uzunluğu (Word Length) 32 bit olan bir sayı (I8Q24) Şekil 2.2‟deki gibi gösterilir ise bu sayının 8 biti tam kısmı, 24 biti ise kesir kısmı için ayrılmıştır. Bu sayının büyüklüğünü I ve hassasiyetini ise Q belirlemektedir. Tasarlanacak sistemin gereksinimlerine göre, istenilen sayının maksimum büyüklüğü ve hassasiyeti göz önünde bulundurularak bit uzunlukları belirlenir.
21
Şekil 2.2: 32 bit I8Q24 sabit noktalı sayı formatı
Eğer kesirli bir doğal sayıyı ikilik tabanda I8Q24 formatında ifade etmek istersek 2.1 denklemi 2.20 denklemine dönüşecektir.
N=b7b6b5…b2b1b0.b-1b-2b-3b-4……… b-21b-22b-23b-24 (2.20)
MSB biti (b7) ve LSB biti (b-24) olan N sayısının bitleri arasında bulunan nokta ikilik
nokta(Binary point) olarak isimlendirilir ve denklem 2.21‟deki gibi gösterilir.
N=b7*27+…+b0*20 . b-1*2-1+…+b-24*2-24 (2.21)
N(Number) IQ-Math biçiminde ifade edilecek sayıyı, Nk sayının kesir kısmını, Nt
sayının tam kısmını, w(weigth) basamak ağırlığını, S(Step) basamak değerini gösterdiği kabul edilerek 2.17 denklemi değiştirilir ise 2.22a ile 2.22g denklemleri elde edilir. N=Nt+Nk, WL=0,…….,w=t+k (2.22a) Nt= 7t=0St2t (2.22b) Nt=2* S0+2* S1+2* S2+…2* St-1 (2.22c) Nk= 24k=1S-k2-k (2.22d) Nk=2-1* S-1+2-1* S-2+2-1* S-3+…2-1* Sk (2.22e) N=Nt+Nk= 7w=-24Sw2w= 7t=0St2t+ 24k=1S-k2-k (2.22f) N= 2* S0+2* … St-1 +2-1* S-1+2-1* … S-k (2.22g)
22
IQ-Math biçiminde N sayısının tam ve kesirli kısmının basamak değerlerinin bulunmasına önceki başlıklarda anlatıldığı için burada değinilmeyecektir.
Bir çok uygulama için oldukça hassas olan 10.000000238 doğal sayının I8Q24-math kütüphanesi ile gösterimi denklem 2.23‟de verilmiştir.
10.000000238 = 00001010.000000000000000000000100 (2.23) Aşağıda I8Q24-math sayı formatında aritmetik işlemler tanımlanmıştır.
Toplama ve Çıkarma : I8Q24-Math sayı formatında toplama ve çıkarma işlemi ikilik tabanda yapılmaktadır. Tablo 2.3‟de I8Q24-Math sayı formatındaki iki sayının toplama ve çıkarma işlemleri tanımlanmıştır.
Tablo 2.3: I8Q24-Math sayı formatında toplama ve çıkarma işlemi
5.375 00000101.011000000000000000000000 3.1875 00000011.001100000000000000000000 5.3 75 00000101.011000000000000000000000 + 3.1875 + 00000011.001100000000000000000000 8.5625 00001000.100100000000000000000000 5.375 00000101.011000000000000000000000 + -3.1875 + 11111100.110100000000000000000000 2.1875 00000010.001100000000000000000000
Yukarıdaki çıkarma işlemi toplama kullanılarak yapılmıştır. Toplama işleminin çıkarma işlemi yapabilmesi için işleme giren sayılardan bir tanesinin negatif sayı yapılması yeterli olacaktır.
Çarpma: Çarpma işleminde yöntem, onluk tabanda yapılan çarpma işlemi gibidir fakat ikilik sistemde yapılmaktadır. Tablo 2.4‟deki örnekte işlem kolaylığı olması açısından çarpmaya girecek sayıların tam kısımları 2 bit, kesirli kısımları ise 3 bit olarak alınmaktadır.
23
Tablo 2.4: I2Q3-Math sayı formatında pozitif sayılarla yapılan çarpma işlemi
1.125 01.001 0.875 00.111 1.125 0.875 01001 00111 0.984 1 00000 01001 2 001001 01001 3 0011011 01001 4 00111111 00000 5 000111111 + 00000 0000111111
Tablo 2.5: I2Q3-Math sayı formatında negatif sayılarla yapılan çarpma işlemi
-1.125 10.111 -0.875 11.001 -1.125 -0.875 10111 11001 0.984 1 000000 110111 2 1110111 000000 3 11110111 000000 4 111110111 110111 5 1110101111 +001001 0000111111
Yukarıdaki işlemlerde ilk çarpma iki pozitif I2Q3 sayı arasında çarpma yapılmaktadır. Bütün çarpma işlemi 5 adımda bitirilmektedir. İlk adımda başlangıçtaki ara toplam “00000” alınmıştır. Bu ara toplam kaydırılmış çarpım ile toplanır. İkinci adımda ise başına „0‟ eklenmiş ikinci ara toplam ile kaydırılmış çarpım ile toplanır. Bu işlem 5 adım boyunca yapılır ve kelime uzunluğu 10 bit olan sonuç elde edilir.
24
Yukarıdaki ikinci çarpma ise iki negatif I2Q3 sayı arasında yapılan çarpmadır. Bu çarpmanın mantığı diğeri ile aynıdır. Bu çarpmada da başlangıçta “00000” olan ara toplam ile kaydırılmış çarpımlar toplanmaktadır. Fakat burada kaydırılmış çarpımların başına „0‟ değil „1‟ eklenir. Ayrıca 5. adıma gelindiğinde kaydırılmış çarpımın tersi alınarak ilgili ara toplam ile toplanır. İşlem sonunda kelime uzunluğu 10 bit olan sonuç elde edilir.
Çarma işelemine giren sayıların formatı I2Q3 iken sonuç I4Q6 olmaktadır. Sonuçların I2Q3 formatına çevrilmesi gerekmektedir. Bu çevrim işlemi aşağıdaki Şekil 2.3‟de ayrıntıları ile açıklanmıştır. Şekilde de görüldüğü gibi bazı verilerin kaybolmasına göz yumulması gerekmektedir. Çarpma ve bunlar gibi algoritmalardaki veri kaybı kullanılan sayı formatı ile doğrudan ilişkilidir. Bu noktada uygulama için kullanılacak sayı formatının önemi ortaya çıkmaktadır.
Şekil 2.3: I4Q6 sayı formatının I2Q3 sayı formatına çevrilmesi
Bölme: Bölme işleminde, ilk olarak bölen sayısının en anlamlı biti „1‟ olacak şekilde sola doğru kaydırma işlemi yapılır. Daha sonra bölünen bölenden büyük veya eşitse bit değeri 1 olur ve bölen bölünenden çıkarılarak yeni bölünen değeri elde edilir. Küçük değere sahipse çıkarma işlemi yapılmaz, bölünen aynen kalır ve bit değeri 0 olur . Sonraki aşamada bölen sağa bir bit kaydırılır. Elde edilen yeni bölen değeri yeni bölünen değerinden çıkarılarak yukarıda belirtilen işlemler tekrar edilir. Bölme işlemi uygulamada kullanılmadığı için ayrıntılı olarak değinilmemiştir.
25
2.1.2.4. IEEE-754 kayan noktalı sayı biçimi
Gerçek dünyada sonsuza kadar giden birtakım değerler, sayısal donanımlarda gerçeklenecek uygulamanın ihtiyaç duyduğu sayı büyüklüğüne ve çözünürlüğüne bağlı olarak yaklaşık değerlerle temsil edilirler. Uygulamanın ihtiyaçlarını karşılayacak ve sayıların en büyük ve gerçeğe en yakın şekilde temsilini sağlayan sistem "Kayan-Noktalı Sayılar" sistemidir.
Kayan noktalı sayıların gösteriminde en çok kullanılan IEEE 754 standardına göre sayılar kelime uzunluğuna (bit sayısına) göre yarı duyarlıklı, tek duyarlıklı, çift duyarlıklı, iki çift duyarlılıklı olmak üzere hafızada dört biçimde saklanmaktadır. IEEE 754 standardında kayan noktalı sayılar işaret, üs ve kesir adı verilen üç kısımdan oluşmaktadır. Tablo 2.6‟da sayılar kelime uzunluklarına göre sıralanmıştır.
Tablo 2.6: Kelime uzunluklarına göre kayan noktalı sayı formatı
Kelime Uzunluğu İşaret Üs Kesir Toplam Bias Duyarlılık
Yarım(IEEE 754-2008) 1 5 10 16 15 11
Tek 1 8 23 32 127 24
Çift 1 11 52 64 1023 53
İki çift 1 15 112 128 16383 113
Tek kelime uzunluğuna sahip IEEE-754 formatındaki sayı biçimine verilen genel ad IEEE-754 tek duyarlılık‟dır. Şekil 2.4‟de gösterilen bu sayı biçiminin bölümleri gösterilmiştir.
i-(işaret biti)(31. bit): Eğer işaret bitinin değeri lojik 1(i = 1) ise sayı negatif, lojik 0 (i = 0) ise sayı pozifittir. ü-(üs bitleri)(30.bit …. 23. bit): Bu bitler sayının çalışma aralığını(kullanılan sayı formatı ile ifade edilebilen en büyük sayı değerini) tutmaktadır. Eğer üs bitleri azaltılır ise sayının çalışma aralığı azaltılır. Sayıya ait üs değeri +127 bias değeri ile genişletildikten(toplandıktan) sonra 8 bit genişliğinde tutulmaktadır.
26
Şekil 2.4: IEEE 754 Tek duyarlıklı kayan noktalı sayı formatı
k-(kesir bitleri)(22.bit……..0.bit) : Bu bitler sayının gerçek değerini tutulmaktadır. Kesir bitlerin sakladığı değer, üs bitlerinin sakladığı değer kadar kaydırılarak sayının gerçek değeri elde edilir. Nk sayının kesir kısmını, k(kesir) basamak ağırlığını,
S(Step) basamak değerinin gösterdiği kabul edilerek N(Number) doğal sayısının IEEE-754 formatındaki kesir kısmı denklem 2.24‟deki gibi ifade elde edilir.
Nk= 23k=1S-k2-k (2.24)
Fakat IEEE-754 formatındaki sayının hesaplanması veya herhangi bir aritmetik işleme sokulması sırasında kesir kısmının başına „1‟ eklenir. Dolayısıyla kesir kısmını hesaplayan 2.24 denklemi deneklem 2.25‟deki gibi yazılabilir.
1+Nk=1+ 23k=1S-k2-k (2.25)
Ni işaret bitini, Nk sayının kesir bitlerini ve Nü sayının üs bitlerini gösterdiği kabul
edilerek N(Number) doğal sayısının IEEE-754 formatında denklem 2.26‟daki gibi ifade edilir.
N=(-1) Ni* 1+Nk *2Nü-127 (2.26)
Bu ifadedeki 127 değeri bias olarak adlandırılmaktadır. Bias sayının kelime uzunluğuna göre değişmektedir. 32 bit kelime uzunluğuna sahip bir sayı için bias değeri 127‟dir.
Denklem 2.26 kullanılarak -2.5 doğal sayısından IEEE-754 formatına dönüştürme işlemleri denklem 2.27‟de gösterilmiştir.
27
Denklem 2.25‟de „+‟ işareti yan yana ekleme anlamında kullanılmıştır. N sayısını tam kısmında 1 kalacak şekilde normalleştirme işlemi denklem 2.28‟da gösterilmiştir.
N=Ni+Nü+Nk=-2.5=-1.25*21 (2.28)
Denklem 2.28‟deki normalleştirilmiş sayıya ait ilk ifade (-) işaret bitini, sayıya ait olan ikinci ifade (1.25).kesir kısmını son ifade (21) ise üs kısmını göstermektedir.
Denklem 2.29a ile 2.29d arasındaki denklemlerde bu üç kısmın nasıl hesaplandığı gösterilmiştir. N=(-1) Ni* 1+Nk *2Nü-127=-1.25*21 (2.29a) (-1) Ni= -1, Ni=1=(1)2 (2.29b) 2Nü-127=21, Nü-127 (2.29c) Nü=128=(10000000) 2 (2.29d) 1+Nk =1.25=1+0.25 (2.29c) Nk= 23k=1S-k2-k=0.25=(01000000000000000000000)2 (2.29d)
2.28 denkleminde yararlanılarak denklem 2.30‟da gösterilen IEEE-754 formatındaki sayıyı elde ederiz
N=Ni+Nü+Nk=(11000000001000000000000000000000)IEEE-754 (2.30)
Denklem 2.30 kullanılarak IEEE-754 formatından N doğal sayısına dönüştürme işlemleri denklem 2.31a ile 2.31d arasında gösterilmiştir.
(10111111101100000000000000000000 )
IEEE-754=Ni+Nü+Nk (2.31a)
Ni=(1)2=1 (2.31b) Nü=(01111111)2=127 (2.31c)