PYNQ

PYNQ上手笔记(3)——PS端+PL端点灯

上一节中分别独立实验了Zynq的PS端和PL端,并初步实验了PS端先硬件再软件的开发流程和IP核设计的设计方法。第一节中提及到:Zynq是以PS端的ARM处理器系统为核心的,PS端和PL端是通过AXI总线,并且Xilinx已经提供了各种AXI通信的IP核,接下来的实验中将会更加明确的体验到利用IP核设计的设计方法。

1.实验目标
板载的LED和RGBLED都是接在PL端的,这个实验将利用PS端程序通过AXI总线控制连接在PL端的LED。

2.实验步骤
整个实验流程参考《The Zynq Book Tutorials》的chpt1:First Designs on Zynq(这本实验指导手册是英文的,但我个人认为英文原版要比中文看着清楚很多)。

PYNQ上手笔记(2)——PL端和PS端的独立开发

作者:Mculover666

在上一篇中提到,Pynq是为了降低开发人员的门槛,但是作为一个学习嵌入式开发的学生,当然要一步一个脚印打好基础,所以选择从Zynq入手学习,等跑起来Linux系统再运用Python开发也不迟,知其然也知其所以然,开发效率更高,所以接下来的几篇都是关于Zynq的,如果想直接玩Pynq可直接跳过,毫无影响。

1.Zynq的架构
在开始实验之前对Zynq芯片有一个基本的认识,如果想深入了解关于Zynq的理论部分,推荐参考The Zynq Book,有英文版和中文版,在此对于Zynq的理论浅尝辄止,不做深究,重点放在实验应用上。

