DE10164462A1 - CORDIC-Einheit - Google Patents

CORDIC-Einheit

Info

Publication number
DE10164462A1
DE10164462A1 DE10164462A DE10164462A DE10164462A1 DE 10164462 A1 DE10164462 A1 DE 10164462A1 DE 10164462 A DE10164462 A DE 10164462A DE 10164462 A DE10164462 A DE 10164462A DE 10164462 A1 DE10164462 A1 DE 10164462A1
Authority
DE
Germany
Prior art keywords
elementary
rotation
angle
cordic
exponent
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10164462A
Other languages
English (en)
Other versions
DE10164462B4 (de
Inventor
Koushik Maharatna
Eckhard Grass
Banerjee Swapna
Dhar Anindya Sundar
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IHP GmbH
Original Assignee
IHP GmbH - INNOVATIONS FOR HIGH PERFORMANCE MICROELECTRONICS/ INSTITUT fur INNOVATIVE MIKROELEKTRONIK GmbH
IHP GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IHP GmbH - INNOVATIONS FOR HIGH PERFORMANCE MICROELECTRONICS/ INSTITUT fur INNOVATIVE MIKROELEKTRONIK GmbH, IHP GmbH filed Critical IHP GmbH - INNOVATIONS FOR HIGH PERFORMANCE MICROELECTRONICS/ INSTITUT fur INNOVATIVE MIKROELEKTRONIK GmbH
Priority to DE10164462A priority Critical patent/DE10164462B4/de
Priority to PCT/EP2002/014695 priority patent/WO2003054689A2/de
Priority to US10/498,707 priority patent/US7606852B2/en
Publication of DE10164462A1 publication Critical patent/DE10164462A1/de
Application granted granted Critical
Publication of DE10164462B4 publication Critical patent/DE10164462B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5446Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation using crossaddition algorithms, e.g. CORDIC

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Manipulation Of Pulses (AREA)

Abstract

Die erfindungsgemäße CORDIC-Einheit zur iterativen Approximation einer Vektordrehung um einen Drehwinkel THETA durch eine Anzahl von Elementardrehungen um Elementarwinkel alpha¶i¶ umfasst Elementar-Rotationsstufen, jeweils zum Duchführen einer Elementardrehung um einen Elementarwinkel alpha¶i¶ als einem Iterationsschritt der iterativen Approximation. Nach einer solchen Elementardrehung verbleibt ein Restwinkel, um den noch zu drehen ist. Die Elementar-Rotationsstufen der erfindungsgemäßen CORDIC-Einheit sind zum Drehen um Elementarwinkel alpha¶i¶ ausgelegt, die durch Zweierpotenzen mit einem negativen ganzzahligen Exponenten gegeben sind. Außerdem umfasst die erfindungsgemäße CORDIC-Einheit eine Auslöseeinrichtung zum Auslösen der Elementardrehung, die dazu ausgestaltet ist, vor jedem Iterationsschritt den Restwinkel mit mindestens einem der Elementarwinkel zu vergleichen und solche Elementar-Rotationsstufen auszulassen, deren Elementarwinkel größer als der Restwinkel sind. DOLLAR A Durch die erfindungsgemäße Ausgestaltung der CORDIC-Einheit können im Vergleich mit konventionellen CORDIC-Einheiten Prozessschritte ausgelassen werden. Damit verringert sich die Aktivität der Gesamtschaltung und somit deren Energieverbrauch.

Description

  • Die Erfindung betrifft eine Einheit zum Durchführen eines Co-Ordinate Rotation Digital Computer Algorithmus, kurz CORDIC-Einheit, einen Vorprozessor für eine CORDIC-Einheit sowie eine CORDIC-Einrichtung, die eine erfindungsgemäße CORDIC-Einheit und eine erfindungsgemäße Vorverarbeitungseinheit umfasst.
  • CORDIC-Einheiten finden beispielsweise in Synchronisiereinrichtungen von Modems für die Standards IEEE 802.11(a) und Hyperlan/2 Anwendung. In solchen Synchronisiereinrichtungen sind On-line-Berechnungen der Arcustangensfunktion sowie komplexe Multiplikationen von Daten unter Verwendung der Sinus- sowie der Cosinusfunktion nötig.
  • Die Funktionsweise von CORDIC-Einheiten beruht auf dem CORDIC- Algorithmus. Der CORDIC-Algorithmus ist ein Algorithmus zum Effizienten berechnen verschiedener transzendentaler und geometrische Funktionen. Beispiele solcher Funktionen, die direkt mittels des CORDIC-Algorithmus berechnet werden können, sind die geometrische und arithmetische Multiplikation, die Divisionen, die Sinus- und Cosinusfunktion, die Wurzelfunktion, der inverse Tangens, der inverse hyperbolische Tangens, der hyperbolische Sinus und der hyperbolischer Cosinus. Diese Grundfunktionen können dazu Verwendung finden, weitere Funktionen, beispielsweise Logarithmen zu berechnen. Ein wesentliches Merkmal des konventionellen CORDIC-Algorithmus ist es, dass er als ein rekursives Verfahren implementiert werden kann, in dem eine Drehung durch eine Reihe von Vorwärts- und Rückwärtsdrehungen um fest vorgegebene Elementarwinkel approximiert wird. Diese Vorwärts- und Rückwärzdrehungen, im folgenden kurz Elementardrehungen genannt, lassen sich durch Addier-, Subtahier-, Schiebe- und Tabellenoperationen realisieren. Somit kann der CORDIC-Algorithmus in Form einer CORDIC-Einheit, beispielsweise als digitaler CORDIC-Prozessor, realisiert werden, die lediglich Addierer/Subtrahierer, Schieber und Nachschlagetabellen, aber beispielsweise keinen echten digitalen Multiplizierer, zu umfassen braucht.
  • CORDIC-Einheiten berechnen aus drei Eingangswerten x0, y0 und z0 drei Ausgangswerte x1, y1 und z1, wobei x0 und y0 die Koordinaten des zu drehenden Vektors sind und 20 der Drehwinkel ist, um den die Drehung erfolgt, die durch den CORDIC-Algorithmus approximiert werden soll. Der CORDIC-Algorithmus kann entweder derart ausgeführt werden, dass y1 gegen Null strebt (Vektoring- Modus) oder dass z1 gegen Null strebt (Rotationsmodus). Jeder dieser beiden Modi kann in Polarkoordinaten, hyperbolischen Koordinaten oder linearen Koordinaten verwendet werden.
  • Im konventionellen CORDIC-Algorithmus ist der Winkelbereich der Drehwinkel, die approximiert werden können, auf einen bestimmten Bereich, den Konvergenzbereich, eingeschränkt. Dieser Konvergenzbereich ist im konventionellen CORDIC-Algorithmus durch das Winkelintervall [-99,9°, 99,9°] gegeben. Damit y1 oder z1 gegen Null streben kann, muss |tan-1(y0/x0)| bzw. |z0| im Konvergenzbereich liegen, also kleiner oder gleich 99,9° sein.
  • Außerdem ist bei einer Drehung um einen Elementarwinkel im konventionellen CORDIC-Algorithmus die Länge des gedrehten Vektors nicht konstant. Für jede Elementardrehung entsteht somit ein Faktor, um den sich die Länge des Vektors ändert. In den Ausgangswerten x1 und y1 muss diese Längenänderung durch einen Skalierungsfaktor berücksichtigt werden. Der Skalierungsfaktor ist eine Konstante, wenn der CORDIC-Prozess immer unter Verwendung aller implementierten Elementardrehungen durchgeführt wird.
  • Des Weiteren ist der CORDIC-Algorithmus aufgrund seiner iterativen Natur in der Ausführung langsam.
  • Um den beschränkten Konvergenzbereich des CORDIC-Algorithmus auszuweiten, wurde in J. S. Walther, "A Unified Algorithm for Elementary Funktions", Proc. Joint Spring Comput. Conf., Band 36, Seiten 379-385, Juli 1971, vorgeschlagen, mathematische Identitäten dazu zu verwenden, die Eingangswerte x0, y0 und 20 einer Vorverarbeitung zu unterziehen. Diese Vorgehensweise ist als "Argument-Reduktions-Technik" bekannt. Zwar helfen solche mathematische Identitäten tatsächlich beim Überwinden des begrenzten Konvergenzbereiches, jedoch sind sie für Hardwareanwendungen aufgrund der nötigen Bearbeitungszeit und Aufwandes unhandlich.
  • Ein weiterer Ansatz, den beschränkten Konvergenzbereich zu überwinden, ist beispielsweise in J. M. Delosme, "VLSI Implementation of Rotations in Pseudo- Euclidean Spaces", Proc. ICASSP, Band 2, Seiten 927-930 beschrieben. Der Ansatz erfordert das Wiederholen bestimmter Iterationsschritte. Abhängig davon, wie die zu wiederholenden Iterationsschritte bestimmt werden, können viele solcher zu wiederholenden Iterationsschritte nötig sein, um ein Ergebnis mit der gewünschten Genauigkeit zu erhalten. Mit der Anzahl der zu wiederholenden Iterationsschritte steigt aber auch die dazu nötige Verarbeitungszeit an. Außerdem ist in diesem Ansatz der Skalierungsfaktor keine Konstante, da die Anzahl der Iterationsschritte und damit die Anzahl der durchzuführenden Elementardrehungen nicht konstant ist.
  • Es ist daher eine Aufgabe der Erfindung, eine gegenüber konventionellen CORDIC-Einheiten verbesserte CORDIC-Einheit zur Verfügung zu stellen. Eine weitere Aufgabe der Erfindung ist es, einen Vorverarbeitungseinheit für eine CORDIC- Einheit zur Verfügung zu stellen, mit der sich der Winkelbereich für den von der CORDIC-Einheit tatsächlich zu berechnenden Drehwinkel reduzieren lässt.
  • Die erfindungsgemäße CORDIC-Einheit zur iterativen Approximation einer Vektordrehung um einen Drehwinkel θ durch eine Anzahl von Elementardrehungen um Elementarwinkel αi umfasst Elementar-Rotationsstufen, jeweils zum Durchführen einer Elementardrehung um einen Elementarwinkel αi als einem Iterationsschritt der iterativen Approximation. Nach einer solchen Elementardrehung verbleibt ein Restwinkel, um den noch zu drehen ist. Die Elementar- Rotationsstufen der erfindungsgemäßen CORDIC-Einheit sind zum Drehen um Elementarwinkel αi ausgelegt, die durch Zweierpotenzen mit einem negativen ganzzahligen Exponenten gegeben sind. Außerdem umfasst die erfindungsgemäße CORDIC-Einheit eine Auslöseeinrichtung zum Auslösen der Elementardrehungen, die dazu ausgestaltet ist, vor jedem Iterationsschritt den Restwinkel mit mindestens einem der Elementarwinkel zu vergleichen und solche Elementar-Rotationsstufen auszulassen, deren Elementarwinkel größer als der Restwinkel sind.
  • Anstatt einer Anzahl von Elementar-Rotationsstufen kann auch eine einzige programmierbare Elementar-Rotationsstufe vorhanden sein. Programmierbar bedeutet hierbei, das der Elementar-Rotationsstufe ein Elementardrehwinkel eingegeben werden kann, um den sie die Elementardrehung ausführt.
  • Durch die erfindungsgemäße Ausgestaltung der CORDIC-Einheit können im Vergleich mit konventionellen CORDIC-Einheiten Prozessschritte ausgelassen werden. Damit verringert sich die Aktivität der Gesamtschaltung und somit deren Energieverbrauch.
  • In einer weiteren Ausgestaltung umfasst die Auslöseeinrichtung der erfindungsgemäßen CORDIC-Einheit mindestens einen ersten Vergleicher, eine erste Berechnungseinheit zum Berechnen der Elementarwinkel und eine zweite Berechnungseinheit zum Berechnen des Restwinkels, um den noch zu drehen ist, nachdem eine Elementardrehung um einen aktuellen Elementarwinkel durchgeführt worden ist. Der erste Vergleicher ist dazu ausgelegt, entweder nach einer Elementardrehung den Restwinkel, um den noch zu drehen ist, zu empfangen und zu prüfen, ob der Restwinkel größer als oder gleich dem aktuellen Elementarwinkel ist, und, wenn dies der Fall ist, ein Berechnungssignal an die dem aktuellen Elementarwinkel entsprechende Elementar-Rotationsstufe zum erneuten Durchführen einer Elementardrehung um den aktuellen Elementarwinkel abzugeben, oder nach der Berechnung eines neuen Elementarwinkels den neuen Elementarwinkel zu empfangen und zu prüfen, ob der Restwinkel größer als oder gleich dem neuen Elementarwinkel ist, und, wenn dies der Fall ist, ein Berechnungssignal an die dem neuen Elementarwinkel entsprechende Elementar- Rotationsstufe zum Durchführen einer Elementardrehung um den neuen Elementarwinkel abzugeben und sonst ein Berechnungssignal an die erste Berechnungseinheit auszusenden, das die Berechnung eines neuen Elementarwinkels mit einem neuen, um eins verringerten Exponenten, d. h. einem betragsmäßig um eins erhöhten neuen Exponenten, auslöst.
  • Die Berechnungseinheit zum Berechnen des Restwinkels ist vorteilhafterweise in die Elementar-Rotationsstufen integriert.
  • Mit dieser Ausgestaltung der CORDIC-Einheit kann in Abhängigkeit vom Drehwinkel bestimmt werden, welche Iterationsschritte ausgelassen werden sollen.
  • Vorteilhafterweise kann die CORDIC-Einheit ein zweiten Vergleicher umfassen, der dazu ausgelegt ist, nach jeder Elementardrehung zu prüfen, ob der nach der Elementardrehung verbleibende Restwinkel kleiner ist als ein vorgegebener Referenzwert, und die iterative Approximation abzuschließen, wenn dies der Fall ist. Der Referenzwert stellt beispielsweise die maximale Abweichung des Restwinkels von Null dar, die am Ende der Approximation zulässig sein soll. Er kann z. B. von der notwendigen Genauigkeit abhängen, die weitere Anwendungen an die Approximation stellen. Durch das Abschließen der iterativen Approximation, sobald der Referenzwert erreicht oder unterschritten ist, lassen sich weitere, unnötige Elementardrehungen vermeiden.
  • In einer alternativen Ausgestaltung der erfindungsgemäßen CORDIC-Einheit zur iterativen Approximation einer Vektordrehung um einen Drehwinkel θ durch eine Anzahl von Elementardrehungen um Elementarwinkel αi, weist die CORDIC- Einheit eine Wortlänge von b Bit auf. Außerdem umfasst sie Elementar- Rotationsstufen, die zur Drehung um Elementarwinkel ausgelegt sind, welche durch Zweierpotenzen mit einem negativen ganzzahligen Exponenten -i gegeben sind. Die Elementarwinkel lassen sich dann durch die Werte αi = 2-i darstellen. Der betragsmäßig minimale Exponent i, und damit der maximale Elementarwinkel, ist durch eine Zahl p gegeben, welche die kleinste ganze Zahl ist, die bei einer Wortlänge von b Bit für i in die Summe


    eingesetzt werden kann, so dass der Wert der Summe die Maschinen-Null ergibt. Die Maschinen-Null sind alle diejenigen binären Zahlen, deren erste b Bit nur Nullen enthalten. Bei einer Wortlänge von b Bit lassen sich derartige binäre Zahlen nicht von der Null unterscheiden. Der betragsmäßig maximale Exponent, und damit der minimale Elementarwinkel, ist durch b - 1 gegeben.
  • Eine solche Wahl der Elementarwinkel führt dazu, dass kein Skalierungsfaktor für die CORDIC-Einheit nötig ist. Die alternative Ausgestaltung der CORDIC-Einheit kann auch mit der zuvor beschriebenen Ausgestaltung kombiniert werden.
  • In einer weiteren Ausgestaltung der Erfindung ist für jeden Exponenten, der betragsmäßig größer oder gleich p und kleiner oder gleich b - 1 ist, mindestens eine Elementar-Rotationsstufe vorhanden. Insbesondere kann die CORDIC-Einheit mehr als eine Elementar-Rotationsstufe umfassen, die zur Drehung um den maximalen Elementarwinkel ausgelegt ist. Durch das wiederholte Drehen um den maximalen Drehwinkel kann der Winkelbereich erhöht werden, der mit der CORDIC-Einheit erreichbar ist.
  • In noch einer weiteren Ausgestaltung der erfindungsgemäßen CORDIC-Einheit umfassen alle Elementar-Rotationsstufen, die zur Drehung um Elementarwinkel ausgelegt sind, deren betragsmäßiger Exponent kleiner als (b - 1)/2 ist, vier Schieber, zwei Subtrahierer und zwei Addierer/Subtrahierer und alle anderen Elementar-Rotationsstufen zwei Schieber und zwei Addierer/Subtrahierer.
  • Erfindungsgemäß wird außerdem eine Vorverarbeitungseinheit zur Verfügung gestellt, die eine Vorverarbeitungsschaltung umfasst, die dazu ausgelegt ist, Drehwinkel zwischen π/8 und 2π Grad in das Intervall zwischen 0 und π/8 zu überführen. Mit einer solchen Vorverarbeitungsschaltung ist es möglich, die CORDIC-Einheit zur Approximation von Drehwinkeln im gesamten Winkelbereich von 360° zu verwenden.
  • Insbesondere kann die Vorverarbeitungsschaltung dazu ausgestaltet sein, im ersten Quadranten eines Koordinatensystems liegende Drehwinkel in das Intervall zwischen 0 und π/8 zu überführen, indem der Drehwinkel von π/4 subtrahiert wird, wenn er im Intervall zwischen π/8 und π/4 liegt, indem zum Drehwinkel π/4 addiert wird, wenn er im Intervall zwischen π/4 und 3π/8 liegt, oder indem der Drehwinkel von π/2 subtrahiert wird, wenn er im Intervall zwischen π/4 und 3π/8 liegt, und Drehwinkel, die im zweiten bis vierten Quadranten des Koordinatensystems liegen, vorab unter Ausnutzung der Symmetrie der Koordinatenachsen in den ersten Quadranten zu überführen.
  • Die erfindungsgemäße Vorverarbeitungseinheit kann insbesondere in einer CORDIC-Einrichtung als Vorverarbeitungseinheit für eine erfindungsgemäße CORDIC-Einheit Verwendung finden.
  • Die erfindungsgemäße CORDIC-Einheit kann in verschiedenen Modi, insbesondere im "Rotation-Modus" und im "Vectoring-Modus" verwendet werden.
  • Der Rotation-Modus findet Verwendung, um einen in einem Koordinatensystem durch die Komponenten x0 und y0 dargestellten Vektor um einen Winkel 20 zu drehen, d. h. die Komponenten x, y des gedrehten Vektors zu berechnen. Im Vectoring-Modus wird dagegen der Betrag


    des Vektors sowie der Winkel, den der Vektor mit der x-Achse des Koordinatensystems einschließt, berechnet. Im Rotation-Modus wird die Iteration so lange fortgesetzt, bis z einen Wert annimmt, der nahe genug bei Null liegt, um die Anforderung an die Genauigkeit beim Berechnen der Koordinaten des gedrehten Vektors zu erfüllen. Im Vectoring-Modus wird hingegen die Iteration so lange fortgesetzt, bis y einen Wert annimmt, der nahe genug bei Null liegt, um die Anforderung an die Genauigkeit des Ergebnisses für Bertrag und Winkel zu erfüllen.
  • Weitere Merkmale und Vorteile der Erfindung ergeben sich aus der nachfolgenden detaillierten Beschreibung eines Ausführungsbeispiels unter Bezugnahme auf die beiliegenden Zeichnungen.
  • Fig. 1 zeigt eine Elementar-Rotationsstufe, wie sie in einer konventionellen CORDIC-Einheit Verwendung findet.
  • Fig. 2 zeigt den Aufbau einer Elementar-Rotationsstufe in der erfindungsgemäßen CORDIC-Einheit.
  • Fig. 3 zeigt die Einteilung eines Koordinatensystems in Domänen, die bei der Vorverarbeitung für den CORDIC-Algorithmus Verwendung finden.
  • Fig. 4 zeigt die Zuordnung neuer Drehwinkel zu den Domänen im ersten Quadranten eines Koordinatensystems.
  • Fig. 5 zeigt Flussdiagramm, das einen Verfahrensablauf zum Ausführen des CORDIC-Algorithmus im Rotationsmodus darstellt.
  • Fig. 6 zeigt ein Blockschaltbild der erfindungsgemäßen CORDIC-Einheit.
  • Fig. 7 zeigt einen CORDIC-Prozessor, der eine erfindungsgemäße CORDIC-Einheit und eine erfindungsgemäße Vorverarbeitungseinheit umfasst.
  • Es folgt nun zuerst eine Beschreibung des konventionellen CORDIC-Algorithmus, um das Verständnis der Erfindung zu erleichtern. Die Rotation eines Vektors mit den Koordinaten x0 und y0 kann in einem kartesischen Koordinatensystem beschrieben werden als


    wobei x1 und y1 die Koordinaten des gedrehten Vektors sind und θ der Drehwinkel ist. In der obigen Gleichung ist angenommen worden, dass die Drehung im Uhrzeigersinn erfolgt. Der CORDIC-Algorithmus basiert darauf, dass die Drehung um den Drehwinkel θ durch eine Aneinanderreihung von Elementardrehungen um Elementarwinkel αi dargestellt werden kann. Ist der CORDIC-Algorithmus in Form einer CORDIC-Einheit mit der Wortlänge b raelisiert, so ist der Drehwinkel θ durch die folgende Formel gegeben:


  • Der Faktor σi kann entweder den Wert 1 oder -1 annehmen, abhängig vom Drehsinn der Elementardrehung. Im konventionellen CORDIC-Algorithmus ist αi durch die Formel

    αi = tan-1(2-i) (3)

    gegeben. Wird nun in Gleichung 1 für den Drehwinkel θ die Summe nach Gleichung 2 mit den Elementardrehwinkeln nach Gleichung 3 eingesetzt, so kann die Drehung um den Winkel θ durch die folgenden iterativen Gleichungen dargestellt werden:


  • Dabei steht 20 für den Drehwinkel θ um den der Vektor mit den Komponenten x0 und y0 gedreht werden sollen. Der Wert des Faktors σi ergibt sich aus dem Wert von zi, dem Restwinkel, um den noch gedreht werden muss. Ist zi größer oder gleich 0, so nimmt σi den Wert -1 an, ist zi kleiner 0, den Wert +1.
  • Die Gleichungen 4 und 5 sind die Basisgleichungen des CORDIC-Algorithmus. Die physikalische Bedeutung dieser Gleichungen ist die, dass der als z0 angegebene Drehwinkel durch Vor- und Zurückdrehen des Vektors um Elementarwinkel αi an 0 angenähert wird. Es ist zu erkennen, dass die Iterationsgleichungen 4 und 5 lediglich Additionen, Subtraktionen und Multiplikationen mit Faktoren 2-i erfordern. Unter dem Gesichtspunkt der Hardwareimplementierung sind zum Implementieren der Iterationsgleichungen daher lediglich Addierer/Subtrahierer und Schieber nötig. Die Schieber realisieren dabei die Multiplikation mit den Faktoren 2-i, da eine Multiplikation mit einem Faktor 2-i im Binärsystem nichts anderes ist, als eine Verschiebung der binären Zahl um i Stellen nach rechts. In der konventionellen Implementierung des CORDIC-Algorithmus wird jede Drehung um einen Elementarwinkel αi daher, wie in Fig. 1 gezeigt, durch zwei Addierer/Subtrahierer 2 und zwei Schieber 4 realisiert.
  • Ein Nachteil des konventionellen CORDIC-Algorithmus ist jedoch, dass der gedrehte Vektor mit den Komponenten x1 und y1, der das Ergebnis der Iteration mit den Iterationsgleichungen 4 und 5 bestimmt darstellt, mit einem Faktor


    skaliert werden muss. Dies lässt sich geometrisch so verstehen, dass der um den Elementarwinkel 2-i gedrehte Vektor mit den Komponenten xi+1 und yi+1 um einen Faktor cos(2-i) länger ist als der Vektor mit den Komponenten xi und yi vor der Elementardrehung. Wenn alle Elementardrehungen von i = 0 bis i = b - 1 durchgeführt werden, ist dieser Faktor lediglich eine Konstante, die vorab bestimmt und gespeichert werden kann. Werden jedoch einige der Elementardrehungen ausgelassen, so ist der Skalierungsfaktor keine Konstante mehr. Vielmehr hängt er davon ab, welche Elementardrehungen ausgelassen sind und welche nicht. Um einen solchen nicht konstanten Skalierungsfaktor zu berücksichtigen, ist eine komplizierte Hardwarestruktur nötig, oder es sind entsprechende Nachverarbeitungszyklen nötig, die den Verarbeitungsaufwand erhöhen.
  • Nachfolgend wird nun ein erstes Ausführungsbeispiel für die erfindungsgemäße Realisierung des CORDIC-Algorithmus beschrieben. Wie oben beschrieben worden ist, wird im konventionellen CORDIC-Algorithmus der Drehwinkel durch Elementardrehungen sowohl im Uhrzeigersinn als auch im Gegenuhrzeigersinn approximiert. Im Gegensatz dazu wird der Drehwinkel erfindungsgemäß ausschließlich durch Elementardrehungen eines einzigen Drehsinnes approximiert. Das heißt, alle Elementardrehungen werden entweder im Uhrzeigersinn oder im Gegenuhrzeigersinn ausgeführt. Um dies zu ermöglichen, wird sichergestellt, dass keine Drehung erfolgt, auf die eine Drehung im entgegengesetzten Drehsinn erfolgen müsste. Mit anderen Worten, nach jeder Elementardrehung wird der Restwinkel bestimmt, um den noch zu drehen ist und dann dieser Restwinkel mit den Elementarwinkeln verglichen. Elementardrehungen, deren Elementarwinkel größer ist als der verbleibende Restwinkel, werden nicht ausgeführt.
  • Die Elementarwinkel in der erfindungsgemäßen Implementierung des CORDIC- Algorithmus sind durch die Formel

    sin αi ~ αi = 2-i (6)

    gegeben. Der Gedanke, der der Erfindung zu Grunde liegt, ist der Folgende:
    Die unendliche Summe


    konvergiert und hat den Wert 2. Wird aus dieser unendlichen Summe ein spezieller Wert 1/2n ausgewählt und werden alle Summenglieder bis einschließlich 1/2n weggelassen, so konvergiert der Rest der Summe gegen 1/2n.
  • Durch die Wahl αi = 2-i wird die Folge aus Gleichung 2 zu


  • Dabei ist b die bei der Implementierung des CORDIC-Algorithmus verwendete Wortlänge. Die Summenglieder mit i größer b - 1 entsprechen bei der Wortlänge von b der Maschinen-Null.
  • Liegt nun ein Restwinkel zi, der in kommenden Iterationsschritten zu approximieren ist, im Bereich zwischen zwei Elementarwinkeln mit aufeinanderfolgenden Exponenten, also zwischen 2-k und 2-(k+1), so können die Elementardrehungen um die Elementarwinkel bis 2-k, also die Elementarwinkel, die größer als der Restwinkel sind, beim Approximieren ausgelassen werden. Der Restwinkel lässt sich aber durch die Elementarwinkel 2-i mit i > k noch immer hinreichend genau approximieren, da eine Approximation von Winkeln bis 2-k möglich ist. Durch das Auslassen von Elementardrehungen mit Elementarwinkel, die größer als der Restwinkel sind, ist es möglich, den zu approximierenden Winkel θ immer nur durch Elementardrehungen in einem einzigen Drehsinn zu approximieren, da Rückdrehungen nicht nötig sind.
  • Durch das Auslassen von Elementardrehungen lässt sich die Anzahl der auszuführenden Iterationsschritte und somit die Gesamtaktivität der Schaltung, die den CORDIC-Algorithmus realisiert, und damit beispielsweise ihr Energieverbrauch und/oder die Rechendauer verringern. Dieser Vorteil bietet sich bei jeder Art von Implementierung des im Ausführungsbeispiel beschriebenen Verfahrens.
  • Wie einleitend ausgeführt, bringt das Auslassen von Iterationsschritten im Allgemeinen einen nicht konstanten Skalierungsfaktor mit sich. Durch die geschickte Wahl der Elementarwinkel αi ist es jedoch möglich, trotz Auslassen von Iterationsschritten einen konstanten Skalierungsfaktor zu erhalten. Im folgenden zweiten Ausführungsbeispiel für die erfindungsgemäße Realisierung des CORDIC- Algorithmus ist der Skalierungsfaktor konstant.
  • Um einen konstanten Skalierungsfaktor zu erhalten, müssen die Elementarwinkel αi so klein sein, dass die Beziehung sin αi ~ αi hinreichend genau erfüllt ist. Hinreichend genau bedeutet hier, dass αi klein genug sein muss, damit die Fehler, die dadurch auftreten, dass der sin αi durch αi angenähert wird, kleiner sind als die kleinste Zahl, die bei einer gegebenen Wortlänge b der gewählten Implementierung des CORDIC-Algorithmus als binäre Zahl darstellbar ist. Bei einer Wortlänge von 16 Bit führt zum Beispiel eine Verschiebung jeder binären Zahl um 16 Stellen nach rechts zu einer binären Zahl, deren erste 16 Stellen nur noch Nullen enthalten, also zur Maschinen-Null. Aus der Bedingung, dass die Fehler, die dadurch resultieren, dass sin αi durch αi angenähert wird, so klein sind, dass sie die Maschinen-Null ergeben, lässt sich der größte Elementarwinkel αi bestimmen, für den die Näherung in einer Implementierung mit einer Wortlänge von b Bit keine Auswirkungen hat.
  • Die Sinusfunktion und die Cosinusfunktion können als unendliche Summen dargestellt werden. Diese Summen sind durch die Formeln


    gegeben. Wird in diese Formeln αi = 2-i eingesetzt, so erhält man


  • Es zeigt sich, dass in dieser Reihenentwicklung der größte Term, der durch die Näherung sin αi ~ αi = 2-i weggelassen wird, der zweite Term in der Reihenentwicklung des sin ist. Dieser Term kann auch als


    dargestellt werden.
  • Die Bedingung dafür, dass der Fehler beim Annähern des sin αi durch αi so klein ist, dass er lediglich die Maschinen-Null ergibt, ist nun die, dass als Exponent i nur solche Werte Verwendung finden, für die die Summe


    zur Maschinen-Null wird. Dies ist bei einer Implementierung der erfindungsgemäßen Realisierung des CORDIC-Algorithmus mit einer Wortlänge von 16 Bit bei allen i größer oder gleich 4 der Fall.
  • Insbesondere ist die Bedingung erfüllt, wenn i größer oder gleich [(b - 2,585)/3] = p ist. Dabei bezeichnet p die kleinste ganze Zahl, die größer oder gleich dem Klammerausdruck ist. Ist der CORDIC-Algorithmus mittels eines Prozessors implementiert, der eine Wortlänge von b Bit aufweist, so verschwindet der Term 2- (3i+2,585) in der Binärdarstellung, wenn [(b - 2,585)/3] größer oder gleich der Wortlänge b des Prozessors ist, da eine Multiplikation mit 2-b immer eine Verschiebung um b-Stellen nach rechts bedeutet und somit immer zur Maschinen-Null führt. Damit der zweite Term in der Reihenentwicklung des sin wegfällt, muss also 3i + 2,585 größer oder gleich b sein. Alle weiteren Terme sind dann auf jeden Fall die Maschinen-Null, da sie kleiner als 2-(3i+2,585) sind. Damit ist auf jeden Fall ein minimaler Exponent für die Elementarwinkel αi = 2-i bestimmt, der verwendet werden darf, ohne dass bei einer Wortlänge von b Bit durch die Annäherung des sin αi durch αi ein Fehler entsteht. Der größte Exponent i ist bei einer Wortlänge von b Bit immer durch b - 1 gegeben, da ein Elementarwinkel 2-b wiederum zur Maschine Null führt. Bei einer Wortlänge b von 16 Bit ergibt sich für [(b - 2,585)/3] der Wert 4,472 und somit p = 5. Tatsächlich kann, wie oben bereits festgestellt, bei einer Implementierung der erfindungsgemäßen Realisierung des CORDIC- Algorithmus mit einer Wortlänge von 16 Bit als größter Exponent der Wert i = 4 statt dem Wert i = 5 verwendet werden. Zwar wird der Term 2-(3i+2,585) dann nicht zur Maschinen-Null, jedoch liefern die höheren Terme in Gleichung 14 einen Beitrag zur Gesamtsumme von Gleichung 14 der die Gesamtsumme zur Maschinen- Null werden lässt.
  • Unter der Voraussetzung, dass der Fehler beim Verwenden von 2-i statt sin 2-i zur Maschinen-Null wird, kann nun der sin 2-i und der cos 2-i durch 2-i bzw. 1-2-i angenähert werden. Werden diese Darstellungen für den sin αi und den cos αi in Gleichung 1 eingesetzt, so können die folgenden Iterationsgleichungen abgeleitet werden:


  • Das Vorzeichen vor dem Term 2-i in Gleichung 16 hängt dabei davon ab, ob der Winkel z0, um den gedreht werden soll, positiv oder negativ ist. Als Skalierungsfaktor erhält man den Wert


  • Der Summand 2-(4i+2) ergibt bei einer Wortlänge von mehr als 4 Bit für alle Elementarwinkel, die zum Approximieren des Drehwinkels verwendet werden, die Maschinen-Null. Das Eliminieren des Skalierungsterms ist ein wichtiger Schritt, da er nicht nur eine spezielle Post- Prozessing-Schaltung überflüssig macht, sondern auch Verarbeitungszeit einspart.
  • Schaltungstechnisch lässt sich obige Gleichung durch vier Schieber, zwei Subtrahierer und zwei Addierer/Subtrahierer realisieren. Eine entsprechende Elementar-Rotationsstufe ist in Fig. 2 gezeigt. Der Wert xi-1 wird einem ersten Subtrahierer 10, einem ersten (2i + 1)-Bit-Schieber 12 und einem ersten 1-Bit-Schieber 14 zugeführt. Dem ersten Subtrahierer 10 wird außer dem Wert xi-1 auch der vom ersten (2i + 1)-Bit-Schieber 12 um (2i + 1) Bit verschobene Wert von xi-1 zugeführt.
  • Der Wert yi-1 wird einem zweiten Subtrahierer 18, einem zweiten (2i + 1)-Bit- Schieber 20 und einem zweiten i-Bit-Schieber 22 zugeführt. Dem zweiten Subtrahierer 18 wird außer dem Wert yi-1 auch der vom zweiten (2i + 1)-Bit-Schieber 20 um (2i + 1) Bit verschobene Wert von yi-1 zugeführt.
  • Der erste Subtrahierer 10 subtrahiert von xi-1 den um (2i + 1) Bit verschobenen Wert von xi-1 und leitet das Ergebnis an einen ersten Addierer/Subtrahierer 16 weiter. Außerdem Empfängt der erste Addierer/Subtrahierer 16 vom zweiten i-Bit- Schieber 22 einen um i-Bit verschobenen Wert von yi-1 und addiert bei einer Drehung im Uhrzeigersinn diesen zu xi-1. Das Ergebnis dieser Addition wird als Wert xi ausgegeben. Bei einer Drehung entgegen dem Uhrzeigersinn erfolgt statt der Addition eine Subtraktion.
  • Der zweite Subtrahierer 18 subtrahiert von yi-1 den um (2i + 1) Bit verschobenen Wert von yi-1 und leitet das Ergebnis an einen zweiten Addierer/Subtrahierer 24 weiter. Außerdem Empfängt der zweite Addierer/Subtrahierer 24 vom ersten 1-Bit- Schieber 14 einen um 1-Bit verschobenen Wert von xi-1 und subtrahiert ihn von yi-1. Das Ergebnis dieser Subtraktion wird als Wert yi ausgegeben. Bei einer Drehung entgegen dem Uhrzeigersinn erfolgt statt der Subtraktion eine Addition.
  • Der soeben beschriebene Aufbau der Elementar-Rotationsstufe ist jedoch nur für solche Elementar-Rotationsstufen nötig, in denen um Elementarwinkel 2-i gedreht werden soll, bei denen der Exponent i < (b - 1)/2 ist. Ist der Exponent i größer oder gleich diesem Wert, so führt die Multiplikation mit dem Term 2-(2i+1) in Gleichung Nummer 15, d. h. die Verschiebung um 2i + 1 Bit-Positionen, zur Maschinen-Null, so dass die (2i + 1)-Bit-Schieber 12, 20 und Subtrahierer 10, 18 für Elementar- Rotationsstufen mit i größer oder gleich (b - 1)/2 entfallen können.
  • Die bisher beschriebene CORDIC-Einheit ist Skalierungsfrei und ermöglicht es daher, Post-Prozessing-Hardware sowie Prozesszeit zu sparen. Damit ermöglicht sie insbesondere, Elementarwinkel beim Iterationsprozess auszulassen, ohne dass eine Skalierung mit einem nicht konstanten Skalierungsfaktor zu erfolgen braucht.
  • Die Idee, den Drehwinkel durch eine Reihe von Elementarwinkeln zu approximieren, die klein genug sind, dass der Skalierungsfaktor wegfällt, führt aber auch dazu, dass der Winkelbereich, in dem ein Drehwinkel liegen muss, damit er approximiert werden kann, der im Vergleich zum konventionellen CORDIC- Algorithmus klein ist. Wird die CORDIC-Einheit beispielsweise mit einer Wortlänge von 16 Bit implementiert, so bedeutet dies, dass Elementarwinkel mit Exponenten von 4 bis 15 Verwendung finden (siehe oben). Damit ist der größte Winkel, der angenähert werden kann, ±7,16°. Zum Vergleich: Mit einer konventionellen CORDIC-Einheit können Drehwinkel bis ±99,9° approximiert werden.
  • Um den Winkelbereich, in dem ein Winkel liegen muss, damit er der durch die erfindungsgemäße CORDIC-Einheit approximiert werden kann, auszudehnen, kommt ein "Argument-Reduktionsverfahren" und ein Verfahren zum wiederholten Ausführen bestimmter Iterationsschritte zur Anwendung. Mit dem Argument- Reduktionsverfahren wird der gesamte Winkelbereich von 360° auf einen verringerten Winkelbereich abgebildet. Zum Ausführen des Argument- Reduktionsverfahrens wird insbesondere eine dazu ausgestaltete Vorverarbeitungseinheit eingesetzt. Ist der Winkelbereich, auf den abgebildet wird, nach dem Ausführen des Argument-Reduktionsverfahrens noch immer größer als der Winkelbereich, in dem ein Winkel liegen muss, damit er der durch die CORDIC- Einheit approximiert werden kann, so werden Elementardrehungen in einer adaptiven Weise wiederholt. Im Folgenden wird die Vorgehensweise detailliert erläutert.
  • Das Hauptziel des Argument-Reduktionsverfahrens ist es, große Drehwinkel auf kleine Drehwinkel abzubilden. Um dies zu erreichen, kommt ein Verfahren zur Anwendung, in dem die vier Quadranten des Koordinatensystems in 16 gleiche Domänen (das heißt vier Domänen pro Quadrant) unterteilt werden, wobei jede Domäne einen Winkelbereich von π/8 abdeckt. Die Domänen sind in Fig. 3 dargestellt und dort mit den Buchstaben A bis P bezeichnet. Jeder Drehwinkel muss zwangsläufig in einer dieser 16 Domänen liegen. Ein Drehwinkel θ, der im ersten Quadranten liegt, liegt in einer der Domänen A([0, π/8)), B([π/8, π/4)), C([π/4,3 π/8)) oder D([3π/8, π/2]). In jeder Domäne kann der Drehwinkel θ nun wie folgt durch einen anderen Drehwinkel Φ definiert werden:
    θ = Φ in der Domäne A
    θ = π/4 - Φ in der Domäne B
    θ = π/4 + Φ in der Domäne C
    θ = π/2 - Φ in der Domäne D
  • Dies ist in Fig. 4 gezeigt. Es ist zu erwähnen, dass der Winkel Φ, immer im Intervall [0, π/8] liegt. Unter Verwendung der Additionstheoreme der Sinus- und der Cosinusfunktion lässt sich die Drehung nach Gleichung 1 in den vier Domänen durch die folgenden Gleichungen darstellen:




  • Unter Berücksichtigung, dass die Rotation um Φ bzw. -Φ gemäß Gleichung 1 durch die Gleichungen


    ausgedrückt werden kann, in denen die tiefgestellten Plus- und Minuszeichen bei x1 und y1 Drehungen im Uhrzeigersinn bzw. gegen den Uhrzeigersinn bezeichnen, können die Gleichungen 17 bis 20 folgendermaßen geschrieben werden:


  • Aus den Gleichungen ist zu erkennen, dass die Ergebnisse eines CORDIC- Algorithmus für Drehwinkel, die in verschiedenen Domänen im ersten Quadranten liegen, aus den Ergebnissen eines CORDIC-Algorithmus mit einem Drehwinkel Φ berechnet werden können, indem einfache Additions- und Subtraktionsoperationen durchgeführt werden. Dies bedeutet im Wesentlichen, dass die Domänen B, C und D auf die Domäne A "zurückgefaltet" werden. Daher wird dieses Verfahren im Folgenden als "Domänenfalten" bezeichnet. Eine Folge des Domänenfaltens ist die Generation eines konstanten Skalierungsfaktors 1/√2 für Drehwinkel, die entweder in der Domäne B oder der Domäne C liegen. Dieser Skalierungsfaktor kann jedoch mit minimalem Hardwareaufwand unter Verwendung von Schiebern und Addierern hinreichend genau realisiert werden.
  • Bisher wurden nur Drehwinkel betrachtet, die im ersten Quadranten liegen. Unter Ausnutzung der Symmetrie der Koordinatenachsen kann das Domänenfalten auch auf CORDIC-Prozesse angewendet werden, bei denen die Drehwinkel in anderen Quadranten liegen. Die daraus resultierenden Werte für die gedrehten Komponenten x1 und y1 sind durch Vertauschen und Vorzeichenwechsel zu erhalten. Die Vertauschungen und Vorzeichenwechsel sind in der folgenden Tabelle zusammengestellt.

  • Beim Berechnen der Vektordrehung um einen beliebigen Drehwinkel, das heißt um einen Drehwinkel, der in jedem beliebigen Quadranten liegen kann, wird also zuerst die Domäne bestimmt, in welcher der Drehwinkel liegt. Sobald die Domäne bestimmt ist, kann die Berechnung der gedrehten Komponenten des zu drehenden Vektors ausgeführt werden, wobei die entsprechende Gleichung aus den Gleichungen 23 bis 26 gewählt wird. Der endgültige Wert für die Komponenten des gedrehten Vektors wird anschließend in Abhängigkeit von der Domäne, in der der ursprüngliche, d. h. ungedrehte Vektor lag, gemäß der Tabelle bestimmt.
  • Das Domänenfalten kann nicht nur im Rotationsmodus sondern auch im Vectoring-Modus ausgeführt werden. Im Falle des Vectoring-Modus ist der Drehwinkel durch den Wert tan-1(y0/x0) zu ersetzen. Die Domänen im ersten Quadranten lassen sich dann beispielsweise als Werte des Verhältnisses y0/x0 ausdrücken, sie sind dann durch die Intervalle [0, tan(22,5°)) (Domäne A), [tan(22,5°), tan(45°)) (Domäne B), [tan(45°), tan(67,5°)] (Domäne C) gegeben.
  • In welcher Domäne ein Vektor mit den Komponenten x0, y0 liegt, kann anhand von vier Werten, nämlich x0, x0.tan(22,5°), x0.tan(67,5°) und y0 bestimmt werden. Wenn x0.tan(22,5°) größer oder gleich y0 ist, so liegt der Vektor in der Domäne A, wenn y0 größer als x0.tan(22,5°) ist, so liegt der Vektor in der Domäne B, wenn x0.tan(67,5°) größer oder gleich y0 ist, so liegt der Vektor in der Domäne C und wenn y0 größer als x0.tan(67,5°), liegt der Vektor in der Domäne D.
  • Bei einem Vektor, der in der Domäne D liegt, können wegen der Struktur der Gleichung 21 und 22 die Komponenten x0 und y0 vertauscht werden und dann die vertauschten Komponenten des Vektors in die CORDIC-Einheit eingegeben werden. Die vertauschten Komponenten werden dann in der CORDIC-Einheit wie die Komponenten eines in der Domäne A gelegenen Vektors behandelt. Dies bedeutet, dass bei einem in der Domäne D liegenden Vektor von der CORDIC- Einheit nicht y0 sondern x0 gegen Null strebt.
  • Die Arbeitsweise des in der erfindungsgemäßen CORDIC-Einheit zur Anwendung kommenden Verfahrens, mit dem Rotationen um Drehwinkel im Bereich con 0 bis 360° ausgeführt werden können, wird nun anhand des in Fig. 5 gezeigten Flussdiagramms am Beispiel des Rotationsmodus beschrieben. Vor der Ausführung des eigentlichen Iterationsprozesses wird der Winkel, um den gedreht werden soll, von einer Vorverarbeitungseinrichtung ggf. in den Winkelbereich [0, π/8] abgebildet, d. h. die Domäne bestimmt, in der der ungedrehte Vektor liegt. Dann werden die Eingangskomponenten x und y eingelesen und i wird initialisiert, das heißt, i wird auf den kleinsten Wert gesetzt, der für die entsprechende Maschine zulässig ist. Bei einer 16 Bit-Maschine ist dieser kleinste Wert i durch p = 4 gegeben (siehe oben). Außerdem wird der Drehwinkel θ als z eingegeben. Im Verlauf des Verfahrens wird dieser Drehwinkel z soweit verringert, dass er näherungsweise den Wert 0 erreicht.
  • Im nächsten Schritt wird anhand des initialisierten Wertes von i der Elementarwinkel αi = 2-i berechnet. Danach wird der Wert von z mit dem Wert des Elementarwinkels αi verglichen und die Elementardrehung um den Elementarwinkel αi ausgelöst, falls der Wert von z größer als der Elementarwinkel αi ist. Ist der Wert z jedoch kleiner als der Elementarwinkel αi, so wird die Elementardrehung nicht ausgelöst. Stattdessen wird i um eins erhöht und ein neuer Elementarwinkel αi mit dem um eins erhöhten Wert i berechnet. Der neue Elementarwinkel wird dann wieder dem Vergleich mit z unterzogen. Diese Schleife wird so lange wiederholt, bis der Wert z größer als der aktuelle Elementarwinkel ist. Sobald dies der Fall ist, wird die Rotation um den Elementarwinkel ausgelöst.
  • Die Rotation um einen Elementarwinkel liefert gedrehte Komponenten x' und y'. Daneben wird ein neuer Wert z' = z - 2-i berechnet. Dieser Wert z' stellt den Restwinkel dar, um den noch gedreht werden muss. In einem zweiten Vergleich wird nun geprüft, ob der Restwinkel z' kleiner als ein vorgegebener Referenzwert Rref ist, der die größte zulässige Abweichung des Restwinkels von 0 angibt. Ist der Restwinkel z' kleiner oder gleich diesem Referenzwert Rref, so wird das CORDIC-Verfahren beendet und die Werte x', y' und z' werden als Endwerte ausgegeben. Ist der Restwinkel z' jedoch größer als der Referenzwert Rref, so wird z' als neuer Restdrehwinkel wieder dem Vergleich mit dem aktuellen Elementarwinkel αi zugeführt, wo geprüft wird, ob der Restwinkel größer ist als der aktuelle Elementarwinkel, um den gedreht worden ist. Ist dies der Fall, so wird die Elementardrehung um den aktuellen Elementarwinkel αi und anschließend der Vergleich des daraus resultierenden neuen Restwinkels mit dem Referenzwert Rref erneut durchgeführt. Diese Schleife wird solange ausgeführt, bis der Restwinkel kleiner ist als der aktuelle Elementarwinkel. Sobald der Restwinkel kleiner als der aktuelle Elementarwinkel ist, wird i wieder um 1 erhöht und ein neuer Elementarwinkel berechnet. Es erfolgt dann wiederum der Vergleich des neuen Elementarwinkels mit dem Restwinkel, der entweder dazu führt, dass die Elementarrotation ausgeführt wird oder ein neuer Elementarwinkel berechnet wird. Das gesamte Verfahren wird so lange ausgeführt, bis der Restwinkel kleiner ist als der vorgegebene Referenzwert Rref.
  • Zu dem mittels der CORDIC-Einheit ausgeführten Verfahren ist anzumerken, dass es möglich ist, Drehungen um denselben Elementarwinkel mehrmals auszuführen. Das mehrmalige Ausführen der Drehung um einen bestimmten Elementarwinkel ist nötig, um alle Drehwinkel um Intervall zwischen 0 und π/8 erreichen zu können. Wie weiter oben beschrieben, ist bei einer 16 Bit-Maschine der maximale Drehwinkel, der erreicht werden kann, wenn alle Schritte genau einmal ausgeführt werden, 7,16°. Liegt der Betrag des Drehwinkels nun in einem Bereich, der größer ist als 7,16° und kleiner als 22,5°, so muss die Elementardrehung um den größten zulässigen Elementarwinkel, also den Elementarwinkel mit dem Exponenten -p, so lange ausgeführt werden, bis der Restwinkel durch die Elementarwinkel mit Exponenten, die größer als -(p + 1) sind, angenähert werden kann. Sobald dies erreicht ist, muss keine weitere Elementardrehung mehr wiederholt werden, das heißt, es wird keine Drehung um einen Winkel 2-(p+1) wiederholt.
  • Ein Blockschaltbild für eine CORDIC-Einheit mit einer Wortlänge von b Bit, in der das beschriebene Verfahren realisiert ist, ist in Fig. 6 dargestellt. Die erfindungsgemäße CORDIC-Einheit umfasst eine erste Berechnungseinheit 10, einen ersten Vergleicher 20, einen zweiten Vergleicher 50 und eine Anzahl von Elementar-Rotationsstufen 30p bis 30b-1 zum Ausführen von Elementardrehungen mit Elementarwinkeln 2-i, wobei i die Werte p (minimaler zulässiger Exponent für das skalierungsfreie Verfahren, siehe oben) bis b-1 annehmen kann. Die erste Berechnungseinheit 10 ist mit dem ersten Vergleicher 20 verbunden. Der erste Vergleicher 20 ist wiederum mit den Elementar-Rotationsstufen 30p-30b-1 sowie dem zweiten Vergleicher 50 verbunden, der ebenfalls mit den Elementar- Rotationsstufen 30p bis 30b-1 in Verbindung steht.
  • Die erste Berechnungseinheit 10 dient dazu, anhand eines vorgegebenen Exponenten i den Elementardrehwinkel αi zu berechnen und diesen an den ersten Vergleicher 20 auszugeben. Der erste Vergleicher 20 empfängt außer den Elementardrehwinkeln αi auch den Drehwinkel, der durch den Wert z gegeben ist. Außerdem kann der erste Vergleicher 20 dazu ausgelegt sein, die Werte x und y der Komponenten des zu drehenden Vektors zu empfangen und an die Elementar-Rotationsstufen 30p-30b-1 weiterzugeben. Alternativ kann auch eine zusätzliche Verbindung zum Weiterleiten der Werte x und y an die Elementar- Rotationsstufen 30p-30b-1 unter Umgehung des ersten Vergleichers 20 vorhanden sein.
  • Der erste Vergleicher 20 führt einen Vergleich zwischen dem zu berechnenden Drehwinkel z und dem von der ersten Berechnungseinheit 10 erhaltenen Elementarwinkel αi durch. Ergibt der Vergleich, dass der Elementarwinkel αi kleiner oder gleich dem Drehwinkel, um den zu drehen ist, ist, so löst der erste Vergleicher 20 eine Elementardrehung um den Elementarwinkel αi aus. Dazu gibt er die Komponenten x und y des zu drehenden Vektors sowie den Wert z des Drehwinkels an diejenige Elementar-Rotationsstufe weiter (oder löst ggf. die Weitergabe aus), die dem Elementarwinkel αi entspricht, also eine Drehung um den Elementarwinkel αi ausführt. Die Elementar-Rotationsstufe gibt als Ergebnis der Elementardrehung neue Komponenten x' und y' sowie einen Restdrehwinkel z' = z - 2-i, um den noch zu drehen ist, an den zweiten Vergleicher 50 aus. Alternativ kann zum Berechnen des Restdrehwinkels auch eine eigens dafür vorgesehene Berechnungseinheit vorhanden sein.
  • Ergibt der Vergleich jedoch, dass der Elementarwinkel αi größer als der Drehwinkel, um den zu drehen ist, ist, so veranlasst der erste Vergleicher 20 die Berechnungseinheit 10 einen neuen Elementarwinkel, bei dem der Betrag des Exponenten um eins erhöht ist, zu berechnen. Die Berechnungseinheit 10 gibt den neuen Elementarwinkel dann an en ersten Vergleicher 20 aus, der ihn mit dem Restdrehwinkel vergleicht. Abhängig von diesem Vergleich löst der Vergleicher 20 entweder die Elementardrehung oder die Berechnung eines neuen Elementarwinkels aus.
  • Der zweite Vergleicher 50 vergleicht den von einer der Elementar- Rotationsstufen ausgegebenen Restwinkel z' mit einem vorgegebenen Referenzwert Rref. Der Referenzwert Rref steht dabei für die maximale Abweichung, die der Restdrehwinkel am Ende der iterativen Approximation vom ursprünglichen Drehwinkel haben darf. Wird dieser Referenzwert Rref vom Restdrehwinkel unterschritten, so gibt der zweite Vergleicher die Werte x', y' und z als Endergebnis der iterativen Approximation aus. Ist der Wert des Restdrehwinkels z' jedoch größer als der Referenzwert Rref, so gibt der zweiter Vergleicher 50 die Werte x', y' und z' an den ersten Vergleicher 20 weiter. Der erste Vergleicher 20 vergleicht den vom zweiten Vergleicher 50 erhaltenen Restdrehwinkel z' wiederum mit dem aktuellen Elementarwinkel αi und löst eine weitere Elementardrehung um den Elementarwinkel αi aus, falls der Restdrehwinkel z' größer oder gleich dem Elementardrehwinkel αi ist. Dies führt dazu, dass Elementardrehungen um den Elementarwinkel αi so lange ausgeführt werden, bis der Restwinkel z' kleiner als der Elementarwinkel αi ist. Sobald der Restdrehwinkel z' kleiner als der Elementarwinkel αi ist, veranlasst der erste Vergleicher 20, die erste Berechnungseinheit 10, den nächsten Elementarwinkel αi+1, das heißt, den Elementarwinkel 2-(i+1), zu berechnen. Dieser neue Elementarwinkel wird von der ersten Berechnungseinheit 10 wiederum an den ersten Vergleicher 20 abgegeben, der den neuen Elementarwinkel wiederum mit dem Restwinkel z' vergleicht. Dies wird so lange fortgeführt, bis der Vergleich des Restdrehwinkels mit dem jeweils neuen Elementarwinkel αi ergibt, dass der Restdrehwinkel größer oder gleich dem Elementarwinkel ist. Sobald dies der Fall ist, löst der erste Vergleicher 20 wieder eine Elementardrehung aus.
  • Eine Implementierung der erfindungsgemäßen CORDIC-Einheit in Form eines CORDIC-Prozessors ist in Fig. 7 dargestellt. Der CORDIC-Prozessor umfasst einen Vorprozessor 100 als Vorverarbeitungseinheit, eine Pipeline-Einheit 200 als CORDIC-Einheit zum Durchführen des eigentlichen CORDIC-Prozesses, im Folgenden CORDIC-Pipeline genannt, sowie eine Ausgangsschaltung 300. Der Vorprozessor 100 empfängt die Komponenten x0 und y0 des zu drehenden Vektors sowie den Drehwinkel 20, um den der Vektor gedreht werden soll. Außerdem empfängt der Vorprozessor ein Modussignal "mode", das bestimmt, ob der CORDIC-Prozessor im Rotationsmodus oder im Vektoring-Modus betrieben werden soll. Der HI Pegel (logisch hoher Pegel) des Modussignals mode veranlasst den Prozessor, im Rotationsmodus zu arbeiten, wohingegen der LO Pegel (logisch niedriger Pegel) des Modussignals mode den Prozessor veranlasst, im Vektoring-Modus zu arbeiten. Neben dem Modus-Signal empfängt der Vorprozessor auch ein Data-Valid-Signal, das die Gültigkeit des Eingangssignals anzeigt. Der Vorprozessor 100 stellt das Vorzeichen der Eingangsvariablen x0 und y0 und die Domäne, in der der Vektor liegt, fest. Entsprechend werden die Eingangsvariablen dann verarbeitet, sodass die CORDIC-Pipeline nur Winkel zwischen 0 und π/8 verarbeiten muss. Das Bestimmen des Vorzeichens und der Domäne, das Vorverarbeiten sowie die entsprechenden Eingabeoperationen benötigen insgesamt 2 Taktzyklen.
  • Die CORDIC-Pipeline ist eine Bit-Parallele Pipeline-Implementierung der Gleichungen 15 und 16 mit einer internen Wortlänge von 16 Bit. Die Pipeline ist 17 Stufen lang. Sie weist Elementar-Rotationsstufen mit Elementarwinkeln 2-i mit i = 4, 5, . . ., 15 auf, wobei die Elementar-Rotationsstufe, die einem Elementarwinkel αi von 2-4 entspricht, sechs mal wiederholt ist. Das Ziel, das mit der CORDIC- Pipeline erreicht werden soll, ist es, den Wert z im Rotationsmodus bzw. den Wert y im Vektoring-Modus mit einer Genauigkeit von weniger als 2-15 an Null heranzuführen. In der Konstruktion der Elementar-Rotationsstufen wird die gewöhnliche Zeikomponenten-Addition verwendet. Die Information darüber, in welchem Quadranten und welcher Domäne der Eingangsvektor mit den Komponenten x0 und y0 liegt, die im Vorprozessor bestimmt worden ist, wird zwischen zwei aufeinanderfolgenden Abschnitten der CORDIC-Pipeline zusammen mit den Daten in der Art und Weise eines logischen Registertransfers weitergegeben. Dies bedeutet, dass die Daten in verschiedenen Abschnitten der Pipeline ein Kennzeichen besitzen, das im Wesentlichen die Information über den ursprünglichen Quadranten und die ursprüngliche Domäne enthält. Ein 1 Bit-Signal "sign" und zwei 2 Bit-Signale "Domain" und "Quad" werden dazu verwendet, diese Information zwischen verschiedenen Rotationsstufen zu übertragen.
  • Der Ausgangsschaltkreis umfasst eine feste Skalierungseinheit zum Skalieren mit dem Wert 1/√2 und eine Anzahl Addierer/Subtrahierer. Dieser Schaltkreis führt eine Nachverarbeitung des Ausgangsvektors, der von der CORDIC-Pipeline ausgegeben wird, anhand der Information über den Eingangsvektor, die vom Vorprozessor bestimmt worden ist, aus und erzeugt das endgültige Ausgangssignal. Alle Operationen des Ausgangsschaltkreises werden in einem Taktzyklus abgeschlossen.

Claims (14)

1. CORDIC-Einheit zur iterativen Approximation einer Vektordrehung um einen Drehwinkel θ durch eine Anzahl von Elementardrehungen um Elementarwinkel αi, umfassend Elementar-Rotationsstufen (30p-30b-1), jeweils zum Durchführen einer Elementardrehung um einen Elementarwinkel αi als einem Iterationsschritt der iterativen Approximation, wobei nach einem Iterationsschritt ein Restwinkel verbleibt, um den noch zu drehen ist, dadurch gekennzeichnet, dass die Elementar-Rotationsstufen (30p-30b-1) zum Drehen um Elementarwinkel αi ausgelegt sind, die durch Zweierpotenzen mit einem negativen ganzzahligen Exponenten gegeben sind, und dass eine Auslöseeinrichtung (20) zum Auslösen der Elementardrehungen vorhanden ist, die dazu ausgestaltet ist, vor jedem Iterationsschritt den Restwinkel mit mindestens einem der Elementarwinkel zu vergleichen und solche Elementar-Rotationsstufen (30p-30b-1) auszulassen, deren Elementarwinkel größer als der Restwinkel sind.
2. CORDIC-Einheit nach Anspruch 1, dadurch gekennzeichnet, dass die Auslöseeinrichtung mindestens einen ersten Vergleicher (20), eine erste Berechnungseinheit (10) zum Berechnen der Elementarwinkel und eine zweite Berechnungseinheit zum Berechnen des Restwinkels, um den noch zu drehen ist, nachdem eine Elementardrehung um einen aktuellen Elementarwinkel durchgeführt worden ist, umfasst, wobei der erste Vergleicher (20) dazu ausgelegt ist, entweder nach einer Elementardrehung den Restwinkel, um den noch zu drehen ist, zu empfangen und zu prüfen, ob der Restwinkel größer oder gleich dem aktuellen Elementarwinkel ist, und, wenn dies der Fall ist, ein Berechnungssignal an die dem aktuellen Elementarwinkel entsprechende Elementar-Rotationsstufe (30p -30b - 1) zum erneuten Durchführen einer Elementardrehung um den aktuellen Elementarwinkel abzugeben, oder nach der Berechnung eines neuen Elementarwinkels den neuen Elementarwinkel zu empfangen und zu prüfen, ob der Restwinkel größer oder gleich dem neuen Elementarwinkel ist, und, wenn dies der Fall ist, ein Berechnungssignal an die dem neuen Elementarwinkel entsprechende Elementar-Rotationsstufe (30 p--30b-1) zum Durchführen einer Elementardrehung um den neuen Elementarwinkel abzugeben und sonst ein Berechnungssignal an die erste Berechnungseinheit (10) auszusenden, das die Berechnung eines neuen Elementarwinkels mit einem betragsmäßig um eins erhöhten neuen Exponenten auslöst.
3. CORDIC-Einheit nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass ein zweiten Vergleicher (50) vorhanden ist, der dazu ausgelegt ist, nach jeder Elementardrehung zu prüfen, ob ein nach der Elementardrehung verbleibender Restwinkel kleiner ist als ein vorgegebener Referenzwert, und die iterative Approximation abzuschließen, wenn dies der Fall ist.
4. CORDIC-Einheit nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass sie eine Wortlänge von b Bit aufweist und dass Elementar-Rotationsstufen (30p-30b-1) zur Drehung um Elementarwinkel αi = 2-i im Bereich zwischen einem maximalen und einem minimalen Elementarwinkel vorhanden sind, wobei der betragsmäßig minimale Exponent i, und damit der maximale Elementarwinkel, durch eine Zahl p gegeben ist, welche die kleinste ganze Zahl ist, die für i bei einer Wortlänge von b Bit in die Summe


einsetzbar ist, so dass die Summe die Maschinen-Null ergibt, und der betragsmäßig maximale Exponent, und damit der minimale Elementarwinkel, durch b-1 gegeben ist.
5. CORDIC-Einheit nach Anspruch 4, dadurch gekennzeichnet, dass für jeden Exponenten, der betragsmäßig größer oder gleich p und kleiner oder gleich b-1 ist, mindestens eine Elementar-Rotationsstufe (30p-30b-1) vorhanden ist
6. CORDIC-Einheit nach Anspruch 5, dadurch gekennzeichnet, dass sie wenigstens eine Elementar-Rotationsstufe 30p umfasst, die zur Drehung um den maximalen Elementarwinkel ausgelegt ist.
7. CORDIC-Einheit nach einem der Ansprüche 4 bis 6, dadurch gekennzeichnet, dass alle Elementar-Rotationsstufen (30p-30b-1), die zur Drehung um Elementarwinkel ausgelegt sind, deren betragsmäßiger Exponent größer oder gleich (b-1)/2 ist, vier Schieber (12, 14, 20, 22), zwei Subtrahierer (10, 18) und zwei Addierer/Subtrahierer (16, 24) umfassen und alle anderen Elementar-Rotationsstufen (30p-30b-1) zwei Schieber (14, 22) und zwei Addierer/Subtrahierer (16, 24) umfassen.
8. CORDIC-Einheit zur iterativen Approximation einer Vektordrehung um einen Drehwinkel θ durch eine Anzahl von Elementardrehungen um Elementarwinkel αi, die eine Wortlänge von b Bit aufweist, umfassend Elementar-Rotationsstufen (30p-30b-1), jeweils zum Durchführen einer Elementardrehung um einen Elementarwinkel αi als einem Iterationsschritt der iterativen Approximation, dadurch gekennzeichnet, dass die Elementar-Rotationsstufen (30p-30b-1) zur Drehung um Elementarwinkel ausgelegt sind, die durch Zweierpotenzen mit einem negativen ganzzahligen Exponenten -i gegeben sind, wobei der betragsmäßig minimale Exponent i, und damit der maximale Elementarwinkel, durch eine Zahl p gegeben ist, welche die kleinste ganze Zahl ist, die für i bei einer Wortlänge von b Bit in die Summe


einsetzbar ist, so dass die Summe die Maschinen-Null ergibt, und der betragsmäßig maximale Exponent, und damit der minimale Elementarwinkel, durch b-1 gegeben ist.
9. CORDIC-Einheit nach Anspruch 8, dadurch gekennzeichnet, das für jeden Exponenten, der betragsmäßig größer oder gleich p und kleiner oder gleich b-1 ist, mindestens eine Elementar-Rotationsstufe (30p-30b-1) vorhanden ist.
10. CORDIC-Einheit nach Anspruch 9, dadurch gekennzeichnet, dass sie mehr als eine Elementar-Rotationsstufe 30p umfasst, die zur Drehung um den maximalen Elementarwinkel ausgelegt ist.
11. CORDIC-Einheit nach einem der Ansprüche 8 bis 10, dadurch gekennzeichnet, dass alle Elementar-Rotationsstufen (30p-30b-1), die zur Drehung um Elementarwinkel ausgelegt sind, deren betragsmäßiger Exponent kleiner als (b-1)/2 ist, vier Schieber (12, 14, 20, 22), zwei Subtrahierer (10, 18) und zwei Addierer/Subtrahierer (16, 24) umfassen und alle anderen Elementar-Rotationsstufen zwei Schieber (14, 22) und zwei Addierer/Subtrahierer (16, 24) umfassen.
12. Vorverarbeitungseinheit für eine CORDIC-Einheit, umfassend eine Vorverarbeitungsschaltung (100), die dazu ausgelegt ist, Drehwinkel zwischen π/8 und 2π Grad in das Intervall zwischen 0 und π/8 zu überführen.
13. Vorverarbeitungseinheit nach Anspruch 12, dadurch gekennzeichnet, dass die Vorverarbeitungsschaltung (100) dazu ausgestaltet ist, im ersten Quadranten eines Koordinatensystems liegende Drehwinkel in das Intervall zwischen 0 und π/8 zu überführen, indem der Drehwinkel von π/4 subtrahiert wird, wenn er im Intervall zwischen π/8 und π/4 liegt, indem zum Drehwinkel π/4 addiert wird, wenn er im Intervall zwischen π/4 und 3π/8 liegt, oder indem der Drehwinkel von π/2 subtrahiert wird, wenn er im Intervall zwischen π/4 und 3π/8 liegt, und Drehwinkel, die im zweiten bis vierten Quadranten des Koordinatensystems liegen, vorab unter Ausnutzung der Symmetrie der Koordinatenachsen in den ersten Quadranten zu überführen.
14. CORDIC-Einrichtung dadurch gekennzeichnet, dass sie eine CORDIC- Einheit nach einem der Ansprüche 1 bis 11 und eine Vorverarbeitungseinheit nach Anspruch 12 oder 13 umfasst.
DE10164462A 2001-12-20 2001-12-20 CORDIC-Einheit Expired - Fee Related DE10164462B4 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE10164462A DE10164462B4 (de) 2001-12-20 2001-12-20 CORDIC-Einheit
PCT/EP2002/014695 WO2003054689A2 (de) 2001-12-20 2002-12-20 Cordic-einheit
US10/498,707 US7606852B2 (en) 2001-12-20 2002-12-20 CORDIC unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10164462A DE10164462B4 (de) 2001-12-20 2001-12-20 CORDIC-Einheit

Publications (2)

Publication Number Publication Date
DE10164462A1 true DE10164462A1 (de) 2003-07-10
DE10164462B4 DE10164462B4 (de) 2007-04-26

Family

ID=7711133

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10164462A Expired - Fee Related DE10164462B4 (de) 2001-12-20 2001-12-20 CORDIC-Einheit

Country Status (3)

Country Link
US (1) US7606852B2 (de)
DE (1) DE10164462B4 (de)
WO (1) WO2003054689A2 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198089A1 (en) * 2004-03-08 2005-09-08 Industrial Technology Research Institute Mixed-scaling-rotation CORDIC method with scaling-free rotational operations for vector rotation
JP4987269B2 (ja) * 2005-08-22 2012-07-25 東芝機械株式会社 速度検出装置およびサーボモータ
EP1850597A1 (de) * 2006-04-24 2007-10-31 Universität Dortmund Verfahren und Schaltung zur Durchführung einer Cordic-basierten diskreten Cosinustransformation (DCT) nach Löffler, im Besonderen zur Signalverarbeitung
JP2009281883A (ja) * 2008-05-22 2009-12-03 Toshiba Mach Co Ltd 速度検出装置およびサーボモータ
JP4757328B2 (ja) 2009-07-03 2011-08-24 富士通株式会社 逆正接演算装置及び逆正接演算プログラム
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) * 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
RU2475830C2 (ru) * 2010-08-13 2013-02-20 Виктор Николаевич Бабенко Устройство вращения вектора
US8775493B2 (en) * 2011-04-13 2014-07-08 Lsi Corporation Double-step CORDIC processing for conventional signed arithmetic with decision postponing
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9489342B2 (en) * 2012-12-24 2016-11-08 Intel Corporation Systems, methods, and computer program products for performing mathematical operations
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
FI127560B (en) 2015-06-24 2018-09-14 Murata Manufacturing Co Digital microcircuit and method for calculating inclinometer angles
CN106202890B (zh) * 2016-06-30 2020-01-21 中国人民解放军国防科学技术大学 基于CORDIC和Taylor算法相结合的全流水浮点三角函数装置
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
RU2691854C1 (ru) * 2017-12-21 2019-06-18 Акционерное общество "Ангстрем" (АО "Ангстрем") Асинхронное устройство cordic алгоритма для цифро-сигнальных процессоров
GB2572622B (en) * 2018-04-05 2022-02-16 Imagination Tech Ltd Evaluating a mathematical function in a computational environment
CN111666065B (zh) * 2020-06-03 2022-10-18 合肥工业大学 基于cordic的三角函数流水线迭代求解方法和装置
CN111984226B (zh) * 2020-08-26 2024-02-09 南京大学 一种基于双曲cordic的立方根求解装置及求解方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317753A (en) * 1990-04-20 1994-05-31 Siemens Aktiengesellschaft Coordinate rotation digital computer processor (cordic processor) for vector rotations in carry-save architecture
DE4126953C2 (de) * 1991-08-14 1995-04-13 Fraunhofer Ges Forschung Schaltungsanordnung zur Durchführung des CORDIC-Algorithmus
DE4335925C2 (de) * 1993-10-21 1997-04-03 Bosch Gmbh Robert Schaltungsanordnung zur Signalverarbeitung nach dem CORDIC-Verfahren

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0776916B2 (ja) * 1987-06-30 1995-08-16 日本電気株式会社 疑似除算方式を用いた三角関数演算装置
US6349317B1 (en) * 1999-03-13 2002-02-19 Vitit Kantabutra Efficient radix-4 CORDIC vector rotators and computers of sine and cosine functions
TW583579B (en) * 2001-10-31 2004-04-11 Ind Tech Res Inst Computation method and structure of coordinate rotational digital computer applied in vector rotator
US6656852B2 (en) * 2001-12-06 2003-12-02 Texas Instruments Incorporated Method for the selective removal of high-k dielectrics
US6900122B2 (en) * 2001-12-20 2005-05-31 Micron Technology, Inc. Low-temperature grown high-quality ultra-thin praseodymium gate dielectrics
US7205218B2 (en) * 2002-06-05 2007-04-17 Micron Technology, Inc. Method including forming gate dielectrics having multiple lanthanide oxide layers
US20040057503A1 (en) * 2002-09-24 2004-03-25 Motorola, Inc. Method and apparatus for processing a composite signal including a desired spread spectrum signal and an undesired narrower-band interfering signal

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317753A (en) * 1990-04-20 1994-05-31 Siemens Aktiengesellschaft Coordinate rotation digital computer processor (cordic processor) for vector rotations in carry-save architecture
DE4126953C2 (de) * 1991-08-14 1995-04-13 Fraunhofer Ges Forschung Schaltungsanordnung zur Durchführung des CORDIC-Algorithmus
DE4335925C2 (de) * 1993-10-21 1997-04-03 Bosch Gmbh Robert Schaltungsanordnung zur Signalverarbeitung nach dem CORDIC-Verfahren

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
HAHN, H., TIMMERMANN, D., HOSTICKA, B. (u.a.): A Unified and Division-Free CORDIC Argument Reduction Method with Unlimited Convergence Domain Including Inverse Hyperbolic Functions, In: IEEE Transactions on Computers, ISSN: 0018-9340, 1994, Vol. 43, No. 11, S. 1339-1344 *
HU, Y. H.: CORDIC-Based VLSI Architectures for Digital Signal Processing, In: IEEE Signal Processing Magazine, ISSN: 1053-5888, 1992, Vol. 9, No. 3, S. 16-35 *
WU, C., WU, A.: Modified Vector Rotational CORDIC (MVR-CORDIC) Algorithm and Architecture, In: IEEE Transactions on Circuits and Systems, II: Analog and Digital Signal Processing, ISSN: 1057-7130, Juni 2001, Vol. 48, No. 6, S. 548-561 *

