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

Xilinx Vivado的使用详细介绍(3):使用IP核,第1张

IP核(IP Core)
Vivado中有很多IP核可以直接使用,例如数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、DDS等)。IP核类似编程中的函数库(例如C语言中的printf()函数),可以直接调用,非常方便,大大加快了开发速度。

使用Verilog调用IP核
这里简单举一个乘法器的IP核使用实例,使用Verilog调用。首先新建工程,新建demo.v顶层模块。

添加IP核

点击Flow Navigator中的IP Catalog。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第2张

选择Math FuncTIons下的MulTIplier,即乘法器,并双击。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第3张

将d出IP核的参数设置对话框。点击左上角的DocumentaTIon,可以打开这个IP核的使用手册查阅。这里直接设置输入信号A和B均为4位无符号型数据,其他均为默认值,点击OK。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第4张

稍后d出的窗口,点击Generate。

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

调用IP核

选择IP Sources,展开并选择mult_gen_0 - InstanTIation Template - mult_gen_0.veo,可以打开实例化模板文件。如图,这段代码就是使用Verilog调用这个IP核的示例代码。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第6张

将示例代码复制到demo.v文件中,并进行修改,最终如下。代码中声明了无符号型的4位变量a和b,分别赋初值7、8,作为乘数使用;无符号型的8位变量p,用于保存计算结果。clk为Testbench编写的周期20ns的时钟信号;mult_gen_0 mul(...)语句实例化了mult_gen_0类型的模块对象mul,并将clk、a、b、p作为参数传入。
module demo(
);
reg clk = 0;
always #10 clk = ~clk;
wire [3:0] a = 7;
wire [3:0] b = 8;
wire [7:0] p;
mult_gen_0 mul (
.CLK(clk), // input wire CLK
.A(a), // input wire [3 : 0] A
.B(b), // input wire [3 : 0] B
.P(p) // output wire [7 : 0] P
);
endmodule

行为仿真验证

以demo为顶层模块,启动行为仿真,即可输出波形。设置a、b、p显示为无符号十进制(右击选择Radix - Unsigned Decimal)。如图,可以看到a=7, b=8,第一个时钟上升沿后p = a * b = 56。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第7张

框图(Block Design)中调用IP核
这里举一个简单的例子,通过调用乘法器IP核,产生一个能计算平方的新模块。

创建框图设计文件

选择Flow Navigator中的Create Block Design,创建一个框图设计文件。

输入文件名并点击OK。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第8张

添加IP核

在框图空白处右击,选择Add IP。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第9张

可以直接搜索需要的IP核,双击确认。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第10张

IP核即可被添加进来,可以用导线将其与其他器件连接。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第11张

双击这个IP核符号,可以打开参数设置对话框。点击左上方的Documentation可以查看IP核的手册。这里将输入的A、B均设置为4为无符号型,其他为默认值,点击OK确认。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第12张

绘制电路

右击Diagram窗口空白处,选择Create Port。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第13张

d出窗口中,设置端口a为4位输入信号,并点击OK。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第14张

将a与A、B都连接起来。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第15张

同样的方法,添加一个8位输出端口p,与P连接。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第16张

再添加一个clk时钟输入端口,与CLK连接。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第17张

最终结果如图。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第18张

仿真测试

右击框图设计文件design_1,选择Create HDL Wrapper。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第19张

选择第二项并点击OK。

Xilinx Vivado的使用详细介绍(3):使用IP核,Xilinx Vivado的使用详细介绍(3):使用IP核,第20张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2556919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-06
下一篇 2022-08-06

发表评论

登录后才能评论

评论列表(0条)

保存