VHDL - CORDIC Verfahren

Ähnliche Dokumente
Dynamische Systeme und Zeitreihenanalyse // Komplexe Zahlen 3 p.2/29

1. Definition der trigonometrischen Funktionen für beliebige Winkel

3.2. Polarkoordinaten

Definition von Sinus und Cosinus

2.3.4 Drehungen in drei Dimensionen

Lösung 05 Klassische Theoretische Physik I WS 15/16. y a 2 + r 2. A(r) =

KAPITEL 1. Komplexe Zahlen

Passerelle. Beschrieb der Fach-Module. von der Berufsmaturität. zu den universitären Hochschulen

Die elementaren trigonometrischen Funktionen und ihre Umkehrfunktionen sind: Funktion Kurzzeichen Umkehrfunktion Kurzzeichen Sinus

Mathematik für Naturwissenschaften Aufgaben mit Ergebnissen Differenzialrechnung

27 Taylor-Formel und Taylor-Entwicklungen

Die Bedeutung der Areafunktionen

Addition, Subtraktion und Multiplikation von komplexen Zahlen z 1 = (a 1, b 1 ) und z 2 = (a 2, b 2 ):

1 Fraktale Eigenschaften der Koch-Kurve

Brückenkurs Mathematik. Mittwoch Freitag

Mathematische und statistische Hilfsmittel für Pharmazeuten

Mathematik = x 2 + x 2 = x + x 2 25x = 146 x =

Lineare Algebra. Mathematik II für Chemiker. Daniel Gerth

Informationsblatt für den Einstieg ins 2. Mathematikjahr AHS Kursleiter: Manfred Gurtner

Multiplikation und Division in Polarform

Trignonometrische Funktionen 6a

