Hallo,
meine Frage ist eigentlich ganz einfach: Gibt es einen µC, am besten
einen mit gcc-Port, der einen mathematischen Koprozessor hat bzw.
schnell mit Gleitkommazahlen rechnen kann, aber NICHT so ein Riesen-SoC
ist, der externes SDRAM braucht und externes Flash etc.?
Hintergrund ist, ich möchte eine eigene GPS-Lösung rechnen, da kommt man
um Gleitkommazahlen nicht drum rum. Ich brauche kein Betriebssystem und
keine komplexe Peripherie, und auch nicht besonders viel Speicher. Nur
halt Rechenpower.
du bist sicher, daß Festkommazahlen nicht reichen?
Ok, falls sich die Erde unerwartet um mehrere Zehnerpotenzen dehnt,
könnten Gleitkommazahlen sinnvoll sein.
Bernd H. schrieb:> Hintergrund ist, ich möchte eine eigene GPS-Lösung rechnen, da kommt man> um Gleitkommazahlen nicht drum rum.
Eigene ballistische Interkontinentalraketen?
Klaus Wachtler schrieb:> Ok, falls sich die Erde unerwartet um mehrere Zehnerpotenzen dehnt,> könnten Gleitkommazahlen sinnvoll sein.
Dann sollte er aber schnell sein, damit er mit der Rechnung fertig ist,
bevor sie platzt
MfG Klaus
Man kann auch ohne FPU mit Fiesskommazahlen rechnen. Und bei 32-Bittern
ist das noch nicht einmal sonderlich langsam.
Aber wenn dir danach gelüstet, die ziemliche frischen STM32F4 haben eine
single precision FPU an Bord. Nun bleibt natürlich die Frage, ob single
precision ausreicht.
Ihr habt bestimmt alle schon einmal eine GPS-Lösung rein mit
Festkomma-Arithmetik implementiert und wollt sie mir gerne zeigen?
Scherz beiseite, die Ephemeris-Daten kommen zum großen Teil mit 32 bit
Auflösung rein, die Pseudorange- und Phasenmessungen kommen mit 64 bit
Auflösung. Und darauf muss man dann eine Unmenge trigonometrischer
Funktionen werfen.
Natürlich lässt sich jede Aufgabe auch in Festkomma-Arithmetik lösen,
das will ich nicht bestreiten. Es ist halt nur nicht immer sinnvoll.
Eine GPS-Positions-Berechnung gehört wohl ganz sicher in die Schublade
"du willst eine FPU benutzen".
Es gibt einen gut eingeübten Forenreflex, der bei Erwähnung von
Fliesskommarechnung sofort mit "nimm Festkommarechnung" antwortet. Ohne
gross nachzudenken, denn oft stimmt es auch. Aber eben nicht immer, und
das hier dürfte so ein Fall sein.
Dieses "um Himmels willen keine Fliesskommarechnung!" hat auch damit zu
tun, dass Zwerge wie ein ATmega8 dafür recht viel wertvolles Flash
opfern müssen. Wenn man allerdings 128KB Flash hat und einen 32-Bit Core
mit Barrelshifter, dann relativiert sich das und der Vorteil von
Festkommarechnung schwindet.
Single precision reicht leider nicht aus.
Viele GPS-Module sind ARM-basiert und nutzen - nehme ich zumindest an -
soft float. Allerdings rechnen die preiswerten Module keine
Phasenlösung, und auch nur mit einer Frequenz von 1 bis 5 Hertz.
Da bleibt der Rechenaufwand in Grenzen. Möglicherweise machen sie sogar
zumindest in Teilen des Algorithmus Festkomma-Arithmetik.
Das taugt bei mir aber nicht, da ich die Hardware nutzen möchte, um
einen Algorithmus zu entwickeln und zu verfeinern. Bei
Festkomma-Arithmetik müsste ich mir bei jeder kleinen Änderung wieder
Gedanken über die Skalierung machen, das möchte ich gerne vermeiden.
Warum nicht auf dem PC? Das Teil soll in einem UAV mitfliegen.
in einem projekt lasse ich mehrere iir-filter mit double laufen, im
kHz-Bereich. ARM7, 72 MHz. double war kaum langsamer als float. ein
cortex M3 mit 100 MHz bringt nochmal ein klein wenig.
Eine PC-Stromschleuder ? Die ist noch weit weg. Nimm einem AVR32UC3C,
der hat eine FPU. Und falls die Aufloesung nicht taugt kann man mit
einer Software library nachhelfen.
A. K. schrieb:> Es gibt einen gut eingeübten Forenreflex, der bei Erwähnung von> Fliesskommarechnung sofort mit "nimm Festkommarechnung" antwortet. Ohne> gross nachzudenken, denn oft stimmt es auch.
Und eben deshalb lohnt sich die Nachfrage, ob es wirklich sein muß.
Als Maschinenbauer bin ich der Letzte, der Gleitkommarechnung
prinzipiell ablehnt.
Aber Nachhaken ist immer sinnvoll, schließlich gibt eine FPU nicht
umsonst und ohne FPU ist Festkomma schneller.
Bernd H. schrieb:> schnell mit Gleitkommazahlen rechnen kann
Gehts nicht konkreter?
Ich geh ja auch nicht zum Geldautomaten und gebe ein: "viel", sondern
einen bestimmten Wert.
Wie oft kommen neue Daten rein, wieviele Millionen Rechenschritte müssen
damit gemacht werden und wie schnell muß ausgegeben werden?
Wenn es aber nur für einen Menschen ist, dann kann das jeder 4Bitter
schnell genug. Der Mensch kann nur sehr langsam ablesen (2..5 Werte/s).
Peter
Bernd H. schrieb:> aber NICHT so ein Riesen-SoC> ist, der externes SDRAM braucht und externes Flash etc.?
Die "powervollste" Lösung in DIL und TQFP wäre wohl ein Propeller Chip,
8 CPU @ 80mhz, overclocking ~110Mhz ohne Probleme.
Das Problem dabei wird aber der gcc sein, der noch in Arbeit ist, und
vor allem holst du dir mit so einem Chip was Propritäres, es gibt keinen
"kompatiblen" Nachfolger mit mehr Leistung, ...
Was hast du gegen SoCs? Die gibts ja auch auf (neudeutsch:)
"Breakout-Boards" und sehr auf Energie Sparen bedacht, komplett mit
allem drauf, was dazu gehört.
Ältere PC104 mit P2/3/Celeron/Athlon/... gibts auch für 15...50 Euro.
Leider ist man da gleich mal bei 20...30 Watt nur für den Rechner.
Ein micro2440/mini2440 ohne Display wär vielleicht eine gute Lösung. Du
hast ein Betriebssystem, gcc, eine Hardware-Basis mit richtig Power und
es ist billig.
Noch Leistungsfähigere Boards sind gerade am kommen, solangsam werden
die auch bezahlbar.
Meine Meinung, mit einem kleinen SoC oder ARM-Board wirst du am
glücklichsten und kostet wahrscheinlich genausoviel, als wenn du selber
anfängst Platinen zu machen - mit Lochraster und Steckbrett wirst du bei
der Leistung nicht weit kommen.
Nils S. schrieb:> Die "powervollste" Lösung in DIL und TQFP wäre wohl ein Propeller Chip,> 8 CPU @ 80mhz, overclocking ~110Mhz ohne Probleme.
Wenn schon in dieser Richtung, dann XMOS. Die single Core Version (4
Threads a 100MHz) gibts in LQFP.
> aber NICHT so ein Riesen-SoC> ist, der externes SDRAM braucht und externes Flash etc.?
Das muß man ja nicht alles selber löten, gibts auch als fertiges Board
an das man "nur" noch seine serielle Konsole und seine Hardware
anschließen muß, mit einem Embedded Linux vorinstalliert. Z.B.
http://www.taskit.de/produkte/stamp9g45/index.htm
Da könnte Software-Float schnell genug sein.
Nano Oschi schrieb:> Eine PC-Stromschleuder ? Die ist noch weit weg. Nimm einem AVR32UC3C,> der hat eine FPU. Und falls die Aufloesung nicht taugt kann man mit> einer Software library nachhelfen.
Habe ich das noch richtig in Erinnerung, dass die FPU dort nur vom IAR
unterstützt wird, während der GCC momentan noch keine FPU-Unterstützung
dafür hat, oder hat sich das inzwischen geändert?
fchk
klausr schrieb:> Hat noch keiner die neuen Cortex-M4 genannt? Demo Board z.B. das STM32F4> Discovery. Natürlich kann diskutieren, ob man wirklich eine FPU> braucht...
Doch, und sie haben nur eine Single-Precision-FPU, was dem Fragesteller
nicht ausreicht. double muss es sein.
fchk
Warum muss es denn eine FPU sein?
Bei 1s Zyklus wäre auch bei umfassenden Berechnungen eine Soft FPU
ausreichend.
Vielleicht sogar 4-fach genau: http://www.nongnu.org/hpalib/
Danke für eure Tipps, ich komme gar nicht mehr hinterher mit dem
Datenblatt klicken. Ich denke, etwas passendes ist wahrscheinlich schon
dabei.
Wer sagt, dass das GPS-Signal einmal pro Sekunde reinkommt? Das Signal
kommt kontinuierlich rein, und zwar kommen da ziemlich genau
1.575.420.000 Vollwellen pro Sekunde, von deren jede auf Bruchteile von
Grad aufgelöst werden kann.
Nochmal: Ich möchte nicht NMEA-Daten von einem GPS-Modul entgegennehmen
und damit rechnen, sondern ich möchte eine Phasenlösung aus den Rohdaten
errechnen, und zwar möglichst mit 10 Hz.
Renesas RX610 z.B. R5F56108 mit 2 MiB Flash (wenn man Platz für Tabellen
braucht ;-)) und 128 kiB SRAM on board, FPU (single precision) + einige
DSP-Befehle.
Liegt mit dem GCC (KPIT GNURX) beim Coremark/MHz
http://www.coremark.org/benchmark/index.php
deutlich vor allen Cortex-M3, die M4s (z.B. Freescales Kinetis) sind
z.Z. nur mit dem Green Hills Compiler schneller...
(bei den Messwerten muss man trotzdem aufpassen, da einige Controller
nur bei der Codeausführung aus dem SRAM so schnell sind bzw. das Flash
nicht schnell genug ist...)
Bernd H. schrieb:> Das Signal> kommt kontinuierlich rein, und zwar kommen da ziemlich genau> 1.575.420.000 Vollwellen pro Sekunde, von deren jede auf Bruchteile von> Grad aufgelöst werden kann.
und wie willst du das mathematisch machen? Das ist HF und auch im
Spreizbandverfahren. Du geht eine Phasenwinkelmessung doch nur in
Hardware.