Schnell rechnen mit Gleitkomma, welcher µC?

Gast #2480512
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.
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.
Gast
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.
Gast
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.
Gast
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.
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
Persönliche Seite
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.
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
Gast
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...)
Joe Redfish schrieb:
> Da Du bisher noch nicht wissen kannst welche Rechenleistung wirklich
> benötigt wird, wäre eine skalierbare Plattform nützlich.
>
> Letzter Versuch, dann habt Ihr Ruhe vor mir...
>
> Das (kostenlose) MPLAB hat auch einen Emulator und Soft FPU. Mal schnell
> zum testen...
>
> 
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

Gibt's von Renesas/KPIT Cummins auch...und kann, wie die div. Compiler 
für die ARMs, auch C++
http://am.renesas.com/tool/
http://www.kpitgnutools.com/
günstige Eval-Kits inkl. JTAG-Debugger z.B.
http://www.glyn.de/News-Events/Presseinformation?Seite=3772

An den TO:
Cortex-A8 auf einem SO-DIMM falls die bisherigen Vorschläge nicht 
reichen
http://www.glyn.de/data/glyn/media/doc/TX53-Datasheet.pdf
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.