CORDIC Arctangent for IQ Signals

Details
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
Description
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.