Vivado中xilinx_courdic IP核(求exp指数函数)使用
由于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指数函数)使用的更多相关文章
- Vivado中xilinx_BRAM IP核使用
Vivado2017.2 中BRAM版本为 Block Memory Generator Specific Features 8.3 BRAM IP核包括有5种类型: Single-port RA ...
- Vivado 调用自定义IP核
关于Vivado如何创建自定义IP核有大量的参考文章,这里就不多加阐述了,本文目的主要是解决如何在新建工程中引用其它工程已经自定义封装好的IP核,从而实现自定义IP核的灵活复用. 举个例子,我们的目标 ...
- 转:基于 xilinx vivado 的PCIE ip核设置与例程代码详解
连接:https://blog.csdn.net/u014586651/article/details/103826967#comments
- IP核的使用(Vivado中的调用,product guide的查询阅读 ,引脚的设置(位宽,个数,算法等),coe文件的初始化 )
IP核:Intellectual Property core ,即知识产权核.每个IP核可以实现特定功能,我们在设计一个东西时可以直接调用某个IP核来辅助实现功能. 存在形式:HDL语言形式,网表形式 ...
- Xilinx Vivado的使用详细介绍(3):使用IP核
ilinx Vivado的使用详细介绍(3):使用IP核 Author:zhangxianhe IP核(IP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器.除法器.浮点运算 ...
- modelsim 独立仿真vivado的IP核及仿真脚本
Modelsim独立仿真vivado的IP 最近一直在做local dimming项目的FPGA硬件实现,算法的其中一步就是直方图统计,即数字图像的某一灰度级的像素数,这个直方图的源码找了半天才搞到, ...
- IP核之初——FIFO添加以太网MAC头部
本文设计思路源自明德扬至简设计法.在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的.我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人 ...
- FIFO IP核
转载: 说白了,IP核就是别人做好了的硬件模块,提供完整的用户接口和说明文档,更复杂的还有示例工程,你只要能用好这个IP核,设计已经完成一半了.说起来容易,从冗长的英文文档和网上各个非标准教程中汲取所 ...
- System Generator 生成IP核在Vivado中进行调用
System Generator 生成IP核在Vivado中进行调用 1.首先在Simulink中搭建硬件模型 2.查看仿真结果 3.资源分析与时序分析 4.启动vivado,关联生成的IP核 5.调 ...
随机推荐
- CUDA(5.5)与MySQL 5.6的rint函数定义冲突引起的VS编译器C2264错误
向CUDA project中添加了如下的包含目录后: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include; ..\inclu ...
- php添加购物车
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- windows 服务的安装与卸载
卸载服务 Cmd 执行 Sc delete axXinkong(服务名称) 安装服务
- Android Application中的Context和Activity中的Context的异同
一.Context是什么: 1.Context是维持Android程序中各组件能够正常工作的一个核心功能类,我们选中Context类 ,按下快捷键F4,右边就会出现一个Context类的继承结构图啦, ...
- Spring Boot (#1 quick start)
Spring Boot (#1 quick start) 官方文档 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无 ...
- git中设置代理,本地不使用代理,针对域名设置代理
想要的效果是: [1]本地IP不使用代理 [2]外网的仓库(如GitHub)使用代理 [3]适用于全局 方案 打开路径: C --> 用户 --> [我的账号] --> .gitco ...
- SQL Server在本地计算机上用SSMS(SQL Server Management Studio)登录不上,错误消息:(Microsoft SQL Server, Error: 18456)
今天遇到了一个奇怪的问题,公司目前在SQL Server上都采用AD域账号登录,由于账号人数众多,所以我们建立了一个AD Group(域组),将大家的AD账号加入了这个AD Group,然后我们将这个 ...
- Javascript基础笔记(部分)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 利用VBA宏解除Excel保护
复制以下代码并录制宏,运行一次即可. Option Explicit Public Sub AllInternalPasswords() ' Breaks worksheet and workbook ...
- SDN期末
一.项目描述 负载均衡程序 二.小组分工 组名:我们真的很弱 组员:李佳铭.吴森杰.张岚鑫.薛宇涛.杨凌澜 三.代码演示及过程描述 四.课程总结