Claims
- 1. A method of computing correlation in a digital signal processor (DSP), the method comprising:
receiving receiver data in quadrature; retrieving at least a first portion of a sine wave and at least a first portion of a cosine wave by reference to a lookup table; digitally generating a second portion of the sine wave and a second portion of the cosine wave in multiple stages of a pipelined Coordinate Rotation Digital Computer (CORDIC), where the generated sine wave and the generated cosine wave are of substantially constant magnitude; and multiplying the receiver data by the sine wave and by the cosine wave in a Multiplier Accumulator (MAC) block to determine an amount of correlation.
- 2. The method as defined in claim 1, wherein the CORDIC corresponds to a Modified CORDIC.
- 3. A method of digitally generating a sine wave and a cosine wave in a plurality of digital steps, the method comprising:
(a) receiving an angle increment value, where the angle increment value is related to a change in an angle by which the sine wave and the cosine wave change in a step; (b) computing a new angle value by combining the angle increment value with an existing angle value; (c) calculating a sine and a cosine of the new angle value to compute a value of a step of the sine wave and a value of a step of the cosine wave, respectively; (d) maintaining the computed values of the steps of the sine wave and of the cosine wave such that the values are ready to be read upon receipt of a read instruction; (e) performing the following when a read instruction has been received:
(i) providing the computed values of the steps of the sine wave and of the cosine wave in response to a receipt of the read instruction; (ii) storing the new angle value as the existing angle value; and (iii) computing another value for the new angle value by combining the angle increment value with the existing angle value; and (f) inhibiting further computations of values of other steps of the sine wave and of the cosine wave when a read instruction has not been received.
- 4. The method as defined in claim 3, further comprising repeating (b), (c), (d), (e), and (f).
- 5. The method as defined in claim 3, wherein the calculating the sine and the cosine of the new angle value further comprises:
phase shifting the new angle value to a phase shifted angle value, where the phase shifted angle value conforms to a 90-degree range; swapping a sine computation and a cosine computation when the phase shifted angle value is in a first 45-degree portion of the 90-degree range and mirroring the phase angle around 45 degrees; not swapping the sine computation and the cosine computation when the phase shifted angle value is in the other 45-degree portion of the 90-degree range; computing a portion of the sine wave and the cosine wave of the phase shifted angle value by applying the phase shifted angle value as an input to a lookup table; applying an output of the lookup table as an input to a pipelined CORDIC; and compensating the output of the pipelined Coordinate Rotation Digital Computer (CORDIC) in accordance with an amount of phase shift applied to the phase shifted angle value to generate the sine and the cosine of the new angle value.
- 6. The method as defined in claim 5, wherein the pipelined CORDIC conforms to a modified CORDIC.
- 7. The method as defined in claim 5, further comprising:
receiving an initial angle value and an indication to start a computation of the sine wave and the cosine wave; using the initial angle value as the existing angle value; automatically advancing computations in the pipelined CORDIC to compute the new angle value until the sine and the cosine of the initial angle is available at an output; and automatically stopping the sequencing of the pipelined CORDIC and the computing of the new angle value until a read instruction has been received.
- 8. The method as defined in claim 7, wherein receiving the initial angle as the existing angle value further comprises combining the initial angle with the angle increment value, and applying the combination of the initial angle value with the angle increment value as the existing angle value.
- 9. The method as defined in claim 3, further comprising receiving an initial angle value for the sine wave and the cosine wave.
- 10. A method of generating a digital sine wave and a digital cosine wave in a digital signal processor (DSP), the method comprising:
storing a plurality of coarse data points in a lookup table; receiving an angle value; applying a first portion of the angle value as an input to the lookup table and retrieving a coarse data point; and applying a second portion of the angle value and applying the retrieved coarse data point as an input to a Coordinate Rotation Digital Computer (CORDIC).
- 11. The method as defined in claim 10, wherein the lookup table stores data within for angle value within about a 45-degree range and further comprising:
converting the angle value to a modified value within a quadrant by applying a phase shift that is an integer multiple of 45 degrees, where such integer multiple includes 0, 1, 2, 3, 4, 5, 6, and 7; applying a first portion and a second portion of the modified value to the lookup table and the CORDIC, respectively, to produce a sine output and a cosine output; and compensating for the conversion of the angle value by selectively phase-shifting and by selectively swapping the sine and the cosine outputs of the CORDIC.
- 12. The method as defined in claim 11, wherein the compensating further comprises:
using the cosine output as the cosine output and using the sine output as the sine output when the CORDIC calculates an angle within a first 45 degree portion of a quadrant; and swapping the cosine output and the sine output such that the cosine output is the sine output and the sine output is the cosine output when the CORDIC calculates an angle within the other 45 degree portion of the quadrant.
- 13. A method of providing an intermittent clock signal comprising:
receiving a system clock signal; generating clock pulses of the intermittent clock signal from the system clock signal for a predetermined period after decoding of a first instruction received in a DSP; inhibiting clock pulses of the intermittent clock signal after termination of the predetermined period; and providing a clock pulse of the intermittent clock signal from the system clock signal in response to a decoding of a second instruction.
- 14. The method as defined in claim 13, where the predetermined period corresponds to an initial latency of a pipelined CORDIC for a new computation to progress from a beginning of the pipelined CORDIC to an end of the pipelined CORDIC.
- 15. The method as defined in claim 13, wherein the predetermined period corresponds to a predetermined count of cycles of the system clock signal, and where the predetermined count of cycles corresponds to a number of latency cycles that it takes for a new computation to progress through a computational pipeline.
- 16. The method as defined in claim 13, wherein the first instruction comprises a start instruction, and where the second instruction comprises a read instruction.
- 17. The method as defined in claim 13, further comprising:
triggering an increment of a count by applying the intermittent clock signal to a counter; using the count to indicate an angle; and computing at least one trigonometric function of the angle.
- 18. The method as defined in claim 17, wherein the at least one trigonometric function includes computation of a sine and a cosine of the angle.
- 19. A method of generating a function in a digital signal processor (DSP), the method comprising:
receiving a first instruction, where the first instruction initiates a computation according to a Coordinate Rotation Digital Computer (CORDIC) algorithm; computing the CORDIC algorithm in a pipeline; automatically discontinuing further computations of the CORDIC algorithm in the pipeline when a computed output is ready; and providing the computed output of the CORDIC algorithm in response to a second instruction.
- 20. The method as defined in claim 19, wherein the CORDIC algorithm is computed in at least a first stage and a second stage, where the computation of the first stage is implemented by a lookup table, and where the second stage is implemented with a butterfly stage.
- 21. The method as defined in claim 19, wherein the CORDIC algorithm comprises a Modified CORDIC algorithm.
- 22. The method as defined in claim 19, further comprising:
predicting a desired time when a computation of the CORDIC algorithm is desired; and initiating the computation of the CORDIC algorithm before the desired time such that the computation is completed by the desired time.
- 23. The method as defined in claim 19, wherein the CORDIC algorithm is initiated before the desired time by an amount of time substantially equal to an initial latency period of the computation.
- 24. A process of controlling a pipelined circuit with a read instruction comprising:
receiving a plurality of instructions; determining when a received instruction corresponds to the read instruction; pausing sequencing of the pipelined circuit until the read instruction is detected; and sequencing the pipelined circuit such that data progresses through one segment of the pipeline in response to receiving the read instruction; and generating an output of the pipelined circuit in response to receiving the read instruction.
- 25. The process as defined in claim 24, wherein the pipelined circuit comprises a Coordinate Rotation Digital Computer (CORDIC).
- 26. The process as defined in claim 24, further comprising:
determining when the received instruction corresponds to a start instruction, where the start instruction further includes a first argument that provides an initial angle and a second argument that provides an amount of an increment; loading an angle generation stage of the pipelined circuit; automatically advancing the data through the pipelined circuit until data is available to be read at the output of the pipeline; and pausing sequencing of the pipelined circuit until detection of an instruction selected from the group consisting of a read instruction and a write instruction.
- 27. The process as defined in claim 26, wherein at least one of the first argument and the second argument is provided as a content in a register.
- 28. A process of controlling a pipelined circuit with a start instruction comprising:
receiving a plurality of instructions; pausing sequencing of the pipelined circuit until the start instruction is detected; and determining when a received instruction corresponds to the start instruction, where the start instruction includes a first argument that provides an initial angle and a second argument that provides an amount of an increment; and automatically advancing stages of the pipelined circuit until data based on the initial angle is available to be read at the output of the pipelined circuit.
- 29. The process as defined in claim 28, wherein at least one of the first argument and the second argument is provided as a content in a register.
- 30. A digital signal processor (DSP) comprising:
a Coordinate Rotation Digital Computer (CORDIC) unit configured to compute steps of a sine wave and a cosine wave of a constant magnitude and a selectable frequency, where the frequency is selected by configuration of a step size of a change in an angle between computed steps; at least one of a Multiplier Accumulator (MAC), an arithmetic logic unit (ALU), and a Shifter; and a register file to provide arguments to the CORDIC unit and the at least one of the MAC, the ALU, and the Shifter.
- 31. The DSP as defined in claim 30, wherein the CORDIC unit further comprises:
a lookup table adapted to store a plurality of intermediate values of sines and cosines of substantially evenly spaced angles, where the lookup table is configured to receive a first portion of an angle value to address the plurality of intermediate values and to select an intermediate value as an output at least partially in response to the first portion of the angle value; a pipelined CORDIC adapted to receive a second portion of the angle value and the output of the lookup table as inputs, where the pipelined CORDIC is configured to generate a sine step and a cosine step of the second portion of the angle value; an inhibit counter adapted to provide a first state of an inhibit signal upon reaching a predetermined count, where the inhibit counter is reset to a second state upon a reloading of the CORDIC, and where the predetermined count is related to a latency in the pipelined CORDIC; and an angle generator adapted to incrementally step among a plurality of angles, where an output of the angle generator circuit is the angle value, where the angle generator is configured to increment in response to a condition selected from the group consisting of a read instruction and the second state of the inhibit signal.
- 32. The DSP as defined in claim 31, wherein the lookup table contains intermediate values of sines and cosines for 16 angle values substantially evenly spaced over approximately a 45-degree range.
- 33. The DSP as defined in claim 31, further comprising an Output Select circuit configured to selectively invert and to selectively swap the sine step and the cosine step outputs of the pipelined CORDIC in response to an indication of a quadrant of the corresponding angle value from the angle generator.
- 34. The DSP as defined in claim 31, further comprising a wait state generator configured to provide a wait state in response to a receipt of a read instruction and the second state of the inhibit signal.
- 35. A Coordinate Rotation Digital Computer (CORDIC) comprising:
a plurality of computation stages arranged in a pipeline; a reset unit adapted to receive a reset instruction and to reset the plurality of computation stages in response to the reset instruction; an output circuit adapted to provide a computation from the plurality of computation stages in the pipeline in response to read computation instruction; and a timing circuit adapted to advance calculations through the pipeline in response to a start instruction, where the timing circuit automatically discontinues advancing the calculations through the pipeline when a calculation has progressed to an end of the pipeline, where the timing circuit is further configured sequence the pipeline to generate another computation in response to the read CORDIC instruction.
- 36. The CORDIC as defined in claim 35, wherein the plurality of computation stages includes a read only memory (ROM) lookup table.
- 37. A control circuit for a pipelined Coordinate Rotation Digital Computer (CORDIC) comprising:
a reset circuit adapted to reset at least a portion of the pipelined stages of the pipelined CORDIC; a first sequencing unit adapted to automatically enable clock pulses to the pipelined CORDIC such that a new calculation can progress from a beginning of the pipelined CORDIC to an end of the pipelined CORDIC and to automatically disable the automatic application of clock pulses to the pipelined CORDIC when the computation is available at the end of the pipelined CORDIC; and a second sequencing unit adapted to provide a clock pulse to the pipelined CORDIC to advance a calculation from one stage to another, where the second sequencing unit is configured to provide the clock pulse in response to an instruction to read an output of the pipelined CORDIC.
- 38. The control circuit as defined in claim 37, wherein the reset circuit does not reset a ROM lookup table.
- 39. The control circuit as defined in claim 37, wherein the first sequencing unit comprises a counter that can be reset in response to a detection of a start instruction, where the first sequencing unit enables clock pulses when a count maintained by the counter is in a first range of counts, and where the first sequencing unit disables the automatic application of clock pulses when the count maintained by the counter is in a second range of counts.
- 40. The control circuit as defined in claim 39, where the counter is incremented in response to an advancing of data from one pipelined stage to another, and the number of pipelined stages of the pipelined CORDIC determines the count at which the control circuit enables and disables the automatic application of clock pulses to the pipelined CORDIC.
RELATED APPLICATION
[0001] This application claims the benefit under 35 U.S.C. § 119(e) of U.S. Provisional Application No. 60/231,280, filed Sep. 8, 2000, the entirety of which is hereby incorporated by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60231280 |
Sep 2000 |
US |