【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 ...
随机推荐
- Tkinter模块的使用【转】
1.Tkinter是什么 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 py ...
- Qt 3D示例——cube
Qt 3D官方示例 cube的3D演示,一个纯C++的项目.虽然QML示例比较炫,但是要深入理解还是得从C++例子入手. 从MainWidget.show入口.一步步可以跟踪到initializeGL ...
- Vue2 常见问题汇总及解决方案
参考:https://mp.weixin.qq.com/s/6Wapb1bZLQaYv0zlip6ygg 1.安装超时(install timeout) 方案: cnpm : 国内对npm的镜像版本 ...
- MobaXterm汉化版教程
MobaXterm中文版是一款非常好用的远程连接.远程控制软件,它堪称全能终端神器,支持非常多的远程协议 ,如SSH,Telnet,Rsh,Xdmc,RDP,VNC,FTP,SFTP,串口(Seria ...
- javase_note
我上班摸鱼重新学习java基础做的笔记,从面向对象开始 面向对象基础 类与对象 人类.鸟类.鱼类...所谓类,就是对一类事物的描述 对象是某一类事物实际存在的每个个体,因此也称为实例 类是抽象概念,对 ...
- 利用拉格朗日乘子法从最优化问题中推导出KKT条件
优化问题的一般形式 在优化问题中,我们将其一般形式定义为有约束(不等式约束.等式约束)的最小化优化问题,其具体定义如下: \[\begin{array}{ll} \min _{x} & f_{ ...
- shell_Day04
grep程序 Linux下有文本处理三剑客 -- grep sed awk grep:文本 行过滤工具 sed: 文本 行编辑器(流编辑器) awk:报告生成器(做文本输出格式化) grep 包含三个 ...
- journalctl查看内核/应用日志
Systemd统一管理所有Unit的启动日志.带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志).日志的配置文件是/etc/systemd/journald.co ...
- 无需联网,一键永久激活所有Windows/Office
对于 Windows 激活工具,大家可能了解不多,熟悉的比如小马激活工具,因为激活工具从来都是病毒高发区,各种工具混在一起,一不小心,电脑就中招了. 今天介绍一款不一样的. R@1n ReBirth ...
- pip更改为国内源
1. 查看现有默认pip安装源 pip config list 2. 按次修改 添加指定源 pip install numpy -i https://pypi.tuna.tsinghua.edu.cn ...