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

17人阅读 评论(0) 收藏 举报

IP核(IP Core)

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

使用Verilog调用IP核

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

添加IP核

点击Flow Navigator中的IP Catalog

选择Math Functions下的Multiplier,即乘法器,并双击。

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

稍后弹出的窗口,点击Generate

调用IP核

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

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

  1. module demo(
  2. );
  3. reg clk = 0;
  4. always #10 clk = ~clk;
  5. wire [3:0] a = 7;
  6. wire [3:0] b = 8;
  7. wire [7:0] p;
  8. mult_gen_0 mul (
  9. .CLK(clk), // input wire CLK
  10. .A(a), // input wire [3 : 0] A
  11. .B(b), // input wire [3 : 0] B
  12. .P(p) // output wire [7 : 0] P
  13. );
  14. endmodule

行为仿真验证

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

框图(Block Design)中调用IP核

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

创建框图设计文件

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

输入文件名并点击OK

添加IP核

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

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

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

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

绘制电路

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

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

aAB都连接起来。

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

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

最终结果如图。

仿真测试

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

选择第二项并点击OK

打开生成的design_1_wrapper.v文件如图,红框中的代码用来调用前面画好的Block Design模块。

design_1_wrapper.v文件中,添加Testbench代码即可进行行为仿真。修改代码如下,给输入信号a赋初值为8clk连接到Testbench生成的时钟信号c上。

  1. wire [3:0]a = 8;
  2. wire clk;
  3. wire [7:0]p;
  4. reg c = 0;
  5. always #10 c <= ~c;
  6. assign clk = c;

Simulation Sources文件夹下,设置design_1_wrapper.v为行为仿真的顶层文件(右击,选择Set as Top)。

启动行为仿真,最终输出的波形如下。可以看到,在clk的第一个上升沿后,就有 p = a*a = 64,即实现了平方运算。

查看评论

微信公众号使用

-
  • 1970年01月01日 08:00

如何实现Xilinx Microblaze Bootloader

更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们。一般而言,Xilinx Microblaze会被用来在系统中做一些控制类和简单接口的辅助性工作,比如运行IIC、SPI、UART之类的低速接口驱...
  • FPGAerClub
  • FPGAerClub
  • 2018-04-09 21:52:01
  • 17

聊一聊如何实现Xilinx Microblaze Bootloader

本​文​以​x​i​l​i​n​x​ ​k​i​n​t​e​x​ ​7​系​列​F​P​G​A​为​例​,​简​要​的​介​绍​了​如​何​生​成​M​i​c​r​o​b​l​a​z​e​ ​B​o​...
  • haoxingheng
  • haoxingheng
  • 2016-05-02 11:43:29
  • 5701

【Vivado使用误区与进阶】在Vivado中实现ECO功能

更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们。关于Tcl在Vivado中的应用文章从Tcl的基本语法和在Vivado中的应用展开,继上篇《用Tcl定制Vivado设计实现流程》介绍了如何...
  • FPGAerClub
  • FPGAerClub
  • 2018-04-10 21:12:06
  • 58

MicroBlaze实验_1

MicroBlaze实验系列有以下6个部分: 1、GPIO 2、中断,定时器 3、UART 4、DDR 5、SPI,I2C 6、自定义外设 用GPIO,最需要关注的是,BSP...
  • DuinoDu
  • DuinoDu
  • 2015-07-05 07:59:11
  • 1587

手把手教你基于ViVado构建MicroBlaze软核并开发EDK

  • 2017年07月12日 17:04
  • 7.08MB
  • 下载

在嵌入式设计中使用MicroBlaze(Vivado版本)

原文Xilinx官方文档《ug898-vivado-embedded-design》第三章 一、MicroBlaze处理器设计介绍(略) 二、创建带有MicroBlaze处理器的IP设计 使用V...
  • DuinoDu
  • DuinoDu
  • 2015-07-02 10:28:20
  • 7896

Vivado下使用Microblaze控制LED

Vivado 版本 2016.3 之前觉得控制个LED很简单,但实现起来不是很顺利,简单Mark一记。 例化microblaze,led IP 核,自动连接,自...
  • u010942671
  • u010942671
  • 2017-03-30 22:10:59
  • 1773

Vivado_MicroBlaze_问题及解决方法_汇总(不定时更新)

1、 问题描述:从Vivado生成了mb软核文件,并下载到板子上。从Vivado中打开SDK,运行helloworld程序,控制台打印输出。 解决方法1:.在SDK的Run配置选项中,需要在STDIO...
  • DuinoDu
  • DuinoDu
  • 2015-07-03 14:35:24
  • 5833

Xilinx <em>Microblaze</em>教程

EDK ISE<em>使用</em>流程介绍(附例子) Xilinx <em>Microblaze</em>的培训教程火龙刀开发板的文件 EDK Lab Tutorial_PS2_keyboard.pdf EDK 系统仿真辅导资料.pdf How_to_Design_a_...
  • 2018年04月17日 00:00
    个人资料
    等级:
    访问量: 3385
    积分: 73
    排名: 160万+
    文章分类
    文章存档