【ZYNQ】Zynq 开发流程

Zynq 芯片架构由嵌入式处理器(Processing System, PS)与可编程逻辑(Programmable Logic, PL),以及 PS 与 PL 之间的互联总线组成。本文主要介绍 Xilinx Zynq 芯片开发所使用的软件,包括 Vivado IDE 与 Xilinx SDK 的介绍,以及 Zynq 芯片 PL 与 PS 两部分的基本开发流程。

目录

1 PL 部分

1.1 Xilinx Vivado 介绍

1.2 基于 RTL 代码的开发流程

1.3 基于 Block Design 的开发流程

2 PS 部分

2.1 Xilinx SDK 介绍

2.2 基于 C/C++ 代码的开发流程


        在上一篇博文中,我们知道了 Zynq 芯片的基本架构 —— 嵌入式处理器(Processing System, PS)与可编程逻辑(Programmable Logic, PL),以及 PS 与 PL 之间的互联总线,集成在单一 SoC 上。在这里,我们将 Zynq 芯片的开发流程分为 PL 和 PS 两部分。

1 PL 部分

1.1 Xilinx Vivado 介绍

  Vivado IDE 是 Xilinx 公司(现在属于 AMD)推出的新一代集成开发环境,用于替代之前的 ISE 。Vivado 提供便捷、美观的用户图形界面,用于 Xilinx FPGA 的开发与应用。

        Vivado 是多语言的设计输入与综合工具,支持 Verilog、System Verilog 与 VHDL 语言。同时,Vivado 也包括了设计实现、仿真验证、时序分析、功耗分析等工具,可以帮助工程师高效定位并解决复杂 FPGA 设计中的问题。

Vivado HLx Editions 开始界面

        在 Zynq 的开发过程中,需要注意使用的 Vivado 版本,是否包含所需要的芯片型号。后续的 Zynq 开发介绍均使用 xc7z020clg 芯片,软件版本为 Vivado 2018.3。

1.2 基于 RTL 代码的开发流程

        RTL 是寄存器传输级(Register Transfer Level)的英文缩写,RTL 代码主要使用硬件描述语言(如 Verilog,VHDL)描述数字电路的输入输出,以及寄存器之间的传输关系。

        在 RTL 代码中,寄存器用于暂存数据,而传输线则表示数据在各寄存器之间的流动。RTL 代码结构清晰、易于理解,适用于描述中等规模以下的数字电路。

基于 RTL 代码的开发流程如下:

        1)新建 Vivado 工程;

        2)添加 RTL 设计文件与所需要的 IP;

        3)I/O 布局与时序约束;

        4)逻辑综合、布局布线、生成比特流;

        5)比特流配置。

1.3 基于 Block Design 的开发流程

        Vivado 提供一个叫做 IP Integrator 的工具,用于创建与设计 Block Design(.bd)文件。Block Design 可以理解为使用 IP 搭建的数字电路系统,主要通过可视化的操作(例如 IP 添加与位置移动、端口连线等方式)进行设计。

基于 Block Design 的开发流程如下:

        1)新建 Vivado 工程;

        2)创建新的 Block Design 文件,并添加所需要的嵌入式处理器或其他 IP;

        3)连接 IP 核并进行必要的配置,如时钟频率、接口协议等;

        4)右键点击 Block Design,选择 Create HDL Wrapper...,创建 HDL 文件;

        5)I/O 布局与时序约束;

        6)逻辑综合、布局布线、生成比特流;

        7)比特流配置。

2 PS 部分

2.1 Xilinx SDK 介绍

 Xilinx SDK 是 Xilinx 公司(现在属于 AMD)推出的集成开发环境,用于 Xilinx 嵌入式处理器(如 MicroBlaze,ARM Cortex-A9 等)的开发与应用,SDK 需要和 Vivado 创建的硬件设计配合使用。

Xilinx SDK 基于 Eclipse 开源标准,主要包括以下特性:

  • C/C++ 代码编辑器和编译环境
  • 应用程序构建配置和 Makefile 自动生成
  • 集成调试与分析
  • 源代码版本管理
  • 专用的 FPGA 配置工具

Xilinx SDK 开始界面

2.2 基于 C/C++ 代码的开发流程

        在前面提到,SDK 程序需要和 Vivado 硬件设计配合使用。因此,SDK 程序的开发从导出硬件设计开始。

1)在 Vivado 工程中,选择 File -> Export -> Export Hardware...,勾选“Include bitstream”,导出硬件设计;


2)选择 File -> Launch SDK,启动 SDK 开发环境;

3)在 SDK 中,选择 File -> New -> Application Project,新建 SDK 应用工程;


4)编写 SDK 程序,选择 Project -> Build Project,编译工程;


5)最后配置 Run Configurations,勾选 “Program FPGA”,并运行 SDK 程序,就可以上板调试了。

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

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

相关文章

ASP.NET网络在线考试系统

摘 要 随着计算机技术的发展和互联网时代的到来,人们已经进入了信息时代,也有人称为数字化时代。数在数字化的网络环境下,学生希望得到个性化的满足,根据自己的情况进行学习,同时也希望能够得到科学的评价&#xff0c…

分布式事务—> seata

分布式事务之Seata 一、什么是分布式事务? 分布式事务是一种特殊类型的事务,它涉及多个分布式系统中的节点,包括事务的参与者、支持事务的服务器、资源服务器以及事务管理器。 在分布式事务中,一次大型操作通常由多个小操作组成…

无人机+无人车:自组网协同技术及应用前景详解

