Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: yldzelektronik - 22 Haziran 2014, 21:25:53

Başlık: Floating Point Unit
Gönderen: yldzelektronik - 22 Haziran 2014, 21:25:53
Herkese selamlar.

Stm32f407 de yer fpu (floating point unit) nedir diye sormak istiyorum. Genel olarak kusuratli sayilarla calisabilmeye yardimci olur. Ancak ben daha pratik bilgiler ariyorum.

Tanimin otesinde nerelerde kullanabiliriz? Daha ziyade sinyal islemede fayda saglayacagini okudum. Fakat nasil yapiyor bunu?

Bi sayiyi fpu ile isle diye mi soyluyoruz cipi yada nasildir?

Telefondan yazdigimdan stnin orneklerine bakamiyorum.

Tesekkurler
Başlık: Ynt: Floating Point Unit
Gönderen: Mucit23 - 22 Haziran 2014, 21:47:24
Hocam temel olarak nasıl çalıştığını bende bilmiyorum ama fractal çizme uygulamalarında farkını ortaya koyuyor.  Youtube'da video örnekleri vardı.
Başlık: Ynt: Floating Point Unit
Gönderen: z - 22 Haziran 2014, 21:54:41
CM3 islemcimizin nasil ADD, SUB gibi integer sayilarla calisan komutlari varsa CM4 serisindeki FPU donaniminin da Float sayilarla calisan VADD, VSUB gibi komutlari var.

Program icinde FPU unitesini ilgilendiren tip komutlar gorulurse bunlar FPU tarafindan isleniyor.

Evet FPU, kayar noktali sayilar uzerinde donanimsal olarak islem yapiyor.  Ayni islemleri CM3 komut seti ile yapmaya kalksaydik ornegin VADD gibi bir komut icin bile upuzun fonksiyon yazmamiz gerekirdi. Dolayisi ile FPU unitesi hiz gerektiren uygulamalar icin gerekli. Eger hiz gerekmiyorsa zaten CM3 islemciyle de ayni isleri yapabiliyoruz.
Başlık: Ynt: Floating Point Unit
Gönderen: engerex - 22 Haziran 2014, 22:11:23
Double precision MCU var mı?
Başlık: Ynt: Floating Point Unit
Gönderen: Yuunus - 22 Haziran 2014, 22:59:50
"Z" hocam tam anlayamadim: ornegin float bir degisken ile islem yapmaya basladigimda yani kodun derleme asamasinda otomatik olarak mi karar veriliyor? yada kod calisirken, ornegin kusuratli bir bolme islemine rastlandiginda devreye girip cikan bir mekanizma midir?
Başlık: Ynt: Floating Point Unit
Gönderen: berat23 - 22 Haziran 2014, 23:09:28
Float sayılarla işlem yaparken eğer işlemcide fpu varsa işlemlerin fpu da mı ya da yazılımla mı yapılacağını compile ayarlarından seçebiliyorsunuz. Fpu olsa dahi yazılımsal olarak işlem yapmak mümkün tabi mantıklı olmadığı aşikar.

Fp instruction lar sadece çarpma toplama değil kök alma, yazma, casting gibi işlemler de var. C28deki fpu 3, m4 teki fpu 14 cycle da single precision kök alabiliyor. Kökü bırakın sadece int-float dönüşümü bile 8 bitlik işlemcilerde inanılmaz uzun sürüyor, asm çıktılarından bunu kıyaslayabilirsiniz. O yüzden fpu olmayan işlemcilerde integer kullanmak bir gereklilik
Başlık: Ynt: Floating Point Unit
Gönderen: LukeSkywalker - 22 Haziran 2014, 23:11:29
Derleyici asm kodlarini olustururken fpu komutlari uretiyorsa ( tabiki ondalikli islemler yapilirken uretmesi lazim) mcu da bu komutlar dogrudan fpu unitesi tarafindan islenir. Asm ile program yaziyorsaniz zaten kendiniz bu komutlari kullanacaksiniz. Eger C derleyici  kullaniyorsaniz, derleyici bu komutlari uretmeli.
Başlık: Ynt: Floating Point Unit
Gönderen: z - 22 Haziran 2014, 23:12:08
Derleyici float sayilarlami yoksa integer sayilarlami islem yaptigini zaten yazdigin C satirlarindan anliyor.
(Bunun icin gerekli ip uclari degisken tiplerinde ve yapilan islemlerden belli. En kotu ihtimal type casting den belli)

