CORDIC Arctangent for IQ Signals

CORDIC Arctangent for IQ Signals


Category: Arithmetic Core

Created: March 17, 2018

Updated: January 27, 2020

Language: Verilog

Other project properties

Development Status: Alpha

WishBone compliant: No

WishBone version: n/a

License: LGPL


Streaming atan function based on CORDIC algorithm.

[angle, modulus] = cordic([I, Q])

angle = atan(Q/I)

modulus = sqrt(I^2+Q^2)

angle in range [-2^31, 2^31-1] ~ [-180 deg, 180 deg)

SystemVerilog module takes {I, Q} vector, rotates it to vector {k * sqrt(I^2+Q^2), 0} and returns angle and vector modulus.

Angular precision is 0.003 sec., depend on vector size. Module uses 32 bits arithmetic.

The download includes SystemVerilog module, SystemVerilog testbench, MatLab generator script for the atan base table and MatLab CORDIC model.