US20060282489A1 - Hardware function generator support in a DSP - Google Patents

Hardware function generator support in a DSP Download PDF

Info

Publication number
US20060282489A1
US20060282489A1 US11/390,988 US39098806A US2006282489A1 US 20060282489 A1 US20060282489 A1 US 20060282489A1 US 39098806 A US39098806 A US 39098806A US 2006282489 A1 US2006282489 A1 US 2006282489A1
Authority
US
United States
Prior art keywords
cordic
pipelined
instruction
angle
cosine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/390,988
Inventor
Shoab Khan
Rehan Hameed
Hassan Farooq
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quartics Inc
Original Assignee
Avaz Networks Inc
Quartics Inc
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 Avaz Networks Inc, Quartics Inc filed Critical Avaz Networks Inc
Priority to US11/390,988 priority Critical patent/US20060282489A1/en
Publication of US20060282489A1 publication Critical patent/US20060282489A1/en
Priority to US12/944,629 priority patent/US20110119520A1/en
Assigned to AVAZ NETWORKS reassignment AVAZ NETWORKS ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FAROOQ, HASSAN, HAMEED, REHAN, KHAN, SHOAB A
Assigned to QUARTICS, INC. reassignment QUARTICS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CMA BUSINESS CREDIT SERVICES ON BEHALF OF AVAZ NETWORKS, INC.
Assigned to GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIRISH PATEL AND PRAGATI PATEL FAMILY TRUST DATED MAY 29, 1991 reassignment GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIRISH PATEL AND PRAGATI PATEL FAMILY TRUST DATED MAY 29, 1991 SECURITY AGREEMENT Assignors: QUARTICS, INC.
Assigned to GREEN SEQUOIA LP, MEYYAPPAN-KANNAPPAN FAMILY TRUST reassignment GREEN SEQUOIA LP SECURITY AGREEMENT Assignors: QUARTICS, INC.
Assigned to SEVEN HILLS GROUP USA, LLC, HERIOT HOLDINGS LIMITED, AUGUSTUS VENTURES LIMITED, CASTLE HILL INVESTMENT HOLDINGS LIMITED, SIENA HOLDINGS LIMITED reassignment SEVEN HILLS GROUP USA, LLC INTELLECTUAL PROPERTY SECURITY AGREEMENT Assignors: QUARTICS, INC.
Abandoned legal-status Critical Current

Links

Images

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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3884Pipelining

