Forum: Digitale Signalverarbeitung / DSP / Machine Learning Takte der arctan Fkt und andere


von Alex (Gast)


Lesenswert?

hallo,

ich will ne winkelauswertung eines drehgebers realisieren.

das kann  man über eine nachlaufsteuerung und einem zähler realiseren
oder aber durch direkte berechnung des

winkel=> arctan=sin(x)/cos(x) aus den resolversignalen.

wenn man sich für die zweite variante entscheidet, stellt sich die
frage wie lange (wieviel taktzyklen) ein dsp dafür braucht.
danach würde sich auch die auswahl des eventuellen dsp's richten, wenn
es nicht bei dieser einen berechnung bleiben soll.

woher weiß man generell wie solche prozessoren bestimmte rechenbefehle
ausrechnen?
arctan kann man zum beispiel in einer reihe entwickeln, so dass dann
nur noch addition und multiplikation übrig bleibt, was ein dsp gut
rechnen kann. macht dies ein auf dsp zugeschnittener compiler?
also leute mit erfahrung werden über die frage lachen, würde mich
dennoch für tips und hinweise bedanken...

danke

gruß alex

von Alex (Gast)


Lesenswert?

arctan=sin(x)/cos(x)

Nicht wirklich ...

Ein gängiger DSP benötigt dafür genauigkeitsabhängig keine 100 Takte.
Typische Taktfrequenzen liegen zwischen 80 ... 400MHz. Basisfunktionen
werden z.T. mitgeliefert (je nach Hersteller).

von Detlef A (Gast)


Lesenswert?

Hallo,

wenn Du z.B. nen AVR (uC, nicht mal DSP) in C programmierst und
atan2((double)y,(double)x) benutzt, werden die benötigten Routinen aus
einer library zugelinkt, das kostet 1k codesize pi*Daumen, Berechnung
dauert auch, muß man sich aber nicht um Reihenentwicklungen etc.
kümmern, selbst ein solch kleiner 8-Bitter kann das gut, wenn man Zeit
und Platz hat.

Den ersten Teil der Frage verstehe ich nicht richtig
(tan(x)=sin(x)/cos(x), was issn nen Resolver), ich habe aber ne prima
C-Routine, die Dir aus zwei 16-Bit y,x den Winkel dazwischen als
16Bit-Zahl berechnet, recht schlank und ohne Multiplikationen, wenn die
nützt, kann ich die posten.

Cheers

von Alex (Gast)


Lesenswert?

"recht schlank und ohne Multiplikationen"

Lass mich raten, das Cordic-Verfahren?

Sobald die reale Hardware über einen Multiplizierer verfügt ist diese
Variante im Vergleich zu Reihe usw. nicht mehr praktikabel ...
Auf FPGAs u.Ä. hat sie jedoch ihre Berechtigung.

Eine Reihenentwicklung wird in den gängigen Bibliotheken eher nicht
verwendet. Besser ist es, mittels der Methode der kleinsten Quadrate
ein Polynom "durch" charakteristische Punkte der Ursprungsfunktion zu
legen.

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.