当前位置: 首页 > article >正文

初始Vitis——ZYNQ学习笔记1

一、Vitis是什么

        Vitis 统一软件平台的前身为 Xilinx SDK,从 Vivado 2019.2 版本开始, Xilinx SDK 开发环境已统一整合到全功能一体化的 Vitis 中。 Vitis 开发平台除了启动方式、软件界面、使用方法与 SDK 开发平台略有区别,其他操作几乎一模一样。 Vitis 可以采用 C、 C++或 Python 开发以嵌入式处理器为核心的嵌入式系统, 可实现在 Xilinx 异构平台(包括 FPGA、 SoC 和 Versal ACAP)上开发嵌入式软件和加速应用。 它可为边缘、云和混合计算应用加速提供统一编程模型。 Vitis 可以利用与高层次框架的集成,通过加速库采用 C、 C++或Python 进行开发,或者使用基于 RTL 的加速器和低层次运行时 API 对实现方案进行粒度更精确的控制。 Vitis是应用 IDE( 集成开发环境), 可实现真正的同构及异构多处理器设计、调试和性能分析。

        Vitis 统一软件平台是一种新增工具,用于将赛灵思软件开发的方方面面全部组合到统一的环境内。Vitis 软件平台支持 Vitis 嵌入式软件开发流程以满足希望迁移至下一代技术的赛灵思软件开发套件(SDK) 用户的使用需求,也支持 Vitis 应用加速开发流程,以满足希望使用基于赛灵思 FPGA 的最新软件加速功能的软件开发者的需求。

二、Vitis开发流程

        使用 Vitis 进行嵌入式设计开发包括两部分,分别是硬件设计和软件设计。硬件设计使用到的工具是Xilinx 提供的 Vivado 套件,软件设计使用 Xilinx 提供的 Vitis 统一软件平台。

        在 Vivado 中我们可以在 Block Design 中搭建嵌入式处理系统,然后生成包含硬件信息的 XSA( Xilinx Shell Archive)文件。利用 XSA 文件在 Vitis 软件中搭建硬件平台,进行软件设计和调试。

下图是 Vitis 统一平台的嵌入式系统开发流程图:

第一步: 创建 Vivado 工程, 创建方法和《ZYNQ 之 FPGA 开发指南》中描述的步骤一致。

第二步:使用 IP 集成器创建嵌入式处理系统,包括配置 Processing System IP、其他需要的 IP 核以及外围设备。

第三步:对已经验证好的 Block Design 设计生成顶层 HDL。

第四步:与普通的 FPGA 开发一样,进行综合、实现并生成 Bitstream 文件和 XSA 文件,将生成的硬件设计文件导出到 Vitis 开发平台下。

第五步:启动 Vitis,创建硬件平台工程和应用工程并完成相关程序的编写、调试、编译。

第六步:进行软硬件联调、完成功能的验证。

        如上图所示,开发流程大体上可以分为 6 步。其中 step1 至 step4 为硬件设计部分,在 Vivado 软件中实现; step5 为软件设计部分,在 Vitis 软件中实现; step6 为功能的验证。

三、HelloWorld

1、创建vivado工程

        使用图形化开发工具

这里简单介绍下上述对话框中三个选项的含义,也可以通过点击对话框左下角的问号按钮去看 Xilinx的原文描述。

•Design name(设计名称): 指定要创建的块设计的名称。

•Directory(目录):指定创建的块设计文件的存放路径,可以是本地项目路径下也可以是当前项目之外的位置,一般默认为本地项目路径下。

•Specify source set(指定源集):将新的块设计添加到设计源文件集、默认仿真文件集或新的仿真文件集中。一般来说, Xilinx 建议在设计源文件集中创建块设计。

2、添加zynq系统IP

双击打开ZYNQ7 Processing System 模块

DDR3配置

UART配置

 

Bank工作电压参考板卡原理图

取消多余接口

 

验证设计

产生接口

3、生成顶层HDL

4、导出硬件Hardware

5、在vitis中进行软件设计

创建工程

 

编译程序

6、上板验证

打开串口工具

 

 

下载程序

 验证成功

四、总结

五、拓展

        在经过本章的学习后,相信大家已经掌握了创建硬件工程和软件工程的方法。例程里是直接调用 Vitis软件平台现成的模板工程去打印字符串的,大家也可以直接在 Vitis 平台里去新建一个空的应用工程,然后在空应用工程里添加 main.c 文件,在 main.c 文件里自己编写代码去打印想要打印的内容。

 

 


http://www.kler.cn/news/314424.html

相关文章:

  • 探索微软Copilot Agents:如何通过Wave 2 AI彻底改变工作方式
  • 伊犁linux 创建yum 源过程
  • Java面向对象编程
  • Ubuntu设置笔记本电脑合盖时不挂起
  • el-select组件:选择某个选项触发查询
  • 基于R语言的统计分析基础:使用键盘输入数据
  • charles抓包flutter
  • 数据结构之线性表——LeetCode:328. 奇偶链表,86. 分隔链表,24. 两两交换链表中的节点
  • 基于React+JsonServer+Antddesign的读书笔记管理系统
  • 4.使用 VSCode 过程中的英语积累 - View 菜单(每一次重点积累 5 个单词)
  • 微软AI核电计划
  • SpringBoot 项目启动时指定外部配置文件
  • 【Android 13源码分析】WindowContainer窗口层级-4-Layer树
  • Android通知显示framework流程解析
  • Python中的魔法:栈与队列的奇妙之旅
  • 大语言模型的发展-OPENBMB
  • ICM20948 DMP代码详解(34)
  • 欧美游戏市场的差异
  • 漏洞复现_永恒之蓝
  • AI助力低代码平台:从智能化到高效交付的全新变革
  • 山体滑坡检测系统源码分享
  • STM32 通过 SPI 驱动 W25Q128
  • 【JS】垃圾回收机制与内存泄漏
  • mxnet 的显存分配机制
  • Gitlab学习(009 gitlab冲突提交)
  • 小程序与APP的区别
  • 大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
  • 面试八股--MySQL命名规范
  • 前端组件库
  • 机器翻译之数据处理