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

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

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

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

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

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

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

编写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

仿真结果如下图:

图中标红区域值分别为:

e(pi/5)=1.87432861328125

e(-pi/4)=0.45587158203125

利用Matlab仿真结果如下图:

对比可知仿真结果一致;

Vivado中xilinx_courdic IP核(求exp指数函数)使用的更多相关文章

  1. Vivado中xilinx_BRAM IP核使用

     Vivado2017.2 中BRAM版本为 Block Memory Generator Specific Features  8.3 BRAM IP核包括有5种类型: Single-port RA ...

  2. Vivado 调用自定义IP核

    关于Vivado如何创建自定义IP核有大量的参考文章,这里就不多加阐述了,本文目的主要是解决如何在新建工程中引用其它工程已经自定义封装好的IP核,从而实现自定义IP核的灵活复用. 举个例子,我们的目标 ...

  3. 转:基于 xilinx vivado 的PCIE ip核设置与例程代码详解

    连接:https://blog.csdn.net/u014586651/article/details/103826967#comments

  4. IP核的使用(Vivado中的调用,product guide的查询阅读 ,引脚的设置(位宽,个数,算法等),coe文件的初始化 )

    IP核:Intellectual Property core ,即知识产权核.每个IP核可以实现特定功能,我们在设计一个东西时可以直接调用某个IP核来辅助实现功能. 存在形式:HDL语言形式,网表形式 ...

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

    ilinx Vivado的使用详细介绍(3):使用IP核 Author:zhangxianhe IP核(IP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器.除法器.浮点运算 ...

  6. modelsim 独立仿真vivado的IP核及仿真脚本

    Modelsim独立仿真vivado的IP 最近一直在做local dimming项目的FPGA硬件实现,算法的其中一步就是直方图统计,即数字图像的某一灰度级的像素数,这个直方图的源码找了半天才搞到, ...

  7. IP核之初——FIFO添加以太网MAC头部

    本文设计思路源自明德扬至简设计法.在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的.我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人 ...

  8. FIFO IP核

    转载: 说白了,IP核就是别人做好了的硬件模块,提供完整的用户接口和说明文档,更复杂的还有示例工程,你只要能用好这个IP核,设计已经完成一半了.说起来容易,从冗长的英文文档和网上各个非标准教程中汲取所 ...

  9. System Generator 生成IP核在Vivado中进行调用

    System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...

随机推荐

  1. 自定义UDF

    1.编写udf类 package hive.udf; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hado ...

  2. [Android] 压缩图片并保存

    不难,但用的时候有时候突然会想不起来..记录一下吧 原文地址请保留http://www.cnblogs.com/rossoneri/p/3995096.html 先加权限 <uses-permi ...

  3. UWP开发细节记录:加载图像文件到D2D位图和D3D纹理

    在UWP中加载文件一般先创建 StorageFile 对象,然后调用StorageFile.OpenReadAsync 方法得到一个IRandomAccessStream 接口用来读取数据: Stor ...

  4. Mac走moneky

    1. 安装卸载apk ① 安装apk:下载apk到电脑 ,adb install -r 拖动apk adb install /Users/yangdan/Downloads/tutor-6.18.0. ...

  5. 目标管理之SMART原则

    SMART原则经常用于KPI制定,也可以用于个人目标管理. SMART原则: S(Specific):目标必须是具体的,需要对标特定的工作目标,不能笼统: M(Measurable):目标必须是可衡量 ...

  6. Oracle EBS GL 总账日记账打开报错此职责无可用函数

    系统管理员下,跑请求:

  7. SQL Server中事务transaction如果没写在try catch中,就算中间语句报错还是会提交

    假如我们数据库中有两张表Person和Book Person表: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ) NULL, [CreateTi ...

  8. 修改centos等linux的hostname-永久生效

    步骤uname -a (或者hostname)可以看到hostname,修改步骤如下: uname -a 查看hostnamehostname newname 修改下,让hostname立刻生效.vi ...

  9. idea 2017破解方法

    http://blog.csdn.net/zx110503/article/details/78734428

  10. Linux yum源详解

    软件包安装方式 0.默认从官网下载包(国内,雅虎,网易,阿里云)        cat /etc/yum.repos.d/rhel-source.repo  [yum文件目录--redhat6版] [ ...