System Generator学习——使用 AXI 接口和 IP 集成器

文章目录

  • 前言
  • 一、目标
  • 二、步骤
    • 1、检查 AXI 接口
    • 2、使用 System Generator IP 创建一个 Vivado 项目
    • 3、创建 IP 集成设计(IPI)
    • 4、实现设计
  • 总结


前言

在本节中,将学习如何使用 System Generator 实现 AXI 接口。将以 IP 目录格式保存设计,并在 Vivado IP Integrator 环境中使用生成的 IP。然后,还将看到 IP Integrator 在使用 AXI 接口时如何通过提供连接辅助来提高我们的工作效率。


一、目标

完成本实验后,你将能够:

  • 在你的设计中实现 AXI 接口
  • 将你的设计作为 IP 添加到 Vivado IP 目录中
  • 连接你的设计在 IP 集成器

二、步骤

这个练习有四个主要部分:

  • 在第 1 步中,将回顾如何使用 System Generator 实现 AXI 接口
  • 在第 2 步中,将为 System Generator IP 创建一个 Vivado 项目
  • 在步骤 3 中,将使用 System Generator IP 在 IP Integrator 中创建一个设计
  • 在步骤 4 中,将实现设计并生成 FPGA 比特流(用于对 FPGA 编程的文件)

1、检查 AXI 接口

在这一步中,我们将回顾如何定义和创建 AXI 接口
①、启动 System Generator 并打开 Simulink 将 Lab5\Lab5_1.slx 打开,如下图所示。这将打开如下图所示的设计。

这个复杂很多,是一个 DES 算法,用于数据加密/解密,由于本次设计只是为了使用 System Generator 实现 AXI 接口,并将涉及到出到 Vivado IP 的目录下以及在 Vivado 的工程中进行 IP 的使用,所以就不对设计文件进行具体分析,在模型文件中的空白区域有个英文的注释,对模型进行了详细的描述。

在这里插入图片描述
本设计使用了多个 AXI 接口。您将很快回顾这些内容

  • 使用 AXI 接口允许导出到 Vivado IP 目录的设计有效地集成到使用 IP Integrator 的更大系统中
  • 导出到 IP Catalog 的设计并不要求使用 AXI 接口

本设计使用以下 AXI 接口:

  • 端口 s_axis_source_* 使用 AXI4-Stream 接口。所有网关输入和输出信号都以相同的名称(s_axis_source_)作为前缀,确保它们被分组到相同的接口中。所有端口的后缀都是有效的 AXI4-Stream 接口信号名称(tready、tvalid、tlast 和 tdata)
  • 类似地,对 m_axis_dout_* 端口使用了一个 axis4-stream 接口
  • 剩下的端口使用了一个 AXI4-Lite 接口。你可以使用以下步骤进行确认

双击 Gateway In 的实例,decrypt(或者是其他的 reset,Keys[63:32],Keys[31:0] 以及 parity_err),在属性编辑界面选择 Implementation 这一项,Interface 选项设定的是否为 AXI4-Lite,依次将讲到的所有 Gate 实例都检查一遍,确保接口选择的是 AXI4-Lite。举例如下
在这里插入图片描述
点击 OK 保存并关闭

2、使用 System Generator IP 创建一个 Vivado 项目

在此步骤中,你将创建一个用于创建硬件设计的 Vivado 项目
①、双击 System Generator 令牌以打开 Properties Editor,在属性编辑器中,确保为编译类型选择了 IP Catalog,单击 Generate 以 IP Catalog 格式生成设计
在这里插入图片描述

②、单击 OK 以关闭编译状态对话框
在这里插入图片描述
该设计以 IP Catalog 格式写入到 D:/Project/SystemGenerator_Prj/Lab5_1 目录中。现在,将把该 IP 导入到 Vivado IP Catalog 中,并在现有的示例项目中使用该 IP

③、开始创建 Vivado 工程
<1>、打开 Vivado 2017.4,打开后,点击 Create Project 创建新工程
在这里插入图片描述
<2>、点击 Next,将工程路径设置为刚刚 System Generaotr 导出文件对应的 D:/Project/SystemGenerator_Prj/Lab5_1 对应的目录路径,工程名字可默认,也可自行定义
在这里插入图片描述
<3>、点击 Next,选 RTL Project,把 Do not… 这个勾选上,然后 Next
在这里插入图片描述
<4>、我这里选择我手头的一块 FPGA 板子,相关参数如下:
在这里插入图片描述
<5>、点击 Next,然后检查下总结,无误后点击 Finish。
在这里插入图片描述