Bu durumda derleyici ornegin;

iki integer sayi ile toplama yapacaksa ADD R1,R2,R3 komutunu kullanan kod uretiyor.
Yok float soayilarla toplama yapacsaksa bu kez VADD.F32 s2, s0, s1 seklinde komut kullanan kod uretiyor.

MCU,  ADD R1,R2,R3 komutunu gorunce kendisi isliyor.
VADD.F32 s2, s0, s1 komutunu gorunce bu kez kendisi isleme dahil olmuyor ve FPU unitesi bu komutu isliyor.



Başlık: Ynt: Floating Point Unit
Gönderen: muhittin_kaplan - 22 Haziran 2014, 23:18:44
peki yaptığımız fp işlemlerin FPU tarafından yapılmasını sağlamak için ne yapmalıyız?
(Use FPU Hard gibi bir seçim var o yetiyormu sadece)
Başlık: Ynt: Floating Point Unit
Gönderen: berat23 - 22 Haziran 2014, 23:26:07
Evet yetiyor
Başlık: Ynt: Floating Point Unit
Gönderen: muhittin_kaplan - 22 Haziran 2014, 23:38:17
denedim de yetmiyor.
Başlık: Ynt: Floating Point Unit
Gönderen: berat23 - 22 Haziran 2014, 23:45:01
Stm32f407 de mi denediniz
Başlık: Ynt: Floating Point Unit
Gönderen: muhittin_kaplan - 22 Haziran 2014, 23:52:28
evet
t=0.1+0.2 gibi

(GCC + CoIde)

ama t=0.1f+0.2f le deneyeceğim
Başlık: Ynt: Floating Point Unit
Gönderen: ilhan_mkp - 23 Haziran 2014, 00:21:22
hocam gerbay hocamın fpu aktif etme ile ilgili mesajını buldum artık rahat uyuyabilirim  ;D
fpu aktif olmadığı için kullanmamış olmalı.


startup_stm32f4xx.s  dosyanızın içinde FPU yu initialize etmeniz ya da keil ın proje ayarlarından FPU yu disable etmeniz gerekiyor

en iyisi 2 satır kod yazıp FPU yu initialize etmek;

startup_stm32f4xx.s dosyanızda muhtemelen kırmızı kısımlar yok, ilave edin düzelir..

; Reset handler
Reset_Handler    PROC
                 EXPORT  Reset_Handler             [WEAK]


        IMPORT  SystemInit
        IMPORT  __main

                 ;FPU settings
                 LDR     R0, =0xE000ED88           ; Enable CP10,CP11
                 LDR     R1,[R0]
                 ORR     R1,R1,#(0xF << 20)
                 STR     R1,[R0]


                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP
Başlık: Ynt: Floating Point Unit
Gönderen: yldzelektronik - 23 Haziran 2014, 07:37:44
Birisi yalnizca kusuratli sayilar degil kok alma islemi yaptigindan da bahsetmis. Stnin AN4044 nolu app motunu okumaya calistim. Ancak ondan bahsettigini far etmedim. Yalnizca fp sayilarin formatlanmasindan soz ediyordu. Kok alma bilgisi hakikat mi? Baksa ne tur yetileri var?

Bir de fpu sanki keilde mcu ayarlarinin yapildigi yereden/ project optionstan acilip kapatiliyordu. Dogru mu hatirliyorum?

Son olarak bir ricam;

Yukaridaki app notda bir ornek uygulama var. Orada yapilan tam olarak nedir?
Başlık: Ynt: Floating Point Unit
Gönderen: berat23 - 23 Haziran 2014, 10:52:27
birisi olarak cevap vereyim;

az biraz asm bilginiz varsa buradan detaylı olarak instruction'ları inceleyebilir, işlemcinin yeteneklerine bakabilirsiniz.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/BEHJADED.html (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439b/BEHJADED.html)

AN4044 dökümanında 2.3 - 2.4 - 2.5 - 2.6 kısımlarda bu saydığım yetenekler hakkında kısa bir özet geçilmiş.

verilen örnek uygulamada ise fractal hesabı üzerinden benchmark yapılmış, uygulamayı çok anlamak gerekli değil. fractal verilmesinin sebebi hem çok matematiksel işlem gerektirmesi, hem de basitçe uygulanıp sonuç gözlenebilmesi. neticede aradaki performans farkını fps olarak gözle görebilirsiniz.

