Forum: Mikrocontroller und Digitale Elektronik STM32 (nicht F4): Implementierung trigonometrischer Funktionen


von CORDIC? (Gast)


Lesenswert?

Was ist die schnellste Methode sin/cos auf einem STM32 ohne FPU (=> in 
Fixpunktarithmetik) zu berechnen? CORDIC oder ein anderes Verfahren?

Wenn ich das richtig sehe braucht Cordic für 16bit mindestens 96 add/sub 
und 32 shifts, dazu den Schleifenoverhead, Speicherzugriff und 
letztendlich auch die Fallunterscheidung für die Bereiche.

Ich vermute also, dass andere Approximationen schneller sind, besonders 
mit "single cycle" Multiplikation?

In der CMSIS gibt es ja ein paar Funktionen dafür, von denen jede aber 
anders implementiert ist und verglichen mit CORDIC alle recht viel 
Speicher brauchen. Aber liege ich richtig damit, dass die Entwickler des 
Prozessors diesen auch am besten kennen und damit die optimale Lösung 
haben?

von chris_ (Gast)


Lesenswert?

Wenn Du eine fortlaufende Schwingung bräuchtest, dann so:
Beitrag "Re: minimalistische Berechnung einer Sinusschwingung"

von Helmut S. (helmuts)


Lesenswert?

Am schnellsten geht das mit einem Polynom, wenn der Prozessor eine 
schnelle 32x32 Multiplikation kann. Das soltte der ARM können. 
Alternativ mit Tabelle und quadratischer Interpolation.

Cordic ist nur dann schneller, wenn der Prozessor keinen 
Hardware-Multiplizierer mit der gewünschten Wortbreite hätte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.