Hallo zusammen,
weiß jemand, ob es Mathe IC´s gibt, mit denen man z.B. schwache oder
mittelstarke µC "mathematisch upgraden" kann?
Also z.B. ansprechbar über UART, I2C oder SPI. Also so, dass man
Argumente übermittelt und ein Ergebnis zurück bekommnt. Ich brauche
SQRT
SIN
ArcSin
Google hilft mir mit "Math IC" nicht wirklich weiter.
viele Grüße!
Die Zeit der Mathe-Coprozessoren ist seit Jahrzehnten vorbei.
Welchen Prozessor hast du, dass er für simple Funktionen zu schwach ist?
Selbst, wenn es einen passenden IC gäbe, was meinst du, wie lange das
Übertragen der Befehle, Argumente und Resultate dauern würde im
Vergleich zur direkten Berechnung?
Früher nannte sich so etwas Coprozessor oder Arithmetikprozessor und
wurde für viel Geld als Zusatz z.B. in PCs verbaut. 8087, 80287 und
80387 waren verbreitete Typen für 8088/86, 80286 und 80386.
Bei 68k-Prozessoren gab es korrespondierend 68881 und 68882.
Heutzutage wird die Floatingpoint-Fähigkeit allerdings üblicherweise
gleich in den eigentlichen Prozessorkern eingebaut, was auch daran
liegt, daß das Übertragen der zu berechnenden Daten und des Ergebnisses
länger dauert als das eigentliche Berechnen.
Mathematische Coprozessoren...
...die sind aber eher als Begleiter ihrer Prozessorbrüder designed
worden.
8086/8087
80286/80287
80386/80387
https://de.wikipedia.org/wiki/Koprozessor
Chefkoch schrieb:> weiß jemand, ob es Mathe IC´s gibt, mit denen man z.B. schwache oder> mittelstarke µC "mathematisch upgraden" kann?
gab es früher, heute nicht mehr.
Ein schnellerer µC ist billiger. Nimmt man halt keinen AVR mit 20MHz,
sondern einen ARM mit 200MHz und dann geht es auch ohne Mathe IC
In hartnäckigen Fällen helfen DSPs oder gleich ein FPGA.
Chefkoch schrieb:> Also z.B. ansprechbar über UART, I2C oder SPI. Also so, dass man> Argumente übermittelt und ein Ergebnis zurück bekommnt. Ich brauche> SQRT> SIN> ArcSin
Gab es früher zu 80286 Zeiten mit der 287 FPU.
Heute hat man in einem Cortex-M4 etwa die 10-fache Rechenleistung eines
früheren PC-AT/286. Da ist die FPU eingebaut. Wenn du daher Mathematik
in einem schwachbrüstigen uC benötigst fällt mir heute ein:
a) entsprechende MATH-Libs verwenden sofern die Rechenzeit das erlaubt
b) entsprechenden uC verwenden der FPU an board hat.
Alles andere ist Behelf.
rgds
Allgemeine Mathematik mag uninteressant sein für Co Prozessoren.
Aber für Spezielaufgaben gibt es nach wie vor spezielle Prozessoren.
Atmel hatte zb. spezielle Chipkarten auf AVR Basis mit eingebauten
encryption/decryption Hardware.
Damit kann man Daten sehr schnell verschlüsseln und entschlüsseln,
schneller und energiesparender als es ein PC machen kann. Da lohnt es
sich schon; Daten zur Berechnung zu übergeben und das Ergebnis
zurückzuholen.
Diese Karten bekommt man nicht leicht, es war ein richtiger Papierkrieg
notwendig, um die importieren zu können.
Peter D. schrieb:> Einfach nur:#include <math.h>> Und wenn es schneller sein soll, dann bringt es nichts, wenn Du es erst> umständlich über die UART schaufeln mußt.
reicht nicht immer, eigentlich muss man dem Compiler mit -lm sagen das
er die Mathebibliothek mitlinken soll.
Es gibt tatsächlich noch Rechenknechte für schwachbrüstige Controller:
http://micromegacorp.com/products.html
Ob sich solch ein Käfer bei den Preisen und Rechenleistungen von
ARM-basierten Controllern lohnt...
Bernhard D. schrieb:> Es gibt tatsächlich noch Rechenknechte für schwachbrüstige Controller:>> http://micromegacorp.com/products.html
Da kann man sich aber auch einen ATtiny85 oder ATmega88 passend
programmieren; mit dem 'richtigen' Compiler werden auch 64 bit double
verarbeitet.
hinz schrieb:> Wenn es topmodern sein soll: Am9511.
Interessant das Teil, eine Stack machine, wäre gut für Sprachen wie
Forth.
Aber hochmodern?
1977?
Aus Sicht einer 6502 CPU vielleicht schon ... :D
Bernhard D. schrieb:> Es gibt tatsächlich noch Rechenknechte für schwachbrüstige Controller:>> http://micromegacorp.com/products.html
Das ist ein dsPIC33 (vermutlich ein dsPIC33FJ32MC30x), und der hat noch
genügend Flash, RAM und I/Os frei, um die Aufgaben des schwachbrüstigen
Controllers, den er unterstützden soll, gleich mit zu erledigen. Dabei
fällt dann auch die zeitraubende I²C- bzw. SPI-Kommunikation weg.
Insofern verstehe ich den Sinn dieses Produkts nicht so ganz.
Yalu X. schrieb:> Bernhard D. schrieb:>> Es gibt tatsächlich noch Rechenknechte für schwachbrüstige Controller:>>>> http://micromegacorp.com/products.html>> Das ist ein dsPIC33 (vermutlich ein dsPIC33FJ32MC30x), und der hat noch> genügend Flash, RAM und I/Os frei, um die Aufgaben des schwachbrüstigen> Controllers, den er unterstützden soll, gleich mit zu erledigen. Dabei> fällt dann auch die zeitraubende I²C- bzw. SPI-Kommunikation weg.>> Insofern verstehe ich den Sinn dieses Produkts nicht so ganz.
Ich schon. Das ist für Leute, die sich nicht mit den Details der
Mathematik "die Finger schmutzig machen" wollen. Oder kürzer gesagt:
Leute die eigentlich den falschen Beruf ergriffen haben. Davon gibt es
einige. Viel zu viele, wenn ich in meiner Erinnerung krame.
Dampf T. schrieb:> So ganz nebenbei.. kann man Floatingpoint oft durch genaue Analyse des> Problems durch Integer ersetzten.
Ja, aber das Problem ist halt, dass der generische C-Verbrecher nix kann
außer geklauten Code notdürftig zusammen zu leimen. Eigene
Problemanalysen überfordern ihn maßlos, eigene Umsetzungen der
Ergebnisse erst recht. Was Wunder, i.d.R. beherrscht er ja nicht einmal
die selbst gewählte Sprache richtig. Eben nur gerade soweit, wie nötig,
um die C&P-"Programmierung" irgendwie notdürftig bewerkstelligen zu
können...
Nur deswegen hat er ja die Sprache gewählt: Es gibt da halt so
verführerisch viele kostenlose Wichsvorlagen, die allesamt suggerieren:
du brauchst nicht selber programmieren zu können und du brauchst auch
die Sprache nicht wirklich zu beherrschen...
Da gibt es auch noch OpAmps, lineare und logarithmische.
Spezialzahlen wie Pi und e, Materialkonstanten wie c, Avogadrozahl, eV,
usw. kann man gut vorgespeichert auf CD-ROM vorhalten, mit beliebig
vielen Nachkommastellen.
Sinus und Cosinus greift man Zeitsynchron per ADC von einem Oscillator
ab, der darf einfach nicht langsam sein.
Sonst: Nachhilfe in diskreter Numerik und Algorithmen .
> Ja, aber das Problem ist halt, dass der generische C-Verbrecher ...> Nur deswegen hat er ja die Sprache gewählt: ...
Ich verstehe (u.a. aus vielen Beiträge in diesem Forum) das C
eigentlich immer deshalb gewählt wird, weil man schliesslich damit
(und nur mit C) sooo tief und systemnah programmieren tut.
Das soll jetzt im Bereich mathematische Berechnungen nicht mehr gelten?
Komisch...
Zum Glück hab ich noch einen funktionierenden HP-16c da!
Thomas W. schrieb:> Aber hochmodern?>> 1977?
Heh! Der Am9511 auf Erweiterungskarten im Apple II hat mitgeholfen das
Space Shuttle zu bauen. Etwas mehr Respekt bitte!
;)
Axel S. schrieb:>> Insofern verstehe ich den Sinn dieses Produkts nicht so ganz.>> Ich schon. Das ist für Leute, die sich nicht mit den Details der> Mathematik "die Finger schmutzig machen" wollen.
Wieso braucht man, um die Sinusfunktion aus einer Bibliothek aufzurufen,
mehr mathmatische Details, als wenn man sie von einem externen Prozessor
berechnen lässt?
DAS Produkt schlechthin für alle Koprozessorhörigen war natürlich der
Intel i487, der dann sogar den Hauptprozessor (i486SX) deaktiverte. Aber
Hauptsache, man hatte einen separaten Korpozessor statt sich gleich
einen i486 zu kaufen.
Achim S. schrieb:> Für 1/sqrt gibt es übrigens eine superschnelle Formel.> https://en.wikipedia.org/wiki/Fast_inverse_square_root
Da gibt es zig papers, das Prinzip lässt sich auf vieles erweitern, was
auf log2(n) rückführbar ist.
Dazu muss man unter Umständen nicht mal auf float32 wandeln, sondern
hält Mantisse und Exponent einzeln in z.B. einer Struktur.
mfg mf