WO2003054689A2 - Cordic-einheit - Google Patents
Cordic-einheit Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/544—Methods 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/5446—Methods 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
Description
Claims
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)
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)
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)
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 |
-
2001
- 2001-12-20 DE DE10164462A patent/DE10164462B4/de not_active Expired - Fee Related
-
2002
- 2002-12-20 WO PCT/EP2002/014695 patent/WO2003054689A2/de not_active Application Discontinuation
- 2002-12-20 US US10/498,707 patent/US7606852B2/en not_active Expired - Fee Related
Patent Citations (3)
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)
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 |