目录
- 1. 第一步:将你的工程封装为IP核
- 2. 第二步:在Block Design中使用自定义IP核
- 1. **将IP添加到Vivado IP仓库**:
- 2. 在Block Design中例化IP:
- 3. 连线、验证与生成:
- 3. 如何给新建ip核分配地基地址
- 4.Vivado BD 删除模块(IP)残留清理完整方案
- 5. 将自定义IP参数显示在最下面
- 6 BD 层级块 Hierarchy封装
1. 第一步:将你的工程封装为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文件)
2. 第二步:在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文件
3. 如何给新建ip核分配地基地址
右键需要分配地址的模块,点击auto assign address;由于我的已经分配过了,所以显示灰色;若想修改地址,直接双击地址部分修改即可
4.Vivado BD 删除模块(IP)残留清理完整方案
Sources 面板带问号的 IP,就是 BD 画布删掉后、工程缓存 / 文件没同步清理导致的残留,分 4 步从简单到彻底处理:
基础同步修复(优先操作,90% 场景生效)
- 同步 Block Design 状态:
- 打开你的
design_1.bd块设计画布,确认目标 IP 已经在画布上删除干净。 - 保存 BD 文件(
Ctrl+S)。
- 打开你的
- 重新生成关联文件:
- 在 Sources 面板中,右键点击 BD 文件(如
design_1.bd)。 - 选择Generate Output Products,重新生成 BD 关联的 IP 文件。
- 在 Sources 面板中,右键点击 BD 文件(如
- 更新顶层封装:
- 再次右键点击 BD 文件。
- 选择Create HDL Wrapper,更新顶层封装文件。
- 刷新工程视图:
- 点击菜单栏File > Refresh All。
- 检查与清理(若问号仍在):
- 若 Sources 面板中带问号的 IP(如
axi_quad_spi_0)仍然存在:- 选中该 IP。
- 右键点击,选择Remove File from Project(此操作仅从工程中移除引用,不删除本地文件)。
- 重新执行一次Generate Output Products,残留条目通常会消失。
- 若 Sources 面板中带问号的 IP(如
5. 将自定义IP参数显示在最下面
在 IP Packager 中直接拖拽调整
这是最直观的方法,适用于在封装 IP 时微调参数在最终用户配置 GUI 中的显示顺序。
操作步骤:
打开 IP 封装工程:
- 在 Vivado 中,打开你的 IP 封装工程(IP Packager Project)。
进入 Customization GUI 界面:
- 在左侧的 “Package IP” 窗口中,找到并点击Customization GUI页面。
找到并调整参数位置:
- 该页面分为左右两栏。
- 在左侧的“Layout”栏中找到你想要调整顺序的参数(Parameter)。
- 直接按住该参数,将其拖拽到列表中你期望的新位置即可。
重要提示:
- 此方法调整的是参数在最终用户看到的 IP 配置 GUI中的显示顺序。
- 它不会改变 “Customization Parameters” 页面本身的参数列表顺序。
6 BD 层级块 Hierarchy封装
不是独立.bd 文件,双击可以展开编辑,适合单纯整理视图、分组逻辑,不能
单独复用。
- 在顶层 BD 画布,Ctrl 框选你要打包的所有 IP、连线
- 右键 →Create Hierarchy,输入名字(比如data_collect_hier),OK
- 画布上就变成一个单独方块;双击这个方块可以进入内部编辑,自动生成对外端口(信号 / AXI 接口)
- 端口自动生成规则:跨 hier 的线自动引出 port;如果端口不对,可以右键 hier →Synchronize Ports同步更新端口