赛灵思官方提供了cordic(coordinate rotational digital computer) ip核实现直角坐标极坐标变化,三角函数的操作。我介绍下它进行反正切求解的使用:

新建个简单工程:bd如下

进行ip设置,选择运算位反正切后,ip端口回自动变为上图,再引出2个总线和时钟,xilinx的ip核不少是基于AXI4-Stream总线,这里使用并不复杂,默认只有2个信号,一个数据线tdata,一个握手信号tvalid,tvalid拉高时数据信号有效。

确定了输入输出位宽后,系统会自动求解出需要的延时latency。这里说一句,AXI-Stream总线收发基于byte的,无论输入什么位宽最后都是8的整数倍。所以需要参照UG,放置好有效输入位和分解输出位。

如果输入输出位宽恰好不是8的倍数,那么tdata位宽是大于设定的值的。所以需要上图提到进行填充(PAD),比如我输入20位,x和y加起来40位,那么输入S_AXIS的位宽是48,我要在0-19放x,20-23放填充数据(随意,我用0),24-43放y,44-47放填充数据。必须保证0-19和24-25分别是我的x和y。

atan=y/x,要求输入必须是[-1,1],所以如果数据不是这个区间还需要进行归一化处理(可以用除法器div_gen ip核,这里不做介绍了)。上图是一个简单的示例,介绍输入输出的定点小数格式。整数部分的第一位是符号位,小数部分没有符号位是正的。

这里关于二进制小数表示,可以看下这个https://blog.csdn.net/AaricYang/article/details/87882868。整数的每一位权重是2^(n-1) 111就是2^2+2^1+2^0=7,小数部分的权重是2^(-n) 0.111就是2^(-1)+2^(-2)+2^(-3)=0.875