Also Published As

Publication number Publication date
WO2003054689A2 (de) 2003-07-03
US7606852B2 (en) 2009-10-20
WO2003054689A3 (de) 2003-11-20
US20060059215A1 (en) 2006-03-16
DE10164462B4 (de) 2007-04-26

Similar Documents

Publication Publication Date Title
DE10164462B4 (de) CORDIC-Einheit
Vuillemin Exact real computer arithmetic with continued fractions
DE10105945B4 (de) Multiplizierer mit Linearsummierungsarray sowohl zur vorzeichenbehafteten als auch zur vorzeichenlosen Multiplikation
DE3917059A1 (de) Cordic-anordnung zum multiplizieren von komplexen zahlen
Wünsche The complete Gaussian class of quasiprobabilities and its relation to squeezed states and their discrete excitations
EP0051079B1 (de) Binäres MOS-Ripple-Carry-Parallel-Addier/Subtrahierwerk und dafür geeignete Addier/Subtrahierstufe
EP0453641B1 (de) CORDIC-Prozessor für Vektordrehungen in Carry-Save-Architektur
DE102013020730A1 (de) Verfahren und Vorrichtung zur iterativen Berechnung eines Wertes
DE2163621A1 (de) Schaltungsanordnung zur Durchführung der Fourier-Analyse
Ahuja et al. Best approximation on convex sets in a metric space
DE2523755C3 (de) Divisionsvorrichtung unter Verwendung einer Näherungsgleichung
DE2902766A1 (de) Zwei-term-vektor-multiplizierschaltung
DE2313246A1 (de) Spezialrechner
DE4335925C2 (de) Schaltungsanordnung zur Signalverarbeitung nach dem CORDIC-Verfahren
Sario Value distribution under analytic mappings of arbitrary Riemann surfaces
DE10200133A1 (de) Verfahren und Vorrichtung zur Berechnung von Modulo-Operationen
DE1499227C3 (de) Schaltungsanordnung für arithmetische und logische Grundoperationen
DE3833005A1 (de) Phasen/digital- umsetzungsverfahren und anordnungen zur durchfuehrung des verfahrens
Jerison et al. Convergence theorems obtained from induced homomorphisms of a group algebra
DE4126953C2 (de) Schaltungsanordnung zur Durchführung des CORDIC-Algorithmus
DE1239506B (de) Divisionseinrichtung
DE2914580C2 (de) Matrixmultiplizierer für graphische Darstellungen
DE10343229B4 (de) Reduzierter Speicheraufbau für einen EDGE-Modulator
EP1826664B1 (de) Verfahren und Schaltungsanordnung zum Berechnen eines Betrags eines komplexen Signals
KR0138856B1 (ko) 다치 논리 부정 연산장치

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: IHP GMBH - INNOVATIONS FOR HIGH PERFORMANCE MI, DE

8327 Change in the person/name/address of the patent owner

Owner name: IHP GMBH - INNOVATIONS FOR HIGH PERFORMANCE MI, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20120703