3、创建 IP 集成设计(IPI)

在这一步中,将使用 System Generator IP 创建一个设计
①、单击 “Create Block Design” 窗格中的“创建块设计”
在这里插入图片描述

②、在 “Create Block Design” 对话框中,单击 “确定” 接受默认名称。你将首先为 System Generator IP 创建一个 IP 存储库,并将 IP 添加到存储库中,点击 OK
在这里插入图片描述

③、右键单击 Diagram 窗口并选择 IP Settings
在这里插入图片描述

④、在 Settings 的界面下,依次找到 Project Settings -> IP -> Repository,然后在右边点击 “+”,添加相关的 IP 文件到存储库中
在这里插入图片描述

⑤、然后在弹出的文件选择界面,找到通过 System Generator 生成的 IP 文件,本设计的路径:D:\Project\SystemGenerator_Prj\Lab5_1\ip,选好 ip 后点击Select,然后再弹出的 Add Repository 对话框点 OK
在这里插入图片描述
这时候的 IP Repositories 界面就多了一项,点击 OK 保存并关闭
在这里插入图片描述

⑥、Diagram 界面中的中间有个 “+”,单击界面的“+”,然后再弹出的对话框,搜索 zynq,然后双击 ZYNQ7 Processing System,将其添加到设计中
在这里插入图片描述

⑦、添加成功后,点击 Diagram 下的 Run Block Automation
在这里插入图片描述
在出现的界面,确保 option 下的 Apply Board Preset 是选择的,然后保持默认配置,点击 OK
在这里插入图片描述

⑧、回到 Diagram 界面,在空白处右键单击,然后选择 Add IP
在这里插入图片描述
在对话框中输入 System Generaor 设计的文件名,本设计的名字为 Lab5_1,双击 Lab5_1
在这里插入图片描述

⑨、接下来就需要将 IP 连接到设计的其余部分,当使用 AXI 接口的时候,Vivado IP Integrator 提供了自动连接的功能,在 Diagram 的空白部分点一下,确保没选中 AXI 模块,然后点击 Run Connection Automation
在这里插入图片描述
在出现的对话框保持默认状态,然后按 OK 继续
在这里插入图片描述
等待一下会儿,连线完成,结果如下
在这里插入图片描述

⑩、双击 ZYNQ7 Processing System 以自定义 IP,在出现的界面点击 PS-PL Configuration,展开 HP Slave AXI Interface 然后选择 S AXI HP0 interface,将框框勾上,如下
在这里插入图片描述
点击 OK,将此端口添加到 ZYNQ7 Processing System
在这里插入图片描述

⑪、找到 AXI 模块的输入接口,s_axis_source,然后用鼠标拖到 processing_system7_0 的 S_AXI_HP0 接口,然后会出现绿色的勾
在这里插入图片描述
松开鼠标,弹出的对话框,直接点击 OK,让其自动连接
在这里插入图片描述
然后继续点击上方的 Run Connection Automation,出现的界面保持默认配置,点击 OK,使得其余的线连接完成,连接后的结果如下:
在这里插入图片描述

⑫、在 Diagram 的下方有个 Validate Design 的工具,使用它来进行设计的检查,确保无误
在这里插入图片描述
单击该按键,等待一会儿,出现检查结果,说明此时无误
在这里插入图片描述

点击 OK 关闭,此时已经相当于 System Generator 的设计已经成功的导入 IP Integrator 的设计中,存储库的 IP 可以在任何 Vivado 的项目中进行使用,只需要将存储库添加到项目中即可。

接下来将完成设计的最后一步,运行设计生成比特流数据。

4、实现设计

在这一步中,您将实现 IPI 设计并生成比特流
①、在 Flow Navigator 的界面下,点击 Project Manager,使其返回到工程管理的界面
在这里插入图片描述

②、Sources 的菜单下,对 Design Sources 下的设计即 design_1 右击,并单击 Generate Output Products
在这里插入图片描述

③、在 Generate Output Products 的对话框下,点击 Generate 开始启动以生成必要源文件的过程
在这里插入图片描述

④、等待生成完成后,再一次右击 design_1,选择 Create HDL Wrapper
在这里插入图片描述

