本篇博客建立一套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的文档

在设计中如果有些不能确定的地方,Xilinx官方的文档往往可以解答我们的疑惑,下面就来谈谈如何使用这些文档

首先我们从哪里获得这些文档:

  • DocNav

  • Xilinx官网

其次如何阅读这些文档,应当选择一本贴合自己当前设计的文档,然后以这个文档内的一些别的补充文档的链接获取别的一些知识,从而构建起知识树

一些推荐的文档:

  • ug1137 zynqmpsoc swdev guide

  • ug1209 embedded design tutorial

  • ug1085 zynq trm (Technicial Reference)

  • ug1087

  • 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的更多相关文章

  1. ZYNQ学习之二-EMIO

    ---恢复内容开始--- 本次试验学习和掌握zynq的emio的使用,是通过PS控制PL端的GPIO. 1.创建硬件工程,主要就是添加EMIO就可以.当然了创建工程的时候还要注意DDR的设置,根据自己 ...

  2. MiZ702学习笔记13——ZYNQ通过AXI-Lite与PL交互

    在<MiZ702学习笔记7——尝试自制带总线IP>,我曾提到了AXI4-Lite的简单用法,驱动了下流水灯,只涉及到了写总线.今天,我想利用之前的VGA模块,将AXI4-Lite的读写都应 ...

  3. 【原创】ZYNQ学习笔记(一) HelloWorld实现

    拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做 ...

  4. Zynq学习笔记(1)——Hellow World

    Zynq是一款SOC芯片,之前只是用了PL(Programmable Logic)部分,而Zynq最突出的功能,就是内部的双核Cortex-A9,所以从现在开始我将学习ZYNQ的SOC学习(PS部分) ...

  5. zynq学习01 新建一个Helloworld工程

    1,好早买了块FPGA板,zynq 7010 .终极目标是完成相机图像采集及处理.一个Window C++程序猿才开始学FPGA,一个小菜鸟,准备转行. 2,关于这块板,卖家的官方资料学起来没劲.推荐 ...

  6. ZYNQ学习之路1. Linux最小系统构建

    https://blog.csdn.net/u010580016/article/details/80430138?utm_source=blogxgwz1 开发环境:window10, vivado ...

  7. zedboard zynq 学习 sobel 边缘检测 IP核 制作 根据 文档 Xapp890

    官方文档http://www.xilinx.com/support/documentation/application_notes/xapp890-zynq-sobel-vivado-hls.pdf ...

  8. ZYNQ学习之——MIO

    1.GPIO基础知识 Zynq7000 系列芯片有 54 个 MIO(multiuse I/O) ,它们分配在 GPIO 的 Bank0 和Bank1 隶属于 PS 部分, 这些 IO 与 PS 直接 ...

  9. Zynq学习笔记(1)

    做硬件的第一个实例,一般当然是LED点灯啦~ 硬件:ZedBoard 软件:ISE 14.7 1.新建工程 2.选择平台 3.新建完成后,输入如下代码: `timescale 1ns / 1ps // ...

  10. 驱动学习5: zynq实现点亮led

    驱动代码: #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #i ...

随机推荐

  1. vue中vue2-google-maps使用谷歌地图的基础操作

    小哥我最近使用谷歌地图做了一个项目,于是乎各种坑就扑面而来,未免下次接着踩坑特留下自己的爬坑记录. 首先我是没用过谷歌地图也不知道靠谱不靠谱,于是乎傻傻的入坑了, 1.首先你要是没有vpn(或者fq工 ...

  2. CentOS6.8安装docker教程

    在VMware新安装CentOS6.8系统 CentOS6.8可在阿里镜像库下载: https://mirrors.aliyun.com/centos-vault/6.8/isos/x86_64/ 在 ...

  3. vue过滤出字符串中的汉字,match加正则

    vue过滤出字符串中的汉字,match加正则 str="23申迪MTN001(102380026)";str.match(/[\u4e00-\u9fa5]/g).join(&quo ...

  4. 李光耀观天下.PDF

    书本详情 李光耀观天下作者: 李光耀出版社: 北京大学出版社原作名: 李光耀观天下出版年: 2015-6页数: 299装帧: 平装ISBN: 978730125751

  5. 谷歌云|机密 GKE 节点可在计算优化的 C2D 虚拟机上使用

    机密 GKE 节点可用于计算优化的 C2D 虚拟机. 许多公司已采用 Google Kubernetes Engine (GKE) 作为其应用程序基础架构中的关键组件.在某些情况下,使用容器和 Kub ...

  6. 无界面Linux系统和Windows系统使用selenium爬取CNVD数据

    因为CNVD官网采用了反爬机制,所以使用selenium能够更容易的爬取漏洞数据 1.在Windows中使用 注意根据chrome版本下载对应chromedriver 2.在无界面的Linux中使用 ...

  7. SOAMANAGER 500 ERROR

    .调查原因是 SICF的服务有一个被开启了,取消激活就能解决这个问题. 可能的原因是在激活fiori的时候会自动激活

  8. shell - scriptreplay timing.log output.session

    script -t 2> timing.log -a output.session cmd cmd cmd exit scriptreplay timing.log output.session ...

  9. 控制台程序console输入参数 获取参数

    class Program    {        static void Main(string[] args)        {                                 i ...

  10. MQTT QoS 0, 1, 2 介绍

    什么是 QoS 很多时候,使用 MQTT 协议的设备都运行在网络受限的环境下,而只依靠底层的 TCP 传输协议,并不能完全保证消息的可靠到达.因此,MQTT 提供了 QoS 机制,其核心是设计了多种消 ...