Hardware Reference
In-Depth Information
den Sinus und den Kosinus berechnet - ist eine Stufe komplexer und selbst
für einen erfahrenen Entwickler kaum noch ohne Zwischenschritte mit simu-
lierbaren Teilergebnissen zu lösen.
Schritt 1: Ableitung des Algorithmus aus der Aufgabenstellung
Der gebräuchliche Algorithmus für die Berechnung von Winkelfunktionen ist
ein CORDIC [39]. Das Akronym CORDIC steht für
Co
ordinate
R
otation
Di
omputer und beschreibt einen Algorithmus, der genau wie der Di-
visionsalgorithmus in Abschnitt 2.6.5 im Wesentlichen aus Additionen und
Verschiebeoperationen besteht. Die Grundidee ist ein rotierender Zeiger in
einem kartesischen Koordinatensystem. Wie aus Abb. 3.35 ablesbar ist, erge-
ben sich die Koordinaten eines rotierenden Vektors aus dem Produkt einer
Rotationsmatrix mit dem Startvektor:
gital
C
!
!
!
x
i+1
y
i+1
cos (
i
) sin (
i
)
sin (
i
)
x
i
y
i
=
cos (
i
)
x
i
= cos ()
y
i
= sin ()
x
i+1
= cos ( +
i
) = cos ()
y
i
+1
1
cos (
i
)
sin ()
sin (
i
)
y
i
φ
i
sin (
i
)
y
i+1
= sin ( +
i
) = cos () sin (
i
) + sin () cos (
i
)
= x
i
sin (
i
) + y
i
cos (
i
)
= x
i
cos (
i
)
y
i
α
0
0
x
i
+1
x
i
1
Abb. 3.35. Rotation eines Zeigers der Länge eins in einem Koordinatensystem
Bei dem CORDIC-Algorithmus wird der Drehwinkel aus einer festen An-
zahl konstanter Winkelschritte abnehmender Größe zusammengesetzt und je-
weils der zugehörige Sinus- und Kosinus-Wert berechnet (Abb. 3.36). In jedem
Schritt besteht die Möglichkeit, den nächstkleineren Winkelschritt zu addieren
+φ
0
−
φ
1
+φ
2
+φ
3
...
+φ
0
−
φ
1
−
φ
2
+φ
3
...
φ
φ
φ
z
φ
z
0 1 2 3 ...
Iterationsschritt
0 1 2 3 ...
Iterationsschritt
Abb. 3.36. Schrittweise Annäherung an den Zielwinkel durch Addition oder Sub-
traktion konstanter Winkelschritte abnehmender Größe