cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor
Visitor
257 Views
Registered: ‎06-25-2018

cordic 6.0 incorrect operation with negative numbers

Hi there

Using the latest CORDIC 6.0 core from Vivado 2019.2 with translate function, I discovered in both simulation and lab environment that core operates correctly with positive numbers but often produces incorrect or erratic results for negative numbers. Core is instantiated directly in HDL so without sysgen / simulink. 


Specifics of my implementation.

Function : translate

S_axis_catesian sized to 16bits so fix16_14

M_axis_dout is also 16 bits on magnitude fix16_14 whereas phase is fix16_13

Coarse rotate is enabled allowing for full circle operation

Phase format is radians 

 

I am familiar with PG105 dated December 20 2017 which explains in details the number format usage.

Questions :

Q1] Is there a  known issue with this core usage beyond the 1st quadrant? Most documentation and examples target positive numbers only. Turning on the "coarse rotate" function does indeed have an effect on the result but it remains incorrect for most samples.

Q2] Are there any restrictions on data fed to core aside from what is described in PG105? Data fed is always within -1<cartesian<+1.

Lastly, please note that Cordic ATAN function yields the exact same phase output for comparative sake. Issues observed are also present with rotate function which seem to indicate a systemic limitation.

Altering pipelining, architecture and compensation settings do not have any behavioral effect on phase results aside from latency.

Rgds

2 Replies
Highlighted
Teacher
Teacher
225 Views
Registered: ‎07-09-2009

Re: cordic 6.0 incorrect operation with negative numbers

do you want to share a test case as an attachment and I'm certain a xilinx person will pick this up
<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
147 Views
Registered: ‎09-18-2018

Re: cordic 6.0 incorrect operation with negative numbers

Hi @patboily79 ,

Is it possible to share a test case for this, so I can reproduce it and take it further.

 

Thanks,

0 Kudos