DE4126953A1 - CORDIC trigonometric algorithms for processing of arithmetic operations - involves iterative computation of XYZ values with data word-width of N bits using adder and subtractor units - Google Patents

CORDIC trigonometric algorithms for processing of arithmetic operations - involves iterative computation of XYZ values with data word-width of N bits using adder and subtractor units

Info

Publication number
DE4126953A1
DE4126953A1 DE19914126953 DE4126953A DE4126953A1 DE 4126953 A1 DE4126953 A1 DE 4126953A1 DE 19914126953 DE19914126953 DE 19914126953 DE 4126953 A DE4126953 A DE 4126953A DE 4126953 A1 DE4126953 A1 DE 4126953A1
Authority
DE
Germany
Prior art keywords
value
values
calculating
rule
steps
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
DE19914126953
Other languages
German (de)
Other versions
DE4126953C2 (en
Inventor
Dirk Dipl Ing Timmermann
Helmut Dipl Ing Hahn
Bedrich Prof Hosticka
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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
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 Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Priority to DE19914126953 priority Critical patent/DE4126953C2/en
Publication of DE4126953A1 publication Critical patent/DE4126953A1/en
Application granted granted Critical
Publication of DE4126953C2 publication Critical patent/DE4126953C2/en
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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

A so called CORDIC trigonometric computing technique provides a simplified means of processing of arithmetic functions. The process uses algorithms performing iterative operations and has adder/subtractor blocks (X, Y, Z). One block (Z) has n/3 adder units, where 'n' is the number of adders previously utilised. A code conversion process is used (U) that is in table form. In a rotation mode, a specific number of bits are used (delta, sigma). In a vector mode, values are fed to an adder/subtractor (S, A). ADVANTAGE - Reduced hardware requiremnt.

Description

Die Erfindung betrifft Schaltungsanordnungen zur Durchführung des CORDIC-Algorithmus nach dem Oberbegriff der Patentansprüche 1 und 2 sowie Verfahren zur Durchführung des CORDIC-Algorithmus nach dem Oberbegriff der Patentansprüche 5 und 6.The invention relates to circuit arrangements for implementation of the CORDIC algorithm according to the generic term of Claims 1 and 2 and methods for performing the CORDIC algorithm according to the preamble of the claims 5 and 6.

Viele Bereiche der Signal-, Bild- und Datenverarbeitung erfordern die schnelle und kostengünstige Berechnung von arithmetischen Ausdrücken. Eine Entwicklung in diese Richtung wird hauptsächlich durch den Einsatz immer aufwendigerer Algorithmen und den gleichzeitigen steigenden VLSI-Integrationsgrad gefördert.Many areas of signal, image and data processing require the fast and inexpensive calculation of arithmetic expressions. A development in this direction mainly becomes more and more complex through the use Algorithms and the simultaneous increasing level of VLSI integration promoted.

Als ein geeignetes Verfahren zur Lösung derartiger arithmetikintensiver Aufgabenstellungen wird in der letzten Zeit verstärkt der CORDIC-Algorithmus eingesetzt. In diesem Zusammenhang wird auf die Veröffentlichungen J. E. Volder, "The CORDIC Trigonometric Computing Technique" IRE Transactions on Electronic Computers, Vol. EC-8, Nr. 3, S. 330-334, Sept. 1959 und J. S. Walther, "A Unified Algorithm For Elementary Functions", Spring Joint Computer Conference (SJCC) 1971, S. 379-385, hingewiesen. Der CORDIC-Algorithmus zeichnet sich durch seine hohe Funktionalität bzw. die hohe Anzahl der bereitgestellten arithmetischen, speziell sogenannte elementare Funktionen und die dafür benötigten einfachen Grundoperationen, nämlich Addition/Subtraktion und binäres Schieben aus.As a suitable method for solving such arithmetic intensive Tasks has been in the recent past the CORDIC algorithm is increasingly used. In this context is referred to the publications J.E. Volder, "The CORDIC Trigonometric Computing Technique "IRE Transactions on Electronic Computers, Vol. EC-8, No. 3, pp. 330-334, Sept. 1959 and J. S. Walther, "A Unified Algorithm For Elementary Functions ", Spring Joint Computer Conference (SJCC) 1971, p. 379-385. The CORDIC algorithm stands out due to its high functionality or the high number of provided arithmetic, especially so-called elementary Functions and the basic operations required for this, namely addition / subtraction and binary shifting out.

Durch die Fortschritte in der Integrationsdichte sind jetzt auch Realisierungen vollparalleler CORDIC-Arrays möglich, in denen die CORDIC-typische n-fache Durchführung von drei Iterationsgleichungen (n-Datenwortbreite in Bit) in eine matrixförmige Anordnung von drei n-Bit breiten Iterationsstufen umgesetzt wird. Je nachdem, ob zwischen die einzelnen Stufen Register eingefügt werden oder nicht, spricht man von einer synchronen Pipeline oder einer asynchronen Array-Architektur. Es ist davon auszugehen, daß diese Architekturen an Wichtigkeit zunehmen, weil mit ihnen entweder Systeme mit hoher Datendurchsatzrate oder geringer Latenzzeit in einer regulär strukturierten, VLSI-gerechten Weise aufgebaut werden können. Eine ähnliche Entwicklung hat sich bereits bei der Implementierung von Multiplizierer-Arrays in Hochleistungsanwendungen vollzogen, wo rekursive Anordnungen, obwohl günstiger bezüglich der Chipfläche, bereits keine Rolle mehr spielen.The advances in integration density are now fully parallel CORDIC arrays are also possible, in which the CORDIC-typical n-fold implementation of three iteration equations  (n data word width in bits) into a matrix Arrangement of three n-bit wide iteration levels is implemented. Depending on whether between the individual Steps registers are inserted or not, one speaks of a synchronous pipeline or an asynchronous array architecture. It is assumed that these architectures increase in importance because with them either systems with high data throughput rate or low latency in one be structured in a regular, VLSI-compliant manner can. A similar development has already occurred the implementation of multiplier arrays in high performance applications performed where recursive orders, although cheaper in terms of chip area, none Play more role.

Im folgenden wird zunächst das bisherige Vorgehen an Hand der üblichen Iterationsgleichungen beschrieben. Diese Gleichungen lauten:In the following, the previous procedure is first described using the usual iteration equations are described. These equations ring:

xi+1 = xi - σi 2-i yi (1)x i + 1 = x i - σ i 2 -i y i (1)

yi+1 = yi + σi 2-i xi (2)y i + 1 = y i + σ i 2 -i x i (2)

zi+1 = zi - σi arctg (2-i) (3)z i + 1 = z i - σ i arctg (2 -i ) (3)

wobei σi ε {-1,1} die Drehrichtung der Iteration angibt. In der Betriebsart ROTATION bestimmt man σi aus dem Vorzeichen von zi:where σ i ε {-1,1} indicates the direction of rotation of the iteration. In ROTATION mode, σ i is determined from the sign of z i :

wodurch zi im Verlauf des Iterationsprozesses gegen Null getrieben wird. In der Betriebsart VECTORING bestimmt sich i aus dem Vorzeichen von yi, wodurch yi gegen Null getrieben wird:whereby z i is driven towards zero in the course of the iteration process. In VECTORING mode, i is determined from the sign of y i , which drives y i towards zero:

Normalerweise erfordert das CORDIC-Verfahren, für eine Genauigkeit von n Bit auch n Iterationen durchzuführen. Daraus resultiert, daß in einer Pipeline- oder Array-Architektur drei n-Bit Addierer/Subtrahierer für die Implementierung der Gleichungen (1) bis (3) n-mal, nämlich für n Iterationen, benötigt werden. In Fig. 2 ist eine Stufe bzw. Zeile eines solchen Arrays dargestellt.The CORDIC method normally requires n iterations to be carried out for an accuracy of n bits. As a result, in a pipeline or array architecture, three n-bit adders / subtractors are required n times for the implementation of equations (1) to (3), namely for n iterations. In FIG. 2, a stage or row is shown of such an array.

Der direkten Abbildung der iterativen CORDIC-Gleichungen auf eine Pipeline- oder Array-Architektur steht entgegen, daß die Chipfläche dieser Architekturen proportional 3n² wächst, wobei mit n die Datenwortbreite in Bit bezeichnet wird. Dieser Zusammenhang hat derzeit nur nicht-rekursive Implementierungen von bis zu ca. 20 Bit möglich gemacht. Jede Verringerung der Chipflächenkomplexität ohne Einbußen an Geschwindigkeit erscheint sinnvoll, weil in der digitalen Signalverarbeitung Wortbreiten bis ca. 40 Bit und speziell in der numerischen Datenverarbeitung bis zu 80 Bit auftreten.Direct mapping of the iterative CORDIC equations a pipeline or array architecture precludes that the chip area of these architectures grows proportionally 3n², where n denotes the data word width in bits. This relationship currently only has non-recursive implementations of up to approx. 20 bits possible. Each Reduce chip area complexity without sacrificing speed seems sensible because in digital signal processing Word widths up to approx. 40 bits and especially in numerical data processing up to 80 bits occur.

Verglichen mit anderen Methoden steigt der Hardwareaufwand beim CORDIC-Verfahren besonders stark an, weil drei Datenpfade für die Realisierung der x-, y- und z-Iterationsgleichungen nötig sind. Wie bereits erwähnt, verhält sich damit die Chipfläche proportional 3n².Compared to other methods, the hardware expenditure increases particularly strong in the CORDIC method because three data paths for the implementation of the x, y and z iteration equations are necessary. As already mentioned, this is the case the chip area proportionally 3n².

Der Erfindung liegt die Aufgabe zugrunde, eine Schaltungsanordnung für die Durchführung des CORDIC-Algorithmus anzugeben, die einen geringeren Bedarf an Fläche für die Implementierung bei einem Halbleiter-Chip benötigt.The invention has for its object a circuit arrangement to specify for the implementation of the CORDIC algorithm, which require less space for the Implementation required for a semiconductor chip.

Diese Aufgabe wird erfindungsgemäß durch die Schaltungsanordnung mit den in den Ansprüchen 1 und 2 angegebenen Merkmalen gelöst. This object is achieved by the circuit arrangement with those specified in claims 1 and 2 Features resolved.  

Ferner liegt der Erfindung die Aufgabe zugrunde, ein Verfahren für die Durchführung des CORDIC-Algorithmus anzugeben, das gegenüber dem bekannten CORDIC-Verfahren vereinfacht und schneller ist.The invention is also based on the object Procedure for implementing the CORDIC algorithm specify that compared to the known CORDIC process simplified and faster.

Diese Aufgabe wird erfindungsgemäß durch Verfahren mit den in den Ansprüchen 5 und 6 angegebenen Merkmalen gelöst.This object is achieved by the method with the solved in claims 5 and 6 specified features.

Der Erfindung liegt die Erkenntnis zugrunde, daß die dritte Einrichtung für die iterative Berechnung der z-Werte um etwa zwei Drittel der Stufen gekürzt werden kann, indem die entfallenden Stufen durch einen Subtrahierer oder einen Addierer und einen Subtrahierer ersetzt werden.The invention is based on the knowledge that the third Setup for the iterative calculation of the z values by about two thirds of the levels can be shortened by the steps by a subtractor or a Adders and a subtractor are replaced.

Erfindungsgemäß ist gemäß einer ersten Schaltungsalternative vorgesehen, daß die dritte Einrichtung (Z) zur Berechnung des dritten Endwertes zn According to the invention, according to a first circuit alternative, the third device (Z) for calculating the third final value z n

  • - einerseits einen ersten Abschnitt mit j Stufen zur Berechnung des dritten Wertes zj mittels folgender Iterationsvorschrift umfaßt: zi+1 = zi - σi · arctg (2-i), für i = 1, . . ., j;wobei jn/3 und j eine ganze Zahl ist; und- On the one hand comprises a first section with j steps for calculating the third value z j using the following iteration rule: z i + 1 = z i - σ i · arctg (2 -i ), for i = 1,. . ., j; where jn / 3 and j is an integer; and
  • - andererseits einen zweiten Abschnitt umfaßt, der den dritten Endwert zn auf Grund des Wertes zj und der Werte σi für die j-te bis (n-1)-te Stufe auf Grund folgender Vorschrift berechnet: zn = zj - A + B;mit on the other hand includes a second section which calculates the third end value z n on the basis of the value z j and the values σ i for the jth to (n-1) th stage on the basis of the following rule: z n = z j - A + B; with

Erfindungsgemäß ist gemäß einer zweiten Schaltungsalternative vorgesehen, daß die dritte Einrichtung (Z) zur Berechnung des dritten Endwertes zn According to the invention, according to a second circuit alternative, the third device (Z) for calculating the third final value z n

  • - einerseits einen ersten Abschnitt mit j Stufen zur Berechnung des dritten Wertes zj mittels folgender Iterationsvorschrift umfaßt: zi+1 = zi - σi · arctg (2-i), für i = 1, . . ., j;wobei jn/3 und j eine ganze Zahl ist; und- On the one hand comprises a first section with j steps for calculating the third value z j using the following iteration rule: z i + 1 = z i - σ i · arctg (2 -i ), for i = 1,. . ., j; where jn / 3 and j is an integer; and
  • - andererseits einen zweiten Abschnitt umfaßt, der den dritten Endwert zn aufgrund der Werte zj und der Werte σi für die i-te bis n-te Stufe aufgrund folgender Vorschrift berechnet: zn = zj - zt;mit wobei mit - on the other hand includes a second section which calculates the third end value z n on the basis of the values z j and the values σ i for the i-th to n-th stage on the basis of the following rule: z n = z j - z t ; in which With

Auf Grund der Erfindung ist es möglich, die Chipfläche bzw. den Implementierungsaufwand für die z-Iterationsgleichung um ca. 2/3 zu verringern. Dies führt damit zu einer gesamten (Chipflächen-)Einsparung von fast 20%, wobei praktisch kein Geschwindigkeitsverlust auftritt. Der Aufwand verhält sich dann nur noch proportional zu 2,5n².On the basis of the invention, it is possible to the implementation effort for the z iteration equation decrease about 2/3. This leads to an overall (Chip area) savings of almost 20%, but practically none Loss of speed occurs. The effort behaves then only proportional to 2.5n².

Vorteilhafte Weiterbildungen sind in abhängigen Ansprüchen angegeben.Advantageous further developments are in dependent Claims specified.

Der Erfindungsgegenstand wird an Hand eines Ausführungsbeispiels unter Bezugnahme auf die Zeichnung beschrieben. Es zeigtThe subject matter of the invention is based on an embodiment described with reference to the drawing. It shows

Fig. 1 eine erfindungsgemäße Schaltungsanordnung zur Durchführung des CORDIC-Algorithmus; und Fig. 1 shows a circuit arrangement of the invention for performing the CORDIC-algorithm; and

Fig. 2 eine Stufe eines CORDIC-Arrays bei der Schaltungsanordnung gemäß Fig. 1. FIG. 2 shows a stage of a CORDIC array in the circuit arrangement according to FIG. 1.

Es folgen nun Betrachtungen zur Gleichung (3) für die z-Iteration.Considerations for equation (3) for the z iteration now follow.

zi+1 = zi - σi arctg(2-i) (3)z i + 1 = z i - σ i arctg (2 -i ) (3)

In der Gleichung (3) wird in der (i+1)-ten Iteration vom Wert zi die n-Bit breite Konstante arctg(2-i) subtrahiert bzw. addiert.In equation (3), the n-bit constant arctg (2 -i ) is subtracted or added in the (i + 1) th iteration from the value z i .

Der Erfindung liegt die Erkenntnis zugrunde, daß bei der iterativen Berechnung von zi nach einer definierten Anzahl von Iterationen die folgenden Additionen/Subtraktionen mit sehr viel geringerem Aufwand substituiert werden können.The invention is based on the knowledge that in the iterative calculation of z i after a defined number of iterations, the following additions / subtractions can be substituted with much less effort.

Die arctg-Funktion kann als Reihenentwicklung mit einem Fehler kleiner gleich 2-n folgendermaßen dargestellt werden:The arctg function can be represented as a series development with an error less than or equal to 2 -n as follows:

arctg(2-i) = 2-i - (1/3)2-3i + . . . = 2-i für i < n/3 (4)arctg (2 -i ) = 2 -i - (1/3) 2 -3i +. . . = 2 -i for i <n / 3 (4)

Die Gleichung (3) kann daher für i<n/3 geschrieben werden als:Equation (3) can therefore be written for i <n / 3 as:

zi+1 = zi - σi 2-i (5)z i + 1 = z i - σ i 2 -i (5)

bzw. mit j als der kleinsten ganzzahligen Zahl größer oder gleich n/3:or with j as the smallest integer greater or equal to n / 3:

Praktisch bedeutet die Gleichung (6), daß der gesuchte Endwert zn der Iteration direkt aus zj durch Addition/Subtraktion von (n-j) einstelligen Binärwörtern berechnet werden kann. Beispielsweise für j=3, n=8, σ₃=1, σ₄=-1, σ₅=-1, σ₆=1, σ₇=-1 giltIn practice, equation (6) means that the desired end value z n of the iteration can be calculated directly from z j by adding / subtracting (nj) single-digit binary words. For example, for j = 3, n = 8, σ₃ = 1, σ₄ = -1, σ₅ = -1, σ₆ = 1, σ₇ = -1

z₈ = z₃ - 2-3 + 2-4 + 2-5 - 2-6 + 2-7 z₈ = z₃ - 2 -3 + 2 -4 + 2 -5 - 2 -6 + 2 -7

Diese (n-j)-einstelligen Binärwörter können in zwei n-stellige Binärwörter zusammengefaßt werden, und zwar die Summanden mit positiven Vorzeichen in das eine Datenwort und die Summanden mit den negativen Vorzeichen in das andere.These (n-j) one-digit binary words can be divided into two n-digit Binary words are summarized, namely the summands with a positive sign in the one data word and the Summands with negative signs in the other.

Die Umwandlung der (n-j) Additionen der Gleichung (6) in eine Addition und eine Subtraktion beschreibt der folgende Ausdruck:The conversion of the (n-j) additions of equation (6) into one The following describes addition and subtraction Expression:

mitWith

Angewandt auf das vorhergehende Beispiel ergibt sich:Applied to the previous example:

z₈ = z₃ - 0.0010010₂ + 0.0001101₂z₈ = z₃ - 0.0010010₂ + 0.0001101₂

Also können ca. 2/3 der Iterationen im z-Pfad auf eine Addition und eine Subtraktion reduziert werden. Für die praktische Ausführung bei einer Schaltungsanordnung bedeutet dies den Wegfall des z-Pfades nach n/3 Iterationen.So approximately 2/3 of the iterations in the z-path can add up and subtraction can be reduced. For the practical Execution with a circuit arrangement means this the loss of the z-path after n / 3 iterations.

Es ist noch auszuführen, auf welche Weise die σi bestimmt werden. Im Falle der Betriebsart VECTORING bleibt es, wie bisher, bei der Herleitung aus den Vorzeichen von yi. Bei der ROTATION kann jedoch nicht mehr das Vorzeichen der zi ermittelt werden, weil keine Iteration durchgeführt wird. Man kann dann jedoch das Verfahren der Drehrichtungsvorhersage verwenden, wie es in der Dissertation D. Timmermann, "CORDIC Algorithmen, Architekturen und monolithische Realisierungen mit Anwendungen in der Bildverarbeitung", Gesamthochschule Universität Duisburg, 1990, S. 157-162 beschrieben ist. Dabei werden die σi direkt aus den Bits von zj durch eine Umkodierung generiert, wie es im folgenden beschrieben wird.It remains to be seen how the σ i are determined. In the VECTORING operating mode, the derivation from the signs of y i remains as before. However, the sign of the z i can no longer be determined in the ROTATION because no iteration is carried out. However, one can then use the method of predicting the direction of rotation, as described in the dissertation D. Timmermann, "CORDIC Algorithms, Architectures and Monolithic Realizations with Applications in Image Processing", Gesamthochschule Universität Duisburg, 1990, pp. 157-162. The σ i are generated directly from the bits of z j by recoding, as described below.

Betrachten wir den Zustand zu Beginn der j-ten Iteration. Der Wert zj im z-Pfad ist gegeben durch seine binäre Darstellung:Let us consider the state at the beginning of the jth iteration. The value z j in the z path is given by its binary representation:

Andererseits wird durch den folgenden Iterationsprozeß nach Gleichung (3) der Wert zj in arctg(2-i)-Terme zerlegt. Außerdem ist zn im Modus ROTATION definitionsgemäß kleiner gleich 2-n, so daß aus Gleichung (6) mit einem Fehler kleiner 2-n folgt:On the other hand, the following iteration process according to equation (3) divides the value z j into arctg (2 -i ) terms. In addition, by definition, z n in ROTATION mode is less than or equal to 2 -n , so that from equation (6) with an error of less than 2 -n it follows:

Nach Gleichung (4) ist arctg (2-i)=2-i mit einem Fehler kleiner gleich 2-n für i<n/3 belastet. Der Vergleich der beiden letzten Gleichungen und der zulässigen Werte für Zi und σi zeigt dann, daß die gesuchten σi aus den Bits Zi von zj durch eine Umkodierung gewonnen werden können. Diese Umkodierung wird mit Hilfe folgender Tabelle vorgenommen:According to equation (4) arctg (2 -i ) = 2 -i is loaded with an error of less than or equal to 2 -n for i <n / 3. The comparison of the last two equations and the permissible values for Z i and σ i then shows that the sought σ i can be obtained from the bits Z i of z j by recoding. This recoding is carried out using the following table:

Für negative Zahlen zi sind die σi zu invertieren. Das folgende Beispiel verdeutlicht den Konvertierungsvorgang.For negative numbers z i , invert the σ i . The following example illustrates the conversion process.

Mit dieser Umkodierung erhält man also alle gesuchten σj bis σn-1 direkt aus zj.With this recoding, all of the σ j to σ n-1 sought are obtained directly from z j .

Eine Schaltung, die den Erfindungsgegenstand umfaßt, ist in der Fig. 1 schematisch dargestellt. Die großen mit X, Y bzw. Z bezeichneten Blöcke enthalten die Addierer/Subtrahierer für den x-, y- und z-Pfad. Im z-Pfad werden nur noch n/3 statt wie bisher n Addierer benötigt. Mit U ist ein Umkodierer bezeichnet, der die weiter oben angegebene Umkodierungs-Tabelle implementiert und im Modus ROTATION die σi aus den Bits von zj gewinnt. Im Modus VECTORING werden die σi wie üblich aus den Vorzeichen von yi bestimmt und gemäß Gleichung (7) in zwei Datenwörter zusammengefaßt und dann mit dem Addierer A und dem Subtrahierer S zur Berechnung von zn genutzt.A circuit comprising the subject of the invention is shown schematically in FIG. 1. The large blocks labeled X, Y and Z contain the adders / subtractors for the x, y and z paths. In the z path, only n / 3 are required instead of n adders as before. U denotes a recoder which implements the recoding table given above and in the ROTATION mode obtains the σ i from the bits of z j . In the VECTORING mode, the σ i are determined as usual from the signs of y i and combined into two data words according to equation (7) and then used with the adder A and the subtractor S to calculate z n .

Bei den vorstehenden Ausführungen wurde teilweise davon ausgegangen, daß sogenannte nichtredundante Addierer zur Realisierung der Iterationsgleichungen eingesetzt werden. Im Rahmen der Erfindung ist es auch möglich, redundante Addierer (Carry-Save (vergleiche R. Künemund, H. Söldner, S. Wohlleben und T. Noll, "CORDIC Processor With Carry-Save Architecture", Proceedings of 16th European Solid-State Circuits Conference, Grenoble, France, S. 193-196, Sept. 1990); Redundant Binary (vergleiche die Veröffentlichung von H. Yoshimura, T. Nakanishi und H. Tamauchi "A 50 MHz CMOS Geometrical Mapping Processor", IEEE Digest of Technical Papers, ISSCC′88, S. 162-163, Febr. 1988)) einzusetzen. Im Rahmen der Erfindung lassen sich auch Schaltungsanordungen für die Durchführung des CORDIC-Algorithmus bei anderen Koordinatensystemen ausführen, in denen der CORDIC-Algorithmus anwendbar ist, was gemeinhin mit dem Parameter m angegeben wird. Von der Erfindung werden auch die Fälle für m=0 und m=-1 umfaßt.In the above, it was partially assumed that that so-called non-redundant adders for implementation of the iteration equations are used. As part of the invention it is also possible to add redundant adders (Carry-Save (compare R. Künemund, H. Söldner, S. Wohlleben and T. Noll, "CORDIC Processor With Carry-Save Architecture", Proceedings of 16th European Solid-State Circuits Conference, Grenoble, France, pp. 193-196, Sept. 1990); Redundant Binary (compare the publication of H. Yoshimura, T. Nakanishi and H. Tamauchi "A 50 MHz CMOS Geometrical Mapping Processor ", IEEE Digest of Technical Papers, ISSCC'88, pp. 162-163, Feb. 1988)). in the Circuit arrangements can also be used within the scope of the invention for performing the CORDIC algorithm on others Execute coordinate systems in which the CORDIC algorithm is applicable, which is commonly associated with the Parameter m is specified. From the invention too includes the cases for m = 0 and m = -1.

Der Addierer A und der Subtrahierer B in der Fig. 1 können zu einem Subtrahierer zusammengefaßt werden, was den Aufwand weiter verringert. Das folgt aus der Tatsache, daß Gleichung (7) auch wie folgt geschrieben werden kann:The adder A and the subtractor B in FIG. 1 can be combined to form a subtractor, which further reduces the outlay. This follows from the fact that equation (7) can also be written as follows:

Der eingeklammerte Term, hier mit zt bezeichnet, kann ohne Subtraktion berechnet werden, denn es gilt in einer n Bit breiten ZweierkomplementdarstellungThe bracketed term, here designated z t , can be calculated without subtraction, because it applies in an n-bit two's complement representation

wobeiin which

Der Term zt läßt sich also einfach aus den σ′i bestimmen.The term z t can therefore easily be determined from the σ ′ i .

Claims (12)

1. Schaltungsanordnung zur Durchführung des CORDIC-Algorithmus für die iterative Berechnung der x-, y- und z-Werte bei einer Datenwortbreite von n Bit, mit
  • - einer ersten Einrichtung (X) mit n Stufen zur Berechnung eines ersten Endwertes xn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: xi+1 = xi - σi · 2-i · yi, für i = 1, . . ., n;
  • - einer zweiten Einrichtung (Y) mit n Stufen zur Berechnung eines zweiten Endwertes yn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: yi+1 = yi - σi 2-i xi, für i = 1, . . ., n;und
  • - einer dritten Einrichtung (Z) zur Berechnung eines dritten Endwertes zn mit wenigstens einer Stufe zur Berechnung des Wertes zi mittels folgender Iterationsvorschrift: zi+1 = zi - σi arctg (2-i);wobei σi ε {-1,1} die Drehrichtung der Iteration angibt,
1. Circuit arrangement for carrying out the CORDIC algorithm for the iterative calculation of the x, y and z values with a data word width of n bits, with
  • - a first device (X) with n stages for calculating a first end value x n using the following iteration rule, which applies to each stage: x i + 1 = x i - σ i · 2 -i · y i , for i = 1 ,. . ., n;
  • - a second device (Y) with n stages for calculating a second final value y n using the following iteration rule, which applies to each stage: y i + 1 = y i - σ i 2 -i x i , for i = 1 ,. . ., n; and
  • - a third device (Z) for calculating a third final value z n with at least one step for calculating the value z i using the following iteration rule: z i + 1 = z i - σ i arctg (2 -i ); where σ i ε { -1.1} indicates the direction of rotation of the iteration,
dadurch gekennzeichnet, daß die dritte Einrichtung (Z) zur Berechnung des dritten Endwertes zn
  • - einerseits einen ersten Abschnitt mit j Stufen zur Berechnung des dritten Wertes zj mittels folgender Iterationsvorschrift umfaßt: zi+1 = zi - σi · arctg (2-i), für i = 1, . . ., j;wobei jn/3 und j eine ganze Zahl ist; und
  • - andererseits einen zweiten Abschnitt umfaßt, der den dritten Endwert zn auf Grund des Wertes zj und der Werte σi für die j-te bis (n-1)-te Stufe aufgrund folgender Vorschrift berechnet: zn = zj - A + B;mit
characterized in that the third device (Z) for calculating the third end value z n
  • - On the one hand comprises a first section with j steps for calculating the third value z j using the following iteration rule: z i + 1 = z i - σ i · arctg (2 -i ), for i = 1,. . ., j; where jn / 3 and j is an integer; and
  • - On the other hand, includes a second section which calculates the third end value z n on the basis of the value z j and the values σ i for the jth to (n-1) th stage on the basis of the following rule: z n = z j - A + B; with
2. Schaltungsanordnung zur Durchführung des CORDIC-Algorithmus für die iterative Berechnung der x-, y- und z-Werte bei einer Datenwortbreite von n Bit, mit
  • - einer ersten Einrichtung (X) mit n Stufen zur Berechnung eines ersten Endwertes xn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: xi+1 = xi - σi · 2-i · yi, für i = 1, . . ., n;
  • - einer zweiten Einrichtung (Y) mit n Stufen zur Berechnung eines zweiten Endwertes yn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: yi+1 = yi - σi 2-i xi, für i = 1, . . ., n;und
  • - einer dritten Einrichtung (Z) zur Berechnung eines dritten Endwertes zn mit wenigstens einer Stufe zur Berechnung des Wertes zi mittels folgender Iterationsvorschrift: zi+1 = zi - σi arctg (2-i);wobei σi ε {-1,1} die Drehrichtung der Iteration angibt,
2. Circuit arrangement for carrying out the CORDIC algorithm for the iterative calculation of the x, y and z values with a data word width of n bits, with
  • - a first device (X) with n stages for calculating a first end value x n using the following iteration rule, which applies to each stage: x i + 1 = x i - σ i · 2 -i · y i , for i = 1 ,. . ., n;
  • - a second device (Y) with n stages for calculating a second final value y n using the following iteration rule, which applies to each stage: y i + 1 = y i - σ i 2 -i x i , for i = 1 ,. . ., n; and
  • - a third device (Z) for calculating a third final value z n with at least one step for calculating the value z i using the following iteration rule: z i + 1 = z i - σ i arctg (2 -i ); where σ i ε { -1.1} indicates the direction of rotation of the iteration,
dadurch gekennzeichnet, daß die dritte Einrichtung (Z) zur Berechnung des dritten Endwertes zn
  • - einerseits einen ersten Abschnitt mit j Stufen zur Berechnung des dritten Wertes zj mittels folgender Iterationsvorschrift umfaßt: zi+1 = zi - σi · arctg (2-i), für i = 1, . . ., j;wobei jn/3 und j eine ganze Zahl ist; und
  • - andererseits einen zweiten Abschnitt umfaßt, der den dritten Endwert zn auf Grund der Werte zj und der Werte σi für die i-te bis n-te Stufe aufgrund folgender Vorschrift berechnet: zn = zj - zt;mit wobei mit
characterized in that the third device (Z) for calculating the third end value z n
  • - On the one hand comprises a first section with j steps for calculating the third value z j using the following iteration rule: z i + 1 = z i - σ i · arctg (2 -i ), for i = 1,. . ., j; where jn / 3 and j is an integer; and
  • - on the other hand includes a second section which calculates the third end value z n on the basis of the values z j and the values σ i for the i-th to n-th stage based on the following rule: z n = z j - z t ; with in which With
3. Schaltungsanordnung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die dritte Einrichtung einen dritten Abschnitt umfaßt, der in der Betriebsart VECTORING die Werte σi folgendermaßen aufgrund des Vorzeichens der Werte yi bestimmt: 3. Circuit arrangement according to claim 1 or 2, characterized in that the third device comprises a third section which determines the values σ i in the VECTORING operating mode as follows based on the sign of the values y i : 4. Schaltungsanordnung nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet,
daß die dritte Einrichtung einen vierten Abschnitt umfaßt, der in der Betriebsart ROTATION die Werte σi aufgrund der folgenden Umkodierungsvorschrift aus den Bits Zi des Wertes zj bestimmt: mit und
daß die dritte Einrichtung die Werte σi für negative Werte von zj invertiert.
4. Circuit arrangement according to one of claims 1 to 3, characterized in
that the third device comprises a fourth section which, in the ROTATION mode, determines the values σ i based on the following recoding rule from the bits Z i of the value z j : With and
that the third device inverts the values σ i for negative values of z j .
5. Verfahren zum Durchführen des CORDIC-Algorithmus für die iterative Berechnung der x-, y- und z-Werte bei einer Datenwortbreite von n Bit, mit folgenden Schritten:
  • - einer ersten Schrittfolge zur n-stufigen Berechnung eines ersten Endwertes xn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: xi+1 = xi - σi · 2-i · yi, für i = 1, . . ., n;
  • - einer zweiten Schrittfolge zur n-stufigen Berechnung eines zweiten Endwertes yn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: yi+1 = yi + σi 2-i xi, für i = 1, . . ., n;und
  • - einer dritten Schrittfolge zur Berechnung eines dritten Endwertes zn mit wenigstens einer Stufe zur Berechnung des Wertes zi mittels folgender Iterationsvorschrift: zi+1 = zi - σi arctg (2-i);wobei σi ε {-1,1} die Drehrichtung der Iteration angibt,
5. Method for performing the CORDIC algorithm for the iterative calculation of the x, y and z values with a data word width of n bits, with the following steps:
  • a first sequence of steps for the n-stage calculation of a first end value x n using the following iteration rule, which applies to each stage: x i + 1 = x i - σ i · 2 -i · y i , for i = 1 ,. . ., n;
  • a second sequence of steps for the n-stage calculation of a second final value y n using the following iteration rule, which applies to each stage: y i + 1 = y i + σ i 2 -i x i , for i = 1 ,. . ., n; and
  • a third sequence of steps for calculating a third final value z n with at least one step for calculating the value z i using the following iteration rule: z i + 1 = z i - σ i arctg (2 -i ); where σ i ε {-1, 1} indicates the direction of rotation of the iteration,
dadurch gekennzeichnet, daß die dritte Schrittfolge zur Berechnung des dritten Endwertes zn
  • - einerseits einen ersten Abschnitt mit j Stufen zur Berechnung des dritten Wertes zj mittels folgender Iterationsvorschrift umfaßt: zi+1 = zi - σi · arctg (2-i), für i = 1, . . ., j;wobei jn/3 und j eine ganze Zahl ist; und
  • - andererseits einen zweiten Abschnitt umfaßt, der den dritten Endwert zn aufgrund des Wertes zj und der Werte σi für die j-te bis (n-1)-te Stufe auf Grund folgender Vorschrift berechnet: zn = zj - A + B;mit
characterized in that the third sequence of steps for calculating the third final value z n
  • - On the one hand comprises a first section with j steps for calculating the third value z j using the following iteration rule: z i + 1 = z i - σ i · arctg (2 -i ), for i = 1,. . ., j; where jn / 3 and j is an integer; and
  • on the other hand includes a second section which calculates the third end value z n on the basis of the value z j and the values σ i for the jth to (n-1) th stage on the basis of the following rule: z n = z j - A + B; with
6. Verfahren zum Durchführen des CORDIC-Algorithmus für die iterative Berechnung der x-, y- und z-Werte bei einer Datenwortbreite von n Bit, mit folgenden Schritten:
  • - einer ersten Schrittfolge zur n-stufigen Berechnung eines ersten Endwertes xn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: xi+1 = xi - σi · 2-i · yi, für i = 1, . . ., n;
  • - einer zweiten Schrittfolge zur n-stufigen Berechnung eines zweiten Endwertes yn mittels folgender, für jede Stufe geltenden Iterationsvorschrift: yi+1 = yi + σi 2-i xi, für i = 1, . . ., n;und
  • - einer dritten Schrittfolge zur Berechnung eines dritten Endwertes zn mit wenigstens einer Stufe zur Berechnung des Wertes zi mittels folgender Iterationsvorschrift: zi+1 = zi - σi arctg (2-i);wobei σi ε {-1,1} die Drehrichtung der Iteration angibt,
6. Method for performing the CORDIC algorithm for the iterative calculation of the x, y and z values with a data word width of n bits, with the following steps:
  • a first sequence of steps for the n-stage calculation of a first end value x n using the following iteration rule, which applies to each stage: x i + 1 = x i - σ i · 2 -i · y i , for i = 1 ,. . ., n;
  • a second sequence of steps for the n-stage calculation of a second final value y n using the following iteration rule, which applies to each stage: y i + 1 = y i + σ i 2 -i x i , for i = 1 ,. . ., n; and
  • a third sequence of steps for calculating a third final value z n with at least one step for calculating the value z i using the following iteration rule: z i + 1 = z i - σ i arctg (2 -i ); where σ i ε {-1, 1} indicates the direction of rotation of the iteration,
dadurch gekennzeichnet, daß die dritte Schrittfolge zur Berechnung des dritten Endwertes zn
  • - einerseits einen ersten Abschnitt mit j Stufen zur Berechnung des dritten Wertes zj mittels folgender Iterationsvorschrift umfaßt: zi+1 = zi - σi · arctg (2-i), für i = 1, . . ., j;wobei jn/3 und j eine ganze Zahl ist; und
  • - andererseits einen zweiten Abschnitt umfaßt, der den dritten Endwert zn aufgrund der Werte zj und der Werte σi für die i-te bis n-te Stufe aufgrund folgender Vorschrift berechnet: zn = zj - zt;mit wobei mit
characterized in that the third sequence of steps for calculating the third final value z n
  • - On the one hand comprises a first section with j steps for calculating the third value z j using the following iteration rule: z i + 1 = z i - σ i · arctg (2 -i ), for i = 1,. . ., j; where jn / 3 and j is an integer; and
  • - on the other hand includes a second section which calculates the third end value z n on the basis of the values z j and the values σ i for the i-th to n-th stage on the basis of the following rule: z n = z j - z t ; in which With
7. Verfahren nach Anspruch 5 oder 6, dadurch gekennzeichnet, daß die dritte Schrittfolge einen dritten Abschnitt umfaßt, durch den in der Betriebsart VECTORING die Werte σi folgendermaßen aufgrund des Vorzeichens der Werte yi bestimmt werden: 7. The method according to claim 5 or 6, characterized in that the third sequence of steps comprises a third section, through which in the VECTORING mode the values σ i are determined as follows based on the sign of the values y i : 8. Verfahren nach einem der Ansprüche 5 bis 7, dadurch gekennzeichnet,
daß die dritte Schrittfolge einen vierten Abschnitt umfaßt, durch den in der Betriebsart ROTATION die Werte σi aufgrund der folgenden Umkodierungsvorschrift aus den Bits Zi des Wertes zj bestimmt werden: mit und
daß die dritte Schrittfolge die Werte σi für negative Werte von zj invertiert.
8. The method according to any one of claims 5 to 7, characterized in
that the third sequence of steps comprises a fourth section, through which in the ROTATION mode the values σ i are determined from the bits Z i of the value z j on the basis of the following recoding rule: With and
that the third sequence of steps inverts the values σ i for negative values of z j .
DE19914126953 1991-08-14 1991-08-14 Circuit arrangement for implementing the CORDIC algorithm Expired - Fee Related DE4126953C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19914126953 DE4126953C2 (en) 1991-08-14 1991-08-14 Circuit arrangement for implementing the CORDIC algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE19914126953 DE4126953C2 (en) 1991-08-14 1991-08-14 Circuit arrangement for implementing the CORDIC algorithm

Publications (2)

Publication Number Publication Date
DE4126953A1 true DE4126953A1 (en) 1993-02-18
DE4126953C2 DE4126953C2 (en) 1995-04-13

Family

ID=6438331

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19914126953 Expired - Fee Related DE4126953C2 (en) 1991-08-14 1991-08-14 Circuit arrangement for implementing the CORDIC algorithm

Country Status (1)

Country Link
DE (1) DE4126953C2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003054689A2 (en) * 2001-12-20 2003-07-03 IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik Cordic-unit

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19950577C2 (en) * 1999-10-20 2002-08-22 Siemens Ag Complex CORDIC procedure for signal processing tasks as well as radio communication system for the implementation of the procedure

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3917059A1 (en) * 1988-05-31 1989-12-07 Gen Electric CORDIC ARRANGEMENT FOR MULTIPLICATING COMPLEX NUMBERS
EP0453641A2 (en) * 1990-04-20 1991-10-30 Siemens Aktiengesellschaft CORDIC-processor for vector rotation with carry-save architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3917059A1 (en) * 1988-05-31 1989-12-07 Gen Electric CORDIC ARRANGEMENT FOR MULTIPLICATING COMPLEX NUMBERS
EP0453641A2 (en) * 1990-04-20 1991-10-30 Siemens Aktiengesellschaft CORDIC-processor for vector rotation with carry-save architecture

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Dissertation d. Timmermann, "CORDIC Algorithmen, Architekturen und monolithische Realisierungen mit Anwendungen in der Bildverarbeitung", Gesamt- hochschule Universität Duisburg, 1990, S.157-162 *
H. Yoshimura, T. Nakanishi und H. Tamauchi "A 50 MHz CMOS Geoetrical Mapping Processor", IEEE Digest of Technical Papers, ISSCC'88, S. 162-163, Febr. 1988 *
J.E. Volder, "The CORDIC Trigonometric Computing Technique", IRE Transactions on Electronic Com- puters, Vol. EC-8, No. 3, S. 330-334, Sept.1959 *
J.S. Walter, "A Unified Algorithm For Elementary Functions", Spring Joint Computer Conference (SFCC) 1971, S. 379-385 *
R. Künemund, H. Söldner, S. Wohlleben und T. Noll, "CORDIC Processor With Carry-Save Archi- tecture", Proceedings of 16th European Solid- State Circuits Conference, Grenoble, France, S. 193-196, Sept. 1990 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003054689A2 (en) * 2001-12-20 2003-07-03 IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik Cordic-unit
WO2003054689A3 (en) * 2001-12-20 2003-11-20 Ihp Gmbh Cordic-unit
US7606852B2 (en) 2001-12-20 2009-10-20 IHP-GmbH-Innovations for High Performance Microelectronics/Institut fur Innovative Mikroelectronik CORDIC unit

Also Published As

Publication number Publication date
DE4126953C2 (en) 1995-04-13

Similar Documents

Publication Publication Date Title
DE19983175B4 (en) Method, processor and device for floating point operations and format conversion operations
DE2900324C2 (en)
DE4302898A1 (en) Arithmetic logic unit with accumulator function - has two memories and counter with selection to reduce delay in processing
DE1956209C3 (en) Multiplier
DE3306084A1 (en) COMPUTER ARCHITECTURE FOR SLIDING ADDITION
DE19540102A1 (en) Floating point arithmetic unit with logic for a fourfold precision arithmetic
DE10105945A1 (en) Multiplier with linear summation array for signed and un-signed multiplication, includes multiplier unit for receiving at least two operands from which a product is generated with summation of the partial products of the operands
DE4403917C2 (en) Device for calculating a bit occupation count
DE3926876C2 (en) Circuit and method for predicting a sticky bit value in floating point multiplication
DE102016205020A1 (en) SIMD realization of template codes
DE4019646C2 (en) Device and method for multiplying data words in two&#39;s complement representation
DE3701599A1 (en) VERSATILE ARITHMETIC LOGICAL CIRCUIT
EP0628183B1 (en) Circuit arrangement for the digital multiplying of integer numbers
DE3434777C2 (en)
DE2826773A1 (en) PROCEDURE AND CIRCUIT ARRANGEMENT FOR DETERMINING THE VALUE OF NUMBERS IN ARITHMETIC OPERATIONS WITH DECIMAL CALCULATOR
DE4126953C2 (en) Circuit arrangement for implementing the CORDIC algorithm
DE19644688B4 (en) Circuit arrangement of a digital multiplier module for processing binary numbers and elements made of GF (2m)
DE1449564C3 (en) Computing device for subtracting several operands or adding them by using complementary values of one of the operands
DE19846828B4 (en) Combined binary / decimal adder
DE19635113A1 (en) Multiplier for calculating product of two operands
EP1508087B1 (en) Method and integrated circuit for carrying out a multiplication modulo m
EP0256455B1 (en) Fast division method for long operands in data processing equipments, and circuit therefor
DE102018115219A1 (en) Systems and methods for mapping reduction operations
DE10050589B4 (en) Apparatus and method for use in performing a floating point multiply-accumulate operation
DE1549485A1 (en) Arrangement for division of binary operands

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee