基于vivado开发xilinx系列FPGA的冷知识(1)——自定义IP核的封装与后期修改
感慨于各大论坛里关于vivado的一些冷门功能使用技巧十分匮乏,我决定慢慢更新一些自己经历项目实战后的使用心得,仅作抛砖引玉。
第一篇来介绍下开发完毕后以IP核形式打包工程文件的一些操作。
可能很多人是以纯verilog代码+IP核xci文件的形式开发的,这样移植起来确实算是很方便,但是一旦这个工程文件离开你的电脑,你经常会遇到一些问题:
1、大多数情况下是某些文件缺失,只要在add source里重新添加即可。
2、verilog顶层文件调用的子IP核被锁住,右键upgrade后可以解锁,IP恢复为橙色。
3、综合失败,提示需要在tcl中输入指令来解锁,一般输入相应的操作后就好了,IP会变成白色。
4、verilog里调用带ip的verilog文件,又层层套娃,一般会提示你需要把某些ip移到外边,在source窗口右键有这个选项。
这种程序移植的方式当然是没有问题的,硬说有什么缺点在于你几乎需要复制整个工程路径到新的工程,包含大量的冗余文件,要知道某些地方只能用光驱的(笑。并且,因为一些操作不当和vivado的bug,绝大多数情况下是无法直接使用的,你不得不按照以上4条逐步操作一下(其实问题不大)。
因此我推荐使用IP核形式来打包你的工程,优点很多,使用方便,文件很小,打包速度也很快。最重要的一点,封装成IP核并不意味着不能再修改这套代码了,打包的IP核src文件夹里包含了你这套工程一切的verilog和xci文件,只需要在新工程里添加这个文件夹就好了。
一、IP核的封装
打包功能在tool选项的creat and package new IP下,点击next进入打包范围选择的界面
第一项是打包整个工程,第三项是打包一个文件夹。我比较推荐第二项,按照block design来打包,可以在一个大的工程里分别打包几个小模块,比较灵活。话说vivado用户普遍不喜欢用这种方式开发,理由是所谓的移植性差,嘿嘿,见仁见智吧,至少在这里用block是最方便的,关于block design开发技巧我准备单独总结一下。
下个界面是选好生成路径,一路next就完事了,直接进入最后的配置界面:
第一项自己修改名称、版本号、简介之类的信息,重点是ports and interfaces这个界面
使用block design经常会把中间变量的io口(相当于wire,或者是某个module的io)和真正引至顶层文件的io口(top文件的io)弄错,只有使用external才算是顶层文件的io,直接用快捷键ctrl+T吧。
检查好所有的io口就可以选最后一项package IP了。
这些警告一般没什么问题,实在不放心就点一下看看。
二、自定义IP核的使用
自定义的IP一般包含这几个子文件夹,verilog、xci、xdc文件在src里,testbench在sim里,xgui就是个皮肤。
我曾经都是使用IP的方式添加这个IP的,就是下图这个界面:
一个很有意思的地方在于,如果单独添加某个子文件vivado并不能识别出这个ip,一定是要添加整个文件夹。
添加完成后按照常规的方式生成这个IP就能用了。
现在我已经舍弃了这种使用方式,原因很简单,你失去了修改这个IP核的能力。
居然有篇文章说可以先用global生成白色的ip(虽然图里这个是橙色的,但改成白色的也没用的),然后在这里勾掉managed来取消read-only状态来修改,怕不是活在梦里,论坛里就是这样,真真假假。
三、自定义的IP核的后期修改
我十分推荐使用下面这种方式来调用IP核,其实非常简单,将src文件夹整个添加进新的工程里。
说白了,封装IP时就已经将所有的文件有序打包进src这个文件夹里了,这和直接移植veilog代码并无区别。
很可惜的是,之前查遍论坛无人点出这种方法,也是很神秘。
基于vivado开发xilinx系列FPGA的冷知识(1)——自定义IP核的封装与后期修改相关推荐
- FPGA之道(14)IP核介绍
前言 IP核是FPGA开发者的老朋友了,可以这么说,只要是做FPGA开发的,都会利用FPGA的IP核进行开发设计,这不像IC设计,什么都要自己设计,使用IP可以加快产生开发进程. 下面摘自<FP ...
- 【Xilinx AX7103 MicroBalze学习笔记6】MicroBlaze 自定义 IP 核封装实验
目录 实验任务 实验框图 创建自定义 IP 封装 IP IP 封装界面配置 硬件设计(Vivado部分) Block Design搭建 添加 IP 库 约束文件 软件设计(SDK部分) 往期系列博客 ...
- qq自定义diy名片代码复制_「正点原子FPGA连载」第六章自定义IP核-呼吸灯实验
1)摘自[正点原子]领航者 ZYNQ 之嵌入式开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?&id= ...
- Xilinx 系列 FPGA 高速收发器的一些知识
目录 1.GTX概念 1.1 GT定义 1.2 GTX的分布 1.3 GTX结构 2 . ibert 3. DRP端口 1.GTX概念 1.1 GT定义 GT的意思是Gigabyte Transc ...
- (14)Vivado开发流程(FPGA不积跬步101)
一句话的事:你浪费了多少时间,你就有多少时间:没有人能了解你,只有你自己. 1 Vivado 开发流程 1)建立工程 a.打开vivado Vivado 2019.1. b.Create Projec ...
- 一步步学习zynq软硬件协同开发(AX7010/20)【FPGA+ReWorks】:创建自定义IP实现rtc读写
一.实验环境及目的 板卡:AX7010 Vivado版本:2017.4 开发机:I5 2.2GHZ 8GB WIN7_X64 参考文档:<ALINX黑金ZYNQ7000开发平台配套教程&g ...
- Vivado使用技巧(8):Core Container打包IP核
XCI与XCIX文件 通常,在生成Vivado IP核时,在工程目录的.srcs/sources_1/ip路径下会生成对应IP核的文件夹,该文件夹中包含了所有与该IP核相关的文件.最主要的一个文件是X ...
- FPGA实战(五)时钟IP核(MMCM PLL)
来自正点原子的学习笔记 (关于开发板资源的相关理论我不太懂) (本文侧重于简单的理解和应用层面) 时钟IP核(MMCM PLL) 1时钟资源简介 2 硬件设计 3时钟IP核的使用 3.1 创建和配置时 ...
- 野火FPGA征途Pro学习笔记(IP核)
分频器 偶分频器 通过always语句,对系统时钟进型分频,例如4分频:对系统时钟进行计数四次,产生一个高电平的flag信号. 在后级模块中使用时,采用 系统时钟&&flag==1 的 ...
最新文章
- [你必须知道的.NET]第二十二回:字符串驻留(上)---带着问题思考
- win7没有个性化如何把计算机放到桌面,win7系统家庭版右键没有个性化设置桌面壁纸...
- 百度地图与所托瑞安达成深度合作 共同推进商用车安全智能驾驶领域创新
- 关于JDBC的一些笔记
- 编写sonar 插件:No SqaleSubCharacteristic annotation was found on class xxx
- PHP Smarty template for website
- coffeescript html5,HTML5——前端预处理技术(Less、Sass、CoffeeScript)
- 信息学奥赛一本通 1130:找第一个只出现一次的字符 | OpenJudge NOI 1.7 02
- Centos7最小化安装
- 分享三:mysql跨库查询
- ubuntu jdk 安装 【转载】
- html返回顶部动画,基于JavaScript实现回到页面顶部动画代码
- 路由器 刷rom php,路由器刷固件常用命令Openwrt 之mtd/mtd_write烧写固件
- 个人“乱七八糟”笔记和摘要
- kotlin写android,Kotlin安卓开发
- Windows操作系统基础
- Spring单例Bean与单例模式的区别
- js中window。location.search的用法和作用。
- [下载]视频转换工具超级解霸Total Video Converter破解版
- 读书笔记——《我们时代的神经症人格》