rowen

Vivado如何创建用户IP核

0
阅读(4797)

       在Zynq开发过程中,我们看到Xilinx为我们提供了很多IP核,很多IP都可以免费使用,但是在我们具体的工程开发中,很多时候需要自己来创建IP核的,这样做的好处主要是:

1、系统设计定制化;

2、设计复用,提高效率,还可加密IP核;


      Zynq芯片是基于FPGA+ARM的方式,在FPGA内部集成了ARM核,而FPGA和ARM通信主要是通过AXI总线,关于AXI总线,可查阅XAPP1168文档,下面就演示如何创建一个用户IP核,并把创建好的IP添加到系统设计中。


开发环境:Vivado 2018.1

开发平台:Zedboard


首先启动Vivado 2018.1,新建工程,在Board列表中选择Zedboard,点Next一步步继续,




选择Tools--Create and Package New IP,打开用户IP创建向导,




选择Create AXI4 Peripheral,点 Next继续,




设置需要创建的IP的信息,继续Next,


在Add Interfaces对话框中,可以选择Interface Type、mode和Data Width等,根据实际情况来选择。继续next,最后通过向导完成了一个基于AXI接口的用户IP,但此时的IP只是提供了AXI总线的模板,还需要我们自己把用户IP的逻辑添加进来。


在IP Catalog中搜索我们刚创建的用户IP名,可以看到已经出现在列表中了,



选中该IP,右键在菜单中选择Edit in IP Packager,系统将会打开另一个Vivado IDE来对用户IP核进行编辑和封装,



在新打开的界面中,打开顶层文件,在user to add ports here处增加用户IP端口,



在子文件中,增加用户逻辑代码,



增加和检查例化文件接口,保存文件。


打开Package IP-axi_PWM,可以看到窗口左侧有很多IP核的信息,大家可以逐个打开看看,我们看到Ports and Interfaces中出现了我们刚添加的接口,



至此,一个简单的用户IP核就创建好了,接下来,我们把这个IP添加进工程设计中,点击Create Block Design,添加ZYNQ Processing system、AXI_GPIO、AXI_PWM三个IP,


点击 Run Block Automation和Run Connection Automation将系统连接起来,完成连接的系统如下图所示: