WO2003054689A2 - Cordic-einheit - Google Patents

Cordic-einheit Download PDF

Info

Publication number
WO2003054689A2
WO2003054689A2 PCT/EP2002/014695 EP0214695W WO03054689A2 WO 2003054689 A2 WO2003054689 A2 WO 2003054689A2 EP 0214695 W EP0214695 W EP 0214695W WO 03054689 A2 WO03054689 A2 WO 03054689A2
Authority
WO
WIPO (PCT)
Prior art keywords
elementary
rotation
angle
cordic
angles
Prior art date
Application number
PCT/EP2002/014695
Other languages
English (en)
French (fr)
Other versions
WO2003054689A3 (de
Inventor
Koushik Maharatna
Eckhard Grass
Banerjee Swapna
Anindya Sundar Dhar
Original Assignee
IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik
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 für innovative Mikroelektronik filed Critical IHP GmbH - Innovations for High Performance Microelectronics/Institut für innovative Mikroelektronik
Priority to US10/498,707 priority Critical patent/US7606852B2/en
Publication of WO2003054689A2 publication Critical patent/WO2003054689A2/de
Publication of WO2003054689A3 publication Critical patent/WO2003054689A3/de

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

Definitions

  • the invention relates to a unit for performing a co-ordinate rotation digital computer algorithm, CORDIC unit for short, a preprocessor for a CORDIC unit and a CORDIC device which comprises a CORDIC unit according to the invention and a preprocessing unit according to the invention.
  • CORDIC units are used, for example, in the synchronization of modems for the standards IEEE 802.11 (a) and Hyperlan / 2. In such synchronization devices, on-line calculations of the arctangent function and complex multiplications of data using the sine and cosine functions are necessary.
  • CORDIC units are based on the CORDIC algorithm.
  • the CORDIC algorithm is an algorithm for efficient Calculate various transcendental and geometric functions. Examples of such functions that can be calculated directly using the CORDIC algorithm are the geometric and arithmetic multiplication, the divisions, the sine and cosine function, the root function, the inverse tangent, the inverse hyperbolic tangent, the hyperbolic sine and the hyperbolic cosine , These basic functions can be used to calculate further functions, for example logarithms.
  • An essential feature of the conventional CORDIC algorithm is that it can be implemented as a recursive method in which a rotation is approximated by a series of forward and backward rotations through fixed elementary angles.
  • the CORDIC algorithm can thus be implemented in the form of a CORDIC unit, for example as a digital CORDIC processor, which need only include adders / subtractors, sliders and look-up tables, but for example no real digital multiplier.
  • CORDIC units calculate three output values x1, y1 and z1 from three input values x0, yO and zO, where xO and yO are the coordinates of the vector to be rotated and zO is the angle of rotation by which the rotation is carried out by the CORDIC Algorithm should be approximated.
  • the CORDIC algorithm can either be implemented in such a way that y1 tends to zero (vectoring mode) or that z1 tends to zero (rotation mode). Each of these two modes can be used in polar coordinates, hyperbolic coordinates or linear coordinates.
  • the angular range of the angles of rotation that can be approximated is restricted to a specific range, the convergence range.
  • this convergence range is given by the angular interval [-99.9 °, 99.9 °]. So that y1 or z1 can strive towards zero,
  • the length of the rotated vector is not constant when rotating by an elementary angle in the conventional CORDIC algorithm. For each elementary rotation, a factor arises by which the length of the vector changes. This change in length must be taken into account by a scaling factor in the output values x1 and y1. The scaling factor is a constant if the CORDIC process is always carried out using all implemented elementary rotations.
  • the CORDIC unit according to the invention for iteratively approximating a vector rotation by an angle of rotation ⁇ by a number of elementary rotations by an elementary angle a- comprises elementary rotation stages, each for performing an elementary rotation by an elementary angle a ⁇ as an iteration step of the iterative approximation. After such an elementary rotation, a residual angle remains, which is still to be rotated.
  • the elementary rotation stages of the CORDIC unit according to the invention are designed for rotation through elementary angles a t , which are given by powers of two with a negative integer exponent.
  • the CORDIC unit comprises a triggering device for triggering the elementary rotations, which is designed to compare the residual angle with at least one of the elementary angles before each iteration step and to omit those elementary rotation levels whose elementary angles are greater than the residual angle.
  • the triggering device of the CORDIC unit according to the invention comprises at least a first comparator, a first calculation unit for calculating the elementary angles and a second calculation unit for calculating the residual angle, which is still to be rotated after an elementary rotation has been carried out by a current elementary angle ,
  • the first comparator is designed to either receive the residual angle to be rotated after an elementary rotation and to check whether the residual angle is greater than or equal to the current elementary angle and, if this is the case, a calculation signal the elementary rotation level corresponding to the current elementary angle in order to carry out an elementary rotation again in order to deliver the current elementary angle, or to receive the new elementary angle after the calculation of a new elementary angle and to check whether the remaining angle.
  • the new elementary angle is greater than or equal to the new elementary angle, and, if this is the case, to emit a calculation signal to the elementary rotation stage corresponding to the new elementary angle in order to carry out an elementary rotation by the new elementary angle and to otherwise send a calculation signal to the first calculation unit, which performs the calculation triggers a new elementary angle with a new exponent reduced by one, ie a new exponent increased in amount.
  • the calculation unit for calculating the residual angle is advantageously integrated in the elementary rotation stages.
  • the CORDIC unit it can be determined which iteration steps are to be omitted depending on the angle of rotation.
  • the direct comparison of the remaining angle of rotation and a current elementary angle for the decision as to whether a particular iteration step should be carried out or not enables a significantly faster processing compared to known algorithms such as the greedy algorithm and also enables a simpler hardware implementation.
  • a greedy algorithm is more complex because it initially has an error function determined and then iteratively minimized.
  • the comparison carried out in the present method can already be carried out with a single bit comparison. If e.g. B. the current elementary angle is 2 "5 , it only has to be checked whether a" 1 "can be found on bit position 5 of the remaining or residual angle. If this is the case, the vector is rotated. If this is not the case, the vector is not rotated. Since only one direction of rotation is provided, the single bit comparison leads to a clear result.
  • the CORDIC unit can advantageously include a second comparator, which is designed to check after each elementary rotation whether the residual angle remaining after the elementary rotation is smaller than a predetermined reference value, and to complete the iterative approximation if this is the case.
  • the reference value represents, for example, the maximum deviation of the residual angle from zero that should be allowed at the end of the approximation. He can e.g. B. depend on the necessary accuracy that other applications place on the approximation. By completing the iterative approximation as soon as the reference value is reached or undershot, further, unnecessary elementary rotations can be avoided.
  • the machine zeros are all those binary numbers whose first b bits only contain zeros. With a word length of b bits, such binary numbers cannot be distinguished from zero.
  • the maximum exponent in terms of amount, and thus the minimum elementary angle, is given by b-1.
  • the CORDIC unit can comprise more than one elementary rotation stage, which is designed for rotation by the maximum elementary angle. By repeatedly turning the maximum angle of rotation, the angular range that can be reached with the CORDIC unit can be increased.
  • all elementary rotation stages which are designed for rotation through elementary angles, whose absolute exponent is smaller than (b-1) / 2, comprise four sliders, two subtractors and two adders / subtractors and all other elementary rotation stages two sliders and two adders / subtractors.
  • a preprocessing unit is also made available which comprises a preprocessing circuit which is designed to
  • the preprocessing circuit can be designed to convert rotation angles lying in the first quadrant of a coordinate system into the interval between 0 and ⁇ r / 8 by subtracting the rotation angle from ⁇ l4 if it lies in the interval between 77/8 and ⁇ l4, by is added to the angle of rotation ⁇ l4 if it lies in the interval between ⁇ l4 and 3 ⁇ 78, or by subtracting the angle of rotation from ⁇ / 2 if it lies in the interval between r / 74 and 3rr / 8, and angle of rotation which is in the second to fourth quadrants - th of the coordinate system are to be transferred in advance using the symmetry of the coordinate axes in the first quadrant.
  • the preprocessing unit according to the invention can be used in particular in a CORDIC device as a preprocessing unit for a CORDIC unit according to the invention.
  • the CORDIC unit according to the invention can be used in various modes, in particular in the “rotation mode” and in the “vectoring mode”.
  • the rotation mode is used to rotate a vector represented in a coordinate system by the components xO and yO by an angle zO, ie to calculate the components x, y of the rotated vector.
  • vectoring mode on the other hand, the amount ⁇ JXO 2 + y0 2 of the vector and the angle that the vector encloses with the x-axis of the coordinate system are calculated.
  • rotation mode the iteration continues until z assumes a value close enough to zero to meet the accuracy requirement when calculating the coordinates of the rotated vector.
  • the iteration is continued until y assumes a value that is close enough to zero to meet the requirement for the accuracy of the result for the transfer and angle.
  • FIG. 1 shows an elementary rotation stage as used in a conventional CORDIC unit.
  • FIG. 2 shows the structure of an elementary rotation stage in the CORDIC unit according to the invention.
  • FIG. 3 shows the division of a coordinate system into domains that are used in the preprocessing for the CORDIC algorithm.
  • FIG. 4 shows the assignment of new angles of rotation to the domains in the first quadrant of a coordinate system.
  • FIG. 5 shows a flow diagram which represents a method sequence for executing the CORDIC algorithm in the rotation mode.
  • FIG. 6 shows a block diagram of a first exemplary embodiment of the CORDIC unit according to the invention.
  • FIG. 7 shows a CORD IC processor which comprises a CORDIC unit according to the invention and a preprocessing unit according to the invention, and
  • FIG. 8 shows a block diagram of a second exemplary embodiment of the CORDIC unit according to the invention.
  • the factor ⁇ - can either have the value 1 or -1, depending on the direction of rotation of the elementary rotation.
  • oti is due to the formula
  • ZM Zl + ⁇ t 2 ⁇ (5)
  • ZO stands for the angle of rotation ⁇ by which the vector with the components xO and yO are to be rotated.
  • the value of the factor ⁇ results from the value of Z
  • Equations 4 and 5 are the basic equations of the CORDIC algorithm.
  • the physical meaning of these equations is that the angle of rotation given as z 0 is approximated to 0 by rotating the vector back and forth by elementary angle cci.
  • iteration equations 4 and 5 only require additions, subtractions and multiplications with factors 2 " '. From the point of view of hardware implementation, therefore, only adders / subtractors and sliders are required to implement the iteration equations.
  • the sliders implement the Multiplication by a factor of 2 " ', since multiplication by a factor of 2 " ' in the binary system is nothing more than a shift of the binary number by i digits to the right.
  • every rotation is made by one Elementary angle OCJ, therefore, as shown in FIG. 1, realized by two adders / subtractors 2 and two sliders 4.
  • b is the word length used in the implementation of the CORDIC algorithm.
  • the sum terms with i greater than b-1 correspond to the machine zero for the word length of b.
  • the number of iteration steps to be carried out and thus the overall activity of the circuit that implements the CORDIC algorithm, and thus, for example, its energy consumption and / or the computing time, can be reduced.
  • This advantage is offered in every type of implementation of the method described in the exemplary embodiment.
  • the omission of iteration steps generally involves a non-constant scaling factor.
  • the scaling factor is constant.
  • CCJ must be small enough so that the errors which occur as a result of the sin c being approximated by a ⁇ are smaller than the smallest number, given a word length b of the chosen implementation of the CORDIC algorithm can be represented as a binary number. With a word length of 16 bits, for example, shifting each binary number by 16 digits to the right results in a binary number whose first 16 digits only contain zeros, i.e. the machine zero.
  • the largest elementary angle OCJ can be determined, for which the approximation in an implementation with a word length of b bit has no effect.
  • the sine function and the cosine function can be represented as infinite sums. These sums are through the formulas
  • P is the smallest whole number that is greater than or equal to the expression in parentheses.
  • the CORDIC algorithm is implemented by means of a processor which has a word length of b bits, the term 2 "(3i + 2.585) disappears in the binary representation if [(b-2.585) / 3] is greater than or equal to the word length b of the Processor because multiplication by 2 "b always means a shift by b digits to the right and therefore always to the seem zero leads. So that the second term in the series development of the sin is omitted, 3i + 2.585 must be greater than or equal to b.
  • the sign before the term 2-i in equation 16 depends on whether the angle zO by which the rotation is to be made is positive or negative.
  • the value Vl + 2 (4, '+ 2) is obtained as the scaling factor.
  • the summand 2 "(4i + 2) results in a word length of more than 4 bits for all elementary angles that Mieren of the angle of rotation are used, the machine zero. Eliminating the scaling term is an important step because it not only eliminates the need for a special post-processing circuit, but also saves processing time.
  • the above equation can be implemented by four sliders, two subtractors and two adders / subtractors.
  • a corresponding elementary rotation stage is shown in FIG. 2.
  • the value XM is fed to a first subtractor 10, a first (2i + 1) bit shifter 12 and a first i-bit shifter 14.
  • the first subtractor 10 is also supplied with the value of x M shifted by (2i + 1) bits from the first (2i + 1) bit shifter 12.
  • the value y ⁇ i is fed to a second subtractor 18, a second (2i + 1) bit shifter 20 and a second i-bit shifter 22.
  • the second subtractor 18 is also supplied with the value of y ⁇ shifted by the (2i + 1) bit by the second (2i + 1) bit shifter 20.
  • the first subtractor 10 subtracts the value of x ⁇ shifted by (2i + 1) bit from XM and forwards the result to a first adder / subtractor 16.
  • the first adder / subtractor 16 receives a value of y ⁇ shifted by i-bit from the second i-bit shifter 22 and adds it to x M when rotated clockwise. The result of this addition is output as the value Xj. If it is rotated counterclockwise, subtraction takes place instead of addition.
  • the second subtractor 18 subtracts the value of yn shifted by (2i + 1) bit from y M and forwards the result to a second adder / subtractor 24.
  • the second adder / subtractor 24 receives from the first i-bit shifter 14 a value of X shifted by i-bit and subtracts it from y M. The result of this subtraction is output as the value y.
  • an addition is made instead of subtraction.
  • the structure of the elementary rotation stage just described is only necessary for those elementary rotation stages in which the elementary angle 2 "1 is to be rotated, for which the exponent i ⁇ (b-1) / 2.
  • the CORDIC unit described so far is scaleless and therefore makes it possible to save post-processing hardware and process time. In particular, it enables elementary angles to be left out of the iteration process without having to scale with a non-constant scaling factor.
  • an "argument reduction method" and a method for repeatedly executing certain iteration steps are used.
  • the argument reduction method is used the entire angular range from 360 ° is mapped to a reduced angular range.
  • a preprocessing designed in particular is unit used. If, after executing the argument reduction method, the angular range on which imaging is carried out is still greater than the angular range in which an angle must lie so that it can be approximated by the CORDIC unit, elementary rotations are repeated in an adaptive manner , The procedure is explained in detail below.
  • the main goal of the argument reduction method is to map large angles of rotation to small angles of rotation.
  • a method is used in which the four quadrants of the coordinate system are divided into 16 identical domains (that is, four domains per quadrant), each domain covering an angular range of ⁇ / 8.
  • the domains are shown in FIG. 3 and are designated by the letters A to P. Every angle of rotation must necessarily lie in one of these 16 domains.
  • An angle of rotation ⁇ which lies in the first quadrant lies in one of the domains A ([0, ⁇ / 8)), B ([ ⁇ / 8, ⁇ / 4)), C ([ ⁇ / 4.3 ⁇ / 8 )) or D ([3 ⁇ / 8, ⁇ / 2]).
  • the angle of rotation ⁇ can now be defined by another angle of rotation ⁇ as follows:
  • domain folding can also be applied to CORDIC processes in which the angles of rotation are in other quadrants.
  • the resulting values for the rotated components x1 and y1 can be obtained by swapping and changing the sign.
  • the exchanges and sign changes are summarized in the following table.
  • the domain in which the angle of rotation lies is first determined. Once the domain has been determined, the calculation of the rotated components of the vector to be rotated can be carried out, the corresponding equation being chosen from equations 23 to 26. The final value for the components of the rotated vector is then determined depending on the domain in which the original, i.e. H. unrotated vector lay, determined according to the table.
  • Domain folding can be performed not only in rotation mode but also in vectoring mode.
  • the angle of rotation must be replaced by the value tan "1 (y0 / x0).
  • the domains in the first quadrant can then be expressed, for example, as values of the ratio yO / xO, they are then divided by the intervals [0, tan (22.5 °)) (domain A), [tan (22.5 °), tan (45 °)) (domain B), [tan (45 °), tan (67.5 °)] (domain C) given.
  • the domain in which a vector with the components xO, yO lies can be determined on the basis of four values, namely xO, x0 * tan (22.5 °), x0 * tan (67.5 °) and yO. If x0 * tan (22.5 °) is greater than or equal to yO, the vector lies in domain A, if yO is greater than x0 * tan (22.5 °), the vector lies in domain B , if x0 * tan (67.5 °) is greater than or equal to yO, then the 03/054689 _ _
  • the components xO and yO can be interchanged because of the structure of equations 21 and 22 and then the interchanged components of the vector can be entered into the CORDIC unit.
  • the exchanged components are then treated in the CORDIC unit like the components of a vector located in domain A. This means that in the case of a vector in the domain D of the CORDIC unit, instead of yO, xO tends towards zero.
  • the angle of rotation ⁇ is entered as z. In the course of the method, this angle of rotation z is reduced to such an extent that it approximately reaches the value 0.
  • the value of z is then compared with the value of the elementary angle ⁇ , and the elementary rotation is triggered by the elementary angle oci if the value of z is greater than the elementary angle oci.
  • the elementary rotation is not triggered. Instead i is increased by one and a new elementary angle a- is calculated with the value i increased by one.
  • the new elementary angles are then subjected to the comparison with z again. This loop is repeated until the value z is greater than the current elementary angle. As soon as this is the case, the rotation by the elementary angle is triggered.
  • the CORDIC unit comprises a first calculation unit 10, a first comparator 20, a second comparator 50 and a number of elementary rotation stages 30p to 30b-1 for executing elementary rotations with elementary angles 2 " ', i being the values p ( minimum permissible exponent for the scaling-free method, see above) to b-1.
  • the first calculation unit 10 is connected to the first comparator 20.
  • the first comparator 20 is in turn connected to the elementary rotation stages 30p-30b-1 and the second comparator 50 connected, which is also connected to the elementary rotation stages 30p to 30b-1.
  • the first calculation unit 10 is used to calculate the elementary rotation angle -, on the basis of a predetermined exponent i, and to output it to the first comparator 20.
  • the first comparator 20 also receives the angle of rotation which is given by the value z.
  • the first comparator 20 can be designed to receive the values x and y of the components of the vector to be rotated and to pass them on to the elementary rotation stages 30p-30b-1. Alternatively, there may also be an additional connection for forwarding the values x and y to the elementary rotation stages 30p-30b-1 bypassing the first comparator 20.
  • the first comparator 20 carries out a comparison between the angle of rotation z to be calculated and the elementary angle ⁇ 1 obtained from the first calculation unit 10. If the comparison reveals that the elementary angle cti is less than or equal to the angle of rotation by which the rotation is to take place, then the first comparator 20 triggers an elementary rotation by the elementary angle ⁇ . For this purpose, it passes on the components x and y of the vector to be rotated and the value z of the angle of rotation to that elementary rotation stage (or possibly triggers the transmission) which corresponds to the elementary angle ⁇ , that is to say rotates by the elementary angle ⁇ i.
  • the residual angle of rotation there is a dedicated calculation unit.
  • the first comparator 20 causes the calculation unit 10 to produce a new elementary angle in which the amount of the exponent is increased by one, to calculate.
  • the calculation unit 10 then outputs the new elementary angle to a first comparator 20, which compares it with the remaining angle of rotation.
  • the comparator 20 either triggers the elementary rotation or the calculation of a new elementary angle.
  • the second comparator 50 compares the residual angle z 'output by one of the elementary rotation stages with a predetermined reference value R ref .
  • the reference value R ref stands for the maximum deviation that the residual angle of rotation may have at the end of the iterative approximation from the original angle of rotation. If the reference angle R ref falls below the residual angle of rotation, the second comparator outputs the values x ', y' and z as the end result of the iterative approximation. However, if the value of the residual angle of rotation z 'is greater than the reference value R ref , the second comparator 50 passes the values x', y 'and z' to the first comparator 20.
  • the first Comparator 20 again compares the residual rotation angle z 'obtained from the second comparator 50 with the current elementary angle ⁇ and triggers a further elementary rotation by the elementary angle ⁇ i if the residual rotation angle z' is greater than or equal to the elementary rotation angle ⁇ . This means that elementary rotations by the elementary angle ⁇ are carried out until the residual angle z 'is smaller than the elementary angle ⁇ . As soon as the residual angle of rotation z 'is smaller than the elementary angle OCJ, the first comparator 20, the first calculation unit 10, causes the next elementary angle cij + 1 , that is to say the elementary angle 2 "c ' +) to be calculated.
  • This new elementary angle is used by the The first calculation unit 10, in turn, is sent to the first comparator 20, which in turn compares the new elementary angle with the residual angle z ′, and continues until the comparison of the residual angle of rotation with the respectively new elementary angle ⁇ shows that the residual angle of rotation is greater than or equal to the elementary angle As soon as this is the case, the first comparator 20 again triggers an elementary rotation.
  • the CORD IC processor comprises a preprocessor 100 as a preprocessing unit, a pipeline unit 200 as a CORDIC unit for carrying out the actual CORDIC process, hereinafter referred to as the CORDIC pipeline, and an output circuit 300.
  • the preprocessor 100 receives the components xO and yO of the vector to be rotated and the angle of rotation zO by which the vector is to be rotated.
  • the inputs for the components xO and yO receive 16-bit data words, while the input for zO receives an 18-bit data word. This is because in the number representation chosen here the value of 2 ⁇ comprises 18 bits.
  • the preprocessor receives a mode signal "mode" which determines whether the CORDIC processor is to be operated in the rotation mode or in the vectoring mode.
  • mode determines whether the CORDIC processor is to be operated in the rotation mode or in the vectoring mode.
  • the Hl level (logic high level) of the mode signal mode causes the processor to operate in the rotation mode, whereas the LO level (logic low level) of the mode sig- nals mode causes the processor to work in vectoring mode.
  • the preprocessor also receives a data valid signal that indicates the validity of the input signal.
  • the preprocessor 100 determines the sign of the input variables xO and yO and the domain in which the vector lies.
  • the preprocessor 100 generates corresponding 2-bit signals "domain” and "quad".
  • the "quad” signal indicates in which quadrant the target angle lies.
  • the "domain” signal indicates in which corresponding domain in the first quadrant the target angle is folded back.
  • the preprocessor 100 also supplies an unsigned 13 -Bit binary representation of the modified target angle ( ⁇ ) for the CORDIC processor. 13-bit is sufficient for the representation of ⁇ without sign, since ⁇ lies in the interval [0, ⁇ / 8].
  • the input variables are then processed so that the The CORDIC pipeline only has to process angles between 0 and ⁇ / 8.
  • the determination of the sign and the domain, the preprocessing and the corresponding input operations require a total of 2 clock cycles.
  • the CORDIC pipeline which is shown in detail in a special embodiment variant in FIG. 8, is a bit-parallel pipeline implementation of equations 15 and 16 with an internal word length of 16 bits.
  • 16-bit CORDIC unit shown, however, all of the following descriptions can be generalized in the case of an n-bit CORDIC unit.
  • each elementary rotation stage contains simple shift registers.
  • Each elementary rotation stage requires a hardware area that corresponds to 4 add / subtract units.
  • shifting each positive operant by 15 bits causes a machine zero.
  • the same operation for a negative operant leaves the sign bit alone.
  • the maximum angle that can be calculated with the present arrangement is approximately 25 °. This covers the modified convergence range chosen here.
  • the CORDIC pipeline of FIG. 8 is 12 levels deep, the hardware complexity of each of these levels corresponding to 4 16-bit adders.
  • the goal to be achieved with the CORDIC pipeline is to bring the value z in the rotation mode or the value y in the vectoring mode to zero with an accuracy of less than 2 ⁇ 15 .
  • the usual two-component addition is used in the construction of the elementary rotation stages.
  • the information about the quadrant and the domain of the input vector with the components xO and yO, which has been determined, is passed between two successive sections of the CORDIC pipeline together with the data in the manner of a logical register transfer. This means that the data in different sections of the pipeline have a label that essentially contains the information about the original quadrant and the original domain.
  • a 1-bit signal "sign" and the two 2-bit signals "Domain” and "Quad” mentioned are used to transmit this information between different rotation levels.
  • the output circuit comprises a fixed scaling unit for scaling with the value 1/2 and a number of adders / subtractors. This circuit postprocesses the output vector output from the CORDIC pipeline based on the information about the input vector determined by the preprocessor and produces the final output signal. All operations of the output circuit can be completed in one clock cycle.
  • the structure shown in FIG. 8 represents a special implementation of a CORDIC pipeline.
  • the speed of a CORDIC unit is comparatively slow due to the iterative nature of the CORDIC process.
  • the calculation of the residual angle slows down the speed of the CORDIC unit at the beginning of each elementary rotation.
  • the CORDIC unit either executes a specific iteration step or skips it. In the implementation described below, these speed limiting factors are eliminated and thus increase the speed of the CORDIC unit.
  • the unsigned 13-bit binary representation of the modified target angle ⁇ is used to control the element rotation level in question Pipeline used.
  • the target angle is approximated by rotating the vector in only one and the same direction. This essentially means that the target angle is approximated as a sum of 2 " '. Therefore, the elementary rotation stages in question can be activated for a specific target angle, with which they achieve a 1-to-1 correspondence in the position of a logical" 1 "in this 13-bit representation.
  • the following table summarizes the relationship between the position of logical ones in the representation of ⁇ and the corresponding active elementary rotation levels.
  • the individual bits of the 13-bit representation of ⁇ are fed to the relevant elementary rotation stages in the form of an activation signal for the respective stage through a field of single-bit shift registers.
  • the number of shift registers corresponding to the respective stage is chosen so that the stage in question is activated in the correct clock cycle.
  • the corresponding bits can be fed directly to the zeroth shift register of the respective shift register field.
  • FIG. 8 The structure of the pipeline CORDOC processor with the arrangement just described is shown in FIG. 8, where “I” denotes the index of the elementary rotation stages of the pipeline.
  • the output circuit 300 of FIG. 7 comprises, for example, two fixed ones
  • Scaling units for scaling with the value 1/2 and two adders / subtractors.
  • Each of the scaling units is implemented with five 15-bit adders.
  • the hardware complexity of this unit therefore corresponds to 12 16-bit adders.

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)
  • Manipulation Of Pulses (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

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 αι 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. Durch die erfindungsgemässe Ausgestaltung der CORDIC-Einheit können im Vergleich mit konventionellen CORDIC-Einheiten Prozessschritte ausgelassen werden. Damit verringert sich die Aktivität der Gesamtschltung und somit deren Energieverbrauch.

Description

CORDIC-Einheit
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 Vorverarbei- tungseinheit 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-Iine-Berechnungen der Arcustan- gensfunktion 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 geometrischer 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ärtsdrehungen, 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, yO und zO drei Ausgangswerte x1 , y1 und z1, wobei xO und yO die Koordinaten des zu dre- henden Vektors sind und zO 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 Koordina- ten 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ände- rung 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 xO, yO und zO 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 Pseu- do-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 a-, umfasst Elementar-Rotationsstufen, jeweils zum Durchführen einer Elementardrehung um einen Elementarwinkel a\ 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 at ausgelegt, die durch Zweierpotenzen mit ei- nem 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 Elementar- Winkel 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. ln 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. Das direkte Vergleichen des verbleibenden Drehwinkels und eines aktuellen Elementarwinkels für die Entscheidung, ob ein bestimmter Iterationsschritt durchzuführen ist oder nicht, ermöglicht gegenüber bekannten Algorithmen wie dem Greedy-Algorithmus eine wesentlich schnellere Abarbeitung und ermöglicht darüber hinaus eine einfachere Hardware-Implementierung. Ein Greedy-Algorithmus ist aufwendiger, da er eine Fehlerfunktion zunächst bestimmt und anschließend iterativ minimiert. Der im vorliegenden Verfahren durchgeführte Vergleich kaηn dagegen schon mit einem Einzelbitvergleich durchgeführt werden. Wenn z. B. der aktuelle Elementarwinkel 2"5 beträgt, muss nur geprüft werden, ob auf der Bit-Position 5 des verbleibenden oder Restwinkels eine „1" zu finden ist. Ist dies der Fall, wird der Vektor gedreht. Ist dies nicht der Fall, wird der Vektor nicht gedreht. Da auch nur eine Drehrichtung vorgesehen ist, führt der Einzelbitvergleich zu einem eindeutigen Ergebnis.
Vorteilhafterweise kann die CORDIC-Einheit ein zweiten Vergleicher umfas- sen, 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 at, 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 at = 2"' 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
Figure imgf000008_0001
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 Ele- mentarwinkel 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 Vorverarbeitungsschaitung umfasst, die dazu ausgelegt ist,
Drehwinkel zwischen 77/8 und 2π Grad in das Intervall zwischen 0 und τr/8 zu überführen. Mit einer solchen Vorverarbeitungsschaitung ist es möglich, die CORDIC-Einheit zur Approximation von Drehwinkeln im gesamten Winkelbereich von 360° zu verwenden.
Insbesondere kann die Vorverarbeitungsschaitung dazu ausgestaltet sein, im ersten Quadranten eines Koordinatensystems liegende Drehwinkel in das In- tervall zwischen 0 und τr/8 zu überführen, indem der Drehwinkel von πl4 subtrahiert wird, wenn er im Intervall zwischen 77/8 und πl4 liegt, indem zum Drehwinkel πl4 addiert wird, wenn er im Intervall zwischen πl4 und 3π78 liegt, oder indem der Drehwinkel von π/2 subtrahiert wird, wenn er im Intervall zwischen r/74 und 3rr/8 liegt, und Drehwinkel, die im zweiten bis vierten Quadran- ten 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 Rotations-Modus findet Verwendung, um einen in einem Koordinatensystem durch die Komponenten xO und yO dargestellten Vektor um einen Winkel zO zu drehen, d. h. die Komponenten x, y des gedrehten Vektors zu berech- nen. Im Vectoring-Modus wird dagegen der Betrag ΛJXO2 +y02 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.
Figur 1 zeigt eine Elementar-Rotationsstufe, wie sie in einer konventionel- len CORDIC-Einheit Verwendung findet.
Figur 2 zeigt den Aufbau einer Elementar-Rotationsstufe in der erfindungsgemäßen CORDIC-Einheit.
Figur 3 zeigt die Einteilung eines Koordinatensystems in Domänen, die bei der Vorverarbeitung für den CORDIC-Algorithmus Verwendung fin- den.
Figur 4 zeigt die Zuordnung neuer Drehwinkel zu den Domänen im ersten Quadranten eines Koordinatensystems.
Figur 5 zeigt Flussdiagramm, das einen Verfahrensablauf zum Ausführen des CORDIC-Algorithmus im Rotationsmodus darstellt.
Figur 6 zeigt ein Blockschaltbild eines ersten Ausführungsbeispiels der erfindungsgemäßen CORDIC-Einheit.
Figur 7 zeigt einen CORD IC-Prozessor, der eine erfindungsgemäße CORDIC-Einheit und eine erfindungsgemäße Vorverarbeitungseinheit umfasst, und
Figur 8 zeigt ein Blockschaltbild eines zweiten Ausführungsbeispiels der erfindungsgemäßen CORDIC-Einheit.
Es folgt nun zuerst eine Beschreibung des konventionellen CORDIC- Algorithmus, um das Verständnis der Erfindung zu erleichtern. Die Rotation 03/05468
- 10 -
eines Vektors mit den Koordinaten xO und yO kann in einem kartesischen Koordinatensystem beschrieben werden als
xl cosf? sinθ xO -ήaθ cosέ? (D y
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:
6-1
0 = ∑σ*,α, (2)
/=o
Der Faktor σ-, kann entweder den Wert 1 oder -1 annehmen, abhängig vom Drehsinn der Elementardrehung. Im konventionellen CORDIC-Algorithmus ist oti durch die Formel
α,- = tan"1 (2") (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:
Figure imgf000011_0001
ZM = Zl + σt2~ (5) Dabei steht zO für den Drehwinkel θ um den der Vektor mit den Komponenten xO und yO gedreht werden sollen. Der Wert des Faktors σ ergibt sich aus dem Wert von Z|, dem Restwinkel, um den noch gedreht werden muss. Ist z, größer oder gleich 0, so nimmt σ den Wert -1 an, ist Z\ 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 cci an 0 angenähert wird. Es ist zu erkennen, dass die Iterationsgleichungen 4 und 5 lediglich Additionen, Subtraktionen und Multipli- kationen mit Faktoren 2"' 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"', da eine Multiplikation mit einem Faktor 2"' 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 OCJ daher, wie in Figur 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 π*To Cθs(2"') skaliert werden muss. Dies lässt sich geometrisch so verstehen, dass der um den Elementarwinkel 2"1 gedrehte Vektor mit den Komponenten xi+1 und yl+1 um einen Faktor cos(2"') länger ist als der Vektor mit den Kompo- nenten x, 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 ausge- lassen sind und welche nicht. Um einen solchen nicht konstanten Skalierungs- faktor 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 oci ~ αi = 2"' (6)
gegeben. Der Gedanke, der der Erfindung zu Grunde liegt, ist der Folgende:
Die unendliche Summe
, 1 1 1 1
1+— + — +--K..+ — +. (7) 2 4 8 2" konvergiert und hat den Wert 2. Wird aus dieser unendlichen Summe ein spezieller Wert 1/2π ausgewählt und werden alle Summenglieder bis einschließlich 1/2" weggelassen, so konvergiert der Rest der Summe gegen 1/2".
Durch die Wahl OCJ = 2"' wird die Folge aus Gleichung 2 zu
θ = ∑σt2" (8)
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 z der in kommenden Iterationsschritten zu approxi- mieren 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"' 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 αι ist es jedoch möglich, trotz Auslassen von Iterationsschritten einen konstanten Skalierungsfaktor zu erhalten. Im fol- genden 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 αι so klein sein, dass die Beziehung sin OCJ ~ αι hinreichend genau erfüllt ist. Hinreichend genau bedeutet hier, dass CCJ klein genug sein muss, damit die Fehler, die dadurch auftreten, dass der sin c durch a\ 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 αι durch otj angenähert wird, so klein sind, dass sie die Maschinen-Null ergeben, lässt sich der größte Elementarwinkel OCJ 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
af af sinα, = a, — -+—- ' (9) ' ' 3! 5!
a. l cosα, =1 — '-+ (10)
2! 4!
gegeben. Wird in diese Formeln OCJ = 2"' eingesetzt, so erhält man
Figure imgf000016_0001
<-) -27 <) -41 cosα, =1 v- (12)
24
Es zeigt sich, dass in dieser Reihenentwicklung der größte Term, der durch die Näherung sin αι ~ CCJ - 2"' weggelassen wird, der zweite Term in der Rei- henentwicklung des sin ist. Dieser Term kann auch als
, 2-(3i'+log2 6) _ -(3/+2,585) I ßN
dargestellt werden.
Die Bedingung dafür, dass der Fehler beim Annähern des sin ax durch at so klein ist, dass er lediglich die Maschinen-Null ergibt, ist nun die, dass als Ex- ponent i nur solche Werte Verwendung finden, für die die Summe
Figure imgf000016_0002
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 Ma- schinen-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~(3l+2,585) sind. Damit ist auf jeden Fall ein minimaler Exponent für die Elementarwinkel OCJ = 2"' bestimmt, der verwendet werden darf, ohne dass bei einer Wortlänge von b Bit durch die Annäherung des sin OCJ durch CCJ 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"' statt sin 2"' zur Maschinen-Null wird, kann nun der sin 2"1 und der cos 2"' durch 2"' bzw. 1-2" 1 angenähert werden. Werden diese Darstellungen für den sin OCJ und den cos OCJ in Gleichung 1 eingesetzt, so können die folgenden Iterationsgleichungen abgeleitet werden:
Figure imgf000017_0001
ZM = z, -2 ' oder z 7s+„1 = z, + 2 (16)
Das Vorzeichen vor dem Term 2-i in Gleichung 16 hängt dabei davon ab, ob der Winkel zO, um den gedreht werden soll, positiv oder negativ ist. Als Skalierungsfaktor erhält man den Wert Vl + 2 (4,'+2) . Der Summand 2"(4i+2) ergibt bei einer Wortlänge von mehr als 4 Bit für alle Elementarwinkel, die zum Approxi- mieren 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 Figur 2 gezeigt. Der Wert XM wird einem ersten Subtrahierer 10, einem ersten (2i+1)-Bit-Schieber 12 und einem ersten i-Bit- Schieber 14 zugeführt. Dem ersten Subtrahierer 10 wird außer dem Wert x^ auch der vom ersten (2i+1)-Bit-Schieber 12 um (2i+1) Bit verschobene Wert von xM zugeführt.
Der Wert yμi 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 y^ auch der vom zweiten (2i+1)-Bit- Schieber 20 um (2i+1) Bit verschobene Wert von y^ zugeführt.
Der erste Subtrahierer 10 subtrahiert von XM den um (2i+1) Bit verschobenen Wert von x^ 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 y^ und addiert bei ei- ner Drehung im Uhrzeigersinn diesen zu xM. Das Ergebnis dieser Addition wird als Wert Xj ausgegeben. Bei einer Drehung entgegen dem Uhrzeigersinn erfolgt statt der Addition eine Subtraktion.
Der zweite Subtrahierer 18 subtrahiert von yM den um (2i+1) Bit verschobenen Wert von yn und leitet das Ergebnis an einen zweiten Addierer/Subtrahierer 24 weiter. Außerdem Empfängt der zweite Addierer/Subtrahierer 24 vom ersten i-Bit-Schieber 14 einen um i-Bit verschobenen Wert von X und subtrahiert ihn von yM. Das Ergebnis dieser Subtraktion wird als Wert y 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"1 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"(2|+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 approxi- mieren, 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, 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 Vorverarbei- tungseinheit 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 Figur 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 Figur 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 Do- mänen durch die folgenden Gleichungen darstellen:
Figure imgf000021_0001
(18)
(19)
Figure imgf000021_0004
Figure imgf000021_0002
Unter Berücksichtigung, dass die Rotation um Φ bzw. -Φ gemäß Gleichung 1 durch die Gleichungen
(21)
(22)
Figure imgf000021_0005
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:
Figure imgf000021_0003
χlB = j=[χl+ +yl+] xlB =- [- h +yh] (24) xlc = - =[xl_ +yl_] χ1c =-π _- l- +y1-] (25)
V2
xlD = yl+ ylD = -xl+ (26)
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 Additionsund 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 Vorzeichen- Wechsel zu erhalten. Die Vertauschungen und Vorzeichenwechsel sind in der folgenden Tabelle zusammengestellt.
Domäne x1 y1
_ __ __
Figure imgf000022_0001
C x1c y1c
D χ1D y1D
E y1A -X1A
Figure imgf000022_0002
- 22 -
G y1c -x1c
H yiü -X1 D
I -yiA X1A
Figure imgf000023_0001
K -x1c -yic
Figure imgf000023_0002
M x1A yiA
Figure imgf000023_0003
O -yic x1c
P X1 D -yiD
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 yO/xO 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 xO, yO liegt, kann anhand von vier Werten, nämlich xO, x0*tan(22,5°), x0*tan(67,5°) und yO bestimmt werden. Wenn x0*tan(22,5°) größer oder gleich yO ist, so liegt der Vek- tor in der Domäne A, wenn yO 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 yO ist, so liegt der 03/054689 _ _
Vektor in der Domäne C und wenn yO 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 xO und yO 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 yO sondern xO 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 Figur 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 oci = 2'' berechnet. Danach wird der Wert von z mit dem Wert des Elementarwinkels α,- verglichen und die Elementardrehung um den Elementarwinkel oci ausgelöst, falls der Wert von z größer als der Elementarwinkel oci ist. Ist der Wert z jedoch kleiner als der Elementarwinkel α,, so wird die Elementardrehung nicht ausgelöst. Stattdessen wird i um eins erhöht und ein neuer Elementarwinkel a-, 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"1 berechnet. Dieser Wert __' 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 Rre , so wird das CORDIC-Verfahren beendet und die Werte x', y' und z' werden als Endwerte ausgegeben. Ist der Restwinkel __' jedoch größer als der Referenzwert Rref, so wird z' als neuer Restdrehwinkel wieder dem Vergleich mit dem aktuellen Elementarwinkel , 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 ctj 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 Elementarwin- kel. 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 Eiementarwinkel berechnet wird. Das gesamte Verfahren wird so lange ausgeführt, bis der Restwinkel kleiner ist als der vorgegebene Referenzwert
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 Figur 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 Elementar- drehungen mit Elementarwinkeln 2"', 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 -, zu berechnen und diesen an den ersten Vergieicher 20 auszugeben. Der erste Vergleicher 20 empfängt außer den Elementardrehwinkeln α,j 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 αι durch. Ergibt der Vergleich, dass der Elementarwinkel cti kleiner oder gleich dem Drehwinkel, um den zu drehen ist, ist, so löst der erste Vergleicher 20 eine Elementardrehung um den Elementarwinkel αι 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 αι 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"', 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 a-, größer als der Dreh- winkel, 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 αι und löst eine weitere Elementardrehung um den Elementarwinkel αi aus, falls der Restdrehwinkel z' größer oder gleich dem Elementardrehwinkel αι ist. Dies führt dazu, dass Elementardrehungen um den Elementarwinkel α, so lange ausgeführt werden, bis der Restwinkel z' kleiner als der Elementarwinkel αι ist. Sobald der Restdrehwinkel z' kleiner als der Elementarwinkel OCJ ist, veranlasst der erste Vergleicher 20, die erste Berechnungseinheit 10, den nächsten Elementarwinkel cij+1, das heißt, den Elementarwinkel 2"c'+ ), 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 αι 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 Figur 7 dargestellt. Der CORD IC-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 xO und yO des zu drehenden Vektors sowie den Drehwinkel zO, um den der Vektor gedreht werden soll. Die Eingänge für die Komponenten xO und yO empfangen 16-Bit-Datenwörter, während der Eingang für zO ein 18-Bit Datenwort empfängt. Dies liegt daran, dass in der hier gewählten Zahlendarstellung der Wert von 2π 18-Bit umfasst. 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 Hl Pegel (logisch hoher Pegel) des Modussignals mode veranlasst den Prozessor, im Rotationsmodus zu arbeiten, wohingegen der LO Pegel (logisch niedriger Pegel) des Modussig- nals 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 xO und yO und die Domäne, in der der Vektor liegt, fest. Der Vorprozessor 100 erzeugt entsprechende 2-Bit Signale „domain" und „quad". Das „quad"-Signal zeigt an, in welchem Quadranten der Zielwinkel liegt. Das „domain'-Signal zeigt an, in welche entsprechende Domain im ersten Quadranten der Zielwinkel rückgefaltet wird. In Ergänzung zu diesen Signalen liefert der Vorprozessor 100 auch eine vorzeichenlose 13-Bit Binärdarstellung des modifizierten Zielwinkels (φ) für den CORDIC-Prozessor. Es genügen 13-Bit für die Darstellung von φ ohne Vorzeichen, da φ im Intervall [0, π/8] liegt. 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, die in einer besonderen Ausführungsvariante in Figur 8 detailliert dargestellt ist, 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"' mit i = 4, 5,..., 15 auf, wobei die Elementar-Rotationsstufe, die einem Elementarwinkel cq von 2^ entspricht, sechs mal wiederholt ist. Zur Wahrung der Klarheit ist eine 16-Bit CORDIC-Einheit dargestellt. Alle nachfolgenden Beschreibungen lassen sich jedoch für den Fall einer n-Bit CORDIC-Einheit ver- allgemeinem.
Bei der in Figur 8 gezeigten Ausführungsform enthält jede Elementar- Rotationsstufe einfache Schieberegister. Jede Elementar-Rotationsstufe benötigt einen Hardwarebereich, der 4 Addier-/ Subtrahier-Einheiten entspricht. Andererseits beträgt unter theoretischen Gesichtspunkten der benötigte Hardwarebereich für Elementar-Rotationsstufen entsprechend i > 8 (b/2) zwei Addier-/ Subtrahiereinheiten. Die erlaubten Werte der CORDIC-Iteration sind in diesem Fall i = 4, 5, ..., 15. Im vorliegend gewählten Schema der Zahlen- Darstellung bewirkt das Schieben jedes positiven Operanten um 15-Bits eine Maschinen-Null. Die selbe Operation für einen negativen Operanten führt zum alleinigen Zurückbleiben des Vorzeichenbits. Daher ist die Elementar- Rotationsstufe entsprechend i=15 in der Implementation nicht enthalten. Das zuvor gesagte gilt andererseits auch für die Elementar-Rotationsstufe entsprechend i=7. Hier bewirkt das Verschieben eines beliebigen Eingabewertes um (2i + 1) Bits eine 15-Bit-Rechtsverschiebung des Operanten mit dem selben Ergebnis, das heißt, zurückbleiben allein des Vorzeichenbits. Daher können die 2 (2i + 1 )-Bit-Schieberegister und die entsprechenden Addierer für die jeweilige Elementar-Rotationsstufe fortgelassen werden. Dementsprechend werden in der vorliegenden Implementierung in Fig. 8 vier Addierer/ Subtrahie- rer für jede Elementar-Rotationsstufe entsprechend i = 4, 5, 6 verwendet, und zwei Addierer/ Subtrahierer für jede Elementar-Rotationsstufe entsprechend i = 7 14
Der maximale Winkel, der mit der vorliegenden Anordnung berechnet werden kann, beträgt etwa 25°. Dies deckt den vorliegend gewählten modifizierten Konvergenzbereich ab. Zum Austarieren der Pipeline im Hinblick auf die Betriebsgeschwindigkeit sind die Elementar-Rotationsstufen entsprechend i = (7, 8), (9, 10), (11, 12) und (13, 14) verkettet, wobei die in den Klammern enthaltenen Elementar-Rotationsstufen jeweils eine Pipeline-Stufe bilden. Mit dieser Anordnung ist die CORDIC-Pipeline der Fig. 8 12 Stufen tief, wobei die Hard- ware-Komplexität jeder dieser Stufen 4 16-Bit-Addierern entspricht.
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 Zweikomponenten-Addition ver- wendet. Die Information darüber, in welchem Quadranten und welcher Domäne der Eingangsvektor mit den Komponenten xO und yO liegt, die im Vorpro- zessor 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 die erwähnten 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 können in ei- nem Taktzyklus abgeschlossen.
Die in Figur 8 gezeigte Struktur stellt eine besondere Implementierung einer CORDIC-Pipeline dar. Für die vorliegend beschriebene Architektur wurde berücksichtigt, dass es zwei Faktoren gibt, die die Berechnungsgeschwindigkeit begrenzen. Zunächst ist die Geschwindigkeit einer CORDIC-Einheit wegen des iterativen Charakters des CORDIC-Verfahrens vergleichsweise gering. Weiterhin verlangsamt die Berechnung des Restwinkels zu Beginn jeder Elementardrehung die Geschwindigkeit der CORDIC-Einheit. Je nach Restwinkel führt die CORDIC-Einheit entweder einen bestimmten Iterationsschritt aus oder überspringt ihn. In der nachfolgend beschriebenen Implementierung wer- den diese Geschwindigkeitsbegrenzenden Faktoren eliminiert und erhöhen so die Geschwindigkeit der CORDIC-Einheit.
Grundlegend für die nachfolgend beschriebene Architektur ist, dass die Dezimale 1 in der Form 0100000000000000 dargestellt wird. Auf Grund der Domänenfaltung werden alle Winkel des Koordinatenraumes in das Intervall [0,π/8] abgebildet. Der größte effektive Zielwinkel der berechnet werden muss, ist daher π/8 = 0,392699 Radiant. Mit der oben genannten Definition der Dezimalen 1 kann dieser Winkel im Binärformat als 0001100100100010 mit einem Fehler von O(2"16) dargestellt werden. Unter dem Blickwinkel der Imple- mentierung kann daher zur Darstellung des absoluten Wertes jedes beliebigen Winkels im modifizierten Konvergenzbereich die ersten 3 MSBs fortgelassen werden und an ihrer Stelle die 13 LSBs verwendet werden. In der hier beschriebenen Architektur wird dies verwendet, um die Rechenlast im z- Datenpfad zu verringern.
Zur Beseitigung des zweiten, die Geschwindigkeit einschränkenden Faktors, nämlich der Berechnung des Restwinkels zu Beginn jeder Iteration, wird die vorzeichenlose 13-Bit Binärdarstellung des modifizierten Zielwinkels φ, wie sie im Vorprozessor 100 bestimmt worden ist, verwendet, zur Steuerung der betreffenden Elementarrotationsstufe in der Pipeline verwendet. Wie bereits zuvor erwähnt, wird im Algorithmus der vorliegenden Erfindung der Zielwinkel durch Rotation des Vektors in nur ein und derselben Richtung angenähert. Dies bedeutet im Wesentlichen, dass der Zielwinkel als eine Summe von 2"' angenähert wird. Daher können die betreffenden Elementar-Rotationsstufen für einen bestimmten Zielwinkel aktiviert werden, mit dem sie eine 1-zu-1 Ent- sprechung in der Position einer logischen „1" in dieser 13-Bit Darstellung haben. Die nachfolgende Tabelle fasst die Beziehung zwischen der Position logischer Einsen in der Darstellung von φ und den entsprechenden aktiven Elementar-Rotationsstufen zusammen.
Figure imgf000032_0001
Als Beispiel sei φ = 20° (0,349 Radiant) betrachtet. Die binäre vorzeichenlose Darstellung dieses Winkels ist 1011001010111. Für diesen Zielwinkel müssen die Rotationsstufen i = 4, 4, 4, 4, 4, 5, 8, 10, 12, 13 und 14 aktiviert werden. Die deaktivierten Elementar-Rotationsstufen, die den Bit-Positionen mit logischer „0" entsprechen, werden übersprungen. Dies impliziert eine geringere Anzahl arithmetischer Rechenoperationen, wodurch die Leistungsaufnahme vermindert werden kann. Es wird angemerkt, dass auf Grund des Winkelbe- reiches von φ zwischen 0 und π/ 8 keinesfalls eine logische „1" auf den Bit- Positionen 10, 11 und 12 der vorzeichenlosen Darstellung von φ gleichzeitig auftreten.
Zum Aufrechterhalten der Pipeline-Operation werden die einzelnen Bits der 13-Bit-Darstellung von φ den betreffenden Elementar-Rotationsstufen in Form eines Aktivierungssignals für die jeweils betreffende Stufe durch ein Feld von Einzelbit-Schieberegistern zugeführt. Die Anzahl der Schieberegister, die der jeweiligen Stufe entspricht, wird so gewählt, dass die betreffende Stufe im richtigen Taktzyklus aktiviert wird. Zur Aktivierung der betreffenden Stufen der sechs Stufen mit i = 4 ist eine einfache logische Kombination der Bits der Po- sitionen 10, 11 und 12 vorgesehen. Für die anderen Elementar- Rotationsstufen können die entsprechenden Bits direkt dem nullten Schieberegister des jeweiligen Schieberegisterfeldes zugeführt werden. Die Struktur des Pipeline-CORDOC-Prozessors mit der soeben beschriebenen Anordnung ist in Figur 8 wiedergegeben, wobei „I" den Index der Elementar- Rotationsstufen der Pipeline kennzeichnet.
Mit dieser Anordnung gelingt es, den Vergleich von z mit 2"' und Rref zu Beginn jeder Iteration, wie es im Flussdiagramm der Figur 5 gezeigt ist, und die anschließende arithmetische Berechnung sowie entsprechende Hardware im z- Datenpfad im Wesentlichen einzusparen. Anzumerken ist, dass für den kon- ventionellen CORDIC-Algorithmus der Zielwinkel durch die Hin- und Her- Bewegung des Vektors angenähert wird. Im konventionellen CORDIC- Algorithmus kann daher der hier beschriebene Algorithmus zur Eliminierung der arethmetischen Berechnung im z-Datenpfad nicht übernommen werden. Die hier beschriebene Eliminierung von Berechnungen im z-Datenpfad und expliziter Vergleichsoperationen für den Vorwärts-Rotationsmodus des COR- D IC-Prozessors kann auch für die Rückwärts-Rotation des CORDIC- Algorithmus bei der Berechnung des Arcus-Tangens verwendet werden.
Der Ausgangsschaltkreis 300 der Figur 7 umfasst beispielsweise zwei feste
Skalierungseinheiten zum Skalieren mit dem Wert 1/ 2 und zwei Addierer/ Subtrahierer. Jede der Skalierungseinheiten ist mit fünf 15-Bit-Addierem umgesetzt. Die Hardware-Komplexität dieser Einheit entspricht daher 12 16-Bit- Addierem.

Claims

Patentansprüche
1. CORDIC-Einheit zur iterativen Approximation einer Vektordrehung um einen Drehwinkel θ durch eine Anzahl von Elementardrehungen um E- lementarwinkel a umfassend Elementar-Rotationsstufen (30p - 30b-1 ), jeweils zum Durchführen einer Elementardrehung um einen Elementarwinkel σ, 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 at aus- gelegt 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 E- lementarwinkel ist, und, wenn dies der Fall ist, ein Berechnungssignal an die dem neuen Elementarwinkel entsprechende Elementar-Rotationsstufe (30p - 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 gekenn- zeichnet, dass sie eine Wortlänge von b Bit aufweist und dass Elementar-Rotationsstufen (30p - 30b-1 ) zur Drehung um Elementarwinkel , = 2"1 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
-(2B+1)7
Σ n=l"1" (277 +1)!
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 E- lementarwinkel a die eine Wortlänge von b Bit aufweist, umfassend E- lementar-Rotationsstufen (30p - 30b-1 ), jeweils zum Durchführen einer Elementardrehung um einen Elementarwinkel a-, als einem Iterationsschritt der iterativen Approximation, dadurch gekennzeichnet, dass die Elementar-Rotationsstufen (30p - 30b-1) zur Drehung um Elementar- winkei 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
Figure imgf000037_0001
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 Sub- trahierer (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 Vorverarbeitungsschaitung (100), die dazu ausgelegt ist, Drehwinkel zwi- sehen 77/8 und 2τr Grad in das Intervall zwischen 0 und 77/8 zu überführen.
13. Vorverarbeitungseinheit nach Anspruch 12, dadurch gekennzeichnet, dass die Vorverarbeitungsschaitung (100) dazu ausgestaltet ist, im ersten Quadranten eines Koordinatensystems liegende Drehwinkel in das Intervall zwischen 0 und 77/8 zu überführen, indem der Drehwinkel von
77/4 subtrahiert wird, wenn er im Intervall zwischen 77/8 und 77/4 liegt, indem zum Drehwinkel 77/4 addiert wird, wenn er im Intervall zwischen rτ!4 und 377/8 liegt, oder indem der Drehwinkel von 77/2 subtrahiert wird, wenn er im Intervall zwischen 77/4 und 377/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.
PCT/EP2002/014695 2001-12-20 2002-12-20 Cordic-einheit WO2003054689A2 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/498,707 US7606852B2 (en) 2001-12-20 2002-12-20 CORDIC unit

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
WO2003054689A2 true WO2003054689A2 (de) 2003-07-03
WO2003054689A3 WO2003054689A3 (de) 2003-11-20

Family

ID=7711133

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2002/014695 WO2003054689A2 (de) 2001-12-20 2002-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
US8589463B2 (en) 2010-06-25 2013-11-19 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
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
WO2014105154A1 (en) * 2012-12-24 2014-07-03 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
EP0297588A2 (de) * 1987-06-30 1989-01-04 Nec Corporation Mit Pseudo-Division arbeitender arithmetischer Prozessor für trigonometrische Funktionen
DE4126953A1 (de) * 1991-08-14 1993-02-18 Fraunhofer Ges Forschung Schaltungsanordnung und verfahren zur durchfuehrung des cordic-algorithmus
DE4335925A1 (de) * 1993-10-21 1995-04-27 Ant Nachrichtentech 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
EP0453641B1 (de) * 1990-04-20 1997-03-12 Siemens Aktiengesellschaft CORDIC-Prozessor für Vektordrehungen in Carry-Save-Architektur
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
EP0297588A2 (de) * 1987-06-30 1989-01-04 Nec Corporation Mit Pseudo-Division arbeitender arithmetischer Prozessor für trigonometrische Funktionen
DE4126953A1 (de) * 1991-08-14 1993-02-18 Fraunhofer Ges Forschung Schaltungsanordnung und verfahren zur durchfuehrung des cordic-algorithmus
DE4335925A1 (de) * 1993-10-21 1995-04-27 Ant Nachrichtentech Schaltungsanordnung zur Signalverarbeitung nach dem CORDIC-Verfahren

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WALTHER J S: "A UNIFIED ALGORITHM FOR ELEMENTARY FUNCTIONS" PROCEEDINGS OF THE SPRING JOINT COMPUTER CONFERENCE. ATLANTIC CITY, 18 - 20 MAY, 1971, JOINT COMPUTER CONFERENCE, BALTIMORE, SPARTAN BOOKS, US, Bd. NG 1971 VOL. 38, 18. Mai 1971 (1971-05-18), Seiten 379-385, XP001022227 *

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2003054689A2 (de) Cordic-einheit
DE3879373T2 (de) Residuen-arithmetische Rechenschaltung.
Vuillemin Exact real computer arithmetic with continued fractions
DE69716331T2 (de) Schaltung für Modulo-Multiplikations- und Exponentiationsarithmetik
DE69421362T2 (de) Galois-Feldmultiplizierverfahren und Multiplizierer zur Durchführung dieses Verfahrens
EP1543408A1 (de) Vorrichtung und verfahren zum berechnen einer multiplikation mit einer verschiebung des multiplikanden
DE1549508C3 (de) Anordnung zur Übertragsberechnung mit kurzer Signallaufzeit
DE2621430C2 (de) Kompensationssystem für eine numerisch gesteuerte Werkzeugmaschine
EP0453641A2 (de) CORDIC-Prozessor für Vektordrehungen in Carry-Save-Architektur
DE68927398T2 (de) Digitale Divisionsschaltung mit einem N/2-Bit-Subtrahierer für N-Subtraktionen
EP1576463A2 (de) Modulare multiplikation mit paralleler berechnung der vorausschau-parameter
DE2310553A1 (de) Vorrichtung zur durchfuehrung arithmetischer und logischer operationen
DE102013020730A1 (de) Verfahren und Vorrichtung zur iterativen Berechnung eines Wertes
DE69526887T2 (de) Inversionsschaltung für Galoisfeldelemente
DE2315347B2 (de) Verfahren und vorrichtung zur fortlaufenden korrelations-decodierung unter einbeziehung von amplitudengewichtung von gruppen bildenden signalen
Suzuki A characterization of the 3-dimensional projective unitary group over a finite field of odd characteristic
DE2523755C3 (de) Divisionsvorrichtung unter Verwendung einer Näherungsgleichung
DE3650754T2 (de) Verfahren und Vorrichtung zur Adressierung eines Speichers
DE1499227C3 (de) Schaltungsanordnung für arithmetische und logische Grundoperationen
DE2313246A1 (de) Spezialrechner
DE2902766A1 (de) Zwei-term-vektor-multiplizierschaltung
DE1762408C3 (de) Digital-Analog-Umsetzer
DE4335925C2 (de) Schaltungsanordnung zur Signalverarbeitung nach dem CORDIC-Verfahren
DE2816661C3 (de) Koordinatenwandler zur Umwandlung von kartesischen VektorgröBen in polare Vektorgrößen
DE69619963T2 (de) Signalprozessor mit reduzierter komplexität und empfänger mit einem derartigen signalprozessor

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SI SK TR

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
ENP Entry into the national phase

Ref document number: 2006059215

Country of ref document: US

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 10498707

Country of ref document: US

WWP Wipo information: published in national office

Ref document number: 10498707

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP