【ZYNQ学习】如何使用ZYNQ
本篇博客建立一套ZYNQ系统开发的一般方法和流程,并对ZYNQ的硬件和软件的设计流程进行概述
设计工具:
- vivado IDE:创建SoC设计中的硬件系统部分,同时和设计套件中的其他工具有交互,包含集成和打包IP的工具
- SDK:基于Eclipse平台开发的软件设计工具,使用c和c++语言且支持ARM和NEON扩展的GCC库
- vivado simulator:提供硬件描述语言的仿真环境
- vivado logic analyser:提供系统内验证的工具,例如一些包含在硬件设计里的特殊的核心,可以探测芯片行为并将捕捉的数据传回主机,然后在逻辑分析器上显示
- vivado serial I/O analyser:针对特定高速通信接口的仿真工具
- vivado high-level synthesis:从c语言描述来综合硬件的工具
- system generator for DSP:用于DSP设计的创建和仿真
ZYNQ设计流程概述:

- 系统架构的设计通常采用自上而下的方法,即先定义顶层的接口和参数,再确定底层的子系统或功能
- 软件常常用来完成一些一般性的顺序执行的任务,比如操作系统、用户应用程序和图形界面,而偏向于数据流计算或者具有并行限制的软件算法适合在PL端实现,因此这也类似于"协处理器"模型,可以把处理器从那些重在计算且具有并行性的任务中解放出来改为硬件处理,从而从整体上提升性能
- ZYNQ的一个特别的优势就是处理器和可编程逻辑之间的强耦合,在PS和PL之间以低延时、高性能的AXI连接,在通信开销上有大量减少
- 通常以vivado IDE作为设计起点,在顶层设计的创建过程中起到"驾驶舱"的作用,套件内工具和其他部分(特别是system generator和vivado HLS)的集成支持多种功能不同的子系统,当硬件设计完成后,就会被导入到SDK进行软件开发,还可以在SDK和vivado IDE之间进行设计的迭代
硬件开发与测试
硬件系统开发包括在PL上设计和实现的外部模块和其他逻辑单元,在这些模块和PS之间创建合适的连接,以及恰当的配置PS,比如一个硬件系统可能包括CAN总线接口、一个调试用的UART接口以及GPIO,这些协处理器一起支持软件在ARM上的运行:

硬件系统开发由vivado IDE套件承担,用户可以从IP库(IP Integrator)中选出模块来组成所期望的系统框图,配置模块参数,以及设计合适的内部连接和外部接口
以下是在IP Integrator设计中的示例:

其中可以看到PS模块、PS复位模块、外设和AXI互联模块,在这些模块之间主要通过AXI接口连接
软件开发与测试
从vivado中导出到SDK的是为软件平台定制的硬件,称为基础硬件系统,对应在IP Integrator中的配置
软件系统可以被认为是建立在基础硬件系统上的一个栈:

在基础硬件系统上一层的是板级支持包(BSP),提供底层的驱动和函数供上一层(操作系统)使用和硬件通信,软件应用程序运行于操作系统之上,不过软件也可以直接和硬件通信,即裸机应用,且由于是双核架构,也可以部署两个不同的操作系统,每一个使用一个核心
- BSP会针对硬件系统进行调整,BSP是为基础硬件系统和操作系统之间的连接定制的,包括硬件参数,设备驱动以及底层操作系统函数,SDK提供了创建BSP以及开发测试上层软件的环境
- 在测试阶段,SDK包含Xilinx microprocessor debugger(XMD)和system debugger(TCF)工具,可以在硬件平台运行时测试软件的功能,通过使用比特流(.bit)文件烧写ZYNQ的PL端和在PS端运行软件(.elf文件)完成;GDB调试器(建立在XMD上)是一种更加高级的完成远程调试的方法;还可以使用vivado simulator在PC端上复现PL端
以IP为重点的系统级设计
- IP Integrator
- IP Packager:使IP被打包成标准包(基于IP-XACT标准)
Tool Command Language(TCL)脚本语言
阅读Xilinx的文档
在设计中如果有些不能确定的地方,Xilinx官方的文档往往可以解答我们的疑惑,下面就来谈谈如何使用这些文档
首先我们从哪里获得这些文档:
- DocNav