Aufgabe 1: Geben Sie die Nullstellen der Funktion f(x) = sin (3x 2

Differentialgleichungen. Aufgaben mit Lösungen. Jörg Gayler, Lubov Vassilevskaya

3. DIE EXPONENTIALFUNKTION UND VERWANDTES

Mathematischer Vorkurs für Physiker WS 2012/13: Vorlesung 1

2.9 Die komplexen Zahlen

Formelsammlung spezieller Funktionen

Zusammenfassung Vektorrechnung und Komplexe Zahlen

Theoretische Physik 1, Mechanik

Themen des schulinternen Curriculums Mathematik

Selbsttest Mathematik des FB 14 der Universität Kassel

mentor Lernhilfe: Mathematik 10. Klasse Baumann

Arbeitsblatt 1 Einführung in die Vektorrechnung

12 3 Komplexe Zahlen. P(x y) z = x + jy

Analytische Geometrie - Schnittwinkel. u 1, u 2 Richtungsvektoren der Geraden

Einleitung 2. 1 Koordinatensysteme 2. 2 Lineare Abbildungen 4. 3 Literaturverzeichnis 7

2.3 Exponential- und Logarithmusfunktionen

11 Spezielle Funktionen und ihre Eigenschaften

Lösung zur Übung 1. In einem Würfel der Kantenlänge a wird ein Methanmolekül so platziert, dass das Kohlenstoffatom. r = a 2. d = 2 a (3) 2 = 2 a (4)

Mathematik für Ingenieure mit Maple

Mathematik für Anwender I

Matrizen und Drehungen

Mathematik 1 für Naturwissenschaften

= 2 i 2= 2 2 i, z 4. = 1.5, z 8

Körper sind nullteilerfrei

++ + = 0 so erhält man eine quadratische Gleichung mit zwei Variablen dx+ey+f = 0 1.1

KOMPLEXE ZAHLEN UND LINEARE GLEICHUNGSSYSTEME

Inhaltsverzeichnis. 1 Lineare Algebra 12

1.1. Geradengleichung aus Steigung und y-achsenabschnitt

Trigonometrische Funktionen

Vektoren. Kapitel Skalare, Vektoren, Tensoren. 3.2 Vektoren

Musterlösung zu Blatt 12 der Vorlesung Analysis I WS08/09

Microsoft Rechner. Kurzanleitung ohne Maus

Wiwi-Vorkurs Mathematik (Uni Leipzig, Fabricius)

Formelsammlung Mathematik Grundkurs Inhalt

Vektoralgebra Anwendungen der Vektorrechnung VEKTORRECHNUNG. Prof. Dr. Dan Eugen Ulmet. Hochschule Esslingen 1/64

Vektoren, Vektorräume

1. ( e -x + e -(- x) 1. . ( e x + e - x ) . ( e x - e - x 2. Institut für Automatisierungstechnik Prof. Dr. Ch. Bold Analysis Übung 15 Folie 1

ELEMENTAR-MATHEMATIK

Skriptum zum Praktikum Einführung in die Mathematik 2

Analysis I für Studierende der Ingenieurwissenschaften

K. Eppler, Inst. f. Num. Mathematik Übungsaufgaben. 3. Übung: Woche vom bis

Didaktik der Analysis und der Analytischen Geometrie/ Linearen Algebra

11.3 Komplexe Potenzreihen und weitere komplexe Funktionen

Komplexe Funktionen. für Studierende der Ingenieurwissenschaften Technische Universität Hamburg-Harburg. Reiner Lauterbach. Universität Hamburg

Der Graph einer Funktion ist eine Kurve in einem ebenen Koordinatensystem.

Blatt 10. Hamilton-Formalismus- Lösungsvorschlag

Vorkurs der Ingenieurmathematik

Trigonometrie. In der Abbildung: der Winkel 120 (Gradenmaß) ist 2π = 2π (Bogenmaß).

13 Die trigonometrischen Funktionen

Kurt Meyberg Peter Vachenauer. Höhere Mathematik 1. Differential- und Integralrechnung Vektor- und Matrizenrechnung

Skalarprodukt und Orthogonalität

Teil I.2 Lösen von Bestimmungsgleichungen

Geometrie. 1 Vektorielle analytische Geometrie der Ebene, Kegelschnitte

Teleskopreihen und -produkte

Trigonometrische und hyperbolische Funktionen

Kurven nach Formeln erstellen, Teil 3

Mathematik für Physiker 1

E. AUSBAU DER INFINITESIMALRECHNUNG 17. UMKEHRFUNKTIONEN (INVERSE FUNCTION)

Formelsammlung Analytische Geometrie

Erwin Grüner

Algorithmen zur Division

Analysis 1, Woche 3. Komplexe Zahlen I. 3.1 Etwas Imaginäres

Mathematik anschaulich dargestellt

= = = 3 10 = = 33

Mathematik 1. ^A Springer. Albert Fetzer Heiner Fränkel. Lehrbuch für ingenieurwissenschaftliche Studiengänge

Beispiel: Bestimmung des Werts 3 2 ( 2 1, 4142) Es gilt 3 1,41 = 3 141/100 = , 707. Es gilt 3 1,42 = 3 142/100 = , 759.

Wiederhole eigenständig: elementare Konstruktionen nach diesen Sätzen

1 Vorlesungen: und Vektor Rechnung: 1.Teil

Geometrie. Bei der Addition von Vektoren erhält man einen Repräsentanten des Summenvektors +, indem man die Repräsentanten von aneinanderfügt:

VHDL - Grundlagen des Pointrenderings

Algorithmen zur Integer-Multiplikation

KREISFUNKTIONEN. Allgemeines

1 ALLGEMEINE HINWEISE Das Fach Mathematik für Wirtschaftswissenschaftler Bisheriger Aufbau der Klausur...

Transkript:

VHDL - CORDIC Verfahren Marc Reichenbach und Michael Schmidt Informatik 3 / Rechnerarchitektur Universität Erlangen Nürnberg 04/12 1 / 30

Gliederung Motivation und Geschichte des CORDIC-Verfahrens CORDIC-Verfahren Der verallgemeinerte CORDIC 2 / 30

Motivation oft Standardfunktionen benötigt meistens nur mit hohem Aufwand zu berechnen spezielle iterative Algorithmen ohne Verwendung von Multiplikationen dadurch Einsparung von Chipfläche 3 / 30

Standardfunktionen Sinus Cosinus Tangens Exponentialfunktion Logarithmusfunktion Arcus- und Areafunktionen Quadratwurzel Multiplikation, Division 4 / 30

Einsparung von Chipfläche Multiplikationen sehr zeitintensiv Multiplikationswerke sehr groß Technologien damals LSI, MSI, SSI: Anzahl der Transistoren begrenzt Technologien heute Verwendung schneller Multiplizierer Einsatz in platzkritischen Technologien wie FPGA Einsatz bei massiv parallelen Architekturen 5 / 30

Alternative Technologien Lookup-Tabellen viel Platzverbrauch für jede Funktionen eine eigene notwendig Interpolation zwischen den Werten BKM (Bit) Algorithmen iterative shift-and-add Algorithmus nur für Logarithmus- und Expotentialfunktionen geeignet Taylorreihe Beispiel Sinus an a = 0: sin(x) = x + x 3 3! + x 5 5! + x 7 7! + x 9 9!... benötigt auch Multiplikationen 6 / 30

CORDIC Entwicklung CORDIC-Verfahren von Volder (1959) und Walther (1971) entwickelt Konvergenzverfahren auf Basis von Koordinatentransformation Verfahren benötigt nur einfache Operationen Addition (RCA) Schiebeoperationen (Multiplexer) Abfragen (Multiplexer) Tabellenzugriff (ROM, Counter) alle Standardfunktionen damit umsetzbar 7 / 30

CORDIC - Veröffentlichungen und Einsatz Volder 1959: The CORDIC Trigonometric Computing Technique. sin, cos, arctan, sqrt CORDIC - coordinate rotation digital computing Walther 1971: A unified algorithm for elementary functions. sinh, cosh, e, ln, div Einsatz in den ersten Generationen der HP Taschenrechner CORDIC-Prozessor als ASIC in Roboter-Steuergung: Timmermann et al.: A CMOS floating-point vector-arithmetic unit 8 / 30

Prinzip des CORDIC-Verfahren Berechnung Sinus bzw. Cosinus wird auf Koordinatentransformationen zurückgeführt Drehung eines Vektors (x 0, y 0 ) um einen Winkel Θ in einen Vektor (x n, y n ) mathematisch durch Multiplikation mit sog. Rotationsmatrix durchführbar (x n,y n ) Θ xn y n ] ] cos Θ sin Θ = sin Θ cos Θ x0 y 0 ] (x 0,y 0 ) 9 / 30

