# VHDL Implementation of CORDIC Algorithm for Wireless LAN

Text Only Version

#### VHDL Implementation of CORDIC Algorithm for Wireless LAN

ME Electronics Engineering

Amrutvahini College of Engineering, Sangamner (MS) 422 605

Abstract: This paper presents the CORDIC Algorithm for Wireless LAN. The main aim of this topic is to create a VHDL description for CORDIC Algorithm. The basic research is carried out in MATLAB. The VHDL implementation of CORDIC algorithm is based on results obtained from Xilinx ISE simulation. XILINX Spartan-3FPGA is used for hardware implementation.

Keywords: CORDIC, FPGA, Wireless LAN, implementation.

1. INTRODUCTION:

CORDIC means COordinate Rotation DIgital Computer. CORDIC performs the calculations using shift registers and adders instead of multiplications. By using this it saves much hardware resources. CORDIC is used for calculations of trigonometric functions. It is used for polar to rectangular & rectangular to polar conversion, also in some transformations like DFT, DCT. CORDIC Algorithm mainly developed to find solution for real time navigation problems. CORDIC Algorithm found application in 8087 math coprocessor , radar signal processor , Hp-35 calculator and robotics. In particular cases, CORDIC Algorithm is used in Wireless LAN at receiver side.

The CORDIC Algorithm calculates the angle of received vector in a signal constellation by means of arctangent function and it is used in receivers to find frequency offset and phase shift.

2. CORDIC ALGORITHM:

2.1 Mode of operation:

CORDIC rotator works in two modes: Rotation & Vectoring .

2.1.1 Rotation mode:

CORDIC can be used to calculate a number of different functions. This explanation shows how to use CORDIC in rotation mode to calculate the sine and cosine of an angle and assumes the desired angle is given in radians and represented in a fixed point format. To determine the sine or cosine for an angle, the y or x coordinate of a point on the unit circle corresponding to the desired angle must be found. Using CORDIC, we would start with the

vector :

Fig. 1. An example for CORDIC algorithm

In the first iteration, this vector is rotated 45Â° counter clockwise to get the . Successive iterations rotate the vector in one or the other direction by size-decreasing steps, until the desired angle has been achieved. Step i size is arctan(1/(2i1)) for i = 1, 2, 3, .

More formally, every iteration calculates a rotation, which is performed by multiplying the vector with the rotation matrix .

=

The rotation matrix is given by:

=

Using the following two trigonometric identities:

the rotation matrix becomes:

The expression for the rotated vector then becomes:

Where and yi-1 are the components . Restricting the angles yi so takes on the values

+/-, the multiplication with the tangent can be replaced by a division by a power of two, which is efficiently done in digital computer hardware using a bit shift. The expression then becomes:

=

Where

and can have the values of 1 or 1, and is used to determine the direction of the rotation; if the angle is positive then is +1, otherwise it is 1.

can be ignored in the iterative process and then applied afterward with a scaling factor:

K (n) = =

which is calculated in advance and stored in a table, or as a single constant if the number of iterations is fixed. This correction could also be made in advance, by scaling and hence saving a multiplication. Additionally it can be noted that:

K=

to allow further reduction of the algorithm's complexity.

After a sufficient number of iterations, the vector's angle will be close to the wanted angle . For most ordinary purposes, 40 iterations (n = 40) is sufficient to obtain the correct result to the 10th decimal place.

The only task left is to determine if the rotation should be clockwise or counters clockwise at each iteration (choosing the value of ). This is done by keeping track of how much the angle was rotated at each iteration and subtracting that from the wanted angle; then in order to get closer to the wanted angle , if is positive, the rotation is clockwise, otherwise it is negative and the rotation is counter clockwise.

= -. = arctan

The values of must also be recomputed and stored. But for small angles,

Arctan ) =

In fixed point representation, reducing table size.

As can be seen in the illustration above, the sine of the angle is the y coordinates of the final , while the x coordinate is the cosine value.

After a sufficient number of iterations, the vector's angle will be close to the wanted angle . For most ordinary purposes, 40 iterations (n = 40) is sufficient to obtain the correct result to the 10th decimal place.

3. SCHEME OF IMPLEMENTATION:

Fig. 2. Block diagram for CORDIC Algorithm.

4. RESULT:

5. CONCLUSION:

CORDIC Algorithm is most powerful tool which is used in DSP toolbox. This paper shows that this tool is available for use in FPGA based computing machines. This paper represents method to calculate angle in wireless LAN receiver block by using CORDIC Algorithm.

REFERENCES:

1. Duprat J., and Mullar J. M. The CORDIC Algorithm: New results for VLSI implementation, IEEE Transactions on Computers, Vol. 42 pp. 168-178, 1993.

2. Ahmed H. M., Delosme J. M., Morf M., Highly concurrent structure for matrix arithmetic and signal processing IEEE comput. Mag. Vol. 15, 1982, pp. 65-82.

3. Valls, J., Kuhalmann, M., Parhi K.K., Efficient mapping of CORDIC Algorithms for FPGA Based computers, 1998.

4. Terry J., Heiskala J.: OFDM Wireless LANs: A Theoretical and practical Guide, Indianapolis, Ind.: Sams, 2002.

5. Alfke P., Efficient shift registers, LFSR counters and long pseudo random sequence generator , Xilinx application note, August, 1995.

6. Andraka R. J. Building a high performance Bit serial processor in an FPGA, proceeding of design supercon 96, Jan 1996, pp 5.1-5.21.

7. Deprettere E. Dewilde P., and Udo R. Pipelined CORIC Architecture for fast VLSI filtering and array processing proc.ICASSP84, 1984, pp. 41.A.6.1-41.A.6.4.

8. Despain A. M., Fourier Transform Computations using CORDIC Iteration IEEE transactions on computers Vol. 23, 1974, pp.93- 1001.

9. Volder J., Binary computation algorithm for coordinate rotation and function generation Convair Report IAR-1 148 Aeroelectrics Group June 1956.

10. Walther J. S. A unified algorithm for elementary functions Spring Joint computer Conf 1971, proc., pp.379-385.

11. Nee R., Prasad R.: OFDM for Wireless Multimedia Communications, Boston: Artech house, 2000.