Definitions

  • the present invention generally relates to digital signal processing.
  • the present invention relates to a Coordinate Rotation Digital Computer (CORDIC) in a digital signal processor (DSP).
  • CORDIC Coordinate Rotation Digital Computer
  • DSP digital signal processor
  • a Coordinate Rotation Digital Computer (CORDIC) algorithm performs vector coordinate rotations by using simple iterative shifts and add/subtract operations, which are relatively easy to implement in hardware.
  • Advantages of the CORDIC algorithm have been well documented by U.S. Pat. No. 4,896,287 to O'Donnell, et al., U.S. Pat. No. 4,937,775 to Engeler, et al., and U.S. Pat. No. 5,684,435 to Bergen, the entireties of which are hereby incorporated by reference.
  • the CORDIC algorithm can be used in function generators. Function generators are an integral part of many DSP algorithms. Digital communication and signal processing systems use representations of sine, cosine, tangent and hyperbolic functions to perform fundamental operations such as coherent detection, rectangular to polar conversions, decoding of Quadrant Amplitude Modulation (QAM) and M-ARY modulated signals, and the like. In addition, the CORDIC algorithm can be used in Direct Digital Synthesis (DDS) of frequencies.
  • DDS Direct Digital Synthesis
  • ROM lookup table stored in a Read Only Memory (ROM).
  • ROM Read Only Memory
  • the amount of data that is stored in a ROM lookup table can quickly surpass practical size and cost limitations.
  • the storage area of a ROM chip increases almost exponentially with increases in resolution.
  • a ROM lookup table is relatively small and inexpensive, the number of available functions and the resolution of the data available are limited.
  • DSP digital signal processor
  • Function generation can be performed by a CORDIC.
  • many conventional implementations of a CORDIC iterate numerous times to perform a calculation for function generation.
  • a microprocessor or DSP reading the output of the CORDIC waits until computation is complete.
  • execution can be faster, but conventional pipelined CORDICs have relatively little integration with other hardware.
  • other hardware such as microprocessors and DSPs, closely monitor or control conventional pipelined CORDICs or store the results of the conventional pipelined CORDIC in relatively large and expensive memory devices.
  • Embodiments of the invention quickly and efficiently process the CORDIC algorithm in a pipeline.
  • data in the CORDIC pipeline is automatically advanced in response to read instructions and can be automatically advanced from the beginning of the pipeline to the end of the pipeline to reinitialize the pipeline.
  • This allows a controller or a digital signal processor (DSP) to efficiently retrieve information from the CORDIC pipeline with relatively little overhead.
  • DSP digital signal processor
  • the automatic starting and stopping of the CORDIC pipeline advantageously allows the retrieval of computations from efficient pipeline architectures on an as-needed basis and advantageously avoids having to store relatively large amounts of computations from a pipeline in memory.
  • One embodiment of the present invention includes a design of a modified CORDIC Function Generator that can be used in a DSP core.
  • the modified CORDIC Function Generator is pipelined to provide a new output on every clock edge.
  • a relatively small initial latency allows the modified CORDIC Function Generator time to process new data through the pipeline.
  • an architecture for an Execution Block which can be implemented in the DSP core, advantageously uses the CORDIC Function Generator to reduce both chip area and DSP idle cycles.
  • An example of a Radix-2 butterfly illustrates how this CORDIC Function Generator improves the implementation of such DSP algorithms.
  • One embodiment according to the invention includes a method of computing correlation in a digital signal processor (DSP).
  • DSP digital signal processor
  • the method includes receiving receiver data in quadrature, digitally generating a sine wave and a cosine wave with a pipelined Coordinate Rotation Digital Computer (CORDIC), and multiplying the receiver data by the first portion of the sine wave and the first portion of the cosine wave in a Multiplier Accumulator (MAC) block to determine an amount of correlation.
  • the sine wave and the cosine wave generated by the CORDIC algorithm are of substantially constant magnitude.
  • Another embodiment according to the invention is a method of digitally generating a sine wave and a cosine wave.
  • the method includes (a) receiving an angle J 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 during a time increment, (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, (e)(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, (e)(ii) storing the new angle value as the existing angle value,
  • One embodiment of the invention includes a method of generating a digital sine wave and a digital cosine wave in a digital signal processor (DSP).
  • the method includes computing a portion of the sine wave and a portion of the cosine wave by looking up points in a lookup table, and computing a remaining portion of the sine wave and the cosine wave in accordance with a pipelined CORDIC.
  • One embodiment of the invention includes a method of providing an intermittent clock signal to a pipelined process.
  • the intermittent clock signal automatically advances and stops advancing computations in the pipelined process in accordance with the rate at which data is retrieved from the pipelined process.
  • the method includes receiving a system clock signal and 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.
  • the first instruction can correspond to a start instruction.
  • the method further includes 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.
  • the second instruction can be a read instruction.
  • the predetermined period is the latency of a pipeline from beginning to end.
  • One embodiment according to the invention includes a method of generating a function in a digital signal processor (DSP).
  • DSP digital signal processor
  • the method includes receiving a first instruction, such as a start instruction, which initiates a computation according to a Coordinate Rotation Digital Computer (CORDIC) algorithm.
  • CORDIC Coordinate Rotation Digital Computer
  • the method computes the CORDIC algorithm in a pipeline and automatically discontinues further computations of the CORDIC algorithm in the pipeline when a computed output is ready.
  • the method provides the computed output of the CORDIC algorithm in response to a second instruction such as a read instruction.
  • One embodiment of the invention is a process of controlling a pipelined circuit with a read instruction.
  • the process includes receiving a plurality of instructions and detecting the occurrence of the read instruction.
  • the process advances computations through one stage or segment of the pipelined circuit and generates an output of the pipelined circuit.
  • One embodiment of the invention is a process that includes detecting a start instruction, which loads the beginning of the pipelined circuit and automatically sequences the stages of the pipelined circuit until new data is ready to be read at the output. Where the received instruction does not correspond to the read instruction or to S the start instruction, one embodiment of the invention pauses the pipelined circuit
  • One embodiment of the invention includes a DSP that includes a CORDIC unit, a register file, and at least one of a Multiplier Accumulator (MAC), an Arithmetic Logic Unit (ALU), and a Shifter.
  • the CORDIC computes steps of sine waves and cosine waves.
  • the register file provides arguments to the CORDIC unit and the at least one of the MAC, the ALU, and the Shifter.
  • One embodiment of the invention is a CORDIC that includes a plurality of computation stages arranged in a pipeline, a reset unit, an output circuit, and a timing circuit.
  • the reset unit is adapted to receive a reset instruction and to reset the plurality of computation stages in response to the reset instruction.
  • the output circuit is adapted to provide a computation from the plurality of computation stages in the pipeline in response to read computation instruction.
  • the timing circuit is adapted to advance calculations through the pipeline in response to a start instruction.
  • the timing circuit is further configured to automatically discontinue advancing the calculations through the pipeline when a calculation has progressed to an end of the pipeline, and the timing circuit is further configured to generate another computation in response to the read CORDIC instruction.
  • One embodiment according to the invention includes a control circuit for a pipelined CORDIC.
  • the control circuit can also be used to control other pipelined circuits.
  • the control circuit includes a reset circuit, a first sequencing unit, and a second sequencing unit.
  • the reset circuit is adapted to reset at least a portion of the pipelined stages of the pipelined CORDIC.
  • the first sequencing unit is 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.
  • the first sequencing unit is also configured 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.
  • the second sequencing unit is 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.
  • FIG. 1 illustrates an execution block according to an embodiment of the invention.
  • FIG. 2 illustrates a pipelined sine/cosine generation unit according to an embodiment of the invention.
  • FIG. 3 illustrates a process of quadrature modulation/demodulation with the pipelined sine(cosine according to an embodiment of the invention.
  • FIG. 4 illustrates a process of pipeline control according to an embodiment of the invention.
  • FIG. 5 illustrates a pipeline control circuit according to an embodiment of the invention.
  • CORDIC Coordinate Rotation Digital Computer
  • Another use of the CORDIC algorithm is to convert between Polar and Cartesian coordinates.
  • the CORDIC algorithm performs vector coordinate rotations using simple iterative shifts and add/subtract operations.
  • the general (Givens') rotation transform expressed in Equations 1A and 1B rotates a vector by an angle ⁇ .
  • Equation 2A and 2B The transform can be rearranged as shown in Equations 2A and 2B.
  • x ′ cos ⁇ [ x ⁇ y tan ⁇ ]
  • y ′ cos ⁇ [ y+x tan ⁇ ] Eqs. 2A and 2B
  • An overall rotation angle can be reached by applying successively smaller rotations. At each iteration, i, the direction of rotation is decided. This further simplifies Equations 2A and 2B to Equations 3A and 3B.
  • tan ⁇ 1 (2 ⁇ i ) are stored in a relatively small Read Only Memory (ROM) lookup table (LUT).
  • the CORDIC algorithm can be applied in rotation mode or in vectoring mode.
  • the rotation mode rotates the input vector by the angle specified through z 0 .
  • Successive iterations rotate in the direction to attempt to reduce this angle z i . Therefore, the direction to rotate is dependent on z i and is expressed as Equation 5.
  • ⁇ i ⁇ 1 z i ⁇ 0 - 1 z i ⁇ 0 Eq . ⁇ 5
  • the vectoring mode rotates the input vector through an angle such that the resulting vector lies on the x-axis. Successive iterations rotate in the direction to reduce the y-component, y i . Therefore, the direction to rotate is dependent on y i and is expressed as Equation 6.
  • ⁇ i ⁇ 1 y i ⁇ 0 - 1 y i ⁇ 0 Eq . ⁇ 6
  • the initial values of the system variables, x 0 , y 0 , and z 0 determine the function computed.
  • Examples of uses for the vectoring mode include Cartesian to Polar conversion, calculation of arctangents, and calculation of vector magnitude.
  • the inverse of the function can also be computed
  • the CORDIC equations can be modified to introduce a coordinate system factor, m.
  • CORDIC algorithm uses comparators for each stage to determine the direction of rotation
  • DDFS Direct Digital Frequency Synthesis
  • DDS simplifies a CORDIC computation by determining the d ion of rotation directly from the bits r k representing the angle ⁇ , as shown in Equation 7.
  • This modifies the standard CORDIC equations to the equations expressed in Equations 8A-D.
  • x i + 1 k i ⁇ [ x i - y i ⁇ ⁇ tan ⁇ ( 2 - i ) ]
  • y i + 1 k i ⁇ [ y i + x i ⁇ tan ⁇ ( 2 - i ) ]
  • y i + 1 k
  • Table 1 illustrates that the values of tan(2 ⁇ i ) and 2 ⁇ i are similar for values of i>(WordLength/3).
  • the similarity can simplify the hardware to relatively simple hardwired shifts for values of i>(WordLength/3).
  • the first (WordLength/3) stages are merged together and implemented with ROM.
  • FIG. 1 illustrates an Execution Block 100 of a DSP with a CORDIC Assist 104 according to an embodiment of the invention.
  • the CORDIC Assist 104 is pipelined such that a function generated output, such as a sine/cosine output, is available at every clock style of the CORDIC Assist 104 .
  • the Execution Block 100 further includes an Instruction Decoder 102 and a Local Register File 112 .
  • the Execution Block 100 can further include other DSP functional units typical of a DSP, such as a Multiplier Accumulator (MAC) 106 , an Arithmetic Logic Unit (AU) 108 , and a Shifter 110 .
  • MAC Multiplier Accumulator
  • AU Arithmetic Logic Unit
  • Shifter 110 a Shifter
  • the core of the DSP has a scalable and configurable architecture, which allows the designer to plug-in a variety of functional units without changing the external interfaces of the block with the rest of the core.
  • the Instruction Decoder 102 can be centralized or distributed. In one embodiment, the Instruction Decoder 102 is distributed, and a program sequencer of the core dispatches instructions to multiple execution blocks. The dispatched instructions are then decoded by the distributed instruction decoders of the specific blocks.
  • a function generation process such as sine/cosine generation, is initiated early.
  • the function generation process is initiated early by approximately the amount of time equal to the initial latency of the pipelined process, such that an output of the function generation process is available in response to a read instruction.
  • the Execution Block 100 can execute two instructions per cycle.
  • the Execution Block 100 includes multiple read ports available from the Local Register File 112 .
  • the CORDIC Assist 104 responds to at least two specific instructions. These instructions are a startCORDIC instruction and a readCORDIC instruction. In one embodiment, the startCORDIC instruction passes two parameters to the CORDIC Assist 104 . These parameters are an initial phase angle and an increment value.
  • the result of the first computation progresses through the stages or segments of the pipelined CORDIC Assist 104 and to the output of the CORDIC Assist 104 .
  • the result of the CORDIC computation is not automatically written to a register file in the Local Register File 112 . Rather, the computed result is retained until an explicit read instruction, e.g., a readCORDIC instruction, is applied to the CORDIC Assist 104 , which then transfers the computed result to a register in the Local Register File 112 .
  • the following sequence of instructions further illustrates how to use the CORDIC Assist 104 .
  • an initial angle is specified in R1
  • the increment in angle is specified in R2.
  • the sine and the cosine values of initial angle are ready in cycle n+5 and are available to be read in cycle n+5 or a later cycle, i.e., the number of latency cycles is 5.
  • the sine and the cosine of the next value are immediately available to be read in the next cycle after the readCORDIC instruction is applied.
  • the CORDIC Assist 104 also supports a register-interlocking mechanism, which stalls the pipeline if the user, DSP, controller, and the like, issues the first readCORDIC instruction before the end of the initial latency cycles. In one embodiment, if a startCORDIC instruction is issued after a subsequent startCORDIC instruction, then the second instruction result is received at the output.
  • the CORDIC Assist 104 can further be configured to respond to a resetCORDIC instruction.
  • the resetCORDIC instruction initializes the stages or segments in the CORDIC Assist 104 that are computed such as CORDIC stages, but does not reset a stage where data is merely retrieved, as in a ROM lookup table.
  • FIG. 2 illustrates a pipelined sine/cosine generation unit 200 according to an embodiment of the invention.
  • the architecture of the illustrated pipelined sine/cosine generation unit 200 advantageously incorporates the instruction based control of the CORDIC Assist 104 described earlier in connection with FIG. 1 .
  • the pipelined sine/cosine generation unit 200 includes an accumulator 202 , a ⁇ /4 multiplier 220 , an Output Select unit 222 , a first quadrant ⁇ /4 mirror 224 , a Read Only Memory (ROM) Lookup Table (LUT) 226 , and a multi-stage butterfly pipeline 228 .
  • ROM Read Only Memory
  • LUT Lookup Table
  • the accumulator 202 generates the angle value for which the remaining portions of the pipelined sine/cosine generation unit 200 compute the sine function and cosine function.
  • the accumulator 202 includes a multiplexer 204 , a data register 206 , and an adder 208 .
  • An initial angle 210 i.e., the stating angle, is provided as an input to the multiplexer 204 .
  • the multiplexer 204 is configured to select the initial angle 210 and to pass the initial angle 210 as an input to the data register 206 , which latches the state of the initial angle 210 .
  • the initial angle 210 is loaded into the data register 206 through a data bus 230 .
  • An output 214 of the data register 206 which contains the angle that enters the first stage of the computational stages, is provided as an input to the ⁇ /4 multiplier 220 , the Output Select unit 222 , and the first quadrant ⁇ /4 mirror 224 .
  • the output 214 of the data register 206 is also provided as an input to the adder 208 .
  • the adder 208 forms part of a feedback path that increments the angle output of the data register 206 .
  • the adder 208 sums the output 214 of the data register 206 with a frequency control word 212 .
  • the frequency control word 212 is stored in a register that is loaded through the data bus 230 , and the frequency control word from the register is provided as an input to the adder 208 .
  • the value of the frequency control word determines an amount of increment to the angle, i.e., determines the step size of the angle.
  • the adder 208 sums the frequency control word 212 with the output 214 of the data register 206 , and provides the sum as an input to the multiplexer 204 .
  • the multiplexer 204 is configured to select the summed output of the adder 208 when the accumulator 202 is stepping the angle.
  • the output of the multiplexer 204 is provided as an input to the data register 206 .
  • the data register 206 When the data register 206 is triggered or re-latched, the data register latches the output of the multiplexer 204 , and the output 214 of the data register has incremented by the amount of the frequency control word.
  • the output 214 of the data register 206 is again applied to the adder 208 , thereby allowing the accumulator 202 to continue to increment the angle provided by the output 214 of the data register 206 .
  • the cosines and sines of an entire 360-degree range need not be computed. Rather, a more limited range, such as 45 degrees or 90 degrees, can be computed, and the computed sines and cosines can be inverted and/or swapped to rotate the computed result by, for example, a multiple of 90 degrees.
  • the output 214 of the data register 206 containing the angle is provided with 20 bits of precision.
  • the two most significant bits of the output 214 of the data register 206 are provided as inputs to the Output Select unit 222 . The two most significant bits indicate the quadrant of the angle.
  • the Output Select unit 222 inverts and swaps the output of the multi-stage butterfly pipeline 228 to rotate the cosine and sine computations of the multi-stage butterfly pipeline 228 to their original quadrant.
  • the output 214 of the accumulator 202 is a normalized angle ⁇ which is converted to an actual radian value ⁇ [0, ⁇ /4].
  • the output 214 of the accumulator 202 is provided as an input to the hardwired ⁇ /4 multiplier 220 , which converts the normalized angle ⁇ to radians.
  • the hardwired ⁇ /4 multiplier 220 generates five partial products to achieve more than 16 bits of precision.
  • an output of the hardwired ⁇ /4 multiplier 220 is provided as an input to the first Quadrant ⁇ /4 mirror 224 .
  • the first Quadrant ⁇ /4 mirror 224 is a subtractor that replaces the angle ⁇ as [0, ⁇ /4] by [ ⁇ /2- ⁇ ] whenever the original phase accumulation angle ⁇ , i.e., the output of the third ⁇ /4 multiplier 220 , is in the upper half of the first quadrant.
  • a third most significant bit of the output 214 of the data register 206 which is illustrated in FIG. 2 by a one-bit wide signal from the data register 206 to the first Quadrant ⁇ /4 mirror 224 , indicates whether the rotated angle is in the upper half or the lower half of the first quadrant.
  • one embodiment of the pipelined sine/cosine generation unit 200 includes 16 butterfly stages.
  • the pipelined sine/cosine generation unit 200 substitutes the first four stages of the pipeline with a Read Only Memory (ROM) Lookup Table (LUT) 226 and implements the next twelve pipelined stages by cascading 12 butterfly stages in the multi-stage butterfly pipeline 228 .
  • the ROM LUT 226 includes 16 words of data. Table II illustrates one example of the contents of the ROM LUT 226 .
  • the outputs of the multi-stage butterfly pipeline 228 is provided as an input to the Output Select unit 222 .
  • the Output Select unit 222 rotates the outputs of the multi-stage butterfly pipeline 228 as dictated by indication of the original quadrant of the angle that is provided by the most significant bits of the output 214 of the data register 206 .
  • the sample code below, is written in an assembly language for a DSP core.
  • the “ ⁇ to the left of a line of code indicates an instruction that can execute in parallel with the prior instruction.
  • the sample code illustrates how the pipelined sine/cosine generation unit 200 can simplify and accelerate an operation, such as a computation of a Fast Fourier Transform (FFT), in a DSP.
  • FFT Fast Fourier Transform
  • the following sample code corresponds to a 16-point FFT implemented by a radix-2 butterfly.
  • r6 sub2(r0,r2)
  • FIG. 3 illustrates a process 300 of quadrature modulation/demodulation with a pipelined sine/cosine generatoraccording to an embodiment of the invention.
  • the process receives data from an input sequence.
  • the data is from a receiver.
  • the data can be initially stored in a memory device and received by the process later in non real time.
  • the process advances from the first step 310 to a second step 320 .
  • the process In the second step 320 , the process generates values for a step of a cosine wave and a step of a sine wave.
  • the process computes the values of the cosine wave and the sine wave by computing the cosine function and the sine function in a pipelined CORDIC function generator.
  • a pipelined CORDIC Function Generator can generate steps of the cosine wave and the sine wave with relatively little latency and without having to generate or store a relatively large lookup table.
  • the pipelined CORDIC automatically starts and stops as described earlier in connection with FIG. 2 .
  • the process advances from the second step 320 to a third step 330 .
  • the process multiplies the cosine wave and sine wave outputs of the pipelined CORDIC Function Generator with the received data to generate in-phase (cosine) or the quadrature-phase (sine) modulated or demodulated products.
  • FIG. 4 illustrates a process 400 of pipeline control according to an embodiment of the invention.
  • the process advantageously controls a pipelined process, such as a pipelined CORDIC, such that the pipelined process can be easily integrated with a controller, digital signal processor, and the like.
  • the illustrated process starts at a receive instruction step 401 .
  • the process receives an Instruction related to the control of the pipelined process.
  • a microprocessor, microcontroller, digital signal processor, and the like can access the pipelined process by issuing instructions to the pipeline control process.
  • the process advances from the receive instruction step 401 to a reset decision block 402 .
  • the process determines whether the received instruction corresponds to a command to reset the CORDIC. Where the received instruction is a reset instruction, such as a resetCORDIC instruction, the reset decision block 402 proceeds to a reset step 404 . Where the command is other than the reset instruction, the reset decision block 402 proceeds to a start decision block 406 .
  • a reset instruction such as a resetCORDIC instruction
  • the process resets those circuits in the pipelined process that are calculated.
  • the reset step 404 resets all the CORDIC stages or butterfly stages.
  • the reset step 404 resets the CORDIC stages or butterfly stages but does not reset the lookup table stage. The process returns from the reset step 404 to the start of the process.
  • the process determines whether the received instruction corresponds to a start instruction for the pipeline.
  • a start instruction is applied to a pipelined process when the starting data has changed.
  • One example of an appropriate time to issue a start instruction is where the pipelined process synthesizes a frequency, and the synthesized frequency has changed by updating an amount of an angle increment.
  • the process proceeds from the start decision block 406 to a first advance pipeline step 408 .
  • the process proceeds from the start decision block 406 to a read decision block 412 .
  • the process advances data from one stage or segment of the pipelined process to another.
  • a stage or segment can advance data in response to a rising or a falling edge of a clock signal.
  • the process controls the pulsing of the clock signal used to enable sequencing through the pipelined process. It will be understood by one of ordinary skill in the art that a variety of techniques can be used to control sequencing through the pipelined process, including for example, providing an enable signal as an input to the stages or segments of the pipelined process.
  • the process advances from the first advance pipeline step 408 to a computation available decision block 410 .
  • the process determines whether the new computation is available at the end of the pipelined process. That is, the process determines whether data has advanced far enough in the pipelined process to have progressed from the beginning stage or segment to the last stage or segment, i.e., whether the initial latency of the pipelined process has concluded. In one embodiment, the process counts the number of activations of the pipeline sequencing and compares the count to a known count of the number of stages or segments to determine whether the new computation is available at the end of the pipelined process. When the new computation is available, the process returns from the computation available decision block 410 to the start of the process, and awaits the next instruction. When the new computation is not yet available, the process returns from the computation available decision block 410 to the first advance pipeline step 408 to continue to advance data through the pipelined process.
  • the process determines whether the received instruction corresponds to a command to read data from the pipelined process.
  • the process proceeds from the read decision block 412 to an output computation step 414 .
  • the received instruction is other than the read instruction, such as a “no operation” instruction, the process returns from the read decision block 412 to the start of the process.
  • the process enables an output of the pipelined process. For example, when the final data is stored in an output register, the process can enable a tri-stateable gate to couple the contents of the output register on a data bus, where the contents are read by a controller, DSP, MAC, and the like.
  • the process advances from the output computation step 414 to a second advance pipeline step 416 .
  • the process advances the pipelined process by a single stage or segment, i.e., data moves from one segment to the next segment.
  • the process advances data in the second advance pipeline step 416 by providing a single clock pulse to the pipelined stages or segments.
  • the illustrated process repeats indefinitely.
  • the skilled practitioner will appreciate that the reset decision block 402 , the start decision block 406 , and the read decision block 412 can appear in the process in any order.
  • FIG. 5 illustrates a pipeline control circuit 500 according to an embodiment of the invention.
  • the illustrated pipeline control circuit 500 includes an instruction decoder 502 and a pipeline control unit 504 .
  • the pipeline control circuit 500 controls the resetting and the progressing of data through the segments of a pipelined circuit, such as a pipelined CORDIC 550 .
  • a pipelined CORDIC 550 a pipelined CORDIC 550 .
  • the pipeline control circuit 500 can control a wide variety of pipelined circuits and that the pipelined CORDIC 550 shown in FIG. 5 is illustrative of but one example.
  • Other examples of pipelined circuits include divider circuits, relatively high-precision multiplier circuits such as 64 ⁇ 64, relatively high-precision adder circuits, floating point units, and the like.
  • the instruction decoder 502 receives instructions 506 from a microprocessor, digital signal processor, state machine, and the like. It will be understood by one of ordinary skill in the art that the instruction decoder 502 can be a part of a larger instruction decoder for a larger circuit such as the Execution Block 100 described earlier in connection with FIG. 1 .
  • the illustrated instruction decoder 502 generates a reset signal 510 , a read signal 512 , and a start signal 514 in response to the instructions 506 .
  • the instruction decoder 502 further includes a select input driven by, for example, an address decoder, that activates the instruction decoder 502 .
  • the reset signal 510 is provided as an input to the pipelined circuit, which is shown in FIG. 5 as the pipelined CORDIC 550 .
  • the pipelined CORDIC 550 includes multiple stages or segments. In some pipelined circuits, not all of the segments of the pipeline need to be reset.
  • the pipelined CORDIC 550 includes a Lookup Table (LUT) circuit 552 as a first stage, a first CORDIC stage 554 as a second stage, a second CORDIC stage 556 as a third stage, and a third CORDIC stage 558 as a fourth stage.
  • the reset signal 510 is applied as an input to the first CORDIC stage 554 , the second CORDIC stage 556 , and the third CORDIC stage 558 , but not to the LUT circuit 552 .
  • the read signal 512 and the start signal 514 are provided as inputs to the pipeline control unit 504 .
  • a clock signal 508 is also provided as an input to the pipeline control unit 504 .
  • the pipeline control unit 504 activates the pipelined circuit so that data passes from one pipeline stage to another, such as from the first CORDIC stage 554 to the second CORDIC stage 556 .
  • the pipeline control unit 504 activates one pulse of a pipeline clock signal 516 in response to the activation of the read signal 512 .
  • the pulse of the pipeline clock signal 516 is applied as an input to the stages of the pipelined circuit, which are activated in response to the pulse.
  • a flip flop circuit can be used to generate a single pulse on the pipeline clock signal 516 in response to the activation of the read signal 512 .
  • the pipeline control circuit 500 includes a wait state generator that instructs the controller, DSP, MAC, and like devices that reads the output of the pipelined circuit to temporarily wait until the data has propagated through the pipeline and is available to be read.
  • the pipeline control unit 504 generates a series of pulses in response to an activation of the start signal 514 .
  • the pipeline control unit 504 generates at least enough pulses on the pipeline clock signal 516 in response to the activation of the start signal 514 such that data can sequence through each stage of the pipelined circuit and a computation is available to be read at an output 560 .
  • the pipeline control unit 504 generates the same number of pulses on the pipeline clock signal 516 as the number of stages in the pipelined circuit.
  • one embodiment of the pipeline control unit 504 includes a counter to track the number of pulses that are applied by the pipeline clock signal 516 .
  • the counter can be reset in response to the start signal 514 , and the counter can increment to a predetermined count. While the counter is counting, the pipeline control unit 504 provides clock pulses over the pipeline clock signal 516 by, for example, coupling the clock signal 508 to the pipeline clock signal 516 .
  • a counter is preloaded in response to the start signal 514 and decrements down to zero to track the number of pulses that are applied by the pipeline clock signal 516 . While the counter decrementing, the pipeline control unit 504 couples the clock signal 508 to the pipeline clock signal 516 to generate the series of pulses. When the counter counts down to zero, the counter is disabled and the pulsing of the pipeline clock signal 516 stops.
  • the stages of the pipelined circuit receive a continuous 5 clock signal such as the clock signal 508 , and the pipeline control unit 504 generates control signals that selectively enable and disable the stages of the pipelined circuit by controlling an enable input in the registers of the pipelined circuit.
  • the pipelined circuits and the pipeline control circuits disclosed herein can be fabricated in a broad variety of ways.
  • the circuits are integrated into dedicated hardware such as a custom application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable logic device (PLD), and the like.
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • PLD programmable logic device
  • the pipelined circuits, the pipeline control circuits, or both are integrated with a digital signal processor (DSP) core.
  • DSP digital signal processor

Abstract

The present invention relates to digital signal processors with an integrated module configured to compute a Coordinate Rotation Digital Computer (CORDIC) in a pipeline. The pipelined module can advantageously complete computation of one CORDIC computation for each clock pulse applied to the CORDIC module, thereby providing a CORDIC computation for each clock pulse. One embodiment advantageously computes a first portion of a computation with a lookup table and a second portion in accordance with a CORDIC algorithm. Advantageously, data in a CORDIC pipeline is automatically advanced in response to read instructions and can be automatically advanced from the beginning of the pipeline to the end of the pipeline to reinitialize the pipeline. This allows information to be retrieved from the CORDIC pipeline with relatively little overhead The automatic starting and stopping of the CORDIC pipeline advantageously allows the retrieval of computations from efficient pipeline architectures on an as-needed basis.

Description

    RELATED APPLICATION
  • 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.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The present invention generally relates to digital signal processing. In particular, the present invention relates to a Coordinate Rotation Digital Computer (CORDIC) in a digital signal processor (DSP).
  • 2. Description of the Related Art
  • A Coordinate Rotation Digital Computer (CORDIC) algorithm performs vector coordinate rotations by using simple iterative shifts and add/subtract operations, which are relatively easy to implement in hardware. Advantages of the CORDIC algorithm have been well documented by U.S. Pat. No. 4,896,287 to O'Donnell, et al., U.S. Pat. No. 4,937,775 to Engeler, et al., and U.S. Pat. No. 5,684,435 to Bergen, the entireties of which are hereby incorporated by reference.
  • The CORDIC algorithm can be used in function generators. Function generators are an integral part of many DSP algorithms. Digital communication and signal processing systems use representations of sine, cosine, tangent and hyperbolic functions to perform fundamental operations such as coherent detection, rectangular to polar conversions, decoding of Quadrant Amplitude Modulation (QAM) and M-ARY modulated signals, and the like. In addition, the CORDIC algorithm can be used in Direct Digital Synthesis (DDS) of frequencies.
  • One conventional technique to generate trigonometric functions is via a lookup table stored in a Read Only Memory (ROM). Disadvantageously, the amount of data that is stored in a ROM lookup table can quickly surpass practical size and cost limitations. The storage area of a ROM chip increases almost exponentially with increases in resolution. By contrast, where a ROM lookup table is relatively small and inexpensive, the number of available functions and the resolution of the data available are limited.
  • Another conventional technique is to compute trigonometric functions through polynomial software routines executed in a digital signal processor (DSP). Disadvantageously, typical software implementations of function generation are relatively slow. Typical software routines use iterative techniques, and take relatively time consuming multiple cycles to generate a trigonometric function.
  • Function generation can be performed by a CORDIC. However, many conventional implementations of a CORDIC iterate numerous times to perform a calculation for function generation. Thus, a microprocessor or DSP reading the output of the CORDIC waits until computation is complete. Where a conventional CORDIC is pipelined, execution can be faster, but conventional pipelined CORDICs have relatively little integration with other hardware. Disadvantageously, other hardware, such as microprocessors and DSPs, closely monitor or control conventional pipelined CORDICs or store the results of the conventional pipelined CORDIC in relatively large and expensive memory devices.
  • SUMMARY OF THE INVENTION
  • Embodiments of the invention quickly and efficiently process the CORDIC algorithm in a pipeline. Advantageously, data in the CORDIC pipeline is automatically advanced in response to read instructions and can be automatically advanced from the beginning of the pipeline to the end of the pipeline to reinitialize the pipeline. This allows a controller or a digital signal processor (DSP) to efficiently retrieve information from the CORDIC pipeline with relatively little overhead. The automatic starting and stopping of the CORDIC pipeline advantageously allows the retrieval of computations from efficient pipeline architectures on an as-needed basis and advantageously avoids having to store relatively large amounts of computations from a pipeline in memory.
  • One embodiment of the present invention includes a design of a modified CORDIC Function Generator that can be used in a DSP core. The modified CORDIC Function Generator is pipelined to provide a new output on every clock edge. A relatively small initial latency allows the modified CORDIC Function Generator time to process new data through the pipeline.
  • In one embodiment, an architecture for an Execution Block, which can be implemented in the DSP core, advantageously uses the CORDIC Function Generator to reduce both chip area and DSP idle cycles. An example of a Radix-2 butterfly illustrates how this CORDIC Function Generator improves the implementation of such DSP algorithms.
  • One embodiment according to the invention includes a method of computing correlation in a digital signal processor (DSP). The method includes receiving receiver data in quadrature, digitally generating a sine wave and a cosine wave with a pipelined Coordinate Rotation Digital Computer (CORDIC), and multiplying the receiver data by the first portion of the sine wave and the first portion of the cosine wave in a Multiplier Accumulator (MAC) block to determine an amount of correlation. In one embodiment, the sine wave and the cosine wave generated by the CORDIC algorithm are of substantially constant magnitude.
  • Another embodiment according to the invention is a method of digitally generating a sine wave and a cosine wave. The method includes (a) receiving an angle J 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 during a time increment, (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, (e)(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, (e)(ii) storing the new angle value as the existing angle value, (e)(iii) computing another value for the new angle value by combining the angle increment value with the existing angle value, (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, and (g) repeating steps (b), (c), (d), (e), and (f).
  • One embodiment of the invention includes a method of generating a digital sine wave and a digital cosine wave in a digital signal processor (DSP). The method includes computing a portion of the sine wave and a portion of the cosine wave by looking up points in a lookup table, and computing a remaining portion of the sine wave and the cosine wave in accordance with a pipelined CORDIC.
  • One embodiment of the invention includes a method of providing an intermittent clock signal to a pipelined process. The intermittent clock signal automatically advances and stops advancing computations in the pipelined process in accordance with the rate at which data is retrieved from the pipelined process. The method includes receiving a system clock signal and 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. The first instruction can correspond to a start instruction. The method further includes 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. The second instruction can be a read instruction. In one embodiment, the predetermined period is the latency of a pipeline from beginning to end.
  • One embodiment according to the invention includes a method of generating a function in a digital signal processor (DSP). The method includes receiving a first instruction, such as a start instruction, which initiates a computation according to a Coordinate Rotation Digital Computer (CORDIC) algorithm. The method computes the CORDIC algorithm in a pipeline and automatically discontinues further computations of the CORDIC algorithm in the pipeline when a computed output is ready. The method provides the computed output of the CORDIC algorithm in response to a second instruction such as a read instruction.
  • One embodiment of the invention is a process of controlling a pipelined circuit with a read instruction. The process includes receiving a plurality of instructions and detecting the occurrence of the read instruction. In response to the detection of the read instruction, the process advances computations through one stage or segment of the pipelined circuit and generates an output of the pipelined circuit.
  • One embodiment of the invention is a process that includes detecting a start instruction, which loads the beginning of the pipelined circuit and automatically sequences the stages of the pipelined circuit until new data is ready to be read at the output. Where the received instruction does not correspond to the read instruction or to S the start instruction, one embodiment of the invention pauses the pipelined circuit One embodiment of the invention includes a DSP that includes a CORDIC unit, a register file, and at least one of a Multiplier Accumulator (MAC), an Arithmetic Logic Unit (ALU), and a Shifter. The CORDIC computes steps of sine waves and cosine waves. The register file provides arguments to the CORDIC unit and the at least one of the MAC, the ALU, and the Shifter.
  • One embodiment of the invention is a CORDIC that includes a plurality of computation stages arranged in a pipeline, a reset unit, an output circuit, and a timing circuit. The reset unit is adapted to receive a reset instruction and to reset the plurality of computation stages in response to the reset instruction. The output circuit is adapted to provide a computation from the plurality of computation stages in the pipeline in response to read computation instruction. The timing circuit is adapted to advance calculations through the pipeline in response to a start instruction. The timing circuit is further configured to automatically discontinue advancing the calculations through the pipeline when a calculation has progressed to an end of the pipeline, and the timing circuit is further configured to generate another computation in response to the read CORDIC instruction.
  • One embodiment according to the invention includes a control circuit for a pipelined CORDIC. The control circuit can also be used to control other pipelined circuits. The control circuit includes a reset circuit, a first sequencing unit, and a second sequencing unit. The reset circuit is adapted to reset at least a portion of the pipelined stages of the pipelined CORDIC. The first sequencing unit is 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. The first sequencing unit is also configured 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. The second sequencing unit is 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.
  • BRIEF DESCRIPTION OF THE DRAWING
  • These and other features of the invention will now be described with reference to the drawings summarized below. These drawings and the associated description are provided to illustrate preferred embodiments of the invention, and are not intended to limit the scope of the invention.
  • FIG. 1 illustrates an execution block according to an embodiment of the invention.
  • FIG. 2 illustrates a pipelined sine/cosine generation unit according to an embodiment of the invention.
  • FIG. 3 illustrates a process of quadrature modulation/demodulation with the pipelined sine(cosine according to an embodiment of the invention.
  • FIG. 4 illustrates a process of pipeline control according to an embodiment of the invention.
  • FIG. 5 illustrates a pipeline control circuit according to an embodiment of the invention.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • Although this invention is described in terms of certain preferred embodiments, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the benefits and features set forth herein, are also within the scope of this invention. Accordingly, the scope of the present invention is defined only by reference to the appended claims.
  • One use of a Coordinate Rotation Digital Computer (CORDIC) algorithm is to generate functions such as trigonometric, logarithmic, hyperbolic and linear functions. Another use of the CORDIC algorithm is to convert between Polar and Cartesian coordinates. The CORDIC algorithm performs vector coordinate rotations using simple iterative shifts and add/subtract operations. The general (Givens') rotation transform expressed in Equations 1A and 1B rotates a vector by an angle φ.
    x′=x cos φ−y sin φ
    y′=y cos φ+x sin φ.   Eqs. 1A and 1B
  • The transform can be rearranged as shown in Equations 2A and 2B.
    x′=cos φ[x−y tan φ]
    y′=cos φ[y+x tan φ]    Eqs. 2A and 2B
  • The rotation angle s can be selected such that tan(φ)=±2−i, i.e., powers of two, which can be implemented by shift operations. An overall rotation angle can be reached by applying successively smaller rotations. At each iteration, i, the direction of rotation is decided. This further simplifies Equations 2A and 2B to Equations 3A and 3B. x i + 1 = k i [ x i - y i 2 - i σ i ] y i + 1 = k i [ y i + x i 2 - i σ i ] where : k i = 1 1 + 2 - 2 i σ i { - 1 , 1 } Eqs . 3 A and 3 B
  • Since, ki is a constant multiplier that affects magnitude, ki can be pre-calculated and easily compensated. Equation 4 illustrates the accumulation in the rotation angles at each iteration.
    z i+1 =z i−σi tan−1(2−i)   Eq. 4
  • Conventionally, the values of tan−1(2−i) are stored in a relatively small Read Only Memory (ROM) lookup table (LUT). The CORDIC algorithm can be applied in rotation mode or in vectoring mode. The rotation mode rotates the input vector by the angle specified through z0. Successive iterations rotate in the direction to attempt to reduce this angle zi. Therefore, the direction to rotate is dependent on zi and is expressed as Equation 5. σ i = { 1 z i 0 - 1 z i < 0 Eq . 5
  • The vectoring mode rotates the input vector through an angle such that the resulting vector lies on the x-axis. Successive iterations rotate in the direction to reduce the y-component, yi. Therefore, the direction to rotate is dependent on yi and is expressed as Equation 6. σ i = { 1 y i < 0 - 1 y i 0 Eq . 6
  • The initial values of the system variables, x0, y0, and z0 determine the function computed. Examples of uses for the vectoring mode include Cartesian to Polar conversion, calculation of arctangents, and calculation of vector magnitude.
  • Generally, if the CORDIC algorithm can compute a function, the inverse of the function can also be computed The CORDIC equations can be modified to introduce a coordinate system factor, m. The coordinate systems are hyperbolic (m=1), linear (m=0) and circular (m=−1). These extensions allow the CORDIC algorithm to compute linear and hyperbolic functions.
  • One implementation of the CORDIC algorithm uses comparators for each stage to determine the direction of rotation A modified CORDIC algorithm for Direct Digital Frequency Synthesis (DDFS) or DDS simplifies a CORDIC computation by determining the d ion of rotation directly from the bits rk representing the angle φ, as shown in Equation 7. r k = { 1 bit = 1 - 1 bit = 0 Eq . 7
  • The modified CORDIC algorithm uses φ=2−i instead of φ=tan−1(2−i) as sub-angles. This modifies the standard CORDIC equations to the equations expressed in Equations 8A-D. x i + 1 = k i [ x i - y i tan ( 2 - i ) ] y i + 1 = k i [ y i - x i tan ( 2 - i ) ] } r k = 1 x i + 1 = k i [ x i + y i tan ( 2 - i ) ] y i + 1 = k i [ y i + x i tan ( 2 - i ) ] } r k = - 1 Eqs . 8 A , 8 B , 8 C , and 8 D
  • Table 1 illustrates that the values of tan(2−i) and 2−i are similar for values of i>(WordLength/3). The similarity can simplify the hardware to relatively simple hardwired shifts for values of i>(WordLength/3). In one embodiment, the first (WordLength/3) stages are merged together and implemented with ROM.
    TABLE 1
    i 2−i tan2−i 2−i (20-bit hex) tan2−i (20-bit hex)
    1 0.5000 0.5463 0x40000 0x45ED4
    2 0.2500 0.2533 0x20000 0x20AF0
    3 0.1250 0.1257 0x10000 0x10157
    4 0.0625 0.0629 0x08000 0x0802A
    5 0.0312 0.0313 0x04000 0x04005
    6 0.0156 0.0156 0x02000 0x02000
    7 0.0078 0.0078 0x01000 0x01000
    8 0.0039 0.0039 0x00800 0x00800
    9 0.0020 0.0020 0x00400 0x00400
    10 0.0001 0.0001 0x00200 0x00200
  • FIG. 1 illustrates an Execution Block 100 of a DSP with a CORDIC Assist 104 according to an embodiment of the invention. The CORDIC Assist 104 is pipelined such that a function generated output, such as a sine/cosine output, is available at every clock style of the CORDIC Assist 104. The Execution Block 100 further includes an Instruction Decoder 102 and a Local Register File 112. The Execution Block 100 can further include other DSP functional units typical of a DSP, such as a Multiplier Accumulator (MAC) 106, an Arithmetic Logic Unit (AU) 108, and a Shifter 110. In the illustrated embodiment, the CORDIC Assist 104 shares the Local Register File 112 and the Instruction Decoder 102 with the other DSP functional units.
  • In one embodiment, the core of the DSP has a scalable and configurable architecture, which allows the designer to plug-in a variety of functional units without changing the external interfaces of the block with the rest of the core. The Instruction Decoder 102 can be centralized or distributed. In one embodiment, the Instruction Decoder 102 is distributed, and a program sequencer of the core dispatches instructions to multiple execution blocks. The dispatched instructions are then decoded by the distributed instruction decoders of the specific blocks.
  • In one embodiment, a function generation process, such as sine/cosine generation, is initiated early. In one embodiment, the function generation process is initiated early by approximately the amount of time equal to the initial latency of the pipelined process, such that an output of the function generation process is available in response to a read instruction.
  • In one embodiment, the Execution Block 100 can execute two instructions per cycle. Thus, the Execution Block 100 includes multiple read ports available from the Local Register File 112. However, it will be understood by one of ordinary skill in the art that other embodiments of the Execution Block 100 according to the invention can execute a wide variety of instructions per cycle, and can even include multiple cycles per instruction.
  • In one embodiment, the CORDIC Assist 104 responds to at least two specific instructions. These instructions are a startCORDIC instruction and a readCORDIC instruction. In one embodiment, the startCORDIC instruction passes two parameters to the CORDIC Assist 104. These parameters are an initial phase angle and an increment value.
  • After initial latency cycles, which vary depending on the number of stages or segments of the pipeline, the result of the first computation progresses through the stages or segments of the pipelined CORDIC Assist 104 and to the output of the CORDIC Assist 104. In one embodiment, the result of the CORDIC computation is not automatically written to a register file in the Local Register File 112. Rather, the computed result is retained until an explicit read instruction, e.g., a readCORDIC instruction, is applied to the CORDIC Assist 104, which then transfers the computed result to a register in the Local Register File 112. The following sequence of instructions further illustrates how to use the CORDIC Assist 104.
      • n: startCORDIC (R1, R2)
      • n+1: <instr>, <instr>
      • n+2: <instr>, <instr>
      • n+3: <instr>, <instr>
      • n+4: <instr>, <instr>
      • n+5: readCORDIC(R4)
  • In the sample instructions shown above, an initial angle is specified in R1, and the increment in angle is specified in R2. In the illustrated embodiment, the sine and the cosine values of initial angle are ready in cycle n+5 and are available to be read in cycle n+5 or a later cycle, i.e., the number of latency cycles is 5. In the illustrated embodiment, the sine and the cosine of the next value (R1+R2) are immediately available to be read in the next cycle after the readCORDIC instruction is applied. Another sample sequence of instructions is provided below:
      • n+6: readCORDIC (R4); sin/cos (R1+R2)
      • n+7: readCORDIC (R6); sin/cos (R1+2*R2)
      • n+8: <instr>
      • n+9: <instr>
      • n+10: readCORDIC (R4); sin/cos (R1+3*R2)
  • In one embodiment, the CORDIC Assist 104 also supports a register-interlocking mechanism, which stalls the pipeline if the user, DSP, controller, and the like, issues the first readCORDIC instruction before the end of the initial latency cycles. In one embodiment, if a startCORDIC instruction is issued after a subsequent startCORDIC instruction, then the second instruction result is received at the output.
  • The CORDIC Assist 104 can further be configured to respond to a resetCORDIC instruction. In one embodiment, the resetCORDIC instruction initializes the stages or segments in the CORDIC Assist 104 that are computed such as CORDIC stages, but does not reset a stage where data is merely retrieved, as in a ROM lookup table.
  • FIG. 2 illustrates a pipelined sine/cosine generation unit 200 according to an embodiment of the invention. The architecture of the illustrated pipelined sine/cosine generation unit 200 advantageously incorporates the instruction based control of the CORDIC Assist 104 described earlier in connection with FIG. 1.
  • The pipelined sine/cosine generation unit 200 includes an accumulator 202, a π/4 multiplier 220, an Output Select unit 222, a first quadrant π/4 mirror 224, a Read Only Memory (ROM) Lookup Table (LUT) 226, and a multi-stage butterfly pipeline 228.
  • The accumulator 202 generates the angle value for which the remaining portions of the pipelined sine/cosine generation unit 200 compute the sine function and cosine function. In the illustrated embodiment, the accumulator 202 includes a multiplexer 204, a data register 206, and an adder 208. An initial angle 210, i.e., the stating angle, is provided as an input to the multiplexer 204. When the pipelined sine/cosine generation unit 200 begins to process the sine function and the cosine function of the initial angle 210, the multiplexer 204 is configured to select the initial angle 210 and to pass the initial angle 210 as an input to the data register 206, which latches the state of the initial angle 210. In one embodiment, the initial angle 210 is loaded into the data register 206 through a data bus 230. An output 214 of the data register 206, which contains the angle that enters the first stage of the computational stages, is provided as an input to the π/4 multiplier 220, the Output Select unit 222, and the first quadrant π/4 mirror 224.
  • The output 214 of the data register 206 is also provided as an input to the adder 208. The adder 208 forms part of a feedback path that increments the angle output of the data register 206. The adder 208 sums the output 214 of the data register 206 with a frequency control word 212. In one embodiment, the frequency control word 212 is stored in a register that is loaded through the data bus 230, and the frequency control word from the register is provided as an input to the adder 208. The value of the frequency control word determines an amount of increment to the angle, i.e., determines the step size of the angle. The adder 208 sums the frequency control word 212 with the output 214 of the data register 206, and provides the sum as an input to the multiplexer 204.
  • The multiplexer 204 is configured to select the summed output of the adder 208 when the accumulator 202 is stepping the angle. The output of the multiplexer 204 is provided as an input to the data register 206. When the data register 206 is triggered or re-latched, the data register latches the output of the multiplexer 204, and the output 214 of the data register has incremented by the amount of the frequency control word. The output 214 of the data register 206 is again applied to the adder 208, thereby allowing the accumulator 202 to continue to increment the angle provided by the output 214 of the data register 206.
  • Due to the symmetry of sine and cosine waves, the cosines and sines of an entire 360-degree range need not be computed. Rather, a more limited range, such as 45 degrees or 90 degrees, can be computed, and the computed sines and cosines can be inverted and/or swapped to rotate the computed result by, for example, a multiple of 90 degrees. In one embodiment, the output 214 of the data register 206 containing the angle is provided with 20 bits of precision. In one embodiment, the two most significant bits of the output 214 of the data register 206 are provided as inputs to the Output Select unit 222. The two most significant bits indicate the quadrant of the angle. The Output Select unit 222 inverts and swaps the output of the multi-stage butterfly pipeline 228 to rotate the cosine and sine computations of the multi-stage butterfly pipeline 228 to their original quadrant.
  • The output 214 of the accumulator 202 is a normalized angle φ which is converted to an actual radian value φ[0, π/4]. In one embodiment, the output 214 of the accumulator 202 is provided as an input to the hardwired π/4 multiplier 220, which converts the normalized angle φ to radians. In one embodiment, the hardwired π/4 multiplier 220 generates five partial products to achieve more than 16 bits of precision.
  • In the illustrated embodiment, an output of the hardwired π/4 multiplier 220 is provided as an input to the first Quadrant π/4 mirror 224. In one embodiment, the first Quadrant π/4 mirror 224 is a subtractor that replaces the angle φ as [0, π/4] by [π/2-π] whenever the original phase accumulation angle θ, i.e., the output of the third π/4 multiplier 220, is in the upper half of the first quadrant. In one embodiment, a third most significant bit of the output 214 of the data register 206, which is illustrated in FIG. 2 by a one-bit wide signal from the data register 206 to the first Quadrant π/4 mirror 224, indicates whether the rotated angle is in the upper half or the lower half of the first quadrant.
  • To achieve 16 bits of output precision, one embodiment of the pipelined sine/cosine generation unit 200 includes 16 butterfly stages. In the illustrated embodiment, the pipelined sine/cosine generation unit 200 substitutes the first four stages of the pipeline with a Read Only Memory (ROM) Lookup Table (LUT) 226 and implements the next twelve pipelined stages by cascading 12 butterfly stages in the multi-stage butterfly pipeline 228. In one embodiment, the ROM LUT 226 includes 16 words of data. Table II illustrates one example of the contents of the ROM LUT 226.
    TABLE II
    x y
    32745 1027
    32617 3069
    32363 5099
    31983 7109
    31473 9095
    30845 11041
    30096 12946
    29230 14798
    28245 16599
    27155 18329
    25957 19990
    24659 21570
    23261 23071
    21777 24477
    20205 25789
    18557 26999
  • The outputs of the multi-stage butterfly pipeline 228 is provided as an input to the Output Select unit 222. After the Output Select unit 222 rotates the outputs of the multi-stage butterfly pipeline 228 as dictated by indication of the original quadrant of the angle that is provided by the most significant bits of the output 214 of the data register 206.
  • The sample code, below, is written in an assembly language for a DSP core. The “∥ to the left of a line of code indicates an instruction that can execute in parallel with the prior instruction. The sample code illustrates how the pipelined sine/cosine generation unit 200 can simplify and accelerate an operation, such as a computation of a Fast Fourier Transform (FFT), in a DSP. The following sample code corresponds to a 16-point FFT implemented by a radix-2 butterfly.
    // initial setup phase
    N = 16;
    k = 0;
    Ns = N>>1;
    ar0 = d[k]
    || ar1 = d[k+Ns];
    ar2 = store_buffer_address;
    StartCORDIC(r10,r11);
    for Ns repeat
    {
    r0I = *ar0
    || r2I = *ar1;
    r4 = add2(r0,r2);
    *ar2++ = r4I
    || r6 = sub2(r0,r2)
    || readCORDIC(r10,r11);
    r12 = DMAC(r6,r10);
    r13 = iDMAC(r6,r10);
    *ar3 = r12I;
    }
  • FIG. 3 illustrates a process 300 of quadrature modulation/demodulation with a pipelined sine/cosine generatoraccording to an embodiment of the invention. In a first step 310, the process receives data from an input sequence. In one embodiment, the data is from a receiver. The data can be initially stored in a memory device and received by the process later in non real time. The process advances from the first step 310 to a second step 320.
  • In the second step 320, the process generates values for a step of a cosine wave and a step of a sine wave. In one embodiment, the process computes the values of the cosine wave and the sine wave by computing the cosine function and the sine function in a pipelined CORDIC function generator. Advantageously, a pipelined CORDIC Function Generator can generate steps of the cosine wave and the sine wave with relatively little latency and without having to generate or store a relatively large lookup table. In one embodiment, the pipelined CORDIC automatically starts and stops as described earlier in connection with FIG. 2. The process advances from the second step 320 to a third step 330.
  • In the third step 330, the process multiplies the cosine wave and sine wave outputs of the pipelined CORDIC Function Generator with the received data to generate in-phase (cosine) or the quadrature-phase (sine) modulated or demodulated products.
  • FIG. 4 illustrates a process 400 of pipeline control according to an embodiment of the invention. The process advantageously controls a pipelined process, such as a pipelined CORDIC, such that the pipelined process can be easily integrated with a controller, digital signal processor, and the like. The illustrated process starts at a receive instruction step 401. In the receive instruction step 401, the process receives an Instruction related to the control of the pipelined process. For example, a microprocessor, microcontroller, digital signal processor, and the like can access the pipelined process by issuing instructions to the pipeline control process. The process advances from the receive instruction step 401 to a reset decision block 402.
  • In the reset decision block 402, the process determines whether the received instruction corresponds to a command to reset the CORDIC. Where the received instruction is a reset instruction, such as a resetCORDIC instruction, the reset decision block 402 proceeds to a reset step 404. Where the command is other than the reset instruction, the reset decision block 402 proceeds to a start decision block 406.
  • In the reset step 404, the process resets those circuits in the pipelined process that are calculated. In one embodiment, where the pipelined process is a CORDIC, the reset step 404 resets all the CORDIC stages or butterfly stages. In another embodiment, where the pipelined process is a combination of a lookup table stage and of CORDIC stages, the reset step 404 resets the CORDIC stages or butterfly stages but does not reset the lookup table stage. The process returns from the reset step 404 to the start of the process.
  • In the start decision block 406, the process determines whether the received instruction corresponds to a start instruction for the pipeline. Typically, a start instruction is applied to a pipelined process when the starting data has changed. One example of an appropriate time to issue a start instruction is where the pipelined process synthesizes a frequency, and the synthesized frequency has changed by updating an amount of an angle increment When the received instruction is a start instruction, such as a startCORDIC instruction, the process proceeds from the start decision block 406 to a first advance pipeline step 408. When the received instruction is other than the start instruction, the process proceeds from the start decision block 406 to a read decision block 412.
  • In the first advance pipeline step 408, the process advances data from one stage or segment of the pipelined process to another. For example, a stage or segment can advance data in response to a rising or a falling edge of a clock signal. In one embodiment, the process controls the pulsing of the clock signal used to enable sequencing through the pipelined process. It will be understood by one of ordinary skill in the art that a variety of techniques can be used to control sequencing through the pipelined process, including for example, providing an enable signal as an input to the stages or segments of the pipelined process. The process advances from the first advance pipeline step 408 to a computation available decision block 410.
  • In the computation available decision block 410, the process determines whether the new computation is available at the end of the pipelined process. That is, the process determines whether data has advanced far enough in the pipelined process to have progressed from the beginning stage or segment to the last stage or segment, i.e., whether the initial latency of the pipelined process has concluded. In one embodiment, the process counts the number of activations of the pipeline sequencing and compares the count to a known count of the number of stages or segments to determine whether the new computation is available at the end of the pipelined process. When the new computation is available, the process returns from the computation available decision block 410 to the start of the process, and awaits the next instruction. When the new computation is not yet available, the process returns from the computation available decision block 410 to the first advance pipeline step 408 to continue to advance data through the pipelined process.
  • In the read decision block 412, the process determines whether the received instruction corresponds to a command to read data from the pipelined process. When the received instruction is a read instruction, the process proceeds from the read decision block 412 to an output computation step 414. When the received instruction is other than the read instruction, such as a “no operation” instruction, the process returns from the read decision block 412 to the start of the process.
  • In the output computation step 414, the process enables an output of the pipelined process. For example, when the final data is stored in an output register, the process can enable a tri-stateable gate to couple the contents of the output register on a data bus, where the contents are read by a controller, DSP, MAC, and the like. The process advances from the output computation step 414 to a second advance pipeline step 416.
  • In the second advance pipeline step 416, the process advances the pipelined process by a single stage or segment, i.e., data moves from one segment to the next segment. In one embodiment, the process advances data in the second advance pipeline step 416 by providing a single clock pulse to the pipelined stages or segments.
  • The illustrated process repeats indefinitely. The skilled practitioner will appreciate that the reset decision block 402, the start decision block 406, and the read decision block 412 can appear in the process in any order.
  • FIG. 5 illustrates a pipeline control circuit 500 according to an embodiment of the invention. The illustrated pipeline control circuit 500 includes an instruction decoder 502 and a pipeline control unit 504. The pipeline control circuit 500 controls the resetting and the progressing of data through the segments of a pipelined circuit, such as a pipelined CORDIC 550. It will be understood by one of ordinary skill in the art that the pipeline control circuit 500 can control a wide variety of pipelined circuits and that the pipelined CORDIC 550 shown in FIG. 5 is illustrative of but one example. Other examples of pipelined circuits include divider circuits, relatively high-precision multiplier circuits such as 64×64, relatively high-precision adder circuits, floating point units, and the like.
  • The instruction decoder 502 receives instructions 506 from a microprocessor, digital signal processor, state machine, and the like. It will be understood by one of ordinary skill in the art that the instruction decoder 502 can be a part of a larger instruction decoder for a larger circuit such as the Execution Block 100 described earlier in connection with FIG. 1. The illustrated instruction decoder 502 generates a reset signal 510, a read signal 512, and a start signal 514 in response to the instructions 506. In one embodiment, the instruction decoder 502 further includes a select input driven by, for example, an address decoder, that activates the instruction decoder 502.
  • The reset signal 510 is provided as an input to the pipelined circuit, which is shown in FIG. 5 as the pipelined CORDIC 550. The pipelined CORDIC 550 includes multiple stages or segments. In some pipelined circuits, not all of the segments of the pipeline need to be reset. For the purposes of example, the pipelined CORDIC 550 includes a Lookup Table (LUT) circuit 552 as a first stage, a first CORDIC stage 554 as a second stage, a second CORDIC stage 556 as a third stage, and a third CORDIC stage 558 as a fourth stage. In the pipelined CORDIC 550 shown in FIG. 5, the reset signal 510 is applied as an input to the first CORDIC stage 554, the second CORDIC stage 556, and the third CORDIC stage 558, but not to the LUT circuit 552.
  • The read signal 512 and the start signal 514 are provided as inputs to the pipeline control unit 504. A clock signal 508 is also provided as an input to the pipeline control unit 504. In response to an activation of the read signal 512, the pipeline control unit 504 activates the pipelined circuit so that data passes from one pipeline stage to another, such as from the first CORDIC stage 554 to the second CORDIC stage 556. In one embodiment, the pipeline control unit 504 activates one pulse of a pipeline clock signal 516 in response to the activation of the read signal 512. The pulse of the pipeline clock signal 516 is applied as an input to the stages of the pipelined circuit, which are activated in response to the pulse. A flip flop circuit can be used to generate a single pulse on the pipeline clock signal 516 in response to the activation of the read signal 512. In one embodiment, the pipeline control circuit 500 includes a wait state generator that instructs the controller, DSP, MAC, and like devices that reads the output of the pipelined circuit to temporarily wait until the data has propagated through the pipeline and is available to be read.
  • The pipeline control unit 504 generates a series of pulses in response to an activation of the start signal 514. The pipeline control unit 504 generates at least enough pulses on the pipeline clock signal 516 in response to the activation of the start signal 514 such that data can sequence through each stage of the pipelined circuit and a computation is available to be read at an output 560. In one embodiment, the pipeline control unit 504 generates the same number of pulses on the pipeline clock signal 516 as the number of stages in the pipelined circuit.
  • A variety of techniques can be used to generate the series of pulses by the pipeline control unit 504. For example, one embodiment of the pipeline control unit 504 includes a counter to track the number of pulses that are applied by the pipeline clock signal 516. The counter can be reset in response to the start signal 514, and the counter can increment to a predetermined count. While the counter is counting, the pipeline control unit 504 provides clock pulses over the pipeline clock signal 516 by, for example, coupling the clock signal 508 to the pipeline clock signal 516.
  • In another embodiment, a counter is preloaded in response to the start signal 514 and decrements down to zero to track the number of pulses that are applied by the pipeline clock signal 516. While the counter decrementing, the pipeline control unit 504 couples the clock signal 508 to the pipeline clock signal 516 to generate the series of pulses. When the counter counts down to zero, the counter is disabled and the pulsing of the pipeline clock signal 516 stops.
  • In another embodiment, the stages of the pipelined circuit receive a continuous 5 clock signal such as the clock signal 508, and the pipeline control unit 504 generates control signals that selectively enable and disable the stages of the pipelined circuit by controlling an enable input in the registers of the pipelined circuit.
  • The pipelined circuits and the pipeline control circuits disclosed herein can be fabricated in a broad variety of ways. In one embodiment, the circuits are integrated into dedicated hardware such as a custom application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable logic device (PLD), and the like. In one embodiment, the pipelined circuits, the pipeline control circuits, or both are integrated with a digital signal processor (DSP) core.
  • Various embodiments of the present invention have been described above. Although this invention has been described with reference to these specific embodiments, the descriptions are intended to be illustrative of the invention and are not intended to be limiting. Various modifications and applications may occur to those skilled in the art without departing from the true spirit and scope of the invention as defined in the appended claims.

Claims (40)

1. A method of computing correlation in a digital signal processor (DSP), the method comprising:
receiving receiver data in quadrature;
relieving 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 being 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 Cain 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, firer 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.
US11/390,988 2000-09-08 2006-03-27 Hardware function generator support in a DSP Abandoned US20060282489A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/390,988 US20060282489A1 (en) 2000-09-08 2006-03-27 Hardware function generator support in a DSP
US12/944,629 US20110119520A1 (en) 2000-09-08 2010-11-11 Hardware Function Generator Support in a DSP

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US23128000P 2000-09-08 2000-09-08
US09/951,764 US7031992B2 (en) 2000-09-08 2001-09-10 Hardware function generator support in a DSP
US11/390,988 US20060282489A1 (en) 2000-09-08 2006-03-27 Hardware function generator support in a DSP

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/951,764 Continuation US7031992B2 (en) 2000-09-08 2001-09-10 Hardware function generator support in a DSP

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/944,629 Continuation US20110119520A1 (en) 2000-09-08 2010-11-11 Hardware Function Generator Support in a DSP

Publications (1)

Publication Number Publication Date
US20060282489A1 true US20060282489A1 (en) 2006-12-14

Family

ID=22868530

Family Applications (3)

Application Number Title Priority Date Filing Date
US09/951,764 Expired - Fee Related US7031992B2 (en) 2000-09-08 2001-09-10 Hardware function generator support in a DSP
US11/390,988 Abandoned US20060282489A1 (en) 2000-09-08 2006-03-27 Hardware function generator support in a DSP
US12/944,629 Abandoned US20110119520A1 (en) 2000-09-08 2010-11-11 Hardware Function Generator Support in a DSP

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/951,764 Expired - Fee Related US7031992B2 (en) 2000-09-08 2001-09-10 Hardware function generator support in a DSP

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/944,629 Abandoned US20110119520A1 (en) 2000-09-08 2010-11-11 Hardware Function Generator Support in a DSP

Country Status (3)

Country Link
US (3) US7031992B2 (en)
AU (1) AU2001289045A1 (en)
WO (1) WO2002021323A2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015418A1 (en) * 2003-06-24 2005-01-20 Chein-I Chang Real-time implementation of field programmable gate arrays (FPGA) design in hyperspectral imaging
US7313196B1 (en) * 2003-06-26 2007-12-25 L-3 Communications Corporation Method and system for baseband amplitude limiting
US7545878B1 (en) 2003-06-26 2009-06-09 L-3 Communications Corporation Efficient circular clipping implementation using simplified CORDIC rotators
US7929651B1 (en) * 2007-11-09 2011-04-19 Xilinx, Inc. Low phase noise recursive direct digital synthesis with automatic gain control gain stabilization
US20130097214A1 (en) * 2010-06-23 2013-04-18 Nec Corporation Processor and operating method
US20220129262A1 (en) * 2019-02-20 2022-04-28 Optimum Semiconductor Technologies Inc. Device and method for calculating elementary functions using successive cumulative rotation circuit

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002021323A2 (en) * 2000-09-08 2002-03-14 Avaz Networks Hardware function generator support in a dsp
KR100539929B1 (en) * 2001-12-15 2005-12-28 삼성전자주식회사 Digital frequency modulator
US7137013B2 (en) * 2002-01-07 2006-11-14 International Business Machines Corporation Method and apparatus for dynamic power management in an execution unit using pipeline wave flow control
US8311131B2 (en) * 2002-01-11 2012-11-13 Dr. Johannes Heidenhain Gmbh Method for interpolating at least two position-dependent, periodic analog signals that are dephased relative each other
US20050050305A1 (en) * 2003-08-28 2005-03-03 Kissell Kevin D. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US9032404B2 (en) * 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) * 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
EP1660993B1 (en) * 2003-08-28 2008-11-19 MIPS Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7984090B1 (en) * 2005-04-30 2011-07-19 GATeIC, Inc. Efficient function generator using case detection and output selection
US7401242B2 (en) * 2005-09-27 2008-07-15 International Business Machines Corporation Dynamic power management in a processor design
US8243100B2 (en) * 2008-06-26 2012-08-14 Qualcomm Incorporated System and method to perform fast rotation operations
US8392492B2 (en) * 2009-01-19 2013-03-05 Himax Media Solutions, Inc. Sine/cosine value generation apparatus
TWI420325B (en) * 2009-02-16 2013-12-21 Himax Media Solutions Inc Sine/cosine value generation apparatus
CN103677738B (en) * 2013-09-26 2016-08-17 中国人民解放军国防科学技术大学 Low delay based on mixed mode cordic algorithm surmounts function implementation method and device substantially
US9875084B2 (en) 2016-04-28 2018-01-23 Vivante Corporation Calculating trigonometric functions using a four input dot product circuit
US9904311B1 (en) * 2016-08-09 2018-02-27 Stmicroelectronics S.R.L. System and a method for a waveform generator
US10168992B1 (en) * 2017-08-08 2019-01-01 Texas Instruments Incorporated Interruptible trigonometric operations

Citations (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4231102A (en) * 1978-12-21 1980-10-28 Raytheon Company Cordic FFT processor
US4777613A (en) * 1986-04-01 1988-10-11 Motorola Inc. Floating point numeric data processor
US4896287A (en) * 1988-05-31 1990-01-23 General Electric Company Cordic complex multiplier
US4914692A (en) * 1987-12-29 1990-04-03 At&T Bell Laboratories Automatic speech recognition using echo cancellation
US4937775A (en) * 1988-11-21 1990-06-26 General Electric Company Apparatus for the cross-correlation of a pair of complex sampled signals
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
US5189500A (en) * 1989-09-22 1993-02-23 Mitsubishi Denki Kabushiki Kaisha Multi-layer type semiconductor device with semiconductor element layers stacked in opposite directions and manufacturing method thereof
US5200564A (en) * 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5224064A (en) * 1991-07-11 1993-06-29 Honeywell Inc. Transcendental function approximation apparatus and method
US5341507A (en) * 1990-07-17 1994-08-23 Mitsubishi Denki Kabushiki Kaisha Data drive type information processor having both simple and high function instruction processing units
US5492857A (en) * 1993-07-12 1996-02-20 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5550869A (en) * 1992-12-30 1996-08-27 Comstream Corporation Demodulator for consumer uses
US5594784A (en) * 1993-04-27 1997-01-14 Southwestern Bell Technology Resources, Inc. Apparatus and method for transparent telephony utilizing speech-based signaling for initiating and handling calls
US5619664A (en) * 1994-01-04 1997-04-08 Intel Corporation Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
US5724356A (en) * 1995-04-28 1998-03-03 Multi-Tech Systems, Inc. Advanced bridge/router local area network modem node
US5860019A (en) * 1995-07-10 1999-01-12 Sharp Kabushiki Kaisha Data driven information processor having pipeline processing units connected in series including processing portions connected in parallel
US5872991A (en) * 1995-10-18 1999-02-16 Sharp, Kabushiki, Kaisha Data driven information processor for processing data packet including common identification information and plurality of pieces of data
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US5923761A (en) * 1996-05-24 1999-07-13 Lsi Logic Corporation Single chip solution for multimedia GSM mobile station systems
US5941958A (en) * 1996-06-20 1999-08-24 Daewood Telecom Ltd. Duplicated data communications network adaptor including a pair of control boards and interface boards
US5956263A (en) * 1988-11-04 1999-09-21 Hitachi, Ltd. Multiplication, division and square root extraction apparatus
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5956517A (en) * 1995-04-12 1999-09-21 Sharp Kabushiki Kaisha Data driven information processor
US6011448A (en) * 1997-10-14 2000-01-04 International Business Machines Corporation Method and apparatus for frequency modulation synthesis
US6035005A (en) * 1997-02-10 2000-03-07 Motorola, Inc. Receiver with baseband I and Q demodulator
US6047372A (en) * 1996-12-02 2000-04-04 Compaq Computer Corp. Apparatus for routing one operand to an arithmetic logic unit from a fixed register slot and another operand from any register slot
US6067595A (en) * 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US6075788A (en) * 1997-06-02 2000-06-13 Lsi Logic Corporation Sonet physical layer device having ATM and PPP interfaces
US6108760A (en) * 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US6175600B1 (en) * 1996-05-14 2001-01-16 Alcatel Telspace System for detecting the presence of a digital signal carrier wave, and a receiver including such a system
US6175269B1 (en) * 1997-11-21 2001-01-16 U.S. Philips Corporation Demodulation unit and method of demodulating a quadrature
US6205533B1 (en) * 1999-08-12 2001-03-20 Norman H. Margolus Mechanism for efficient data access and communication in parallel computations on an emulated spatial lattice
US6226266B1 (en) * 1996-12-13 2001-05-01 Cisco Technology, Inc. End-to-end delay estimation in high speed communication networks
US6226735B1 (en) * 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6269435B1 (en) * 1998-09-14 2001-07-31 The Board Of Trustees Of The Leland Stanford Junior University System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
US20020009089A1 (en) * 2000-05-25 2002-01-24 Mcwilliams Patrick Method and apparatus for establishing frame synchronization in a communication system using an UTOPIA-LVDS bridge
US20020008256A1 (en) * 2000-03-01 2002-01-24 Ming-Kang Liu Scaleable architecture for multiple-port, system-on-chip ADSL communications systems
US6349098B1 (en) * 1998-04-17 2002-02-19 Paxonet Communications, Inc. Method and apparatus for forming a virtual circuit
US20020031141A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick Method of detecting back pressure in a communication system using an utopia-LVDS bridge
US20020031132A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick UTOPIA-LVDS bridge
US20020034162A1 (en) * 2000-06-30 2002-03-21 Brinkerhoff Kenneth W. Technique for implementing fractional interval times for fine granularity bandwidth allocation
US6385632B1 (en) * 1999-06-18 2002-05-07 Advanced Micro Devices, Inc. Fast CORDIC algorithm with sine governed termination
US20020059426A1 (en) * 2000-06-30 2002-05-16 Mariner Networks, Inc. Technique for assigning schedule resources to multiple ports in correct proportions
US20020101982A1 (en) * 2001-01-30 2002-08-01 Hammam Elabd Line echo canceller scalable to multiple voice channels/ports
US6434582B1 (en) * 1999-06-18 2002-08-13 Advanced Micro Devices, Inc. Cosine algorithm for relatively small angles
US20020112097A1 (en) * 2000-11-29 2002-08-15 Rajko Milovanovic Media accelerator quality of service
US20020116181A1 (en) * 2000-09-08 2002-08-22 Khan Shoab A. Hardware function generator support in a DSP
US20020126649A1 (en) * 1986-09-16 2002-09-12 Yoshito Sakurai Distributed type switching system
US20020131421A1 (en) * 2001-03-13 2002-09-19 Adc Telecommunications Israel Ltd. ATM linked list buffer system
US20020136620A1 (en) * 1999-12-03 2002-09-26 Jan Berends Vehicle blocking device
US20030004697A1 (en) * 2000-01-24 2003-01-02 Ferris Gavin Robert Method of designing, modelling or fabricating a communications baseband stack
US20030021339A1 (en) * 2001-05-03 2003-01-30 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital communications using an echo cancellation reference signal
US6519259B1 (en) * 1999-02-18 2003-02-11 Avaya Technology Corp. Methods and apparatus for improved transmission of voice information in packet-based communication systems
US6522688B1 (en) * 1999-01-14 2003-02-18 Eric Morgan Dowling PCM codec and modem for 56K bi-directional transmission
US20030046457A1 (en) * 2000-10-02 2003-03-06 Shakuntala Anjanaiah Apparatus and method for an interface unit for data transfer between processing units in the asynchronous transfer mode
US20030053493A1 (en) * 2001-09-18 2003-03-20 Joseph Graham Mobley Allocation of bit streams for communication over-multi-carrier frequency-division multiplexing (FDM)
US20030053484A1 (en) * 2001-09-18 2003-03-20 Sorenson Donald C. Multi-carrier frequency-division multiplexing (FDM) architecture for high speed digital service
US20030058885A1 (en) * 2001-09-18 2003-03-27 Sorenson Donald C. Multi-carrier frequency-division multiplexing (FDM) architecture for high speed digital service in local networks
US6574217B1 (en) * 1996-11-27 2003-06-03 Alcatel Usa Sourcing, L.P. Telecommunications switch for providing telephony traffic integrated with video information services
US6573905B1 (en) * 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US6580793B1 (en) * 1999-08-31 2003-06-17 Lucent Technologies Inc. Method and apparatus for echo cancellation with self-deactivation
US6580727B1 (en) * 1999-08-20 2003-06-17 Texas Instruments Incorporated Element management system for a digital subscriber line access multiplexer
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US6628658B1 (en) * 1999-02-23 2003-09-30 Siemens Aktiengesellschaft Time-critical control of data to a sequentially controlled interface with asynchronous data transmission
US6697345B1 (en) * 1998-07-24 2004-02-24 Hughes Electronics Corporation Multi-transport mode radio communications having synchronous and asynchronous transport mode capability
US6707821B1 (en) * 2000-07-11 2004-03-16 Cisco Technology, Inc. Time-sensitive-packet jitter and latency minimization on a shared data link
US6728209B2 (en) * 2001-07-25 2004-04-27 Overture Networks, Inc. Measurement of packet delay variation
US6731644B1 (en) * 2000-02-14 2004-05-04 Cisco Technology, Inc. Flexible DMA engine for packet header modification
US6737743B2 (en) * 2001-07-10 2004-05-18 Kabushiki Kaisha Toshiba Memory chip and semiconductor device using the memory chip and manufacturing method of those
US6738358B2 (en) * 2000-09-09 2004-05-18 Intel Corporation Network echo canceller for integrated telecommunications processing
US6747977B1 (en) * 1999-06-30 2004-06-08 Nortel Networks Limited Packet interface and method of packetizing information
US6751233B1 (en) * 1999-01-08 2004-06-15 Cisco Technology, Inc. UTOPIA 2—UTOPIA 3 translator
US6751723B1 (en) * 2000-09-02 2004-06-15 Actel Corporation Field programmable gate array and microcontroller system-on-a-chip
US6751224B1 (en) * 2000-03-30 2004-06-15 Azanda Network Devices, Inc. Integrated ATM/packet segmentation-and-reassembly engine for handling both packet and ATM input data and for outputting both ATM and packet data
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US6763018B1 (en) * 2000-11-30 2004-07-13 3Com Corporation Distributed protocol processing and packet forwarding using tunneling protocols
US6768774B1 (en) * 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6795396B1 (en) * 2000-05-02 2004-09-21 Teledata Networks, Ltd. ATM buffer system
US6798420B1 (en) * 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6892324B1 (en) * 2000-07-19 2005-05-10 Broadcom Corporation Multi-channel, multi-service debug
US6928080B2 (en) * 2001-06-28 2005-08-09 Intel Corporation Transporting variable length ATM AAL CPS packets over a non-ATM-specific bus
US6934937B1 (en) * 2000-03-30 2005-08-23 Broadcom Corporation Multi-channel, multi-service debug on a pipelined CPU architecture
US7031341B2 (en) * 1999-07-27 2006-04-18 Wuhan Research Institute Of Post And Communications, Mii. Interfacing apparatus and method for adapting Ethernet directly to physical channel
US7051246B2 (en) * 2003-01-15 2006-05-23 Lucent Technologies Inc. Method for estimating clock skew within a communications network
US7100026B2 (en) * 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US7110358B1 (en) * 1999-05-14 2006-09-19 Pmc-Sierra, Inc. Method and apparatus for managing data traffic between a high capacity source and multiple destinations
US7218901B1 (en) * 2001-09-18 2007-05-15 Scientific-Atlanta, Inc. Automatic frequency control of multiple channels
US7523296B2 (en) * 1992-05-01 2009-04-21 Seiko Epson Corporation System and method for handling exceptions and branch mispredictions in a superscalar microprocessor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4876640A (en) * 1986-02-07 1989-10-24 Advanced Micro Devices, Inc. Logic controller having programmable logic "and" array using a programmable gray-code counter
US5154446A (en) * 1990-07-27 1992-10-13 Darlene Blake Shoulder belt adjustment device for seat belt systems
US5737253A (en) * 1995-08-30 1998-04-07 Pentomics, Inc. Method and apparatus for direct digital frequency synthesizer
US5684435A (en) * 1996-05-22 1997-11-04 Hughes Electronics Analog waveform communications reduced instruction set processor
US6493666B2 (en) * 1998-09-29 2002-12-10 William M. Wiese, Jr. System and method for processing data from and for multiple channels
US6542810B2 (en) * 2000-07-10 2003-04-01 United Parcel Service Of America, Inc. Multisource target correlation
US7231102B2 (en) * 2004-01-16 2007-06-12 Optimer Photonics, Inc. Electrooptic modulator employing DC coupled electrodes

Patent Citations (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4231102A (en) * 1978-12-21 1980-10-28 Raytheon Company Cordic FFT processor
US4777613A (en) * 1986-04-01 1988-10-11 Motorola Inc. Floating point numeric data processor
US20020126649A1 (en) * 1986-09-16 2002-09-12 Yoshito Sakurai Distributed type switching system
US4914692A (en) * 1987-12-29 1990-04-03 At&T Bell Laboratories Automatic speech recognition using echo cancellation
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
US4896287A (en) * 1988-05-31 1990-01-23 General Electric Company Cordic complex multiplier
US5956263A (en) * 1988-11-04 1999-09-21 Hitachi, Ltd. Multiplication, division and square root extraction apparatus
US4937775A (en) * 1988-11-21 1990-06-26 General Electric Company Apparatus for the cross-correlation of a pair of complex sampled signals
US5142677A (en) * 1989-05-04 1992-08-25 Texas Instruments Incorporated Context switching devices, systems and methods
US5189500A (en) * 1989-09-22 1993-02-23 Mitsubishi Denki Kabushiki Kaisha Multi-layer type semiconductor device with semiconductor element layers stacked in opposite directions and manufacturing method thereof
US5200564A (en) * 1990-06-29 1993-04-06 Casio Computer Co., Ltd. Digital information processing apparatus with multiple CPUs
US5341507A (en) * 1990-07-17 1994-08-23 Mitsubishi Denki Kabushiki Kaisha Data drive type information processor having both simple and high function instruction processing units
US5224064A (en) * 1991-07-11 1993-06-29 Honeywell Inc. Transcendental function approximation apparatus and method
US7523296B2 (en) * 1992-05-01 2009-04-21 Seiko Epson Corporation System and method for handling exceptions and branch mispredictions in a superscalar microprocessor
US5550869A (en) * 1992-12-30 1996-08-27 Comstream Corporation Demodulator for consumer uses
US5594784A (en) * 1993-04-27 1997-01-14 Southwestern Bell Technology Resources, Inc. Apparatus and method for transparent telephony utilizing speech-based signaling for initiating and handling calls
US5883396A (en) * 1993-07-12 1999-03-16 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US6057555A (en) * 1993-07-12 2000-05-02 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5861336A (en) * 1993-07-12 1999-01-19 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5492857A (en) * 1993-07-12 1996-02-20 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5663570A (en) * 1993-07-12 1997-09-02 Peregrine Semiconductor Corporation High-frequency wireless communication system on a single ultrathin silicon on sapphire chip
US5619664A (en) * 1994-01-04 1997-04-08 Intel Corporation Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
US5956517A (en) * 1995-04-12 1999-09-21 Sharp Kabushiki Kaisha Data driven information processor
US5724356A (en) * 1995-04-28 1998-03-03 Multi-Tech Systems, Inc. Advanced bridge/router local area network modem node
US5860019A (en) * 1995-07-10 1999-01-12 Sharp Kabushiki Kaisha Data driven information processor having pipeline processing units connected in series including processing portions connected in parallel
US5872991A (en) * 1995-10-18 1999-02-16 Sharp, Kabushiki, Kaisha Data driven information processor for processing data packet including common identification information and plurality of pieces of data
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6175600B1 (en) * 1996-05-14 2001-01-16 Alcatel Telspace System for detecting the presence of a digital signal carrier wave, and a receiver including such a system
US5923761A (en) * 1996-05-24 1999-07-13 Lsi Logic Corporation Single chip solution for multimedia GSM mobile station systems
US5941958A (en) * 1996-06-20 1999-08-24 Daewood Telecom Ltd. Duplicated data communications network adaptor including a pair of control boards and interface boards
US6574217B1 (en) * 1996-11-27 2003-06-03 Alcatel Usa Sourcing, L.P. Telecommunications switch for providing telephony traffic integrated with video information services
US6047372A (en) * 1996-12-02 2000-04-04 Compaq Computer Corp. Apparatus for routing one operand to an arithmetic logic unit from a fixed register slot and another operand from any register slot
US6226266B1 (en) * 1996-12-13 2001-05-01 Cisco Technology, Inc. End-to-end delay estimation in high speed communication networks
US6035005A (en) * 1997-02-10 2000-03-07 Motorola, Inc. Receiver with baseband I and Q demodulator
US6075788A (en) * 1997-06-02 2000-06-13 Lsi Logic Corporation Sonet physical layer device having ATM and PPP interfaces
US6839352B1 (en) * 1997-06-02 2005-01-04 Lsi Logic Corporation SONET physical layer device having ATM and PPP interfaces
US6067595A (en) * 1997-09-23 2000-05-23 Icore Technologies, Inc. Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories
US6011448A (en) * 1997-10-14 2000-01-04 International Business Machines Corporation Method and apparatus for frequency modulation synthesis
US6108760A (en) * 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6175269B1 (en) * 1997-11-21 2001-01-16 U.S. Philips Corporation Demodulation unit and method of demodulating a quadrature
US6349098B1 (en) * 1998-04-17 2002-02-19 Paxonet Communications, Inc. Method and apparatus for forming a virtual circuit
US6226735B1 (en) * 1998-05-08 2001-05-01 Broadcom Method and apparatus for configuring arbitrary sized data paths comprising multiple context processing elements
US6697345B1 (en) * 1998-07-24 2004-02-24 Hughes Electronics Corporation Multi-transport mode radio communications having synchronous and asynchronous transport mode capability
US6269435B1 (en) * 1998-09-14 2001-07-31 The Board Of Trustees Of The Leland Stanford Junior University System and method for implementing conditional vector operations in which an input vector containing multiple operands to be used in conditional operations is divided into two or more output vectors based on a condition vector
US6768774B1 (en) * 1998-11-09 2004-07-27 Broadcom Corporation Video and graphics system with video scaling
US6798420B1 (en) * 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US6751233B1 (en) * 1999-01-08 2004-06-15 Cisco Technology, Inc. UTOPIA 2—UTOPIA 3 translator
US6522688B1 (en) * 1999-01-14 2003-02-18 Eric Morgan Dowling PCM codec and modem for 56K bi-directional transmission
US6519259B1 (en) * 1999-02-18 2003-02-11 Avaya Technology Corp. Methods and apparatus for improved transmission of voice information in packet-based communication systems
US6628658B1 (en) * 1999-02-23 2003-09-30 Siemens Aktiengesellschaft Time-critical control of data to a sequentially controlled interface with asynchronous data transmission
US7110358B1 (en) * 1999-05-14 2006-09-19 Pmc-Sierra, Inc. Method and apparatus for managing data traffic between a high capacity source and multiple destinations
US6385632B1 (en) * 1999-06-18 2002-05-07 Advanced Micro Devices, Inc. Fast CORDIC algorithm with sine governed termination
US6434582B1 (en) * 1999-06-18 2002-08-13 Advanced Micro Devices, Inc. Cosine algorithm for relatively small angles
US6747977B1 (en) * 1999-06-30 2004-06-08 Nortel Networks Limited Packet interface and method of packetizing information
US7031341B2 (en) * 1999-07-27 2006-04-18 Wuhan Research Institute Of Post And Communications, Mii. Interfacing apparatus and method for adapting Ethernet directly to physical channel
US6205533B1 (en) * 1999-08-12 2001-03-20 Norman H. Margolus Mechanism for efficient data access and communication in parallel computations on an emulated spatial lattice
US6580727B1 (en) * 1999-08-20 2003-06-17 Texas Instruments Incorporated Element management system for a digital subscriber line access multiplexer
US6580793B1 (en) * 1999-08-31 2003-06-17 Lucent Technologies Inc. Method and apparatus for echo cancellation with self-deactivation
US6853385B1 (en) * 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6573905B1 (en) * 1999-11-09 2003-06-03 Broadcom Corporation Video and graphics system with parallel processing of graphics windows
US20020136620A1 (en) * 1999-12-03 2002-09-26 Jan Berends Vehicle blocking device
US20030004697A1 (en) * 2000-01-24 2003-01-02 Ferris Gavin Robert Method of designing, modelling or fabricating a communications baseband stack
US6731644B1 (en) * 2000-02-14 2004-05-04 Cisco Technology, Inc. Flexible DMA engine for packet header modification
US20020008256A1 (en) * 2000-03-01 2002-01-24 Ming-Kang Liu Scaleable architecture for multiple-port, system-on-chip ADSL communications systems
US6751224B1 (en) * 2000-03-30 2004-06-15 Azanda Network Devices, Inc. Integrated ATM/packet segmentation-and-reassembly engine for handling both packet and ATM input data and for outputting both ATM and packet data
US6934937B1 (en) * 2000-03-30 2005-08-23 Broadcom Corporation Multi-channel, multi-service debug on a pipelined CPU architecture
US6795396B1 (en) * 2000-05-02 2004-09-21 Teledata Networks, Ltd. ATM buffer system
US20020009089A1 (en) * 2000-05-25 2002-01-24 Mcwilliams Patrick Method and apparatus for establishing frame synchronization in a communication system using an UTOPIA-LVDS bridge
US20020031132A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick UTOPIA-LVDS bridge
US20020031141A1 (en) * 2000-05-25 2002-03-14 Mcwilliams Patrick Method of detecting back pressure in a communication system using an utopia-LVDS bridge
US20020059426A1 (en) * 2000-06-30 2002-05-16 Mariner Networks, Inc. Technique for assigning schedule resources to multiple ports in correct proportions
US20020034162A1 (en) * 2000-06-30 2002-03-21 Brinkerhoff Kenneth W. Technique for implementing fractional interval times for fine granularity bandwidth allocation
US6707821B1 (en) * 2000-07-11 2004-03-16 Cisco Technology, Inc. Time-sensitive-packet jitter and latency minimization on a shared data link
US6892324B1 (en) * 2000-07-19 2005-05-10 Broadcom Corporation Multi-channel, multi-service debug
US6751723B1 (en) * 2000-09-02 2004-06-15 Actel Corporation Field programmable gate array and microcontroller system-on-a-chip
US20020116181A1 (en) * 2000-09-08 2002-08-22 Khan Shoab A. Hardware function generator support in a DSP
US6738358B2 (en) * 2000-09-09 2004-05-18 Intel Corporation Network echo canceller for integrated telecommunications processing
US20030046457A1 (en) * 2000-10-02 2003-03-06 Shakuntala Anjanaiah Apparatus and method for an interface unit for data transfer between processing units in the asynchronous transfer mode
US20040109468A1 (en) * 2000-10-02 2004-06-10 Shakuntala Anjanaiah Apparatus and method for input clock signal detection in an asynchronous transfer mode interface unit
US20030076839A1 (en) * 2000-10-02 2003-04-24 Martin Li Apparatus and method for an interface unit for data transfer between a host processing unit and a multi-target digital signal processing unit in an asynchronous transfer mode
US20020112097A1 (en) * 2000-11-29 2002-08-15 Rajko Milovanovic Media accelerator quality of service
US6763018B1 (en) * 2000-11-30 2004-07-13 3Com Corporation Distributed protocol processing and packet forwarding using tunneling protocols
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US20020101982A1 (en) * 2001-01-30 2002-08-01 Hammam Elabd Line echo canceller scalable to multiple voice channels/ports
US7215672B2 (en) * 2001-03-13 2007-05-08 Koby Reshef ATM linked list buffer system
US20020131421A1 (en) * 2001-03-13 2002-09-19 Adc Telecommunications Israel Ltd. ATM linked list buffer system
US20030021339A1 (en) * 2001-05-03 2003-01-30 Koninklijke Philips Electronics N.V. Method and apparatus for echo cancellation in digital communications using an echo cancellation reference signal
US7100026B2 (en) * 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6928080B2 (en) * 2001-06-28 2005-08-09 Intel Corporation Transporting variable length ATM AAL CPS packets over a non-ATM-specific bus
US6737743B2 (en) * 2001-07-10 2004-05-18 Kabushiki Kaisha Toshiba Memory chip and semiconductor device using the memory chip and manufacturing method of those
US6728209B2 (en) * 2001-07-25 2004-04-27 Overture Networks, Inc. Measurement of packet delay variation
US20030053493A1 (en) * 2001-09-18 2003-03-20 Joseph Graham Mobley Allocation of bit streams for communication over-multi-carrier frequency-division multiplexing (FDM)
US20030058885A1 (en) * 2001-09-18 2003-03-27 Sorenson Donald C. Multi-carrier frequency-division multiplexing (FDM) architecture for high speed digital service in local networks
US7218901B1 (en) * 2001-09-18 2007-05-15 Scientific-Atlanta, Inc. Automatic frequency control of multiple channels
US20030053484A1 (en) * 2001-09-18 2003-03-20 Sorenson Donald C. Multi-carrier frequency-division multiplexing (FDM) architecture for high speed digital service
US7051246B2 (en) * 2003-01-15 2006-05-23 Lucent Technologies Inc. Method for estimating clock skew within a communications network

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015418A1 (en) * 2003-06-24 2005-01-20 Chein-I Chang Real-time implementation of field programmable gate arrays (FPGA) design in hyperspectral imaging
US7366326B2 (en) * 2003-06-24 2008-04-29 University Of Maryland, Baltimore County Real-time implementation of field programmable gate arrays (FPGA) design in hyperspectral imaging
US7313196B1 (en) * 2003-06-26 2007-12-25 L-3 Communications Corporation Method and system for baseband amplitude limiting
US7545878B1 (en) 2003-06-26 2009-06-09 L-3 Communications Corporation Efficient circular clipping implementation using simplified CORDIC rotators
US7929651B1 (en) * 2007-11-09 2011-04-19 Xilinx, Inc. Low phase noise recursive direct digital synthesis with automatic gain control gain stabilization
US20130097214A1 (en) * 2010-06-23 2013-04-18 Nec Corporation Processor and operating method
US9021003B2 (en) * 2010-06-23 2015-04-28 Nec Corporation Processor and operating method
US20220129262A1 (en) * 2019-02-20 2022-04-28 Optimum Semiconductor Technologies Inc. Device and method for calculating elementary functions using successive cumulative rotation circuit
US11928465B2 (en) * 2019-02-20 2024-03-12 Optimum Semiconductor Technologies Inc. Device and method for calculating elementary functions using successive cumulative rotation circuit

Also Published As

Publication number Publication date
US20020116181A1 (en) 2002-08-22
WO2002021323A2 (en) 2002-03-14
US7031992B2 (en) 2006-04-18
AU2001289045A1 (en) 2002-03-22
WO2002021323A3 (en) 2003-08-07
US20110119520A1 (en) 2011-05-19

Similar Documents

Publication Publication Date Title
US20060282489A1 (en) Hardware function generator support in a DSP
KR0146334B1 (en) Cordic complex multiplier
US4231102A (en) Cordic FFT processor
Farmwald On the design of high performance digital arithmetic units
US6629117B2 (en) Method for computing a fast fourier transform and associated circuit for addressing a data memory
US5737253A (en) Method and apparatus for direct digital frequency synthesizer
US4805128A (en) Format conversion system
US7539716B2 (en) Method and apparatus for improved direct digital frequency synthesizer
Slade The fast fourier transform in hardware: A tutorial based on an FPGA implementation
US5430667A (en) Hardware arrangement for fast fourier transform having improved addressing techniques
US6463451B2 (en) High speed digital signal processor
US4837678A (en) Instruction sequencer for parallel operation of functional units
US7197525B2 (en) Method and system for fixed point fast fourier transform with improved SNR
US4956799A (en) Trigonometric function arithmetic processor using pseudo-division
US7437395B2 (en) FFT operating apparatus of programmable processors and operation method thereof
Andraka Building a high performance bit-serial processor in an FPGA
US10168992B1 (en) Interruptible trigonometric operations
Kratz et al. A microprogrammed approach to signal processing
Deng et al. High-speed parameterisable Hough transform using reconfigurable hardware
JP2508784B2 (en) Exponential function calculator
US6591230B1 (en) Coprocessor for synthesizing signals based upon quadratic polynomial sinusoids
US6549925B1 (en) Circuit for computing a fast fourier transform
EP0365226A2 (en) Cordic apparatus and method for approximating the magnitude and phase of a complex number
US6011448A (en) Method and apparatus for frequency modulation synthesis
US20220374201A1 (en) Digital Signal Processing Device

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: AVAZ NETWORKS, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KHAN, SHOAB A;HAMEED, REHAN;FAROOQ, HASSAN;SIGNING DATES FROM 20011209 TO 20020102;REEL/FRAME:026175/0808

Owner name: QUARTICS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CMA BUSINESS CREDIT SERVICES ON BEHALF OF AVAZ NETWORKS, INC.;REEL/FRAME:026177/0210

Effective date: 20030801

AS Assignment

Owner name: GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIR

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:026923/0001

Effective date: 20101013

AS Assignment

Owner name: GREEN SEQUOIA LP, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028024/0001

Effective date: 20101013

Owner name: MEYYAPPAN-KANNAPPAN FAMILY TRUST, CALIFORNIA

Free format text: SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028024/0001

Effective date: 20101013

AS Assignment

Owner name: HERIOT HOLDINGS LIMITED, SWITZERLAND

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: AUGUSTUS VENTURES LIMITED, ISLE OF MAN

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: CASTLE HILL INVESTMENT HOLDINGS LIMITED

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: SIENA HOLDINGS LIMITED

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013

Owner name: SEVEN HILLS GROUP USA, LLC, CALIFORNIA

Free format text: INTELLECTUAL PROPERTY SECURITY AGREEMENT;ASSIGNOR:QUARTICS, INC.;REEL/FRAME:028054/0791

Effective date: 20101013