SONLU KELĐME UZUNLUKLU ARĐTMETĐK Sonlu kelime uzunluğu sabit yada kayan noktalı herhangi bir hesaplamada artarak büyüyen gürültüye neden olur. Gerçekleştirilecek uygulama ve gerekli algoritmalar kullanılacak aritmetiğin seçiminde önemli kriterler olarak karşımıza çıkarlar. Diğer kriterler ise karmaşıklık, maliyet, hız ve harcanan güç olarak sıralanabilir. hata ve dinamik bölge bit sayısı ile doğrudan ilintilidir. Sabit noktalı işlemlerde oluşan hatalar, kayan noktaya göre daha fazladır. Ancak, aynı bit sayısı için mutlak hatalar, kayan noktada daha yüksek olacaktır.
Sabit noktalı çözümler pek çok gerçek zamanlı uygulamada yeterli performansı sağlayabilir. Analog telefon hatlarındaki gürültü telefon konuşma işaretinin dinamik bölgesini 50-60 db ile sınırlar. 72 db den daha küçük kuantalama adımları yalnızca gürültünün daha iyi temsilini sağlar. Hifi kalitede bir müzik sisteminin dinamik bölgesi 80 db dir (14 bit). Ancak profesyonel sistemler daha yüksek sayıda bit gerektirir. Hesaplamadaki toplamsal hataların boyutu, kelime uzunluğunun yeterli olup olmadığını belirler. Basit sayısal filtreler için 16 bit yeterlidir. Öte yandan insan kulağının algılayabileceği en düşük ses seviyesi ile Ağrı meydana getirmeyecek en yüksek ses seviyesi arasındaki bölgenin 120 db olduğu tespit edilmiştir. Bu gürültüsüz ortamlarda daha yüksek kalitede ses sistemlerinin anlamlı olabileceğini gösterir.
Dinamik bölge, SNR ve Boşluk payları arasındaki ses işaret seviyesi ilişkisi
Stüdyo kayıtları genellikle üst tarafta 20dB lik bir güvenlik boşluğu (headroom) bırakırlar. Alt tarafta ise boş kayıt kısımlarının iletilmemesi için 10 db lik bir boşluk (footroom) bırakmak uygun olacaktır. Toplam dinamik bölgesi 50 db olan bir sistem hareket edebilecek 20 db kalır ki buda çok yetersizdir. Bu nedenle profesyonel sistemlerde bit sayısı daha yüksek olmalıdır. Teorik olarak her bir bit artışı S/Nq oranında 6 db bir artış sağlar.
Bit sayısı ve kalite
SABĐT VE KAYAN NOKTA YAPILARI SABĐT NOKTA Sabit nokta bir desimal sayının normal yazılış şeklidir. 12.568 b.c ile tanımlanır. Yada kelime bit sayısı belirliyse Qc olarak verilir b noktadan önceki hane sayısı (işaretli sayılarda işaretide içerir.) c noktadan sonraki hane sayısı Örneğin 16 bitlik bir yapı için 16.0 (Q0), 15.1 (Q1),... 1.15 (Q15) formatlarından bahsedilebilir. Đşaretli sayılarda en yüksek ağırlıklı bit işaret bitidir. 1.01-0.25 Temsil edilebilecek en büyük ve en küçük sayılar doğrudan hane sayısı ile ilgilidir Negatif sayılar ikinin tümleyeni ile temsil edilir.
Q15 FORMATI Kurallar Sayılar daima 1 ve -1 arasındadır Decimal nokta daima sabit bir noktadadır (örneğin., 0.74, 0.34, vs.) Kesir kısmının başka bir kesir kısmı ile çarpılması bir taşma üretmez (örneğin 0.99 x 0.9999 = 1 den küçüktür) Ardışıl toplamalar taşmaya neden olabilir. Neden tercih edilir? Đşaret işleme çarpma ağırlıklıdır. Fixed-point notasyonu taşmayı önler (küçük dinamik bölgede faydalıdır.) Fixed-point notasyonu ucuzdur Sabit-Nokta bir DSP de nasıl gerçeklenir? Sabit-Noktalı DSP lerin çoğunluğu 16 bitliktir. 32767 den -32768 ye kadar sayılar temsil edilebilir. Q15 en çok kullanıla formattır Q15 Formatı Bit 15 Bit 14-0 sign two s complement sayı
Sabit-Noktalı sayıların, bellekte temsili b.c noktalı sayı için tamsayı kısmı aynen alınır, kesirli kısım ise K=kesir*2 c biçiminde hesaplanır. Örnek 4.12 formatında, 3.68 sayısı neye karşılık düşer? K=0.68 * 4096 =2785 =0xAE1 böylece, sayı 0x3AE1 olacaktır. Q15 (1.15) formatı için 0.68 sayısı nedir? K=0.68*32768=0x570A olacaktır Q15 formatında 0x2218 hangi sayıya denk düşer? 0x2218=8728 sayi=8728/32768 =0.266357 Q15 formatında -0.266357 sayısının bellekteki değeri nasıl olacaktır? k=-0.266357*32768 =-8728 ikinin tümleyenine çevirelim 65536 8728 = 56808 = 0xDDE8 3.68 ile verilen 4.12 formatlı sayının 1.15 formatındaki karşılığı nedir? 4.12 den 1.15 e gidebilmek için noktayı 3 defa sola kaydırmalıyız. Değerin değişmemesi için sayı 8 e bölünmelidir. 3.68/8 =0.46 olacaktır. (1.15) formatında
Sabit noktalı sayıların çarpımı Đki adet b bitlik sabit noktalı sayının çarpımı sonucunda 2b uzunluklu bir sayı oluşur. Burada 2 adet işaret biti oluşacağından, sayı 1 bit sola ötelenmelidir. Örnek: Q15 formatlı 0.68 ile 0.22 sayısının çarpımı kaç olacaktır? K1=0.68*32768=22282 =0x570A, K2=*.22*32768=7208 =0x1C28 K1*K2=0x0992B190 Sayı 1 bit ötelenirse 0x13256320 sayısı elde edilir. 16 bite çevrildiğinde elde edilen 1.15 formatlı sayı 0x1325 olacaktır Buradan geriye dönülürse; 0x1325=4901 4901/32768 =0.14956=0.68*0.22 olacaktır.
KAYAN NOKTALI SAYILAR Kayan noktalı temsil, bilimsel gösterilim olarak da söylenebilir. Mantıs Üstel y= m b e m:mantıs, b:taban, e:üstel 31 30... 24 23... 0 S Üstel Mantıs IEEE 32 bit kayan nokta formatı
TI Kayan nokta formatında çevirme işlemi
KARŞILAŞTIRMALAR 0.999969482421875-1 KARAKTERĐSTĐK Floating point Fixed point (aynı bit sayısı için) Dinamik Bölge Oldukça büyük küçük Çözünürlük Düşük yüksek Hız Benzer benzer Programlama daha basit daha zor Derleyici verimliliği daha yüksek daha düşük Maliyet daha yüksek daha düşük Tasarım maliyeti daha az daha çok Pazara çıkış daha hızlı daha yavaş
Dinamik bölge üstel bit sayısı Hassasiyet mantıs bit sayısı Sabit noktada dinamik bölge kelime boyutu ile doğrusal artar Kayan noktada üstel olarak artar. Kelime uzunluğu 16 32 64 Sabit Nokta Dinamik Bölge 65536 4.3 10 9 1.8 10 19 Max Hassasiyet >4 digit >9 digit >19 digit Kayan Nokta Üstel Dinamik (4,12) 3.3 10 4 (8,24) 5.8 10 76 (13,51) 10 1419 Bölge Mantıs hassasiyeti >3 digit >7 digit >15 digit
Kayan noktalı toplama, çıkarma, çarpma, bölme Toplama/Çıkarma f 1 = m 1 b e 1, f 2 = m 2 b e 2 ise f 1 ± f 1 = (m 1 ± m 2 b -(e 1 - e 2 ) ) b e 1 e 1 > e 2 = (m 1 b -(e 2 - e 1 ) ± m 2 ) b e 2 e 1 < e 2 Çarpma f 1 * f 2 = ( m 1 * m 2 ) b (e 1 + e 2 ) Bölme f 1 / f 2 = (m 1 / m 2 ) b (e 1 - e 2 )
Toplama işleminde Küçük üstele ilişkin mantıs iki üstel arasındaki fark kadar sağa kaydırılır. Buda alt taşma oluşturur. Benzer bir şekilde üst taşma oluşan durumlarda söz konusudur. Bütün sayısal normalize biçimde olmalıdır. Yani mantısın en yüksek ağırlıklı dijiti en solda olmalıdır. Bu en yüksek doğruluğu sağlar. Herhangi bir kayan noktalı işlemin sonucu da normalize edilmelidir. Örnek 1 f 1 =0.10100 * 2 011 f 2 =0.111000 * 2 001 her iki sayıda normalize edilmiştir.
f 1 + f 2 =0.10100 * 2 011 +0.00111 * 2 011 =0.11011 * 2 011 Burada taşma söz konusu değildir. Örnek 2 f 1 =0.11100 * 2 011 f 2 =0.10101 * 2 001 0.11100 * 2 011 + 0.0010101 * 2 011 1.0000101 * 2 011 taşma alttan taşma
Denormalizasyon işlemi yapılırsa 0.10000101 * 2 100 =f 3 Sonuç kesilecek yada yuvarlatılacak olursa f 3 = 0.10001 * 2 100 (yuvarlatılmış) f 3 = 0.10000 * 2 100 (kesilmiş)
ARĐTMETĐK HATA HASSASĐYETĐ Sabit yada kayan noktalı işlemlerde farklı hassasiyetler söz konusudur. Taşma olmaması için gerekli bit uzunluğu farklı olacaktır Sabit noktalı aritmetikte toplama ve çıkarma kuralları kesindir. Toplamada taşma Çıkarmada alttaşma bayrağı Çarpma gerekli kelime uzunluğu Kayan noktada kelime büyümesi farklıdır. Buna göre; Kelime büyümesi çok fazla olmaz tek hassasiyetli hesaplamalarda mantıs için daima bir yuvarlatma gürültüsü vardır. (çift uzunluku çarpım sonucu, tek uzunluğa sıkıştırılmıştır) Kayan noktada mutlak hatalar daha hızlı artar
Sabit nokta Kayan nokta Toplama Normalize ikili kesir için tek toplamada hata yoktur. (Taşma biti var) Yuvarlatma hatası söz konusudur Çarpma b-bit lik girişler için 2b-bit lik çıkışlar sağlanmalıdır. Toplamsal yuvarlatmaya dikkat Çarpım bit büyümesi yavaştır. Tek hassasiyetli sayılarda mantıs hatası büyür.
Đki avantaj sağlar Blok kayan nokta Üst için gerekli olan bitler mantıs a aktarılmıştır. Tek bir üstel kayıtçısı vardır Bu yapı ucuz yapıların geliştirilmesine uygundur. Fazladan bir kayıtçı ve ölçeklendirme devresi gerektirir.
TAŞMA, ALTTAŞMA, YUVARLATMA Aritmetik işlemin sonuçları genellike veri yolu uzunluğundan fazla çıkar, bu durumda, fazla bitleri en iyi ne şekilde işleyebiliriz Çift hassasiyet 2b bit Genişletilmiş hassasiyet acc e extra bitler ekler. Taşma koruması sağlar Hızı yavaşlatmaz Bus genişlikleri, tam çift hassasiyete yetmez ise Doğruluk tek hassasiyetten daha yüksek olmak zorunda ise b bit x b bit = 2b bit (çift hassasiyet) b+g bit (genişletilmiş hassasiyet) Burada g sonuç kayıtçısındaki koruma bitlerinin sayısıdır 16 bitlik sayısların çarpılıp 24 bitlik sayıların tutulması genellikle yeterlidir.
B bit uzunluklu iki sayısının çarpımını düşünelim [MS LS] 1 x [MS LS] 2 =(2 b/2 MS 1 +LS 1 )x(2 b/2 MS 2 +LS 2 ) = 2 b (MS 1 MS 2 )+2 b/2 (MS 1 LS 2 + MS 2 LS 1 )+(LS 1 LS 2 ) tut tut at Hatta çift hassasiyetli çarpmada bile çarpım sonucunu atmak, ardışıl toplama sayısının daha fazla olabilmesini sağlar.
Örneğin çift hassasiyetli bir Fır filtre hesabı için } )]2 ( ) ( ) ( ) ( [ ) ( ) ( { ) ( 16 1 0 = + + = k n X k H k n X k H k n X k H n y M L L M L k M M Burada [H M H L ] 32 bit süzgeç katsayıları [X M X L ] 32 bit veridir. ] )2 ( ) ( [ 32 n k X k H L L Đle verilen en düşük ağırlıklı terim atılarak 48 bit çıkış elde edilir. Böylece akümülatör değerinin 64 bite kadar yükseltilebilmesi sağlanır
KESME, YUVARLATMA VE TARAFSIZ YUVARLATMA Çarpım sonucunda bit genişliğini azaltmak için 3 yöntem vardır. Kesme: En düşük ağırlıklı kısmı doğrudan atmaktır Yuvarlatma: Eğer silinecek bitler tam ölçekli LSB nin yarısından küçükse aşağıya, büyükse yukarıya yuvarlatılır. Tarafsız yuvarlatma: Eğer yuvarlatılacak kısım tam ortada ise, bir seferinde yukarıya, diğerinde aşağıya yuvarlatılır. Yada bir önceki dijitin çift yada tek olmasına bağlanır. (1.35 1.4, 1.45 1.4 gibi)
Sayı yuv. Kesme Yuvarlatma Tarafsız
Yuvarlatma rasgele süreçlerde kesmeden daha iyi sonuç verir.
DOYMA ARĐTMETĐĞĐ Bir sayı tam-ölçekli genligi geçerse ve kayıtçı boyutlarından taşarsa, hesaplamada önemli bir hata oluşur. Çünkü en büyük pozitif sayı birdenbire 0 a yakın, (ikinin tümleyeni ise 1 den biraz büyük olur) (111...11)+1=(000...00) + taşma (işaretsiz) (011...11)+1=(111...11) (ikinin tümleyeni) Doyma aritmetiği bu taşmaları kontrol ederek hata oluşmasını engeller.
Ödev 1.15 formatlı sayılarda uygulama Üniform ve Gauss Dağılımlı bir gürültü elde edebilmek için ne tür bir algoritma kullanılır. Algoritmayı matlab da uygulayarak, elde edilen bir gürültü işaretini çiziniz. Aşağıda verilen fonksiyonları seri açılımları ile elde ediniz. Her bir seri açılımı en fazla 5. dereceye kadar gidecek biçimde düzenlenerek, verilen fonksiyonları, bu seri açılımlarını matlab da uygulayarak verilen aralıklarda orijinal işareti (siyah) ve seri yaklaşımını (kırmızı) üst üste çiziniz. Sinüs(x) 0-2π Karekök(x) 0-5 Log(x) 0.01-10 Ln(x) 0.01-10
Sonlu kelime uzunluğunun olumsuz etkileri aşağıdaki nedenlerden oluşmaktadır ADC Dönüştürme gürültüsü Aritmetik hesaplamalardaki kesme ve yuvarlatmadan kaynaklanan kuantalama gürültüsü Hesapsal taşma (doyum) Katsayı kuantalama Limit salınım
SABĐT NOKTALI ARĐTMETĐK ĐÇĐN SÜZGEÇ KUANTALAMASI VE HATA ANALĐZĐ Kayan noktada, geniş dinamik bölgede daha doğru hesaplama söz konusudur. Ancak düşük maliyet, yüksek çıkış hızı ve ve düşük güç harcaması sabit noktalı çözümleri çekici hale getirir. Ayrıca sınırlı kelime uzunluğu, bitlerin bir kısmının üstele ayrılmasından dolayı, mantıs doğruluğunu azaltarak gürültü eşiğini artırır. Gerçek dünya işaretlerinin dinamik bölgesi genellikle küçük olduğundan sabit noktalı hesaplamalar süzgeçler için oldukça uygundur. Sabit noktalı aritmetik uygulamalarında aşağıdakilere dikkat edilmelidir.
1. Verilen bir transfer fonksiyonu için IIR hatası FIR dan daha büyüktür. Giriş x(n) x(n-1) Z -1 Z -1 x(n-2) Tap b 0 b 1 b 2 Ağırlık FIR Süzgeç Geri besleme yok Σ Σ Toplama noktası y(n) çıkış x(n) + y(n) x a z -1 IIR süzgeç
IIR bir süzgeçte tam sonucu tutabilmek için gerekli bit sayısı zamanla artar n x(n) y(n) 0 0 0 1 x(1) x(1) 2 x(2) x(2)+ax(1) 3 x(3) x(3)+ax(2)+aax(1) 4 x(4) x(4)+ax(3)+aax(2)+aaax(1) 5... Pratik olarak büyüyen bit sayısını tutmak imkansızdır. Eğer a 1 e yakınsa hata daha büyük olur.
IIR süzgeçlerde limit salınım (limit cycle) problemi. -Örneğin biquad band geçiren bir süzgeçte sonlu kelime uzunluğu bir ölü banda neden olur. Burada hiçbir giriş gelmezse bile yuvarlatmadan dolayı çıkış sabit kalır. - Eğer Bir IIR süzgecin katsayıları kutup bölgesine yakınsa, bir osilasyon oluşabilir. Bu osilasyona limit cycle adı verilir. Yuvarlatma yerine kesme kullanılması Limit cycle ları engelleyebilir y[k] = -0.625.y[k-1]+u[k] 4-bit yuvarlatmalı aritmetik giriş u[k]=0, y[0]=3/8 çıkış y[k] = 3/8, -1/4, 1/8, -1/8, 1/8, -1/8, 1/8, -1/8, 1/8,..
Ödev y(n)= 0.96 y(n-1)+ 0.04 x(n) için 7 bitlik bir rezolüsyon varsa ve giriş işaret belirli bir süre için sabit 100 değerini alıyorsa, y(n) başlangıç değeri 85 iken çıkışın bir süre sonra sabitleştiğini ve girişten etkisiz hale geldiğini gösterin.
2. Yuvarlatma kesmeden daha iyidir. (Limit cycle problemi olmadığında) çıkış giriş olasılık hata yuvarlatma kesme ortalama=0 ortalama=(-0.5)lsb variance=(1/12)lsb^2 variance=(1/3)lsb^2
3. Hata giriş yada süzgeç katsayılarının kuantalanmasından yada aritmetik yuvarlatmadan kaynaklanır a) ADC rezolüsyonu: Đdeal b bitlik bir ADC kuantalama adımının yarısı ile sınırlı bir hataya sahiptir. Giriş işaretini kuantalanmasında alt ve üst boşluk (headroom, footroom) payları bırakılarak bit sayısı belirlenmelidir. Bit sayısı sabit ise giriş işareti bir kazanç çarpanı ile ölçeklendirilmelidir. Bu da genellikle Kazanç* Rms seviye =1/4 olacak biçimde seçilir. b) Katsayıların kuantalanması a) Katsayılar kuantalandığında kutup ve sıfır yerleri ideal yerlerinden kayacaktır. b) Bu durum sıfırların yeri için önemli hatalar yaratmaz. c) IIR süzgeçlerde birim daireye yakın kutup noktaları önemli olacaktır d) Paralel ve kaskat yapılar direk formlara göre hatalara karşı daha az hassastır.
c.aritmetik yuvarlatmadan kaynaklanan hatalar 0110 x 1 x 01000010 x + x 1 x 2 +e 0011 Kesme yada yuvarlatma x 2 e Bu hata dinamik bölgeyi sınırlar ve SNR oranını kötüleştirir Parseval teoremi kullanılarak hesaplamalar nedeniyle sisteme katılan gürültüyü öngörebiliriz. σ 2 2b 2 12 n= 0 = h ( n) 0 2 Süzgeç tarafından eklenen gürültü süzgecin impuls yanıtının süresi ile değişir (yalnızca quantalama hatası için yapılmış hesaplama).
Taşmayı engellemek için işaret ölçeklenmelidir. Đşaret ölçekleme kuralları Giriş işareti sınırlıdır O halde u[ k] u max = h[ i]. u[ k i] h[ i]. u[ k i] umax. i= 0 i= 0 i= 0 y[ k] h[ i] = u. h max 1 Çıkış işaretide sınırlı olacaktır. Y[k] çıkışının sınırlı olması için gerekli şart y[ k] y max Olmalıdır. O halde ölçekleme katsayısı c c = u y max max. h 1 şeklinde seçilmelidir.
Ölçekleme Örnek: 1 H ( z) 1 0.99. z 1 h =... = 1 1 0.99 = 1 = 100 u[k] 12-bitlik A/D- dönüştürücüden gelsin y[k] ve çarpıcı için 16-bit aritmetik kullanalım 16 2 c= 12 2. h 1 = 0.16> 1 2 3 u[k] u[k] + y[k] ötele Böylece girişler u[k] süzgece girmeden önce 3 bit sağa kaydırılmalıdır (=doğruluk kaybı) y[k] + 0.99 0.99 x x