【ZYNQ】自定义IP核的封装

IP核打包器的配置

  在Block Designer设计中,使用官方IP核能够大大减少开发难度,增强代码的可阅读性和简洁性,我们只需阅读IP核的相关文档,就能对IP核进行配置并使用它,但是在某些情况下,并不存在符合我们设计要求的IP核,此时就需要我们将自主设计的模块功能封装成IP核的形式,并能够与其它IP核相连接,投入使用,在本文中主要介绍将当前工程封装成IP核的流程
选中Tools>Settings>IP>Packager便可弹出IP核打包器的配置界面:
在这里插入图片描述
Default Values:
Vendor:在打包新IP时,提供供应商名称,例如公司域名;
Library:设置IP核的关联库,此分类联通供应商一起与IP名称使用,以创建唯一标识符;
Category:指定IP目录中要放置IP的类别,例如/UserIP;
IP Location:指定打包IP的位置;
Automatic Behavior:
Create archive of IP此选项自动创建IP核的存档(ZIP格式);
Add IP to the IP Catalog of the current project:将当前IP添加到IP目录;
Close IP Packager wiindow:完成IP打包后,自动关闭打包IP的窗口;
Delete project after packaging:选中或取消打包后删除项目复选框,以在重新打包后IP后删除迭代编辑项目。

IP核打包的基础知识

选中Tools>Create and Package New IP会出现三个不同的选项:
1、Package your current project,选中后就会使用当前的Vivado项目作为创建新IP定义的HDL源,注意:*打包含有BD的项目将丢失BD的边界属性或元数据(例如FREQ_HZ、X_INTERFACE_属性等),要保留此信息,必须手动将其从BD包装文件(例如:design_1.v)添加或复制到项目的顶部源文件中,此外不允许使用DCP源打包项目
2、Package a block design from the current project,此选项仅使用当前Vivado工程中的blocker designer源来创建新IP,向导完成后,将BD项目打包成IP以包含在用户IP存储库中,此选项的好处在于如果用户意图是仅用top_level HDL打包器来包装BD(blocker designer),那此选项是首选项,另外此选项还将保留BD设计中所有的寻址信息;
3、Package a specified directory,此选项将会使用指定文件作为创建新IP的HDL源,向导完成后,它会将指定目录的内容打包为IP,以包含在IP存储库中,此选项好处在于不需要查看Vivado项目中的文件结构即可打包IP,相反,IP Packager从指定目录的内容和结构推断打包所需的文件类型,因此需要在指定目录下包含不同类型IP源的文件夹类型。

Top-Level HDL 要求:这里只提一点,如果是Verilog语言,模块声明不支持复杂端口或拆分端口。
注意:IP打包的程序不支持自定义的函数。

IP核顶层接口的命名规范

Reset接口

Vivado打包程序可以自动推断出时钟和复位接口,这有助于使用自定义IP来验证block中的时钟和复位接口,如果复位接口不包含所需要的术语,可以手动创建接口并相应设置属性。下表描述了是如何根据接口的命名来推断复位接口的,注意:[**_ ]和[_*]是可选的,*匹配任何文本。另外,请注意,命名不区分大小写。
在这里插入图片描述
对于以 n n n结尾的复位接口,如resetn和aresetn,这意味着为低电平有效信号,接口会自动将POLARITY参数设置为active_Low。

Clock接口

接着来看时钟接口是如何推断的,为了正确推断出时钟接口,时钟信号也需要一个必要的命名法,如果时钟接口不包含所需的术语,可以手动创建接口并为其设置相应属性
在这里插入图片描述

差分Clock接口

为了正确推断差分时钟接口,差分对的每个引脚都需要相同的命名法,如下表所示
在这里插入图片描述

AXI接口

推断AXI接口的正确命名方法是确保端口名由接口名后跟AXI信号组成。只要每个端口的名称一致,就可以对接口使用任何名称。下表是一个命名的约定示例,用于推断具有接口名称s0_axis的AXI4 Stream接口
在这里插入图片描述

升级自定义IP

