STM32 (nicht F4): Implementierung trigonometrischer Funktionen

Gast #3545098
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?
#3545198
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren