一:参数配置
1 .选择函数类型。 包含向量旋转、向量转换、正弦、馀弦、双曲正弦、双曲馀弦、反正切、反正切和平方根的计算。
选择cordic的结构。 并行和串行选项。
3 .选择输出管线类型。 提供了3种,无,最佳,最大。 其中,optimal模式的实现使用很多管线,但不使用其他查找表。
4 .选择数据格式。 有符号小数(默认)、无符号小数、无符号整数。
5 .选择相位模式。 弧度和角度。 radians的可取范围为- 3.14~3.14 .假设scaled radians的可取范围为-1~1,则scaled radians的单位为pi。
(2)输入输出选项
1 .输入宽度:这个很容易理解。
2 .输出幅度:这个很容易理解。
3 .数据舍弃方式:缩短、正无限大整数化、负无限大整数化和最近偶数整数化。
下图为剪短的示意图
(三)高级参数配置:
1 .迭代次数控制:
2 .精度控制:
可以选择用于将CORDIC范围从第一象限扩展到整个圆的粗糙旋转模块。
AXI4_Stream接口配置
1.Cartesian频道选项。 LAST是数据结束标志,TUSER是数据流的开始标志。 这两个人的信号可以不选。
2 .相位通道选项。 其中,流量控制为流量控制,分为阻塞方式和非阻塞方式。 其中,优化谷歌是优化的目标,默认值是性能。
3 .可选引领。 时钟使能和低复位端子。
模拟测试
首先以反正切为例,如下图所示,在pg105文件的第28页中说明了反正切的计算。
可以看出,文档中输入数据的宽度是10位,输出数据的位宽也是10位,对于输入端子的最高位是符号位,次高位是整数位,剩下的位是小数位。 输出端的最高位比特为编码比特,下一位的上位比特和下一位的上位比特为整数比特,剩馀的比特为小数比特。
基于以上规则,输入输出都选择了13位的情况下,以以下的形式进行模拟。
上面的模拟图中的s_axis_cartesian_tvalid和s_axis_cartesian_tdata是入口端,
其中s_axis_cartesian_tdata的数据格式为
如果将正弦置于上位(相对于正弦)下位,则从模拟图表得到的结果为,m_axis_dout_tvalid所表示的m_axis_dout_tdata信号值为471,将输出选择为13比特
可见模拟结果是正确的。
如果输入值为负,则不需要考虑太多。 选择13位时,最高位为符号位,下一位为符号位。 如果看到下图的X_IN的输出在-1~1之间,则小数点后11位,即数值的显示在-2048~2047之间,则-2048为- pi/2,2047为pi/2。 需要注意这个数值的数据
使用CORDIC核,可以有效地替代查找表方案。