vivado中复数乘法器的ip核调用及其仿真的详细介绍
复数乘法器的ip核可在下图的中找到
ip核的输入配置和输出配置如下图所示
当我们在选择multplier construction的Use LUTs选项时,选择的是三次乘法的算法,相比于四次乘法的选项用的资源会少一点,代价是要额外占用一些数据表。
输出的实部和虚部间有空位的原因如下图所示:
配置成功之后,就可以点击generate生成ip核了!
随后在IP sources可以查看其verilog例化(怎么用verilog调用该IP核),如下图所示。
接下来我们就可以进行代码的编写了 ,代码通过add sources来添加
以下为顶层模块的代码
/*该模块用于计算两个复数相乘的结果,调用了vivado自带
的math functions的ip核。其中输入的虚部和实部均为16位
位宽,输出的虚部和实部均为33位位宽,支持以补码形式输
入的负数进行计算*/module top(
input clk,
input [15:0] re_a,im_a,re_b,im_b, //两个复数由此输入,分别输入其实部和虚部,re(real)为实部,im(imaginary)为虚部
output [32:0] re_result,im_result);//33位的输出,为了防止溢出wire[79:0] result;//80位位宽的输出,其中第34位到40位和74到80位都是不使用的//取出结果中的实部和虚部
assign im_result = result[72:40];
assign re_result = result[32:0];//调用complex multiplier的ip核进行复数乘法计算
cmpy complex_multiplier1(.aclk(clk), // 输入时钟信号.s_axis_a_tvalid(1'b1), // 数值a的有效信号,为1时传递信号 .s_axis_a_tdata({im_a,re_a}), // 第一个输入的复数,并将数值a的虚部和实部整合成一个32位位宽的复数.s_axis_b_tvalid(1'b1), // 数值b的有效信号,为1时传递信号 .s_axis_b_tdata({im_b,re_b}), // 第二个输入复数.m_axis_dout_tvalid(), //输出有效信号,此处选择不接.m_axis_dout_tdata(result) // output wire [79 : 0] m_axis_dout_tdata
);endmodule
以下是测试代码
`timescale 1ns / 1psmodule testbench();reg [15:0] re_a,im_a,re_b,im_b;
reg clk;
wire [32:0]re_result, im_result;initial beginre_a = 16'b0000_0000_0000_0001;//其中_是位分隔符im_a = 16'b0000_0000_0000_0001;re_b = 16'b0000_0000_0000_0001;im_b = 16'b1111_1111_1111_1110;//输入负数时要采用补码clk = 0;endtop u1(clk,re_a,im_a,re_b,im_b,re_result,im_result);//调用编写好的top模块进行测试alwaysbegin#10 clk = ~clk;//每10ns翻转一次endendmodule
vivado的代码是实时编译的,系统会自动检测哪一行代码有错并在旁边标红,所以添加完后直接点击simulation中的behavioral simulation。
仿真结果如下图所示
可以看出(1+1j)×(1-2j)的结果确实为3-j
这是本人第一次编写博客,由于经验不足肯定难免会有各种纰漏,如果我有什么不对的地方还请各位网友多多在评论区指正!
参考文献:vivado的复数乘法器ip核详细信息https://www.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/cmpy/v6_0/pg104-cmpy.pdf
vivado中复数乘法器的ip核调用及其仿真的详细介绍相关推荐
- vivado中复数乘法器IP核使用小结
vivado中复数乘法器IP核使用小结 添加ip核 进入工程,点击IP Catalog,在弹出的窗口中点击数学功能–math functions,选择multipliers–complex multi ...
- Quartus基本IP核调用及仿真
文章目录 一.PLL PLL介绍 PLL的IP核调用 PLL仿真 二.RAM RAM介绍 RAM的IP核调用(单时钟) RAM仿真(单时钟) RAM的IP核调用(双时钟) RAM仿真(双时钟) 三.F ...
- Xilinx Vivado复数乘法器Complex Multiplier IP核调用及其仿真
Complex Multiplier IP核的使用,尤其是输出数据的截位到底怎么弄,我感觉官方文档PG104写的不清楚.我个人在网上也没找到好的讲解文章,就自己琢磨了下,然后写成文档记录在此,方便将来 ...
- FFT IP核调用与仿真之FFT数学分析
对于FFT这个IP核,我其实对它真的是又爱又恨,因为它真的耗费了我太多时间,但是随着研究的深入,遇到的问题一点点给消化解决,终于不用带着问题睡觉了,哈哈,有时候真的挺佩服自己的,遇到不懂的,不了解的, ...
- FFT IP核调用与仿真之SCALE压缩因子设置
关于FFT IP核的配置,网上有很多相关的资料可以参考,但是唯独涉及到scaled压缩因子设置这个参数,资料却非常匮乏,这是个什么参数,应该整么设置,设置后对结果输出会有什么影响,整样才能知道它设置的 ...
- 弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩
弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩 IP核:知识产权核,指某一方提供的.形式为逻辑单元的可重用模块.IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以 ...
- 最强 Verilog 中 IP核 调用实现及思想
写在前面:无论是在 ISE 还是 Vivado 中,关于 IP核 的调用都是非常方便的,所以对于初学者来说最关键的不是在 IP Catalog 中设置相关的 IP核 参数,而是在生成相关的 IP核 后 ...
- Xilinx DDR3 —— MIG IP核的读写仿真(APP接口)
在上一篇中Xilinx DDR3 -- MIG IP核的配置(APP接口),已经观看了Xilinx官方提供的MIG IP核读写例程仿真波形,本着学习的目的,本篇开始自己编写MIG IP核读写程序,用于 ...
- Xilinx Vivado定制IP核调用和除法器IP核的latency和resource分析
加入定制的乘法IP核,必须在sources右键,用Add Directories加入才完整 加入文件夹后如下图: 测试代码与主程序模块连接端口初学者容易出现错误 输入端口:从模块内部来讲,输入端口必须 ...
最新文章
- 【SpringCloud】Hystrix-实例
- 一张图清晰明了将Java面向对象全部搞定!
- AAC音频基础知识及码流解析
- fatal: unable to access ‘https://github.com/PanJiaChen/vue-element-admin.git/‘: OpenSSL SSL_read: Co
- jzoj1403-渡河【SPFA】
- webpack gulp grunt 简单介绍
- php js绝对路径,javascript将相对路径转绝对路径示例_基础知识
- windows程序设计之编写应用程序,当按下鼠标左键并在窗口中移动时,窗口中鼠标所经历的个点颜色设置为黑色
- Java入门基础 安装并配置Java软件和JDK
- 渗透测试实战分享—从app到网站沦陷
- Theano学习二:内存、变量、函数、自动微分、循环、scan以及分析调试等基础知识
- MPU6050误差分析
- 漫漫人生录 | 一个月薪 120000 的[ 北京 ] 程序员的真实生活
- 概述纵横制电话交换机
- 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
- MATLAB导出coe文件,matlab生成coe文件
- 【毕业设计】基于深度学习的图像超分辨率重建 - opencv python cnn
- python淘宝_python实现淘宝购物系统
- #define宏加括号和不加括号的区别
- 技术达人博客网址大全
热门文章
- 多步相移法获取绝对相位(多频外差法)
- SOA标准化国际论坛即将在京召开
- RJ485接口线序及适用环境
- 找到一个TWAIN扫描控件:Dynamic TWAIN ActiveX 3.0
- JavaScript之form表单提交前验证的onSubmit事件
- 组装计算机的配件2016,2016组装电脑装机教程:第六代i7-6700/GTX960电脑组装教程图解...
- python项目管理岗位职责_项目实施工程师岗位的工作职责表述
- 平面设计PS基础入门图层教程
- MATLAB中readmatrix函数用法
- 自然语言处理的21个基本概念