Center for New Music and Audio Technologies

next up previous
Next: A Bit-Parallel Unrolled CORDIC Up: Implementation of various CORDIC Previous: Implementation of various CORDIC


A Bit-Parallel Iterative CORDIC

The CORDIC structure as discribed in equations 1.10, 1.11, 1.12 and 1.14 is represented by the schematics in Figure 1.4 when directly translated into hardware. Each branch consists of an adder-subtractor combination, a shift unit and a register for buffering the output. At the beginning of a calculation initial values are fed into the register by the multiplexer where the MSB of the stored value in the z-branch determines the operation mode for the adder-subtractor. Signals in the x and y branch pass the shift units and are then added to or subtracted from the unshifted signal in the opposite path.

Figure 1.4: Iterative CORDIC
\begin{figure}
\centerline {\epsfig{figure=cordic.iterativ.eps,width=120mm}}\end{figure}

The z branch arithmetically combines the registers values with the values taken from a lookup table (LUT) whose address is changed accordingly to the number of iteration. For $ n$ iterations the output is mapped back to the registers before initial values are fed in again and the final sine value can be accessed at the output. A simple finite-state machine is needed to control the multiplexers, the shift distance and the addressing of the constant values.

When implemented in an FPGA the initial values for the vector coordinates as well as the constant values in the LUT can be hardwired in a word wide manner. The adder and the subtractor component are carried out separately and a multiplexer controlled by the sign of the angle accumulator distinguishes between addition and subtraction by routing the signals as required. The shift operations as implemented change the shift distance with the number of iterations but those require a high fan in and reduce the maximum speed for the application [11]. In addition the output rate is also limited by the fact that operations are performed iteratively and therefore the maximum output rate equals $ 1/n$ times the clock rate.


next up previous
Next: A Bit-Parallel Unrolled CORDIC Up: Implementation of various CORDIC Previous: Implementation of various CORDIC
Home
Norbert Lindlbauer
2000-01-19