0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何导出IP以供在Vivado Design Suite中使用?

YCqV_FPGA_EETre 来源:XILINX 作者:Aoife Marsh 2021-04-26 17:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在 AXI 基础第 6 讲 - Vitis HLS 中的 AXI4-Lite 简介中,使用 C 语言在 HLS 中创建包含 AXI4-Lite 接口的 IP。

在本篇博文中,我们将学习如何导出 IP 以供在 Vivado Design Suite 中使用、如何将其连接到其它 IP 核与处理器以及如何在板上运行工程。

本篇博文将分为 3 个部分:

1. 从 Vitis HLS 导出 IP。

2. 使用Vivado Design Suite创建硬件。

3. 在Vitis 统一软件平台中编写软件并在板上运行。

01

导出 IP

在AXI 基础第 6 讲 - Vitis HLS 中的 AXI4-Lite 简介中,我们创建了 1 个包含 AXI4-Lite 接口的 IP。如果要把新 IP 连接到任何其它 IP 或者连接到 PS,则首先需要将软件代码综合成 RTL(即,将其转换为硬件)。随后,我们就可以将 RTL IP 导出到 Vivado Design Suite,以便在其中将其连接到其它 IP 核或者连接到 PS。

1.1. 按如下所示编辑代码,然后保存。

int example(char *a, char *b, char *c)

{

#pragma HLS INTERFACE s_axilite port=a bundle=BUS_A

#pragma HLS INTERFACE s_axilite port=b bundle=BUS_A

#pragma HLS INTERFACE s_axilite port=c bundle=BUS_A

#pragma HLS INTERFACE s_axilite port=return bundle=BUS_A

*c += *a + *b;

int result = 0;

result = *c;

return result;

}

1.2. 鉴于我们将在板上运行此代码,因此需要将综合设置更改为对应于可用的开发板的设置。

我这里选择的是 Zynq UltraScale+ ZCU106 评估板。要更改所使用的开发板,请转至“解决方案 (Solution) -》 解决方案设置 (Solution Settings) -》 综合设置 (Synthesis Settings)”,然后选择如下所示高亮的“。..”即可选择可用的开发板。

1.3. 选择屏幕顶部的绿色运行按钮 即可运行 C 语言综合。这样即可将代码转换为 RTL:

1.4. 完成综合后,您可选择“导出 RTL (ExportRTL)”工具栏按钮,或者也可以单击“解决方案 (Solution) -》 导出 RTL (Export RTL)”以打开“Export RTL”对话框。

1.5. 打开的对话框应如下截屏所示。

本文包含有关所有可用选项的详细解释。

选择“配置 (configuration)”选项,为新 RTL IP 添加详细信息。将显示名称更改为“Example”,然后选择“确定 (OK)”。当您在 Vivado Design Suite 中打开自己的 IP 时,将显示此名称。

选择“浏览 (Browse)”按钮以选择 Vivado IP (.zip) 文件的输出位置及其名称。输出的 ZIP 文件将包含您的 RTL IP,您可将其导入 Vivado Design Suite。

1.6. 等待工具完成导出,然后打开 Vivado Design Suite。选择“创建新工程”选项:

1.7. 对于后续所有其它步骤,请选择“下一步 (Next)”。选择器件时,请务必选择您在创建工程时所选的器件。如果您不确定,可在 Vitis HLS 中的“解决方案设置 (solution settings) -》 综合设置 (synthesis settings)”下找到该器件。如果您选择其它器件,那么将您的 IP 导入 Vivado Design Suite 时可能会出现问题。

最后,选择“完成 (Finish)”以打开空工程。

1.8. 要使用 Vivado 工程中生成的 IP,首先必须将新 IP 存储库添加到 Vivado 工程中。此处所示文件夹包含从 Vitis HLS 导出的 .zip 文件。要添加存储库,请选择“设置 (Settings) -》 IP -》 存储库 (Repository)”。选择 + 按钮并在 Vitis HLS 中选择 IP 导出的位置(即,以上第 6 步)。

选择位于对话框底部的“应用 (Apply)”按钮,然后选择“确定 (OK)”。

1.9. 选择 IP 目录 (Select IP Catalog)。现在,您的新存储库应已显示在目录中。

如已成功导入 IP,那么详细信息窗口中所列出的 IP 数量应为“1”。

注:如果列出的 IP 数量为 0,那么您可右键单击自己的新存储库并选择“将 IP 添加到存储库中 (Add IP to Repository)”。选择您从 Vitis HLS 导出的 ZIP 文件。随后,存储库中的 IP 数量应已显示为“1”。如果未显示正确数量,请检查您在 Vitis HLS 中所选的板/器件与您在 Vivado 中所使用的是否相同,否则,则表示您的 IP 可能不兼容。