⑤、保持默认的 Let Vivado manage wrapper and auto-update,然后点击 OK 退出窗口
在这里插入图片描述

⑥、这时候的 Design Sources 的源文件已经变成了 design_1_wrapper.v,这时的文件已经可以被用于综合,实现以及生成 FPGA下 载所需的比特流数据。
在这里插入图片描述

⑦、在 Flow Navigator 菜单下,点击 Generate Bitstream,用以启动其余部分
在这里插入图片描述
在弹出的界面点击 Yes,继续运行
在这里插入图片描述
出现 Launch Runs 的对话框,按 OK 开始运行
在这里插入图片描述

⑧、等待编译完成后,在出现的对话框中,选择 Open Implemented Design 并且点击 OK
在这里插入图片描述
⑨、观察此时已实现的设计,设计最后一步也到此结束,可以关闭 Vivado 了。
在这里插入图片描述


总结

在本实验中,你了解了如何将 AXI 接口添加到 System Generator 设计中,以及如何将 System Generator 设计保存为 IP Catalog 格式,合并到 Vivado IP Catalog 中,并在更大的设计中使用。还看到了在设计中使用 AXI 接口时, IP Integrator 如何通过连接自动化和提示大大提高生产率。


我的qq:2442391036,欢迎交流!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/148941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB-基于直方图优化的图像去雾技术】

【MATLAB-基于直方图优化的图像去雾技术】 1 直方图均衡2 程序实现3 局部直方图处理 1 直方图均衡 直方图是图像的一种统计表达形式。对于一幅灰度图像来说&#xff0c;其灰度统计直方图可以反映该图像中不同灰度级出现的统计情况。一般而言&#xff0c;图像的视觉效果和其直方…

HUAWEI悦盒ec6108v9c 如何刷成海纳思系统(家用低功耗服务器,使用Home Assistant服务)

环境&#xff1a; 1.HW悦盒ec6108v9c一套 2.16G U盘 3.格式化软件USB_format.exe 4.固件 mv100-mdmo1g-usb-flash.zip&#xff08;底层是Ubuntu 20.04系统&#xff09; 5.十字螺丝刀 6.翘片/薄铲子 7.有线网络环境 8.镊子/回形针 问题描述&#xff1a; 最近玩智能家居…

OpenCV项目开发实战--使用最先进的方法“F、B、Alpha Matting”进行图像抠图--提供完整代码

示范 让我们对现实生活中的图像启动 FBA Matting 方法。要应用 FBA Matting 算法,我们首先需要生成一个 trimap(我们稍后会介绍它是什么)。在我们的演示中,我们将使用预训练的DeepLabV3生成分割掩模,其中每个像素属于前景类的概率。之后,我们将使用大量膨胀操作将边界像…

