由 judyzhong 于 星期五, 09/08/2017 - 14:58 发表

概述

  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

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”。

**4**. 在上述界面的“Compatibility”标签下给出了这个IP可以支持的FPGA系列,默认是支持全部系列。“File Groups”中可以看到这个IP包含的文件,可以为这个IP添加一个仿真文件来验证其功能。   

**5**. 我为了实现加法位宽可调整,源程序中使用了parameter参数。打开上述界面中的“Customization Parameters”标签,将看到这个参数WIDTH:

双击WIDTH,将弹出一个参数设置框。里面可以指定这个参数在配置IP核是的格式以及是否可以被用户编辑。我们在这里将“Specify Range”勾选中,将Type更改为“Range of integers”,表示此参数可以选择的范围。将Minimum设置为0,Maximum设置为31,表示该IP核最高可设置为32位的加法器。最后再将“Default Value”指定为7,表示默认为8位加法器。   

**6**. 第3步骤的“Ports and Interfaces”中将看到IP核的管脚信息,“Customization GUI”中将看到IP核的原理图图形。没有问题后切换到“Review and Package”标签,点击“Package IP”会提示成功生成IP核。

调用自己的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://xilinx.eetrend.com/blog/11946

Vivado使用技巧(二):封装自己设计的IP核的更多相关文章

  1. Vivado使用技巧:封装自己设计的IP核

    概述   Vivado在设计时可以感觉到一种趋势,它鼓励用IP核的方式进行设计.“IP Integrator”提供了原理图设计的方式,只需要在其中调用设计好的IP核连线.IP核一部分来自于Xilinx ...

  2. vivado设计四:自定义IP核测试

    在vivado设计三中:http://blog.chinaaet.com/detail/37177已经建立了vivado工程和封装好了自定义IP核. 那么接下来,我们对这个自定义IP核进行测试了:我们 ...

  3. IP核的使用(Vivado中的调用,product guide的查询阅读 ,引脚的设置(位宽,个数,算法等),coe文件的初始化 )

    IP核:Intellectual Property core ,即知识产权核.每个IP核可以实现特定功能,我们在设计一个东西时可以直接调用某个IP核来辅助实现功能. 存在形式:HDL语言形式,网表形式 ...

  4. 利用IP核设计高性能的计数器

    利用Quartus II的LPM_counter IP核进行设计(利用IP核设计可以迅速高效的完成产品的设计) 新建工程 调用IP核 创建一个新的IP核 选择LMP_COUNTER,语言类型,输出路径 ...

  5. Vivado设计二:zynq的PS访问PL中的自带IP核(基于zybo)

    1.建立工程 首先和Vivado设计一中一样,先建立工程(这部分就忽略了) 2.create block design 同样,Add IP 同样,也添加配置文件,这些都和设计一是一样的,没什么区别. ...

  6. SQL开发技巧(二)

    本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...

  7. SQL开发技巧(二) 【转】感觉他写的很好

    本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...

  8. vivado设计三:一步一步生成自己的自定义IP核

    开发环境:xp  vivado2013.4 基于AXI-Lite的用户自定义IP核设计 这里以用户自定义led_ip为例: 1.建立工程 和设计一过程一样,见vivado设计一http://blog. ...

  9. 转:VIVADO使用技巧:设置DCI与内部参考电压

    本文转自:Vivado使用技巧(12):设置DCI与内部参考电压 - 灰信网(软件开发博客聚合) (freesion.com) DCI与内部参考电压 Xilinx FPGA提供了DCI(Digital ...

随机推荐

  1. C#.NET常见问题(FAQ)-如何给Listbox添加右键菜单

    1 拖一个ContextMenuStrip控件,然后可以直接在界面上编辑,也可以在FormLoad的时候动态添加   2 把这两个控件关联起来就可以实现listBox1的右键菜单跟ContextMen ...

  2. 消息队列的使用场景(转载c)

    作者:ScienJus链接:https://www.zhihu.com/question/34243607/answer/58314162来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业 ...

  3. 【CSWS2014 Summer School】大数据下的游戏营销模式革新-邓大付

    大数据下的游戏营销模式革新 邓大付博士腾讯专家工程师 Bio:毕业于华中科技大学,现任腾讯IEG运营部数据中心技术副总监,负责腾讯游戏的数据挖掘相关工作,包括有用户画像,推荐系统,基础算法研究等.主要 ...

  4. Asp.net 之页面处理积累(一)

    1.实现超链接跳转网页直接定位到跳转后页面中部,而不是要往下拖,才能看到想看的内容 (1)在跳转后页面想定位的位置加:<a name="middle" id="mi ...

  5. ora-4031错误

    SQL语句共享的不好,即没有使用绑定变量 来一个SQL语句,在Shared Pool中分配一块内存……再来一个,再分配... 最后共享内存分配完了,有可能都在5k-8K 之间,如果突然又来一个SQL语 ...

  6. sqlplus命令手冊

    show和set命令是两条用于维护SQLPlus系统变量的命令 : SQL> show all --查看全部系统变量值 SQL>show user --显示当前连接用户 SQL>sh ...

  7. 谷歌浏览器禁止window.close的问题

    当一个窗口不是通过window.open或者window.showModalDialog打开的时候,调用JS的window.close() 谷歌浏览器会提示如下警告,并拒绝执行 Scripts may ...

  8. 类的专有方法(__repr__)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #http://blog.csdn.net/yyt8yyt8/article/details/7030416 ...

  9. NFS详解

    00.什么是 NFS (Network FileSystem) NFS 就是 Network FileSystem 的缩写,最早之前是由 sun这家公司所发展出来的. 他最大的功能就是可以透过网络,让 ...

  10. linux 和windows系统下同时可用的UML建模工具(umbrello),超强

    原文地址:linux 和windows系统下同时可用的UML建模工具(umbrello),超强 作者:zhangjiakouzf OPEN SOURCE 的 UML建模工具 -- umbrello   ...