1.10. 在 Flow Navigator 中,选择“创建模块设计 (Create Block Design)”。

在显示的选项卡中,选择 + 按钮并搜索您在第 6 步中在 Vitis HLS 中指定的 IP 名称(即,Example)。

祝贺您!您已成功创建了 IP、将其从 Vitis HLS 导出并已添加到 Vivado Design Suite 中的模块设计中。

单击 s_axi_BUS_A 旁的 + 按钮即可展开端口。如需获取更多相关信息,请参阅 (PG155 )中的 “端口描述”。

02

创建硬件

您可能会想要连接到 PS 以便充分利用其功能。添加 PS IP(如 ZCU106 评估板上提供的 Zynq UltraScale+ MPSoC IP)即可支持您执行此操作。

2.1. 将 Zynq UltraScale+ MPSoC IP 添加到模块框图中。添加完成后,将在屏幕顶部出现一条提示信息。选择“运行自动连接功能 (Run Connection Automation)”。

2.2. 这样即可得到如下图示。或者,您可为此 IP 手动添加所有器件,并如该图所示连接这些器件。这样即可得到如下图示:

efa3f348-a4b2-11eb-aece-12bb97331649.png

2.3. 右键单击“源 (Source)”选项卡下的《design_name》.bd 以创建 HDL 封装器 (wrapper)。运行综合、运行实现,然后生成比特流。下一步,选择“文件 (File) -》 导出 (Export) -》 导出硬件 (Export Hardware)”。请务必选中包含比特流的选项,并记下所选导出位置。这样即可创建包含所有硬件信息的 XSA 文件。现在,您可以关闭 Vivado。

03

编写软件

鉴于您的硬件已完成创建并导出,我们需要编写软件以向硬件提供操作指示。我们将在Vitis中编写软件。

3.1. 打开 Vitis。在打开的菜单中,选择“创建平台工程 (Create Platform Project)”。这将生成工程基本信息,我们将在其中添加硬件信息(XSA 文件)并编写一些软件定义。出现提示时,请选中“从 XSA 文件创建 (create from XSA file)”选项。随后,我们需要选择以上步骤 2.3 中的 XSA 文件导出位置。继续完成其它设置,最后单击“完成 (Finish)”。

3.2. 下一步,我们需要创建包含软件的应用工程。它将基于我们的平台工程,因此其中包含我们的硬件信息,并且我们需要使用该应用工程在目标板上运行应用。选择“文件 (File) -》 新建 (New) -》 新建应用工程 (New Application Project)”。

3.3. 出现提示时,选中“选择存储库中的平台 (Select a platform from arepository)”选项。选择步骤 3.1 中创建的平台工程,然后单击“下一步 (Next)”。

3.4. 选择 Hello World 模板,然后单击“完成 (Finish)”。

3.5. 现在,Hello World 代码会显示在《application_project_name》/src/helloworld.c下。为了执行完整性检查,我们将通过 JTAG 把示例下载到板上,并使用 UART 终端查看 printf 信息。

为此,请连接目标板,并打开终端仿真器软件(例如,Tera Term)以读取输出消息。如果您不知晓如何执行此操作,请参阅板相关的用户指南。 编译并运行程序。正确完成此操作后,您应可在 Tera Term 中看到 Hello World 打印信息。

3.6. 现在,确认板已正确连接后,下一步即可创建使用 HLS IP 的代码。从Vitis_Code.c复制代码(随附于本教程)并将其粘贴到 helloworld.c 中,替换原有 helloworld 代码。

保存,然后重新编译并运行软件。这次 Tera Term 会提示您提供 2 项输入:A 和 B,这 2 项将作为输入一并传递给 HLS IP 中,并显示结果。

注:由于在 Vitis HLS 中,A 和 B 已定义为“char”类型,因此输入的值上限为 127。

示例代码使用由 Vitis 自动创建的函数,因此开发非常便捷。

在名为X《HLS_IP_name》.h的文件中以及在《platform_project》/hw/drivers/《ex_name》/src 下可找到所使用的函数。

原文标题:开发者分享 | AXI 基础第 7 讲 - 使用 AXI4-Lite 将 Vitis HLS 创建的 IP 连接到 PS

文章出处:【微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146401
  • AXI
    AXI
    +关注

    关注

    1

    文章

    145

    浏览量

    18057
  • HLS
    HLS
    +关注

    关注

    1

    文章

    135

    浏览量

    26035