`timescale 1 ns / 1psmodulecordic_tb_top;regaclk;wire [31:0]M_AXIS_DOUT_0_tdata;wireM_AXIS_DOUT_0_tvalid;reg [47:0]S_AXIS_CARTESIAN_0_tdata;regS_AXIS_CARTESIAN_0_tvalid;integer handle;

initial beginaclk=0;

S_AXIS_CARTESIAN_0_tvalid=1‘b0;

S_AXIS_CARTESIAN_0_tdata=‘b0;

end

initial handle = $fopen("D:/FPGAcode/_file/cordic.txt");//打开文件

always #10 aclk=~aclk;localparam PAD=(48-20*2)/2;always@(posedge aclk) beginS_AXIS_CARTESIAN_0_tvalid<=1‘b1;

S_AXIS_CARTESIAN_0_tdata<={{PAD{1‘b0}},{3‘b000,17‘b0},{PAD{1‘b0}},{3‘b111,17‘b0}};end

always@(posedge aclk) begin

if(M_AXIS_DOUT_0_tvalid)

$fdisplay(handle,"%b",M_AXIS_DOUT_0_tdata);//写数据

enddesign_1_wrapper design_1_i

(.M_AXIS_DOUT_0_tdata(M_AXIS_DOUT_0_tdata),

.M_AXIS_DOUT_0_tvalid(M_AXIS_DOUT_0_tvalid),

.S_AXIS_CARTESIAN_0_tdata(S_AXIS_CARTESIAN_0_tdata),

.S_AXIS_CARTESIAN_0_tvalid(S_AXIS_CARTESIAN_0_tvalid),

.aclk_0(aclk));endmodule

给个简单的testbench

如果自己参考文献,用HDL实现一个CORDIC算法的模块,应该是很不错了。但是我偷懒直接用现成IP了

cordic ip核 vivado_Xilinx Vivado CORDIC IP核求解atan 反正切相关推荐

  1. cordic ip核 vivado_Xilinx Vivado CORDIC IP求解atan 反正切

    赛灵思官方提供了cordic(coordinate rotational digital computer) ip核实现直角坐标极坐标变化,三角函数的操作.我介绍下它进行反正切求解的使用: 新建个简单 ...

  2. Xilinx vivado 常用IP核使用

    目录 1. Accumulator 12.0 2. Aurora 8B10B 11.1 3. Clocking Wizard 3.1. 时钟资源 4. Divider Generator 5.1 5. ...

  3. 使用vivado封装IP

    文章目录 Basics 定制IP的参数 Enablement Expression 封装IP时使用了绝对路径 封装IP时设置Address Map Addr 相关tcl 修正警告 Bus Interf ...

  4. vivado CORDIC ip核计算arctan记录

    文章目录 前言 一.CORDIC ip核配置 二.CORDIC ip核接口 三.仿真波形 四.工程文件 前言 本文主要记录自己使用vivado CORDIC ip 核计算arctan的过程. 一.CO ...

  5. cordic ip核 vivado_vivado中Cordic IP核使用——计算正余弦(sin/cos)

    目录 1.Cordic算法介绍 2.Cordic IP核介绍 3.仿真 4.存在的问题 5.参考 1.Cordic算法介绍 cordic算法将正余弦计算转换为简单的迭代过程(一系列的加减和移位操作), ...

  6. vivado cordic IP学习记录

    一.QN格式(Q数据格式) XQN格式数据,是一个1bit符号位+X bits整数位+N bits小数位的补码数据.可表达的数据的范围是, 比如Q15,指的是X=0,N=15的Q格式数据,加上符号位合 ...

  7. Vivado FIFO IP核接口信号介绍

    1.1 Vivado FIFO IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado FIFO IP核接口信号介绍: 5)结束语. 1.1.2 ...

  8. Vivado MMCM IP核接口信号介绍

    1.1 Vivado MMCM IP核接口信号介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)Vivado MMCM IP核接口信号介绍: 5)结束语. 1.1.2 ...

  9. vivado dds IP核笔记

    vivado dds IP核笔记 DDS IP核在vivado提供的GUI界面中,可以选择三种配置: Phase Generator and SIN/COS LUT (DDS) SIN/COS LUT ...

  10. vivado ROM IP核简单使用

    vivado ROM IP核简单使用 vivado配置 下面选择数据的存储深度和数据的位宽 ROM内存储的数据由coe文件初始化 下面是初始化coe文件的内容 memory_initializatio ...

最新文章

  1. 数据分析之CE找数据大法
  2. ubuntu+2080ti系统用anaconda 安装tensorflow
  3. 在Windows平台如何选择C语言编译器?
  4. 取得Access自增标识字段在插入数据后的id值
  5. vba quit此文件正由另一个应用程序或用户使用_VBA|如何添加外部对象库(或控件)引用来扩展VBA功能...
  6. centos / Linux 服务环境下安装 Redis 5.0.3
  7. map容器find用法
  8. php+mysql执行sql文件路径_PHP———MySQL笔记(5)之MySQL数据库导出导入sql文件(详细)...
  9. 台达DVP PLC与西门子V20变频器通讯案例台达PLC西门子变频器通讯
  10. 小型即时通讯软件-C#
  11. Thinkpad笔记本电池保养
  12. 转载:解决微信OAuth2.0网页授权回调域名只能设置一个的问题
  13. 阐明iOS证书和provision文件
  14. 【临侦探侦工作原理】
  15. 【OpenCV】- 图像修复
  16. 大型项目前端架构浅谈(8000字原创首发)
  17. Win10日历便签怎么设置定时提醒
  18. unity 实现3d模型渐隐(修改材质透明度)
  19. java signal信号_signal 信号具体含义解释~
  20. 他是世界上最伟大的程序员,65岁求职被歧视,一生热爱技术!

热门文章

  1. 业界 | 摩根大通报告12个亮点总结:金融领域的机器学习工具有哪些?
  2. 帝国CMS7.5忘记后台密码怎么找回
  3. 数学函数最小值为什么可以通过导数=0来求出呢?
  4. 具有聚集诱导发射(AIE)特性的新型TADF分子SBF-BP-DMAC的定制合成
  5. 局域网内ping不通另外一台电脑_疫情期间宅家一台电脑如何做计算机网络实验...
  6. 阿里云华北1235、华东1、华东2和华南1分别对应哪些城市?地域节点物理数据中心在哪?...
  7. 重装系统后office去哪里安装?
  8. Xilinx火龙果学习笔记(1)---初识火龙果
  9. 施努卡:机器视觉公司排名(机器人视觉系统)
  10. C语言任意输入三个数构成三角形,随便输入三个数,看能否组成一个三角形