CORDIC function basics
This page covers CORDIC algorithm basics. It covers CORDIC function uses. It describes CORDIC Rotation mode and Vector Mode.
CORDIC stands for Co-ordiate Rotation Digital Computer. It is the concept or algorithm used to calculate trigonometric (sin, cos) and hyperbolic (tan-1) functions. It works based on look up table concept. For example, you would like to calculate sin(φ) for some angle φ In this method, all the values of sin(φ) for each and every φ is stored in a memory (RAM). Later based on φ, corresponding value is outputted.
The cordic is used when hardware multiplier is not available. As CORDIC is used in FPGA/DSP where subtraction, addition, table lookup and bitshift operations are only available to be used.
CORDIC uses
CORDIC is used for operations such as sine, cosine, polar to rectangle, general rotation, arctangent, vector magnitude, rectangular to polar, Arcsine, Arccosine etc. It is also used for Linear Functions, Hyperbolic Functions, Square Rooting, Logarithms, Exponentials etc.
Operation | Mode | Initialize | Direction |
---|---|---|---|
Sine, Cosine | Rotation | x = 1/An, y = 0, z = α | Reduce z to Zero |
Polar to Rect. | Rotation | x = (1/An)Xmag , y = 0, z = Xphase | Reduce z to Zero |
General Rotation | Rotation | x = (1/An)X0 , y = (1/An)y0, z = α | Reduce z to Zero |
Arctangent | Vector | x = (1/An)X0 , y = (1/An)y0, z = 0 | Reduce y to zero |
Vector Magnitude | Vector | x = (1/An)X0 , y = (1/An)y0, z = 0 | Reduce y to zero |
Rect. to Polar | Vector | x = (1/An)X0 , y = (1/An)y0, z = 0 | Reduce y to zero |
Arcsine, Arccosine | Vector | x = (1/An), y = 0, arg = sin(α) or cos(α) | Reduce y to value in arg register |
CORDIC rotation mode and vector mode
Following two modes rotation mode and vector modes are used.
Rotation Mode
![CORDIC rotation mode](https://www.rfwireless-world.com/images/CORDIC-rotation-mode.webp)
Vector Mode
![CORDIC vector mode](https://www.rfwireless-world.com/images/CORDIC-vector-mode.webp)
Following table of CORDIC rotation angles is very useful. This is stored in the form of look up table and is derived when needed.
![CORDIC rotation angles](https://www.rfwireless-world.com/images/CORDIC-rotation-angles.webp)
Useful Links to MATLAB codes
Refer following as well as links mentioned on left side panel for useful MATLAB codes.
OFDM Preamble generation
Time off estimation corr
Freq off estimation corr
channel estimation
11a WLAN channel
PN sequence generation
OFDMA Tx Rx
AES DES
carrier aggregation
CCDF
FIR Filter
IIR Filter
Low Pass FIR
Viterbi decoder
CRC8 CRC32