pynq笔记

PS/PL Interfaces

Zynq在ps和pl之间有9个axi接口。(M:master 主   S:slave 从)

在PL端,有4xAXI主(M)hp(高性能)端口,2xAXIGP(通用)端口,2xAXI从(S)GP端口和1xAXI主(M)ACP端口。

在PS端,中也有GPIO控制器连接到pl。 

有四个pynq类用于管理Zynqps(包括ps dram)和pl接口之间的数据移动。 

  • GPIO - General Purpose Input/Output
  • MMIO - Memory Mapped IO
  • Xlnk - Memory allocation
  • DMA - Direct Memory Access

使用的类取决于IP连接到的ZynqPS接口和IP的接口。 

1.运行在pynq上的Python代码可以通过GP PORT访问ip(这个ip与从AXI连接)。MMIO可以用来做这件事。

 2.连接到主AXI端口的IP不受ps的直接控制。主AXI端口允许ip直接访问DRAM。在这样做之前,应该为IP使用分配内存。XINK类可以用来完成这个任务。为了在PS DRAM和IP之间进行更高性能的数据传输,可以使用DMAS。pynq提供了一个dma类。

4.设计您自己的overlay时,您需要考虑您需要的IP类型,以及它将如何连接到PS。然后,您应该能够确定您需要使用IP的哪些类。

(注:master 和 slave在pynq中有介绍对应在pynq-z2板子下如图所示)

PYNQ提供了一个Python接口,允许从PS中运行的Python控制PL中的overlay。

PYNQ overlay层由硬件设计人员创建,并包含在此PYNQ Python API中。

然后,软件开发人员可以使用Python接口来编程和控制专用硬件覆盖,而无需自己设计overlay。

默认情况下,在启动时将名为base的覆盖(比特流)下载到PL中。

所述base覆盖可以被认为是类似的参考设计的板。新的overlay层可以安装或复制到电路板上,并可以在系统运行时加载到PL中。

An overlay usually includes:

  • A bitstream to configure the FPGA fabric
  • A Vivado design Tcl file to determine the available IP
  • Python API that exposes the IPs as attributes

 PYNQ Overlay类可用于加载overlay层。通过指定比特流文件的名称来实例化覆盖。实例化Overlay还会默认下载比特流并解析Tcl文件。

 

A PYNQ overlay will have a Python interface, allowing a software programmer to use it like any other Python package. 

overlay由两个主要部分组成; PL设计(比特流)和项目框图Tcl文件。overlay设计是硬件工程师的专业任务。 

 PYNQ使用Vivado IP Integrator模块设计的Tcl来自动识别Zynq系统配置,IP包括版本,中断,复位和其他控制信号。根据这些信息,可以从PYNQ自动修改系统配置的某些部分,可以自动分配驱动程序,启用或禁用功能,并且可以将信号连接到相应的Python方法。

https://pynq.readthedocs.io/en/latest/overlay_design_methodology/pspl_interface.html

展开阅读全文

没有更多推荐了,返回首页