本文介绍如何使用xilinx的CORDIC核计算一个arctan的值。
此方法对于梯度运算有着重要的意义。
原理略
环境:xilinx ISE 14.7 cordic 4.0 ISim
首先是IP核的选项设置,如图:
标注1:选择函数的类型,我们选择计算arctan的值。
标注2:选择cordic的结构,是字串行还是并行,我们选择并行。
标注3:选择输出流水线类型,选择不要流水线。
标注1:选择相位角的格式,我们选择Radians(意思是多少PI)
标注2:选择数据宽度,这个和所需数据位宽决定,我们选择16位
标注3:舍位模式,选择近似值。
对于相位角的概念,datasheet的定义为:
数据格式为:X_IN, Y_IN, X_OUT and Y_OUT.
这些功能的实现运用fixed-point 2‘s complement numbers with an integer width of 2 bits. 用两位。
前两位表示符号,后面的位数表示分数部分。
运用Q Numbers Format
1QN 表示 N = word width - 2. 也称为Fix(N+2)_N。
对于输入信号,X_IN, Y_IN,必须在-1 <= input data signal <= 1.
对于角度:
标注1:选择阶乘和精度,0表示根据数据来自动选择。
标注2:选择cordic算法的范围,将输出值控制在正负pi/4之间还是pi之间。
标注3:选择PIN
仿真文件为:
此处的输入为: x_in = 16'b0010110101000001;
y_in = 16'b0010110101000001;
输出结果:0001 1001 00100010
输出的phase值为:0.7853981 即为45°