- Xilinx官网
其次如何阅读这些文档,应当选择一本贴合自己当前设计的文档,然后以这个文档内的一些别的补充文档的链接获取别的一些知识,从而构建起知识树
一些推荐的文档:
ug1137 zynqmpsoc swdev guide
ug1209 embedded design tutorial
ug1085 zynq trm (Technicial Reference)
ds891 overview data sheet
ug1228 embedded design methodology guide
ug1144 petalinux
ug1157 petalinux-tools
ug1169 qemu
ug1208 XSCT(xilinx sw command line tool) for tcl
ug1283 bootgen user guide
ug903:介绍了如何在vivado中使用约束文件
【ZYNQ学习】如何使用ZYNQ的更多相关文章
- ZYNQ学习之二-EMIO
---恢复内容开始--- 本次试验学习和掌握zynq的emio的使用,是通过PS控制PL端的GPIO. 1.创建硬件工程,主要就是添加EMIO就可以.当然了创建工程的时候还要注意DDR的设置,根据自己 ...
- MiZ702学习笔记13——ZYNQ通过AXI-Lite与PL交互
在<MiZ702学习笔记7——尝试自制带总线IP>,我曾提到了AXI4-Lite的简单用法,驱动了下流水灯,只涉及到了写总线.今天,我想利用之前的VGA模块,将AXI4-Lite的读写都应 ...
- 【原创】ZYNQ学习笔记(一) HelloWorld实现
拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做 ...
- Zynq学习笔记(1)——Hellow World
Zynq是一款SOC芯片,之前只是用了PL(Programmable Logic)部分,而Zynq最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分) ...
- zynq学习01 新建一个Helloworld工程
1,好早买了块FPGA板,zynq 7010 .终极目标是完成相机图像采集及处理.一个Window C++程序猿才开始学FPGA,一个小菜鸟,准备转行. 2,关于这块板,卖家的官方资料学起来没劲.推荐 ...
- ZYNQ学习之路1. Linux最小系统构建
https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1 开发环境:window10, vivado ...
- zedboard zynq 学习 sobel 边缘检测 IP核 制作 根据 文档 Xapp890
官方文档http://www.xilinx.com/support/documentation/application_notes/xapp890-zynq-sobel-vivado-hls.pdf ...
- ZYNQ学习之——MIO
1.GPIO基础知识 Zynq7000 系列芯片有 54 个 MIO(multiuse I/O) ,它们分配在 GPIO 的 Bank0 和Bank1 隶属于 PS 部分, 这些 IO 与 PS 直接 ...
- Zynq学习笔记(1)
做硬件的第一个实例,一般当然是LED点灯啦~ 硬件:ZedBoard 软件:ISE 14.7 1.新建工程 2.选择平台 3.新建完成后,输入如下代码: `timescale 1ns / 1ps // ...
- 驱动学习5: zynq实现点亮led
驱动代码: #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #i ...
随机推荐
- vue 图片分页
<div class="activities phone"> <!-- 动态 --> <div class="activity" ...
- HCIP-ICT实战进阶05-路由策略与策略路由
HCIP-ICT实战进阶05-路由策略与策略路由 0 前言 什么是路由策略? 基于报文的目的IP地址进行路由表查找, 之后转发数据; 针对控制平面, 为路由协议和路由表服务, 针对路由信息进行过滤或者 ...
- 【azw3】麻省理工深度思考法:从模型及动力机制来思考现象
书本详情 标题:麻省理工深度思考法:从模型及动力机制来思考现象作者:[日]平井孝志 著:张玉虹 译年份:2018出版社:北京:中国华侨出版社ISBN:9787511373441,7511373445格 ...
- [Docker-2]排查基于docker部署mysql主从过程中遇到“Slave_IO_Running: Connecting”这个疑难杂症
关于"Slave_IO_Running: Connecting"的排查方法,已经有很多博客写得清清楚楚了(很多都是复制粘贴..真浪费时间),那么如果已有的常规排查方法都不能解决你的 ...
- 亲测:一个完整Vue开发环境搭建。
参考博客飞机: https://www.cnblogs.com/zhaomeizi/p/8483597.html
- REST开发(1)
REST风格 REST简介 Rest(Representational State Transfer),表现形式状态转换(访问网络资源的形式) 传统风格资源描述形式 http://localhost/ ...
- efk部署
转载: https://www.cnblogs.com/liweiboy/p/16100002.html
- Eclipse 获取maven项目出现问题汇总
1.errors occurred during the build,可以试试加上下图的配置,路径根据自己jak安装路径去修改
- 浏览器打开微信小程序
function h5() { $wx = new Wx('appId', 'appSecret'); // \dump($wx->getAccessToken()); $url = 'http ...
- 打印timescale信息
verilog中用:$printtimescale($root.tb); systemverilog class中用: $printtimescale($sformatf("%m" ...