无人车,也被称为自动驾驶汽车、电脑驾驶汽车或轮式移动机器人,是一种通过电脑系统实现无人驾驶的智能汽车。这种汽车依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,使得电脑可以在没有任何人类主动操作的情况下,…

手撕vector的模拟实现

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

华为云耀云服务器开放端口

博客主页:花果山~程序猿-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 一.华为云控制台开放端口 寻找到安全组信息 2. 添加开放的端口信息 3. 检查是否成…

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频 一、素材来源:网站下载 到http://cpc.people.com.cn/GB/67481/435238/437822/437828/437900/index.html下载以下三个视频,鼠标右击视频——另存视频为 庆祝中国共产党成立100周年大会即将开始—…

【开源物联网平台】window环境下搭建调试监控设备环境

🌈 个人主页:帐篷Li 🔥 系列专栏:FastBee物联网开源项目 💪🏻 专注于简单,易用,可拓展,低成本商业化的AIOT物联网解决方案 目录 一、使用docker脚本部署zlmediakit 1.1 …

学习中遇到的问题

1.UFUNCTION() 不是所有函数都能加UFUNCTION()修饰,涉及UE反射机制。 2.初始化用{} 初始化列表 3.创建C文件时修改了路径 这时.cpp文件会报错,只需删掉前面多余路径即可

npm install报错

总结:没有安装visual studio 2017以上带有C桌面开发的版本 #开始试错 #报错总信息mingw_x64_win版本 百度网盘链接: link 提取码:3uou #尝试用mingw配置个C编译器,并配置环境变量,失败 #只认可使用VS!GIthub原址: 链接: link 上…

Java_JVM_JVMs

JVM 官方文档说明文档目录 官方文档 JVM Specification 说明 以Java SE 17为标准 文档目录 2:JVM 结构 class文件数据类型 基本数据类型引用数据类型 运行时数据区 栈帧 其他内容 对象的表示浮点数运算特殊方法 初始化方法【实例、类】多态方法 3&#xff…

IDEA 创建Servlet-HelloWorldServlet

servlet 1.创建空项目2.配置web项目3.配置Tomcat4.加载Tomcat包5.创建HelloWorldServlet类6.配置web.xml7.运行get与post请求 1.创建空项目 2.配置web项目 3.配置Tomcat 4.加载Tomcat包 5.创建HelloWorldServlet类 public class controller extends HttpServlet {Override//get…

yolov5-pytorch-Ultralytics训练+预测+报错处理记录

一、前言 玩一段时间大模型,也该回归一下图像识别。本项目用于记录使用基于Ultralytics的yolov5进行目标检测测试。为什么用Ultralytics呢?答案有3 1、其良好的生态,方便我们部署到其它语言和设备上。因此本次测试结论:大坑没有&…

第四篇:记忆的迷宫:探索计算机存储结构的奥秘与创新

记忆的迷宫:探索计算机存储结构的奥秘与创新 1 引言 1.1 计算机存储系统的发展与重要性 在现代计算技术中,存储系统承担着非常关键的角色,它不仅负责信息的持久保存,同时确保高效的数据访问速度,影响着整体系统性能的…

题目:线性代数

问题描述: 解题思路: 列相乘,然后行相加。 注意点:由于元素数据范围最大为1e6,两个元素相乘乘积最大为1e12,如果元素类型为int则在乘的过程中就会爆炸,所以需要开long long类型。 AC代码…

【大语言模型LLM】-基于大语言模型搭建客服助手(2)

🔥博客主页:西瓜WiFi 🎥系列专栏:《大语言模型》 很多非常有趣的模型,值得收藏,满足大家的收集癖! 如果觉得有用,请三连👍⭐❤️,谢谢! 长期不…

ABAP 数据写入Excel 并保存

参考老白 https://www.cnblogs.com/liaojunbo/archive/2011/09/06/2168552.html 但是缺zcl_excel 。需要从 dotabap要引入abap2xlsx 英文版进入后 尝试了一下 1)列的宽度自适应么有找到在哪里? 列宽设置 lo_worksheet->set_column_width( ip_co…

nuxt3使用记录六:禁用莫名其妙的Tailwind CSS(html文件大大减小)

发现这个问题是因为,今天我突然很好奇,我发现之前构建的自动产生的200.html和404.html足足290k,怎么这么大呢?不是很占用我带宽? 一个啥东西都没有的静态页面,凭啥这么大!所以我就想着手动把他…

OpenWRT有线桥接部署教程

前言 之前咱们讲到OpenWRT部署WAN实现PPPoE拨号上网和自动获取IP模式上网的办法: OpenWRT设置PPPoE拨号教程 OpenWRT设置自动获取IP,作为二级路由器 这一次,咱们尝试用OpenWRT有线桥接上一级路由器的教程。 可能有小伙伴敏锐地发现了&am…

【软件工程】详细设计

目录 前言详细设计算法设计工具——判定表 前言 软件工程生命周期分为八个阶段: 问题定义—>可行性研究—>需求分析 —>概要设计—>详细设计—>编码与单元测试 —>综合测试—>软件维护 这节我们讲的是软件开发流程中的一个阶段,需求…

Docker-Compose编排LNMP并部署WordPress

前言 随着云计算和容器化技术的快速发展,使用 Docker Compose 编排 LNMP 环境已经成为快速部署 Web 应用程序的一种流行方式。LNMP 环境由 Linux、Nginx、MySQL 和 PHP 组成,为运行 Web 应用提供了稳定的基础。本文将介绍如何通过 Docker Compose 编排 …