对于自定义的IP核,当IP目录中有更新的版本可用时,不必升级,所有版本都可以定制和使用。但是,在自定义IP中使用Xilinx IP时,迁移到新的Vivado版本时,可能会导致自定义IP被锁定。此IP被锁定是因为自定义IP中使用的IP必须升级。如果不想更新自定义IP的任何信息,则必须确保所有的输出产品都是从以前支持的版本中完全生成的。对于Xilinx IP,每个版本的Vivado Design Suite中只提供一个IP版本。若在IP Status报告中提示缺少子核心,则说明创建自定义的IP核中使用的是以前版本的IP核,已不存在。

创建和打包IP向导

  • Tools>Create and Package New IP>Next,选择适合自己的封装方式
    在这里插入图片描述
    1、选中Package your current project后点击Next,便会弹出如下界面:
    在这里插入图片描述
    IP打包器会在IP Location中创建指定IP的目录,默认其情况下,IP位置是在项目的/source目录。在这里我选择更改路径,单独存放ip,要说明一下指定的目录会生成多个文件夹,vivado会把工程大体复制一遍到这里,便于以后修改更新后re-package,然后勾选Include .xci files ,完成以后,新建的工程会多出来一个选项Package IP,对封装IP进行设置,界面如下:
    在这里插入图片描述
    Identification中Categories就是封装完后,IP存放的目录,如果在顶层文件中再次增添或修改了端口名称,打开Package IP 窗口后会出现一个合并更改的横幅,叫Merge changes from Ports and Interfaces wizard。在Review and Package选项中点击Edit packaging settings会回到IP打包器的配置界面,在前面已介绍,提示:勾选Delete project after packaging后,就会删除新建的IP工程,想要更改IP配置,就需要找到源工程,重新打包成IP,若不勾选,则只需对新建的工程再次修改并重新打包即可,所有的配置好以后,就可以点击Package IP 。

自定义IP核的调用

至此,自定义IP核已封装完成,使用时需要将封装好的IP核文件夹复制到工程文件夹下,然后选中工程的IP Catalog,右击Vivado Repository,点击Add Repository,选中封装好的IP核文件夹,即可将其添加到工程的IP核库中,进行使用。

考虑到我说的可能不够完善,不够直接,在这里我添加两个链接,大家可以去看看。
自定义IP核的封装
IP核的管理和使用
封装IP核官方文档ug1118

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xilinx_zynq7020 自定义 IP 开发文档是一份描述如何开发和使用自定义 IP(Intelligent Property)的技术文档。Zynq-7020 是 Xilinx 公司生产的一款可编程逻辑器件,搭载了 ARM 处理器和 FPGA 芯片,能够同时实现软件和硬件设计,为嵌入式系统开发提供一种更灵活的解决方案。 在自定义 IP 开发文档中,我们将了解如何使用 Vivado 设计套件来开发自己的 IP。首先,我们需要对 IP 的功能和硬件架构进行规划和设计。可以选择将已有的硬件模块集成为 IP 核,也可以通过硬件描述语言(HDL)从零开始编写 IP 核。然后,我们将详细说明如何使用 Vivado 的 IP Integrator 工具集成 IP 核到我们的设计中,并进行连接和配置。 在自定义 IP 开发文档中,我们还将了解如何为 IP 核创建适当的接口,包括输入输出端口和控制寄存器等。可以通过使用 AXI 或者其他总线协议来定义接口。此外,我们还将学习如何为 IP 核编写相应的测试代码,并在仿真和实际硬件中进行验证和调试。 除了基础的 IP 开发知识,这份文档还提供了一些高级话题,如如何优化 IP 核的性能,如何编写可重用的 IP 代码等。另外,文档还包含了一些实际案例,以帮助读者更好地理解和应用这些知识。 总之,xilinx_zynq7020 自定义 IP 开发文档详细介绍了如何使用 Vivado 设计套件开发和使用自定义 IP 核。通过学习这份文档,读者可以了解到 IP 开发的基础知识,掌握相关工具的使用方法,并具备开发和优化 IP 核的能力,从而更好地应用于各种嵌入式系统开发中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值