Flyttalsprocessor söks
Flyttalsprocessor söks
Någon som vet om det finns någon enkel flyttalsprocessor? Med enkel menar jag en som är enkel att ansluta till en befintlig mikrokontroller via tex spi eller liknande.
-
- Inlägg: 5
- Blev medlem: 13 januari 2008, 00:05:18
- Ort: Uppsala
- Kontakt:
Hej!
Ett alternativ til PAK som förmodligen ger mer kraft på samma pris är uM-FPU från MicroMega Corp. Gärna titta på specifikationer av uM-FPU V2 (8-pin DIP) och uM-FPU V3.1 (18-pin DIP) via följande länk: http://www.micromegacorp.com/products.html
Bägge två pråtar i2C och SPI ...
Vänliga hälsningar,
Jurjen Kranenborg
Ett alternativ til PAK som förmodligen ger mer kraft på samma pris är uM-FPU från MicroMega Corp. Gärna titta på specifikationer av uM-FPU V2 (8-pin DIP) och uM-FPU V3.1 (18-pin DIP) via följande länk: http://www.micromegacorp.com/products.html
Bägge två pråtar i2C och SPI ...
Vänliga hälsningar,
Jurjen Kranenborg
-
- Inlägg: 5
- Blev medlem: 13 januari 2008, 00:05:18
- Ort: Uppsala
- Kontakt:
>>> uM-FPU är troligtvis bara en liten PIC eller liknande krets
Jo, jag trodde nog att det var något liknande. Sparkfun processorn var väl den som var bäst dokumenterad vad gäller exekveringstid för olika operationer.
>>> Måste du verkligen ha en extern FPU
Njaäe, eller jag skulle behöva ha bättre prestanda än vad jag kan få ur min microblaze klockad på 66Mhz... Just nu tar beräkningarna ca 200miljarder cykler och med 66Mhz blir det ca 1-timme med 0-wait states och i verkligheten tar det ca 3 timmar
Det vore trevligt om man kunde få ner det till den hastigheten jag får om jag kör beräkningarna i PC:n dvs ett 10-tal sekunder...
Jo, jag trodde nog att det var något liknande. Sparkfun processorn var väl den som var bäst dokumenterad vad gäller exekveringstid för olika operationer.
>>> Måste du verkligen ha en extern FPU
Njaäe, eller jag skulle behöva ha bättre prestanda än vad jag kan få ur min microblaze klockad på 66Mhz... Just nu tar beräkningarna ca 200miljarder cykler och med 66Mhz blir det ca 1-timme med 0-wait states och i verkligheten tar det ca 3 timmar

Det vore trevligt om man kunde få ner det till den hastigheten jag får om jag kör beräkningarna i PC:n dvs ett 10-tal sekunder...
> ...och med 66Mhz blir det ca 1-timme med 0-wait states och i verkligheten tar det ca 3 timmar
Då är det nog verkligen inte rätt sätt att gå med att lägga till en extern LÅNGSAM FPU. Då skall du nog satsa på en FPU som klarar åtminstånde ett par hundra tusen beräkningar i sekunden. Du har inte funderat på att använda typ en DSP eller liknande? Eller kanske implementera det i en FPGA, för det har du väl redan?
> Det vore trevligt om man kunde få ner det till den hastigheten jag får om jag kör beräkningarna i PC:n dvs ett 10-tal sekunder...
Nu finns det två alternativ
1) Det finns inte en chans i världen att du skulle kunna få ner tiden från tre timmar till ett tiotal sekunder med en uM-FPU
2) Du har programmerat din microblaze helskumt och kan istället optimera koden där för att få beräkningarna _mycket_ snabbare
Micke_s: Sen får du ju också tänka på att det är faktist inte mycket svårare att implementera ett färdigt library till sin kod än vad det är att slänga på en färdig krets som man måste kommunicera mot. Vem har sagt att man måste skriva en hel FPU själv? Det finns ju såklart andra personer som redan har gjort det, precis på samma sätt som det finns folk som har gjort en "hårdvaru-FPU".
rehnmaak: Du får gärna berätta vad det är du försöker göra, och framförallt hur du gör det. Så kan vi kanske komma fram till en bättre lösning än att hänga på en uM-FPU.
EDIT: Vänta lite nu... Microblaze sa du... den har ju för guds skull en egen FPU? Då kan du ju glömma allt vad uM-FPU heter och liknande då Microblaze troligtvis skulle piska den rätt hårt i prestanda. Du måste nog gå upp till lite större grejer, typ en "riktig" FPU eller kanske implementera algoritmerna i en FPGA eller en snabb DSP.

Då är det nog verkligen inte rätt sätt att gå med att lägga till en extern LÅNGSAM FPU. Då skall du nog satsa på en FPU som klarar åtminstånde ett par hundra tusen beräkningar i sekunden. Du har inte funderat på att använda typ en DSP eller liknande? Eller kanske implementera det i en FPGA, för det har du väl redan?
> Det vore trevligt om man kunde få ner det till den hastigheten jag får om jag kör beräkningarna i PC:n dvs ett 10-tal sekunder...
Nu finns det två alternativ
1) Det finns inte en chans i världen att du skulle kunna få ner tiden från tre timmar till ett tiotal sekunder med en uM-FPU
2) Du har programmerat din microblaze helskumt och kan istället optimera koden där för att få beräkningarna _mycket_ snabbare
Micke_s: Sen får du ju också tänka på att det är faktist inte mycket svårare att implementera ett färdigt library till sin kod än vad det är att slänga på en färdig krets som man måste kommunicera mot. Vem har sagt att man måste skriva en hel FPU själv? Det finns ju såklart andra personer som redan har gjort det, precis på samma sätt som det finns folk som har gjort en "hårdvaru-FPU".
rehnmaak: Du får gärna berätta vad det är du försöker göra, och framförallt hur du gör det. Så kan vi kanske komma fram till en bättre lösning än att hänga på en uM-FPU.
EDIT: Vänta lite nu... Microblaze sa du... den har ju för guds skull en egen FPU? Då kan du ju glömma allt vad uM-FPU heter och liknande då Microblaze troligtvis skulle piska den rätt hårt i prestanda. Du måste nog gå upp till lite större grejer, typ en "riktig" FPU eller kanske implementera algoritmerna i en FPGA eller en snabb DSP.
Jo, microblaze har en egen FPU men den kör bara de fyra räknesätten. Jag skulle behöva exponentiering och logaritmer i hårdvara också.
Sedan vet jag inte om FPU:n i microblaze används öht eftersom beräkningarna görs med double som datatyp. Jag ska dock testa och kolla lite om FPU-instruktionerna används och eventuellt sänka precisionen till float istället.
EDIT:
Andax>>> Exekveringstiderna finns i Appendix B i databladet...
Sedan vet jag inte om FPU:n i microblaze används öht eftersom beräkningarna görs med double som datatyp. Jag ska dock testa och kolla lite om FPU-instruktionerna används och eventuellt sänka precisionen till float istället.
EDIT:
Andax>>> Exekveringstiderna finns i Appendix B i databladet...
Min gissning är att du gör beräkningarna på helt fel sätt.
T.ex trig och liknande funktioner kan ofta drivas upp i hastighet
genom lookuptabeller eller andra optimeringar. Har du verkligen
gjort en ordentlig analys av precision m.m som du behöver ?
Man kan få ganska hög precision med lookuptabeller kombinerat
med interpolleringsfaktorer och det slår alla rena matematiska
metoder med en 10-100 potens...
Min gissning är som sagt att du helt enkelt har löst det med fel metod.
Eller, det är ju uppenbart att det är fel metod, eftersom tiden blev för lång...
T.ex trig och liknande funktioner kan ofta drivas upp i hastighet
genom lookuptabeller eller andra optimeringar. Har du verkligen
gjort en ordentlig analys av precision m.m som du behöver ?
Man kan få ganska hög precision med lookuptabeller kombinerat
med interpolleringsfaktorer och det slår alla rena matematiska
metoder med en 10-100 potens...
Min gissning är som sagt att du helt enkelt har löst det med fel metod.
Eller, det är ju uppenbart att det är fel metod, eftersom tiden blev för lång...