CORDIC - Sinus und Kosinus durch Drehung des Vektors (1, 0) um Θ ist sin Θ und cos Θ berechenbar xn ] ] y n cos Θ sin Θ = sin Θ cos Θ ] 1 0 sin Θ (x n,y n ) Θ cos Θ (1,0) 10 / 30

CORDIC - Umformung in den Tangenz durch mathematische Umformung nur noch Abhänigkeit von einer Winkelfuntion tan Θ wichtig um Multiplikationen durch Schiebeoperationen nach rechts zu ersetzen Drehung um den Winkel Θ wird nun durch Folge von Drehungen um Teilwinkel α i realisiert xn y n ] = xn y n ] ] cos Θ sin Θ = sin Θ cos Θ cos Θ = 1 1 + tan 2 Θ 1 1 + tan 2 Θ x0 y 0 ] ] 1 tan Θ tan Θ 1 x0 y 0 ] 11 / 30

CORDIC - Einführung Teilwinkel Teilwinkel α i sind bereits vorab definiert Teilwinkel so gewählt, dass der gewünschte Winkel Θ als Linearkombination der Teilwinkel α i darstellbar ist n 1 Θ = σ i α i σ i { 1, 1} i=0 d.h., der Winkel Θ wird durch eine alternierende Approximation angenährt bedeutet, dass man vor- und zurückdreht ist man bei einer Teildrehung zu weit gegangen, d.h. über den Winkel Θ hinaus, so muss man im nächsten Schritt wieder zurückdrehen die Drehrichtung wird durch den Parameter σ i gesteuert 12 / 30