面向无线传感器网络WSN的增强型MODLEACH设计与仿真(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

QT4.8.7安装详细教程

QT4.8.7安装详细教程&#xff08;MinGW 4.8.2和QTCreator4.2.0&#xff09; 1.下载及安装2.配置环境 此文是在下方链接博文的基础上&#xff0c;按自己的理解整理的https://blog.csdn.net/xiaowanzi199009/article/details/104119265 1.下载及安装 这三个文件&#xff0c;顺序是…

微信小程序代驾系统源码(含未编译前端,二开无忧) v2.5

简介&#xff1a; 如今有越来越多的人在网上做代驾&#xff0c;打造一个代驾平台&#xff0c;既可以让司机增加一笔额外的收入&#xff0c;也解决了车主酒后不能开发的问题&#xff0c;代驾系统基于微信小程序开发的代驾系统支持一键下单叫代驾&#xff0c;支持代驾人员保证金…

Elasticsearch安装访问

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…

C++ 类和对象篇(四) 构造函数

目录 一、概念 1. 构造函数是什么&#xff1f; 2. 为什么C要引入构造函数&#xff1f; 3. 怎么用构造函数&#xff1f; 3.1 创建构造函数 3.2 调用构造函数 二、构造函数的特性 三、构造函数对成员变量初始化 0. 对构造函数和成员变量分类 1. 带参构造函数对成员变量初始化 2. …

MyBatisPlus(十一)判空查询:in

说明 判空查询&#xff0c;对应SQL语句中的 in 语句&#xff0c;查询参数包含在入参列表之内的数据。 in Testvoid inNonEmptyList() {// 非空列表&#xff0c;作为参数List<Integer> ages Stream.of(18, 20, 22).collect(Collectors.toList());in(ages);}Testvoid in…

Gorsonpy的计算器

Gorsonpy的计算器 0.页面及功能展示1. PSP表格2.解题思路描述3.设计实现过程4.程序性能改进5.异常处理6.单元测试展示7.心路历程和收获 这个作业属于哪个课程https://bbs.csdn.net/forums/ssynkqtd-05这个作业要求在哪里https://bbs.csdn.net/topics/617294583这个作业的目标完…

手边酒店V2独立版小程序 1.0.21 免授权+小程序前端

手边酒店小程序独立版酒店宾馆订房系统支持创建多个小程序&#xff0c;让每一个客户单独管理属于自己的小程序。后台支持一键入住&#xff0c;一键退款、退押金、钟点房支持微信支付、模板消息。客服实时收到新的订单信息&#xff0c;可以在手机端处理订单。支持按日期维护房价…

基于SpringBoot的智能推荐的卫生健康系统

目录 前言 一、技术栈 二、系统功能介绍 用户管理 科室类型管理 医生信息管理 健康论坛管理 我的发布 我的收藏 在线咨询 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在…

python+pygame+opencv+gpt实现虚拟数字人直播(一)

AI技术突飞猛进&#xff0c;不断的改变着人们的工作和生活。数字人直播作为新兴形式&#xff0c;必将成为未来趋势&#xff0c;具有巨大的、广阔的、惊人的市场前景。它将不断融合创新技术和跨界合作&#xff0c;提供更具个性化和多样化的互动体验&#xff0c;成为未来的一种趋…

2023年【道路运输企业主要负责人】试题及解析及道路运输企业主要负责人复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 道路运输企业主要负责人试题及解析参考答案及道路运输企业主要负责人考试试题解析是安全生产模拟考试一点通题库老师及道路运输企业主要负责人操作证已考过的学员汇总&#xff0c;相对有效帮助道路运输企业主要负责人…

分布式操作系统

分布式操作系统属于多机操作系统&#xff0c;能够统一一套计算机集群&#xff0c;相比单机系统&#xff0c;分布式操作系统在管理计算机集群方面要简单很多。各种分布式的基础功能&#xff0c;都集中到分布式操作系统来实现&#xff0c;而不是单机系统的应用软件来实现&#xf…

Linux:TCP三握四挥简析

文章目录 1. 前言2. 背景3. TCP连接的建立和断开3.1 TCP协议状态机3.2 TCP的三握四挥3.2.1 TCP 连接建立的三次握手过程分析3.2.1.1 服务端和客户端套接字的创建3.2.1.2 服务端进入 LISTEN 状态3.2.1.3 服务端在 LISTEN 状态等待客户端的 SYN 请求3.2.1.4 客户端向服务端发送 S…

Android改造CardView为圆形View,Kotlin

Android改造CardView为圆形View&#xff0c;Kotlin 可以利用androidx.cardview.widget.CardView的cardCornerRadius特性&#xff0c;将CardView改造成一个圆形的View&#xff0c;技术实现的关键首先设定CardView为一个宽高相等的View&#xff08;正方形&#xff09;&#xff0c…

PyTorch入门之【tensor】

目录 tensor的创建tensor的相关信息tensor的运算 tensor的创建 1.手动创建 import torch test1torch.tensor([1,2,3])#一维时为向量 test2torch.tensor([[1,2,3]])#二维时为矩阵 test3torch.tensor([[[1,2,3]]])#三维及以上统称为tensor print(test1) print(test2) print(tes…

opencv图像数组坐标系

在OpenCV的Python接口&#xff08;cv2&#xff09;中&#xff0c;加载的图像数组遵循以下坐标系和方向约定&#xff1a; 1. **坐标系&#xff1a;** OpenCV的坐标系遵循数学中的坐标系&#xff0c;原点&#xff08;0, 0&#xff09;位于图像的左上角。横轴&#xff08;X轴&…

[硬件基础]-快速了解PWM

快速了解PWM 文章目录 快速了解PWM1、什么是PWM2、PWM的频率3、PWM的占空比4、PWM信号的输出电压计算5、脉宽调制幅度6、脉冲宽度调制生成技术6.1 使用微控制器生成脉冲宽度调制6.2 使用模拟电路产生脉冲宽度调制6.3 其他产生PWM的方法 在本文中&#xff0c;将介绍脉宽调制。 脉…