0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vivado中xilinx_courdic IP核的使用方法

电子设计 来源:VagueCheung的博客 作者:VagueCheung的博客 2022-07-25 16:51 次阅读

本文转载自:VagueCheung的博客

由于Verilog/Vhdl没有计算exp指数函数的库函数,所以在开发过程中可利用cordic IP核做exp函数即e^x值;

但前提要保证输入范围在(-pi/4—pi/4)

在cordic核中e^x = sinh + cosh所以在配置cordic时点选sinh and cosh即可 如下图:

pIYBAGAKL32AJTCHAADI73EDRj8551.png

input width配置为16位,表示输入数据的第16位是符号位,第15,14位是整数位,其他位表示小数位,相当于13位有符号定点小数;

output width配置16位,高16位表示sinh结果 其中第16位符号位,第15位整数位,其它小数位,相当于13位有符号定点小数;

低16位表示cosh结果 其中第16位符号位,第15位整数位,其它小数位,相当于13位有符号定点小数;

pIYBAGAKMAiAFvdRAAC1tu-M4Vc025.png

其它选项都按上图显示配置;

编写testbench测试文件:

Testbench:

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer:

// Create Date: 2018/11/28 09:08:45

// Design Name:

// Module Name: test_bench_IP_cordic_ex

// Project Name:

// Target Devices:

// Tool Versions:

// Description:

// 利用cordic IP核 做pi/5和-pi/4做exp 定义(可自选)

//需自己将仿真结果高16位提出作为sinh值 数据格式为第16位为符号位 第15位是整数位 后边其他是小数

//将仿真结果低16位提出作为cosh值 数据格式为第16位为符号位 第15位是整数位 后边其他是小数

//得到结果exp(x)=sinh+cosh

// Dependencies:

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//////////////////////////////////////////////////////////////////////////////////

module test_bench_IP_cordic_ex(

);

//inputs

reg clk;

reg[15:0] s_axis_phase_tdata;

reg s_axis_phase_tvalid;

//outputs

wire m_axis_dout_tvalid;

wire[31:0] m_axis_dout_tdata;

//others

wire[15:0] sinh;

wire[15:0] cosh;

wire[15:0] exp;

assign sinh = m_axis_dout_tdata[31:16];

assign cosh = m_axis_dout_tdata[15:0];

assign exp = sinh + cosh;

cordic_0 cordic_m0(

.aclk(clk),

//.rst(rst),

.s_axis_phase_tdata(s_axis_phase_tdata),

//.s_axis_phase_tready(s_axis_phase_tready),

.s_axis_phase_tvalid(s_axis_phase_tvalid),//s_axis_phase_tvalid),

.m_axis_dout_tvalid(m_axis_dout_tvalid),

.m_axis_dout_tdata(m_axis_dout_tdata)

);

always #5 clk = ~clk;

initial begin

clk = 0;

s_axis_phase_tvalid = 0;

s_axis_phase_tdata = 0;

#150

s_axis_phase_tvalid = 1;

s_axis_phase_tdata = 16'b0001010000011011;//pi * 1/5

#10

s_axis_phase_tdata = 16'b1110011011011110;//-pi * 1/4

#10

s_axis_phase_tvalid = 0;

#40000 $finish;

end

endmodule

仿真结果如下图:

o4YBAGAKMEeAdMy6AABTp-hoY6k485.png

图中标红区域值分别为:

e(pi/5)=1.87432861328125

e(-pi/4)=0.45587158203125

利用Matlab仿真结果如下图:

o4YBAGAKMIeAe898AAC1JRJ7i_g289.png

对比可知仿真结果一致;


审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4276

    浏览量

    62303
  • Vivado
    +关注

    关注

    19

    文章

    803

    浏览量

    66195
收藏 人收藏

    评论

    相关推荐

    vivado hls 写的IP(某函数) 如何在 vivado 里面连接PS并且导出到Xilinx SDK调用,最后把值放到内存里面?(使用AXI?)

    ,int b);最后经过编译可以生成VHDL等硬件描述文件与IP文件.我想调用自己写的IP(add函数)我在vivado
    发表于 01-28 18:40

    Vivadoxilinx_courdic IP怎么使用

    Vivadoxilinx_courdic IP(求exp指数函数)使用
    发表于 03-03 07:35

    Vivado生成IP

    vivado生成ip后缺少一大片文件,之前是可以用的,中途卸载过Modelsim,用vivado打开过ISE工程,因为工程很多
    发表于 04-24 23:42

    Xilinx Vivado的使用详细介绍(3):使用IP

    IPIP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、D
    发表于 02-08 13:08 2111次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>Vivado</b>的使用详细介绍(3):使用<b class='flag-5'>IP</b><b class='flag-5'>核</b>

    了解VivadoIP的原理与应用

    IPIP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、D
    发表于 11-15 11:19 9057次阅读

    vivado调用IP详细介绍

    大家好,又到了每日学习的时间了,今天咱们来聊一聊vivado 调用IP。 首先咱们来了解一下vivadoIP
    的头像 发表于 05-28 11:42 3.7w次阅读

    FPGA实现基于Vivado的BRAM IP的使用

      Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的
    的头像 发表于 12-29 15:59 1.1w次阅读

    Vivadoxilinx_courdic IP(求exp指数函数)使用

    由于Verilog/Vhdl没有计算exp指数函数的库函数,所以在开发过程可利用cordic IP做exp函数即e^x值;但前提要保证输入范围在(-pi/4—pi/4)。在cordic
    发表于 01-27 07:21 9次下载
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b><b class='flag-5'>xilinx_courdic</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>(求exp指数函数)使用

    Vivadoxilinx_BRAM IP使用

    Vivado2017.2 BRAM版本为 Block Memory Generator Specific Features 8.3。BRAM IP包括有5种类型:Single-p
    发表于 03-10 06:15 19次下载
    <b class='flag-5'>Vivado</b><b class='flag-5'>中</b><b class='flag-5'>xilinx</b>_BRAM <b class='flag-5'>IP</b><b class='flag-5'>核</b>使用

    VCS独立仿真Vivado IP的一些方法总结

    前年,发表了一篇文章《VCS独立仿真Vivado IP的一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado
    的头像 发表于 03-22 10:31 4074次阅读

    VCS独立仿真Vivado IP的问题补充

    在仿真Vivado IP时分两种情况,分为未使用SECURE IP和使用了SECURE IP
    的头像 发表于 06-06 14:45 1643次阅读
    VCS独立仿真<b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的问题补充

    Xilinx Vivado DDS IP使用方法

    DDS(Direct Digital Frequency Synthesizer) 直接数字频率合成器,本文主要介绍如何调用Xilinx的DDS IP生成某一频率的Sin和Cos信号。
    的头像 发表于 07-24 11:23 4495次阅读
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>Vivado</b> DDS <b class='flag-5'>IP</b><b class='flag-5'>使用方法</b>

    如何在Vivado配置FIFO IP

    Vivado IP提供了强大的FIFO生成器,可以通过图形化配置快速生成FIFO IP
    的头像 发表于 08-07 15:36 3885次阅读
    如何在<b class='flag-5'>Vivado</b><b class='flag-5'>中</b>配置FIFO <b class='flag-5'>IP</b><b class='flag-5'>核</b>

    为什么说Vivado是基于IP的设计?

    VivadoXilinx公司2012年推出的新一代集成开发环境,它强调系统级的设计思想及以IP为核心的设计理念,突出IP在数字系统设计
    的头像 发表于 09-17 15:37 1850次阅读
    为什么说<b class='flag-5'>Vivado</b>是基于<b class='flag-5'>IP</b>的设计?

    FPGA实现基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的
    的头像 发表于 12-05 15:05 1444次阅读