XIlinx FPGA 的vivado中cordic ip的(定点数小数)输入与输出参数值讲解

在这里插入图片描述

前言

虽然很多FPGA工程师都知道Xilinx FPGA种的vivado cordic IP可以计算三角函数,但在实际使用时会遇到各种各样的问题,比如:

  • 输入参数代表什么意思?
  • 输出参数怎么分类?
  • 哪些数据是sin值,哪些是cos值?

本文以cordic ip求解sin与cos值为例,破解这些疑问,讲解cordic IP的使用。

IP设置

cordic IP有哪些求解内容

在这里插入图片描述

求解sin_cos时IP 设置

在这里插入图片描述

  • 选择功能:sin and cos;
  • 输入与输出位宽:16;

在这里插入图片描述

点击详情页可以看到输入与输出的数据分段,比如上图:

PHASE(15:0) fix16_13 表示:输入相位位宽16bit,即PHASE-TDATA(15:0),fix(定点数)16位_13位小数

IMAG (31:16) fix16_14表示:输出的虚数有16bit,即DOUT-TDATA(31:16),fix(定点数)16位_14位小数

REAL (15:0) fix16_14表示:输出的实数有16bit,即DOUT-TDATA(15:0),fix(定点数)16位_14位小数

输入输出数据讲解

以cordic IP的端口为依据举例说明(注意:下面例子是10bit参数,本IP是16bit,但其中整数部分的位数和换算规则一样):

在这里插入图片描述

上图的意思是值都是采用定点数二进制补码表示的,其中:

  1. 相位的值,有3位整数(其中最高位为符号位),其余为小数;

  2. Cos/sin值,有2位整数(其中最高位为符号位),其余为小数;

举例的说明为:

相位幅度:000.1100100,换算成十进制表示为0.781

相位幅度换算成cos值X_OUT为:00.10110110,换算成十进制表示为0.711

相位幅度换算成sin值Y_OUT为:00.10110100,换算成十进制表示为0.703

参数验证

输入输出参值验证(进制转换)

可以通过网上的计算器或者手算进行验证,本人这边先通过进制转换器 - Codeeeee 在线小工具进行的验证,如下所示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

相位换算验证(三角函数转换)

可通过三角函数计算器 |Sin, Cos, Tan,Cot在线计算验算三角函数的计算值是否正确:

Cos(0.781)=0.711

Sin(0.781)= 0.703

在这里插入图片描述

在这里插入图片描述

由上面计算可知计算可能有一点点的精度误差,但整体无误。

上板验证

设置仿真条件

在这里插入图片描述

设置代码输入与输出分段

在这里插入图片描述

备注:通常在XIlinx的FPGA中的real值对应的是cos值

仿真结果

在这里插入图片描述

转成实数观看结果

在这里插入图片描述

从仿真结果看,输入输出值与预期一样,说明输入与输出的理解无误。

若需要获取cordic仿真例程,关注微信公众号后,回复"cordic"即可获取

如果本文对你有所帮助,欢迎点赞、转发、收藏、评论让更多人看到,赞赏支持就更好了。

如果对文章内容有疑问,请务必清楚描述问题,留言评论或私信告知我,我看到会回复。

在这里插入图片描述

欢迎FPGA同行者关注微信公众号FPGA加速者,获取更多精彩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风中月隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值