Vivado使用技巧:封装自己设计的IP核
概述
Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计。“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线。IP核一部分来自于Xilinx官方IP;一部分来自于第三方IP,其中有的是在网络上开源的;另一部分就是自己设计的IP。有时候我们需要把自己的一个设计反复用到以后的工程中,利用Vivado的“IP Package”将其封装起来,再以后的工程中直接调用即可。
本文致力于讲述如何将自己的设计封装为IP核,以及示范一下如何在其它工程中调用自己设计好的IP核。本文采用的设计是一个简单的位宽可设置的加法器。博主使用的Vivado版本是2017.1,其它版本在一些设置的地方可能存在一些差异。
封装IP
1. 首先建立一个工程用于设计IP核,这个工程最好放在Vivado目录下或不会被删除的地方。添加一个源文件,输入一个简单的组合逻辑加法器的代码:
`timescale 1ns / 1ps
module Add_USR_IP #(parameter WIDTH = 1)(
input [WIDTH:0] a,
input [WIDTH:0] b,
output cout,
output [WIDTH:0] c
);
assign {cout, c} = a + b;
endmodule
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
2. 点击左边“Flow Navigator”中的“Settings”,打开“IP”下的“Packager”。设置自己的IP核的库名和目录,我将Library更改为了“godwar_liuqi”,Category更改为了“/godwar_liuqi_IPLib”。这里也可以用默认值。
3. 点击上方菜单栏中的“Tools”下的“Create and Package New IP”,跟着流程一直走最后Finish即可,将在工作区弹出如下界面,包含了IP核的一些信息,名称为“Add_USR_IP_v1_0”。
调用自己的IP核
再另外新建一个工程,我们尝试调用刚才自己制作的IP核。建立好工程后先不添加源文件。在“Flow Navigator”的“Settings”中选中“IP”下的“Repository”,点击“+”添加,路径指定到刚才封装IP核的目录。点击ok后便会弹出一个框提示找到了一个名为“Add_USR_IP_v1_0”的IP核,也就是刚才创建的加法器。
设置好后在“IP Integrator”中点击“Create Block Design”,创建一张原理图。原理图中点击“+”搜索Add_USR_IP_v1_0,即可看到自己制作的IP核,双击添加到原理图中。如果设计中还需要其它IP核,添加IP后用连线连接起整个系统即可。双击IP核图形,即可弹出配置界面,可以更改加法器的位宽。
这里我们不使用其它IP,直接在Add_USR_IP_v1_0的管脚上右键,点击“Make External”生成管脚信号。结果如下:
在“Design Sources”中我们将看到bd后缀的原理图文件。为了使用方便,保存原理图后我们在文件上点右键,点击“Create HDL Wrapper”,软件会将原理图封装为一个Verilog文件,这个Verilog文件可以供其它模块调用。结果如下所示:
设计好后可以像普通的工程一样综合、实现、生成bit流。值得一提的是,在这个工程中我们是无法查看到Add_USR_IP_v1_0这个IP核的源码的,它是一个黑盒的状态。这也是Vivado提供的IP加密技术,以保护设计者的权益
转载:http://blog.csdn.net/fpgadesigner/article/details/75309278
Vivado使用技巧:封装自己设计的IP核的更多相关文章
- Vivado使用技巧(二):封装自己设计的IP核
由 judyzhong 于 星期五, 09/08/2017 - 14:58 发表 概述 Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原 ...
- vivado设计四:自定义IP核测试
在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...
- 利用IP核设计高性能的计数器
利用Quartus II的LPM_counter IP核进行设计(利用IP核设计可以迅速高效的完成产品的设计) 新建工程 调用IP核 创建一个新的IP核 选择LMP_COUNTER,语言类型,输出路径 ...
- vivado设计三:一步一步生成自己的自定义IP核
开发环境:xp vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...
- Xilinx Vivado的使用详细介绍(5):调用用户自定义封装的IP核
Zedboard OLED Display Controller IP v1 介绍 Author:zhangxianhe 本文档提供了快速添加,连接和使用ZedboardOLED v1.0 IP内核的 ...
- Vivado设计二:zynq的PS访问PL中的自带IP核(基于zybo)
1.建立工程 首先和Vivado设计一中一样,先建立工程(这部分就忽略了) 2.create block design 同样,Add IP 同样,也添加配置文件,这些都和设计一是一样的,没什么区别. ...
- Xilinx Vivado的使用详细介绍(3):使用IP核
ilinx Vivado的使用详细介绍(3):使用IP核 Author:zhangxianhe IP核(IP Core) Vivado中有很多IP核可以直接使用,例如数学运算(乘法器.除法器.浮点运算 ...
- 如何将自己写的verilog模块封装成IP核
如何将自己写的verilog模块封装成IP核 (2014-11-21 14:53:29) 转载▼ 标签: 财经 分类: 我的东东 =======================第一篇========= ...
- Vivado 调用自定义IP核
关于Vivado如何创建自定义IP核有大量的参考文章,这里就不多加阐述了,本文目的主要是解决如何在新建工程中引用其它工程已经自定义封装好的IP核,从而实现自定义IP核的灵活复用. 举个例子,我们的目标 ...
随机推荐
- Linux命令之sync - 强制将内存中的文件缓冲内容写到磁盘
转:http://www.linuxso.com/command/sync.html sync命令 linux同步数据命令 格式: sync 用途:更新 i-node 表,并将缓冲文件写到硬盘中. 功 ...
- ScheduledExecutorService run方法要加入try catch
原文:http://www.andyqian.com/2018/03/07/java/javaSmallDetail/ 前言 今天我们一起来做个简单有趣的实验.熟悉Java的童鞋,对Scheduled ...
- 修改activeMQ端口号
原文:http://jingyan.baidu.com/article/3ea51489fba6a152e61bbacc.html 修改TCP 61616端口 打开您的mq安装目录 请看下图 如下图所 ...
- jq:zclip复制
实例: <script type="text/javascript" src="js/jquery.js"></script> < ...
- [转]SQL Server表分区
本文转自:http://www.cnblogs.com/knowledgesea/p/3696912.html 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区 ...
- JS夯实基础:Javascript 变态题解析 (下)
function sidEffecting(ary) { ary[] = ary[]; } function bar(a,b,c) { c = sidEffecting(arguments); ret ...
- 报错:configure: error: no acceptable C compiler found in $PATH
运行以下命令报错: ./configure 错误: checking whether to enable maintainer-specific portions of Makefiles... ye ...
- 使用git-svn迁移SVN至GitLab
使用git-svn迁移SVN至GitLab 1.安装git和git-svn 后面的步骤中对git版本有一定要求,通过yum安装的git版本较低,这里进行编译安装 [root@DevTest ~]# y ...
- [转] 一篇好文 ---steve jobs (stay hungry, stay foolish)
斯蒂夫•保罗•乔布斯(Steve Paul Jobs,1955年2月24日出生-)是蘋果電腦的現任首席執行長(首席执行官)兼創辦人之一.同時也是Pixar動畫公司的董事長及首席執行長.这是他2005在 ...
- 【转载】Android控件属性大全
控件属性: android属性 Android功能强大,界面华丽,但是众多的布局属性就害苦了开发者,下面这篇文章结合了网上不少资料, 第一类:属性值为true或falseandroid:layout_ ...