Vivado 自定义 IP 封装 + Block Design 调用完整流程

目录

  • 第一步:将你的工程封装为IP核
  • [第二步:在Block Design中使用自定义IP核](#第二步:在Block Design中使用自定义IP核)
    • [1. **将IP添加到Vivado IP仓库**:](#1. 将IP添加到Vivado IP仓库:)
    • [2. 在Block Design中例化IP:](#2. 在Block Design中例化IP:)
    • [3. 连线、验证与生成:](#3. 连线、验证与生成:)
  • 如何给新建ip核分配地基地址

第一步:将你的工程封装为IP核

  • 确保工程正确:在封装前,务必保证你的Vivado工程能够综合通过,并且最好完成了功能仿真验证,确保逻辑正确。

  • 启动IP封装向导 :在Vivado主界面,点击菜单栏 Tools → Create and Package New IP...。

  • 选择封装类型 :在弹出的向导中,选择 Package your current project

    (将当前工程打包为IP核)。然后点击Next。

  • 设置IP存放路径 :为你的IP核选择一个存放位置。强烈建议创建一个专门的文件夹来统一管理所有自定义IP核,方便后续维护。然后点击Next。

  • 配置IP信息 :Vivado会基于你的工程创建一个新的IP打包工程,并打开IP Packager界面。在这里,你需要配置几个关键页面:

  • Identification (标识):设置IP的名称(Name)、版本(Version)、描述(Description)等信息。

  • Compatibility (兼容性):选择你的IP核所支持的FPGA器件系列(如Artix-7, Zynq-7000等)。

  • File Groups (文件组):这里会列出IP核包含的所有源文件。你还可以在此处添加仿真文件、约束文件(.xdc)或PDF文档等。

  • Customization Parameters (定制参数):如果你的代码中用到了 parameter (Verilog) 或 generic (VHDL),可以在这里将它们设置为GUI中可配置的参数。例如,你可以为一个串口IP的波特率参数提供下拉菜单选项(如9600,115200)。

  • Ports and Interfaces (端口与接口):这里会显示IP核的所有外部端口。Vivado会自动检测像clk、rst这样的信号。如果你的IP需要连接到AXI总线,需要在这里进行正确的接口定义和映射。

  • 生成IP核 :完成所有配置后,进入最后的 Review and Package 页面,点击 Package IP 按钮,Vivado就会生成最终的IP核文件(.xci文件)

第二步:在Block Design中使用自定义IP核

1. 将IP添加到Vivado IP仓库

  • 打开或新建一个Vivado工程。
  • 在菜单栏选择 Tools → Settings。
  • 在弹出的窗口中,找到 IP → Repository。
  • 点击 + 号,将你存放自定义IP核的文件夹路径添加进来。这样Vivado就能识别到你的IP了。(我的多个ip 工程放在同一个名为 IP 的文件夹中,更新后直接点击Refresh All更新新增IP封装)

2. 在Block Design中例化IP:

  • 创建一个新的Block Design,或打开现有的。
  • 在空白处右键单击,选择 Add IP。
  • 在搜索框中输入你自定义IP核的名称,它就会出现在列表中。双击即可将其添加到Block Design中。
  • (可选)如果你的IP核带有AXI接口,Vivado的 Run Connection Automation 功能可以帮你自动完成与Zynq处理系统(PS)等主设备的连接。
  • 对于没有AXI接口的普通RTL模块,Vivado也支持直接在Block Design中通过 Add Module... 的方式添加。

3. 连线、验证与生成:

  • 手动完成IP核与其他模块的连线,或利用 Run Connection Automation 自动连接。
  • 点击 Validate Design (或按 F6) 按钮检查设计是否正确。
  • 验证通过后,在 Sources 窗口中,右键点击Block Design文件(.bd),选择 Generate OutputProducts 来生成例化文件等。
  • 最后,右键点击Block Design文件,选择 Create HDL Wrapper 来生成设计的顶层HDL文件

如何给新建ip核分配地基地址

右键需要分配地址的模块,点击auto assign address;由于我的已经分配过了,所以显示灰色;若想修改地址,直接双击地址部分修改即可