vivado中复数乘法器的ip核调用及其仿真的详细介绍
复数乘法器的ip核可在下图的中找到
ip核的输入配置和输出配置如下图所示
当我们在选择multplier construction的Use LUTs选项时,选择的是三次乘法的算法,相比于四次乘法的选项用的资源会少一点,代价是要额外占用一些数据表。
输出的实部和虚部间有空位的原因如下图所示:
![](/assets/blank.gif)
配置成功之后,就可以点击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加入才完整 加入文件夹后如下图: 测试代码与主程序模块连接端口初学者容易出现错误 输入端口:从模块内部来讲,输入端口必须 ...
最新文章
- c语言分手代码大全,C语言代码大全
- ajax的数据库,AJAX 数据库
- java中改变字符串编码
- terminal 常用 快捷键
- 时间相减得到小时数 java_【高中数学】错位相减公式求差比数列的和
- 一根网线有这么多“花样”,你知道吗?
- python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...
- 我的XX游戏面试之旅
- 【note】Java程序设计基础第五版(下)
- DataFormatString 转
- illustrator cs5 2学习笔记
- 知识图谱(关系网络)概念及常用算法
- 【总结】1361- package.json 与 package-lock.json 的关系
- 学习方法推荐——时间管理
- PacBio和NanoPore两种三代测序仪的比较
- 2023基于微信小程序的校园第二课堂活动报名系统+后台管理系统(Springboot+mysql)-JAVA.VUE(论文+开题报告+运行)
- 架构设计--软件工程
- CodeSign重签名
- 网站 SEO 处理 ?
- Druid学习笔记(2)Druid架构剖析
热门文章
- 相位解包裹(六)质量图导向法quality guide phase unwrapping(QGPU)
- Provisioning Services 7.8 入门系列教程之五 使用Provisioning Services控制台
- 流量拷贝-gor,压测
- 删除的文件怎么恢复?恢复方法在这里(支持Win和Mac)
- c语言assert_param,STM32断言机制assert_param()宏定义
- SBEC016智能电池管理方案
- 阿里云服务器域名解析教程 ?
- C语言实现泛型 C11关键字_Generic
- php体验课心得体会,【授课心得】_授课心得体会(精选5篇)
- 红蓝对抗-攻防演练中红队如何识别蜜罐保护自己