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

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
,即实现了平方运算。

本文由jzj1993原创,转载请注明来源:http://www.hainter.com/vivado-basic-usage-3

时间: 2024-08-30 02:00:08

Xilinx Vivado的使用详细介绍(3):使用IP核的相关文章

Xilinx Vivado的使用详细介绍(5):调用用户自定义封装的IP核

Zedboard OLED Display Controller IP v1 介绍 Author:zhangxianhe 本文档提供了快速添加,连接和使用ZedboardOLED v1.0 IP内核的说明.运行在ARM处理器系统上的测试应用程序用于通过其驱动程序的功能与IP进行通信. Vivado设计套件被用作开发环境.硬件验证是在Zedboard上完成的,然而,这个IP可以很容易地应用于其他主板或嵌入式系统. 平台 硬件:Zedboard xc7z020clg484-1 软件:Vivado 2

Xilinx Vivado的使用详细介绍(2):综合、实现、管脚分配、时钟设置、烧写

前面一篇介绍了从新建工程一直到编写代码进行行为仿真,这篇继续进行介绍. 修改器件型号 新建工程时选择过器件型号,如果新建好工程后需要修改型号,可以选择菜单Tools - Project Settings. 弹出窗口中,点击Project Device右侧的按钮,即可选择器件型号. 综合(Synthesis) 综合类似于编程中的编译. 在Flow Navigator或Flow菜单中,选择Synthesis - Run Synthesis:或点击工具栏中的三角形按钮如图,即可开始对设计文件进行综合.

Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench

新建工程 打开Vivado软件,直接在欢迎界面点击Create New Project,或在开始菜单中选择File - New Project即可新建工程. 点击Next 输入工程名称和路径. 选择RTL Project,勾选Do not specify......(这样可以跳过添加源文件的步骤,源文件可以后面再添加). 根据自己的开发板选择器件型号,可以直接通过型号进行搜索,例如Basys3开发板上的芯片型号为xc7a35tcpg236-1.如果不了解或者暂时不写进开发板,可以随便选一个型号,

[转]Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench

新建工程 打开Vivado软件,直接在欢迎界面点击Create New Project,或在开始菜单中选择File - New Project即可新建工程. 点击Next 输入工程名称和路径. 选择RTL Project,勾选Do not specify......(这样可以跳过添加源文件的步骤,源文件可以后面再添加). 根据自己的开发板选择器件型号,可以直接通过型号进行搜索,例如Basys3开发板上的芯片型号为xc7a35tcpg236-1.如果不了解或者暂时不写进开发板,可以随便选一个型号,

xilinx vivado zynq vdma仿真及应用详解(一)

很多人用zynq平台做视频图像开发,但是对vdma了解比较少,上手起来稍微有些困难,我针对这一现象,做了一个基于vivado和modelsim的仿真和应用测试工程,并写篇文章做些介绍,希望能对大家有帮助. 一:xilinx vdma IP例化以及接口介绍 上面图片就是在vivado2015.4中例化vdma的界面,首先对参数做些介绍: Frame Buffers :选择vdma缓存几帧图像,这里默认是写通道和读通道都设置相同的缓存帧数,具体设置多少帧合适一般根据应用来定,比如读写带宽相同,想用d

【OpenHW12参赛手记】ZedBoard-自定义IP核实现+PS成功调用【详细步骤+流程介绍+源码】 转载

文章来源 图片无法复制,请看原文 http://www.eefocus.com/jefby1990/blog/13-03/291975_490bc.html [OpenHW12参赛手记]ZedBoard-自定义IP核实现+PS成功调用[详细步骤+流程介绍+源码] 2013-03-07 17:56:30 分享: (图片请点击查看原图) 软件环境:WIN7_64 + ISE 14.4 (system_edition) 硬件:Zedboard.USB-Cable线 搭建图: 经过前几天的学习,查看数据

JavaScript的数据类型详细介绍 &#94883;

原文: http://blog.gqylpy.com/gqy/491 置顶:来自一名75后老程序员的武林秘籍--必读(博主推荐) 来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我

微铺子点单系统详细介绍 - 争做国内最专业的微信商店平台,微信外卖订餐系统!

什么是微铺子? 微铺子是国内专业的微信点单系统,集成了外卖.点餐.订座等众多功能.通过微铺子,店家可以在微信上建立店铺,消费者只需关注店家的帐号,即可浏览商品与店家的信息,消费者关注到商家后,根据提示,进行点击点单,简单三步,15秒内,即可完成订餐.店家可以通过电脑后台.电子邮件.短信或无线打印机多种方式即时查看订单,并提供相应的服务. 微铺子系统适用于:餐饮.酒店.水果店.蛋糕店.花店.零售.超市等. 微铺子从创立到与合作商家的长期测试,再到正式投入商用,期间不断根据客户的需求完善产品,不断开

自动化运维工具ansible详细介绍

在学习批量管理软件时,首先要明确的知道自己需要什么,网上大神很多,他们都研究到源码上了,写了很多介绍绚丽功能的文档,但其实那些功能基本上我们都用不到,经常被各种文档弄得头脑发晕,此文就是为了简单直白的告诉大家ansible的功能,满足大家的基本需求. 首先确认批量管理我们需要什么:无外乎主机分组管理.实时批量执行命令或脚本.实时批量分发文件或目录.定时同步文件等. 目录 1.      ansible与saltstack对比... 2.      ansible安装... 3.      ans