CORDIC - Linearkombination der Teilwinkel zur Steuerung des Vorzeichens bzw. der Drehrichtung wird Hilfsvariable z i eingeführt z 0 wird mit dem gewünschten Drehwinkel Θ initialisiert Θ α 1 α 1 +α 2 α 1 +α2+α3 α 1 +α 2 +α 3 -α 4 α 4 (x n,y n ) α 3 α 2 α 1 Θ z 0 = Θ (1,0) { 1 z i 0 z i+1 = z i σ i α i σ i = 1 z i < 0 13 / 30

CORDIC - Eliminierung der Multiplikationen Mathematischer Ausdruck einer Teildrehung: xi+1 y i+1 ] = 1 1 + tan 2 α i Eliminierung der Multiplikationen: wesentliche Idee hinter dem Verfahren 1 σ i tan α i σ i tan α i 1 ersetze Multiplikationen durch Schiebeoperationen ] xi y i ] tan α i = 2 i i = 0... n 1 14 / 30

CORDIC - Iteration ohne Multiplikation Teildrehung um α i xi+1 y i+1 k i = ] 1 σi 2 = k i i ] σ i 2 i 1 1 1 + tan 2 α i = xi y i 1 1 + 2 2i ] da es sich bei den Teilwinkeln α i um bekannte Werte handelt, können die k i vorab zusammengefasst werden 15 / 30

CORDIC - Iterationsformeln Iterationsformeln x i+1 = x i σ i 2 i y i y i+1 = y i + σ i 2 i x i z i+1 = z i σ i arctan (2 i) Faktor k k = n 1 i=0 1 1 + 2 2i 16 / 30

CORDIC - Initialwerte Lösung des Systems von Differenzengleichungen ist x n = x 0 cos z 0 y 0 sin z 0 y n = y 0 cos z 0 + x 0 sin z 0 Durch geeignete Wahl der Initialwerte ist damit Sinus und Cosinus berechenbar x 0 = 1 y 0 = 0 x n = cos z 0 y 0 = sin z 0 Achtung: Um den Wert k zu klein! k = n 1 i=0 1 1 + 2 2i 17 / 30

CORDIC - Initialwert k Multiplikation nicht notwendig, wenn Startwert gut gewählt x 0 = x 0 k = k y 0 = y 0 k = 0 k (x n,y n ) (x n,y n ) k (1,0) (1,0) 18 / 30

CORDIC - Vektormodus eben gezeigtes Verfahren verfolgte Strategie die z-komponente gegen 0 streben zu lassen dies wird Rotationsmodus genannt es gibt aber auch die Möglichkeit, mit der zweiten Variable y i gegen 0 zu kovergieren Θ (x 0, y 0 ) (x n, 0) x 0 cos Θ = x0 2 + y 0 2 sin Θ = y 0 x 2 0 + y 2 0 tan Θ = y 0 x 0 (x 0 2 + y 0 2 ) 1/2 = x n 19 / 30

CORDIC - Funktionalität des Vektormodus diese Strategie wird Vektormodus genannt graphisch gesehen kann dann auf der x-achse die Länge des Vektors (x 0, y 0 ) abgelesen werden werden gleichzeitig in der dritten Komponente alle z alle Teilwinkel aufsummiert, erhält z n den Winkel identisch mit arctan(y 0 /x 0 ) Iterationsformeln identisch wie beim Rotationsmodus zur Bestimmung des Vorzeichens σ i muss nun die Variable y i abgefragt werden 20 / 30

CORDIC - wichtige Formeln des Vektormodus Zusammenfassung in Formeln Länge eines Vektors / Wurzel: x n = x0 2 + y 0 2 Winkel eines Vektors / arctan: z n = z 0 + Θ = z 0 + arctan(y 0 /x 0 ) Vorzeichen für die Iterationen: { 1, y i 0 σ i = 1, y i < 0 21 / 30

CORDIC - Erweiterung zum allgemeinen CORDIC bisher gezeigten Iterationsformeln erlauben die Berechnung der Wurzelfunktion des Arkustangens der trigonometrischen Funktionen Walther erweiterte 1971 das von Volder für zyklische Koordinatensysteme entwickelte Verfahren auf lineare und hyperbolische Koordinatensysteme 22 / 30

CORDIC - Norm eines Vektors x 2 + m y 2 x 2 + y 2 x x 2 y 2 m=1 zyklisches KOS m=0 lineares KOS m=-1 hyperbolisches KOS 23 / 30

CORDIC - Veralgemeinerte Rotationsmatrix xi+1 y i+1 ] = 1 1 + tan 2 (α i m) 1 σ i m tan(αi m) tan(α σ i m) i m 1 ] xi y i ] m = 1 zyklisch 1 ] σ i tan α i σ i tan α i 1 tan α i = 2 i m = 0 linear ] 1 0 σ i α i 1 α i = 2 i m = 1 hyperbolisch ] 1 σ i tanh α i σ i tanh α i 1 tanh α i = 2 i 24 / 30

CORDIC - Verallgemeinerte Iterationsformeln Iterationsformeln x i+1 = x i mσ i 2 F (i) y i y i+1 = y i + σ i 2 F (i) x i z i+1 = z i σ i α i i wenn m = 0 m = 1 1, 2, 3, 4, 4, 5, 6,..., F (i) = 13, 13, 14, 15,..., 40, 40, 41,... wenn m = 1 25 / 30

CORDIC - Die Funktion F (i) Zahlen 4, 13, 40, k, 3k + 1 treten im hyperbolischen Fall doppelt auf Grund ist Konvergenz für die Einhaltung der Konvergenz muss für verschiedene Teilwinkel α i gelten α i n 1 j=i+1 α i < α d.h., jeder Teilwinkel einer Iteration kann durch alle folgenden Teilwinkel bis auf einen Restfehler kompensiert werden 26 / 30

CORDIC - Konvergenz der Teilwinkel Restfehler des Gesamtverfahrens ist durch den Teilwinkel der letzten Iteration definiert damit Kompensation möglich ist, muss Nachfolgewinkel mindestens die Hälfte des Vorhergehenden betragen α i+1 1 2 α i für zirkulares und lineares Koordinatensystem erfüllt für hyperbolisches nicht: eine Winkeldrehung muss an bestimmten Fällen eventuell wieder vollständig rückgängig gemacht werden 27 / 30

CORDIC - Übersicht Betriebsart m Funktion Rotationsmodus 1 x n = x 0 cos z 0 y 0 sin z 0 z n 0 y n = y 0 cos z 0 + x 0 sin z 0 0 x n = x 0 y n = y 0 + z 0 x 0-1 x n = x 0 cosh z 0 + y 0 sinh z 0 y n = y 0 cosh z 0 + x 0 sinh z 0 Vektormodus 1 x n = (x0 2 + y 0 2) y n 0 z n = z 0 + arctan(y 0 /x 0 ) 0 x n = x 0 z n = z 0 + y 0 /x 0-1 x n = x0 2 y 0 2 z n = z 0 + Atanh(y 0 /x 0 ) 28 / 30

CORDIC - Berechenbare Funktionen e z = cosh z + sinh z e z = cosh z sinh z z = (z + 1 4 )2 (z 1 4 )2 tan z = sin z cos z ln z = 2Atanh( z 1 sinh z z+1 ) tanh z = cosh z 29 / 30

CORDIC - Architektur x i+1 = x i mσ i 2 F (i) y i y i+1 = y i + σ i 2 F (i) x i z i+1 = z i σ i α i x i y i z i 2 -F(i) Shift Shift α i mσ i σ i +/- +/- +/- σ i x i+1 y i+1 z i+1 30 / 30