@muhittin_kaplan

yanlış anımsamıyorsam sadece projhe ayarlarında değişiklik yaparak keil ile kullanmıştım fpu'i. verdiğiniz örnekte eğer t float ise işlemin keilde float inst. ile yapılması gerekir(CoIde hakkında bir tecrübem yok). 

ya da stellaris ile karıştırıyorum, bilemedim.
Başlık: Ynt: Floating Point Unit
Gönderen: yldzelektronik - 23 Haziran 2014, 11:58:35
Alıntı yapılan: berat23 - 23 Haziran 2014, 10:52:27
birisi olarak cevap vereyim;

Bu ifadeyi kullanarak saygısızlık ettim sanırım.Kusuruma bakmayın lütfen. Gece yolculukta iken telefondan yazmıştım.Yorgunluktan görememişim.Teşekkürler.
Başlık: Ynt: Floating Point Unit
Gönderen: pisayisi - 23 Haziran 2014, 12:30:01
Karekök alma işleminde FPU kullanmanın çok belirgin bir etkisi yok, ancak trigonemetrik işlemler de dahil kat ve kat performans artışı gözlenlemlenmekte. FPU olması ve olmaması durumunda aritmetik işlemlerdeki hesaplama zamanı aşağıdaki kıyaslanmıış...