Zynq中包含两大功能块:PS部分和PL部分。

  • PS部分指Processing System,一个基于双ARM Cortex A9内核的处理系统,其中集成了内存存储器和外部存储器接口,大量的外设:GPIO、UART、SD/SDIO、IIC、SPI、以太网、CAN等等接口;
  • PL部分指Programmable Logic,基于Xilinx 7系列架构的可编程逻辑单元,通过PL部分可以为ARM定制很多外设,这也是Zynq的一大优点。
  • PYNQ上手笔记(1) ——启动Pynq

    作者:Mculover666

    今天刚刚到手一块PYNQ-Z2,确认过眼神,是我想要的板子,话不多说,开干。

    PYNQ项目是一个支持Xilinx Zynq器件的开源软件框架,目的在于借助Python降低Zynq嵌入式系统开发门槛,有丰富的组件:

  • 可编程逻辑的控制
  • Jupyter Notebook接口
  • 预安装的Python库
  • 网络/USB/UART接口
  • 要使用Pynq,需要Pynq image和Zynq芯片,目前Pynq项目支持三个板:

    PYNQ在ZCU102上的移植

    在goggle上搜zcu102 pynq可以找到一些移植方法的信息

    0. Prebuilt
    PYNQ移植ZCU102编译好的固件

    1. 生成镜像
    git clone
    $ git clone https://github.com/Xilinx/PYNQ.git
    $ cd PYNQ
    $ git checkout v2.3
    $ git checkout -b vacajk_dev

    检查依赖环境,qemu,crosstool-ng
    $ cd sdbuild/scripts
    $ ./setup_host.sh
    $ source /opt/pkg/petalinux/settings.sh
    $ source /opt/Xilinx/Vivado/2018.2/settings64.sh
    $ cd ../../

    拷贝ZCU104的配置作为ZCU102来使用,删除不用的ZCU104petalinux配置
    $ cp -rf ./boards/ZCU104 ./boards/ZCU102

    PYNQ系列学习(四)——pynq与zynq对比(三)

    上一期,我们重点学习了ZYNQ的PL开发,本期我们侧重于进行PS开发的学习。我们将在 VIVADO 开发环境下搭建 ARM+FPGA 的系统架构,并在 SDK 中编译软件实现软硬件联合开发。

    本部分的学习,我们依旧借助得力的助手与伙伴——PYNQ_z2来完成。

    一. 实验目的

    1. 点亮开发板右下角三个灯

    2. 输出“Hello,World!”

    二. 实验要求

    1. 在 VIVADO 中编译 bit 文件;

    2. 在 SDK 中编译 elf 文件并将 FPGA 的 bit 文件和 ARM 处理器 的 elf 文件下载到开发板中

    三. 实验步骤

    1. 启动 VIVADO


    2. 在 File 菜单中选择 New Project 选项启动项目向导。填写所要新建的工程名,然后点击 Next

    PYNQ系列学习(三)——pynq与zynq对比(二)

    上一期的学习中,我们系统性地介绍了PYNQ与ZYNQ地区别与联系。PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。

    Pynq降低了开发人员的门槛,但知其然也知其所以然,开发效率将会更高。因此,在进入PYNQ的python开发之前,我们先来学习ZYNQ的PL与PS开发,为接下来的学习提供良好的基础。

    本部分的学习,我们依旧借助PYNQ_z2来完成。

    1. ZYNQ功能块
    ZYNQ中包含两大功能块:PS部分和PL部分。

    PS部分指Processing System,一个基于双ARM Cortex A9内核的处理系统,其中集成了内存存储器和外部存储器接口,以及如GPIO、UART接口等大量的外设。

    PL部分指Programmable Logic,基于Xilinx 7系列架构的可编程逻辑单元,通过PL部分可以为ARM定制很多外设,这也是ZYNQ的一大优点。

    PYNQ系列学习(二)——pynq与zynq对比(一)

    Zynq可扩展处理平台是赛灵思新一代 FPGA的可编程技术的产品系列。与采用嵌入式处理器的FPGA不同,Zynq产品系列的处理系统不仅能在开机时启动,而且还可根据需要配置可编程逻辑。采用这种方法,软件编程模式与全功能的标准ARM处理SoC毫无二致。

    与之相关和不同的是,PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和FPGA硬件库进行功能的开发。

    1. 实例图片
    下面是ZYNQ系列与PYNQ系列中两款具有代表性的开发板:

    ZYNQ系列——ZYNQ7000

    PYNQ系列——PYNQ_z2


    2. ZYNQ优点

    PYNQ系列学习(一)——Pynq开发环境配置

    PYNQ项目是一个新的开源框架,使嵌入式编程人员在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq All Programmable SoC(APSoC)的功能。

    与常规方式不同的是,通过PYNQ,用户可以使用Python进行APSoC编程,并且代码可直接在PYNQ-Z1上进行开发和测试。通过PYNQ,可编程逻辑电路将作为硬件库导入并通过其API进行编程,其方式与导入和编程软件库基本相同。

    我们将利用PYNQ-Z2开发板对PYNQ项目进行介绍。PYNQ-Z2板是PYNQ开源框架的硬件平台,有丰富的组件:
    可编程逻辑的控制
    Jupyter Notebook接口
    预安装的Python库
    网络/USB/UART接口

    下面我们来对之做一个初步的探索:

    1. 映像文件安装

    PYNQ 和 ZYNQ 对比

    PYNQ = Python + ZYNQ —— ZYNQ部分功能的Python化

    PYNQ

    优点:

    1、 Python用于ZYNQ开发,Python库和FPGA硬件库可以直接调用,极大加快开发进程、缩短开发周期、降低开发难度,更方便、快捷;

    2、 用PYNQ开发,当Python有更加有效的可用库时(如图像处理—OpenCV),其性能要比C/C++开发更强。

    缺点:

    目前,PYNQ还不支持任何高级的综合,也无法将Python应用直接移植到FPGA中,仅能调用已有库。

    ZYNQ

    优点:

    一般基于C/C++开发,功能更全面、扩展性更强。

    缺点:

    没有PYNQ方便快捷、易上手,缺少Python那些强大功能库的支持。

    注:

    1、 PYNQ目前库有:Python库+FPGA硬件库(目前仅有2个:PYNQ-API接口+overlay);

    你想知道如何为电机控制或者其它工业物联网应用实现远程诊断和预测性维护吗?此次研讨会将通过名为“PYNQ”的革新型架构向您展示赛灵思 Zynq SoC在工业物联网边缘智能和控制应用中的“自适应”的能力。。Python + Zynq= PYNQ。PYNQ是赛灵思公司开发的一个开源项目,旨在让基于赛灵思Zynq的嵌入式系统设计更加容易。其结合了业界最流行编程语言Python的高效生产力和丰富的开源分析库和机器学习库,以及赛灵思Zynq SoC 灵活可扩展的特性,可加速实现电机控制中边缘分析和机器学习的快速部署。

    本次网络研讨会将为您介绍为什么需要在电机控制应用中使用赛灵思ZynqSoC的基本概念,以及PYNQ如何在无论是否连接到云网络的条件下,都能帮助软件工程师或者数据分析师轻松地从电机数据中获得片上的、实时的洞察分析。PYNQ所带来的关键的差异化在于传感器数据在可配置硬件中的预处理,这个预处理可以帮助应用软件发挥出最大效用。

    时间:2018年9月27日 | 10:00 - 12:00
    报名地址: http://live.vhall.com/458773772

    通过本次研讨会,您可以学习到:

  • 为何在工业物联网边缘应用中采用赛灵思 — 以使用现代电机控制为例;
  • 同步内容