原文标题:开发者分享 | AXI 基础第 7 讲 - 使用 AXI4-Lite 将 Vitis HLS 创建的 IP 连接到 PS

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    [VirtualLab] 参数扫描结果的导出

    摘要 为了详细分析光学系统的功能和能力,需要能够改变光学系统的参数。为此,VirtualLab Fusion的参数运行提供了多种选项和可以应用不同的变化策略。不同迭代的结果以方便紧凑的方式提供在参数
    发表于 05-22 08:42

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件上的简单硬件设计。
    的头像 发表于 04-09 09:53 467次阅读
    使用Python/MyHDL创建自定义FPGA <b class='flag-5'>IP</b>

    AMD Versal CPM5 QDMA Gen4x8 ST Only Performance Design CED示例

    本篇博文演示了在AMD Vivado Design Suite 2024.1 中生成 CPM5_QDMA_Gen4x8_ST_Only_Performance_Design 并使用为
    的头像 发表于 03-23 09:12 1890次阅读
    AMD Versal CPM5 QDMA Gen4x8 ST Only Performance <b class='flag-5'>Design</b> CED示例

    【请教】FPGA烧录软件工具二次开发问题

    请教各位大佬: Vivado 2018.3和Pango Design Suite 2025.1 这两款FPGA烧录软件工具能够二次开发吗?实现上位机控制软件调用它们,实现自动化的FPGA测试程序烧录和烧录成功的反馈信号。
    发表于 03-17 16:34

    VivadoIP核被锁定的解决办法

    当使用不同版本的Vivado打开工程时,IP核被锁定的情况较为常见。不同版本的VivadoIP核的支持程度和处理方式有所不同。
    的头像 发表于 02-25 14:00 668次阅读
    <b class='flag-5'>Vivado</b>中<b class='flag-5'>IP</b>核被锁定的解决办法

    Include File解锁Vector Logger Suite高阶功能

    Include File(inc文件)是Vector Logger Suite(VLS)中使用LTL代码片段的关键机制。通过Include File,用户可以在LTL代码中灵活定义参数、触发
    的头像 发表于 12-30 09:44 674次阅读
    Include File解锁Vector Logger <b class='flag-5'>Suite</b>高阶功能

    电能质量在线监测装置的多维度统计报表支持远程访问导出吗?

    装置 IP 地址访问内置 Web 服务器,浏览并导出报表 操作步骤: 确认装置 IP(通过面板菜单或管理软件) 在电脑浏览器输入 IP 地址并登录 导航至 "报表 / 统计" 模块,选
    的头像 发表于 12-17 15:39 611次阅读
    电能质量在线监测装置的多维度统计报表支持远程访问<b class='flag-5'>导出</b>吗?

    AMD Vivado Design Suite 2025.2版本现已发布

    AMD Vivado Design Suite 2025.2 版本现已发布,新增对 AMD Versal 自适应 SoC 的设计支持,包含新器件支持、QoR 功能及易用性增强。
    的头像 发表于 12-09 15:11 1510次阅读

    vivado中,怎么将e203内核源代码封装成ip核,并添加总线?

    vivado中,怎么将e203内核源代码封装成ip核,并添加总线?
    发表于 11-10 07:22

    vcs和vivado联合仿真

    我们在做参赛课题的过程中发现,上FPGA开发板跑系统时,有时需要添加vivadoip核。但是vivado仿真比较慢,vcs也不能直接对添加了vivado
    发表于 10-24 07:28

    Vivado浮点数IP核的一些设置注意点

    Vivado浮点数IP核的一些设置注意点 我们在vivado2018.3中使用了Floating-point(7.1)IP核,可以自定义其
    发表于 10-24 06:25

    在AMD Versal自适应SoC上使用QEMU+协同仿真示例

    Cortex A72 (QEMU) 上运行的固件进行仿真,该固件会访问当前 AMD Vivado Design Suite 仿真中正在进行仿真的 PL 中的 IP。本文将使用 Ver
    的头像 发表于 08-06 17:21 2271次阅读
    在AMD Versal自适应SoC上使用QEMU+协同仿真示例

    Vivado无法选中开发板的常见原因及解决方法

    在使用 AMD Vivado Design Suite 对开发板(Evaluation Board)进行 FPGA 开发时,我们通常希望在创建工程时直接选择开发板,这样 Vivado
    的头像 发表于 07-15 10:19 2041次阅读
    <b class='flag-5'>Vivado</b>无法选中开发板的常见原因及解决方法

    AMD Vivado Design Suite 2025.1现已推出

    AMD Vivado Design Suite 2025.1 现已推出,支持 AMD Spartan UltraScale+ 和新一代 Versal 器件。这一最新版本还新增了多项功能,可显著提升 Versal SSIT 器件的
    的头像 发表于 06-16 15:16 1765次阅读

    如何使用AMD Vitis HLS创建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 来创建一个 HLS IP,通过 AXI4 接口从存储器读取数据、执行简单的数学运算,然后将数据写回存储器。接着会在 AMD Vivado Design
    的头像 发表于 06-13 09:50 2403次阅读
    如何使用AMD Vitis HLS创建HLS <b class='flag-5'>IP</b>