(http://s26.postimg.cc/uk389cok9/stm32f4_fpu_no_fpu.png)

http://blog.stm32f4.eu/?p=222 (http://blog.stm32f4.eu/?p=222)
Başlık: Ynt: Floating Point Unit
Gönderen: yldzelektronik - 23 Haziran 2014, 14:03:14
Peki bir mcunun dsp olması nedir?

Sayısal işaret işleme yeteneği sağlar fakat daha açık nasıl ifade edilir?Dsp olması ne fayda sağlar?
Başlık: Ynt: Floating Point Unit
Gönderen: speak48 - 23 Haziran 2014, 14:10:13
dsp yeneteği olması için simd  işlem yapabilme yeteneğine sahip olması gerekir.
simdsiz de dsp yapılabilinir ama realtime dsp işlerine yetişmez. o zaman  ona dsp denmez
Başlık: Ynt: Floating Point Unit
Gönderen: z - 23 Haziran 2014, 14:35:49
Sayısal sinyal işleme için her zaman DSP gerekmez.

Sinyal işlemede kritik soru "hangi frekansdaki sinyaller işlenecek" sorusudur. Bir diğer soru da sistemin girdi sinyaline ne kadar gecikme ile cevap verileceği sorusudur.

"Benim düşüncem"  DSP denince çok yüksek hızda işlem yapabilen MCU akla gelmeli.
Ancak tüm dünyada tek cycleda birden fazla işlem yapamayan MCUlara DSP denmemeli fikri empoze ediliyor.

En basitinden tek cycleda birden fazla komut işleyen komut setine dsp komut seti deniyor.



Başlık: Ynt: Floating Point Unit
Gönderen: yldzelektronik - 23 Haziran 2014, 14:45:32
Peki stm32f407 için dsp deniliyor.Bu nedir?

Ekleme:Simd olması ne demek?
Başlık: Ynt: Floating Point Unit
Gönderen: z - 23 Haziran 2014, 14:50:22
Çünkü CM4 işlemcilerde DSP komut seti var.

Bu set sayesinde biraz daha yüksek frekansda sinyalleri işleyebilirsin. Bu set olmasaydı işlenecek sinyal frekansı da düşük olurdu.

Haa bu arada DSP işlemciye kodu tekniğiyle yazmazsan anlamı yok. Gelişgüzel kodlama yaparsan DSP işlemciyi sıradan MCU gibi kullanmış olursun.

Bu işlemciye yazım kuralları sıradan işlmecilere yazımdan biraz farklı. Herşeyden önce ayrık zaman denklemlerini bilmek gerekiyor.

Başlık: Ynt: Floating Point Unit
Gönderen: speak48 - 23 Haziran 2014, 14:50:52
Alıntı yapılan: yldzelektronik - 23 Haziran 2014, 14:45:32
Peki stm32f407 için dsp deniliyor.Bu nedir?

sanırım palavra
digital signal processing yapabilir denilmek isteniyor
yoksa
dsp dsp digital signal processor "dijital sinyal işlemcisi"
Başlık: Ynt: Floating Point Unit
Gönderen: yldzelektronik - 23 Haziran 2014, 15:12:50
Stm32f407 nin datasheetinde dsp 3 tane falan var.Bu çipin dsp liği ile ilgili bilgi yok mu?
Başlık: Ynt: Floating Point Unit
Gönderen: z - 23 Haziran 2014, 15:35:08
Rehber vs dediğimiz dokumanlarda bu bilgiler olmaz.

DSP komut setine bakacaksın. Bunun için bakman gereken dokuman komut seti listesi.

Saturasyon destekli komut setine bir de MULA tipi komutlara bakacaksın.

http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf (http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf)
Başlık: Ynt: Floating Point Unit
Gönderen: engerex - 24 Haziran 2014, 00:37:55
Alıntı yapılan: gerbay - 22 Haziran 2014, 22:14:55
Cortex-R4 ler de opsiyonel olarak var (Cortex-R4F). A serilerinde zaten var.
RealTime ile MCU arasındaki fark nedir? Hangisi nerede ne amaçla kullanılır?
Başlık: Ynt: Floating Point Unit
Gönderen: z - 24 Haziran 2014, 01:22:07
Boyle bir ayrim yapamazsin.

Buradaki anlamiyla Realtime uygulamada islemcimiz giris sinyalini alir isler ve vakit kaybetmeden cikis verir. Yapilan ADC/ DAC vs donusumleri ile matematiksel islemler cikis sinyalimizin giris sinyalini  bir miktar geriden takip etmesine neden olur.

Cikis ile giris arasindaki fazfarki idelade sifir olmasi gerekir. Fark olustukca realtime islemlerden uzaklasiriz.

Iste bu yuzden bu tip cok hizli islerde DSP ler on plana cikar.

Hatta bazen oyle olur ki veri alinip isleninceye kadar ikinci veri gelir ve veriler takip edilemez olur. Bu durumda veriler hic islem yapilmadan depolanir daha sonra realtime'in ikinci anlami olan anlamda bu veriler islenir. Bu tip yapi kontrol amacli islerde hic kullanilmaz.

Başlık: Ynt: Floating Point Unit
Gönderen: mistek - 24 Haziran 2014, 01:28:46
Realtime kabul edilebilme süresi nedir? Var mı böyle bir standart.

Bilgisayarlarımız realtime çalışıyor diyoruz ama biliyoruzki aslında bazen birkaç ns,us,ms sonra yanıt veriyor. 1 saniyeyi realtime kabul edebilir miyim? 
Başlık: Ynt: Floating Point Unit
Gönderen: z - 24 Haziran 2014, 01:32:38
Bu realtime konusunda neden bahsedildiginde hem fikir olmak sart.

Digital sinyal isleme / kontrol islerinde cikis ile giris arasinda olusan faz farki sistem kararliligi acisindan onemlidir. Gecikme demek faz farki demektir.

Sonucta cikti sinyalimiz planta uygulanir ve plant cikisi tekrar islemicimizin girisine uygulanir.

Iste buradaki faz farki kritik hale gelebilir. (Bode analizinden hatirlayin.)

Haa bu durum, gene o sevimsiz C-ASM arasindaki ince cizgiyi de belirleyebilir.

---------

Mesela 1Khz giris sinyali uzerinde ugrasirken 10 us gecikme ile cikis veriyorsak 

Cikis ile giris arasinda 3.6 derece faz farki vardir ve kabul edilebilr.

Fakat giris sinyalimiz 50Khz olursa bu durumda 10us gecikme tami tamina 180 derece faz farki demektir ki sistem muhtemelen osilasyona gidecektir.
Başlık: Ynt: Floating Point Unit
Gönderen: berat23 - 24 Haziran 2014, 09:10:13
kontrol için faz farkını anlama yolu nyquist kararlılık ölçütü ile bulunan faz payı dır. eğer sistem gecikmesi faz payından küçükse kararlı biçimde kontrol edilebilir, yani o aralıktaki gecikmelerle real time kontrol mümkün. benzer durumlar filtre tasarımında da var.

dsp nin diğer alanları mesela sayısal haberleşmede ise iki paket arası sürede decode-encode artık ne yapıyorsan o işlemin bitmesi demek. görüntü işlerken keza iki frame süresi arasında frame'i işleyip diğer frame'i beklemek gerekir. aslında kısaca bakacak olursak olması gereken zamanda olması demek real time demek. olması gereken zaman tanımı yapılan işe göre değişir.