overlay由两个主要部分组成; PL设计(比特流)和项目框图Tcl文件(the PL design (bitstream) and the project block diagram Tcl file.)。 overlay设计是硬件工程师的专业任务。 本节假定读者具有数字设计,构建Zynq系统和Vivado设计工具的一些经验。
PL Design
Xilinx®Vivado软件用于创建Zynq设计。 将生成可用于对Zynq PL进行编程的比特流或二进制文件(.bit文件)。
Vivado的免费WebPack版本可用于构建overlay。
https://www.xilinx.com/products/design-tools/vivado/vivado-webpack.html
IP in an overlay that can be controlled by PYNQ will be memory mapped, connected to GPIO. IP may also have a master connection to the PL.
鼓励硬件设计人员利用PYNQ overlay来编程IP。 创建IP后,PL设计的执行方式与任何其他Zynq设计相同。overlay中的 IP可以由PYNQ控制,将被存储器映射,连接到GPIO。 IP也可以与PL建立主连接。 PYNQ提供Python库以及与PL设计接口,并可用于创建自己的驱动程序。 overlay的Python API将在下一节中介绍。
Overlay Tcl file
PYNQ使用Vivado IP Integrator模块设计的Tcl来自动识别Zynq系统配置,IP包括版本,中断,复位和其他控制信号。根据这些信息,可以从PYNQ自动修改系统配置的某些部分,可以自动分配驱动程序,启用或禁用功能,并且可以将信号连接到相应的Python方法。
必须生成Tcl文件,并将其作为overlay的一部分提供给比特流文件。通过在overlay设计过程结束时导出IP Integrator程序框图,可以在Vivado中生成Tcl文件。下载overlay时,应为Tcl文件提供比特流。 PYNQ PL类将自动解析Tcl。
可以使用自定义或手动创建的Tcl文件来构建Vivado项目,但应使用Vivado生成并导出程序框图的Tcl文件。这个自动生成的Tcl应该确保它可以被PYNQ正确解析。
要从Vivado GUI生成块图的Tcl:
File > Export > Block Design
或者,在Tcl控制台中运行以下命令:
write_bd_tcl
Tcl文件名应与.bit文件名匹配。 例如,my_overlay.bit和my_overlay.tcl。
在实例化和下载overlay时解析Tcl。
from pynq import Overlay
ol = Overlay(“base.bit”) # Tcl is parsed here
如果在尝试下载叠加层时Tcl不可用,或者如果Tcl文件名与.bit文件名不匹配,则会显示错误。
可编程
覆盖应该具有后比特流可编程性以允许定制系统。许多可重复使用的PYNQ IP模块可用于支持可编程性。例如,PYNQ MicroBlaze可用于Pmod和Arduino接口。可以重用来自各种覆盖的IP以提供运行时可配置性。
Zynq PS设置
用于Zynq设计的Vivado项目由两部分组成; PL设计和PS配置设置。
用于引导板的PYNQ映像在引导时配置Zynq PS。这将解决大多数PS配置,包括DRAM的设置,以及启用PYNQ使用的Zynq PS外设,包括SD卡,以太网,USB和UART。
PS配置还包括系统时钟的设置,包括PL中使用的时钟。 PL时钟可以在运行时编程,以匹配覆盖的要求。这由PYNQ Overlay类自动管理。
在下载新overlay的过程中,时钟配置将从overlay的Tcl文件中解析。在下载overlay之前,将自动应用overlay的新时钟设置。
现有overlay
现有overlay可用作创建新overlay的起点。基础overlay可以在PYNQ存储库的板目录中找到,并包括板上外设的参考IP:
/ boards / / base
每个文件夹中都存在一个makefile,可用于重建Vivado项目并为overlay生成比特流和Tcl。 (在Windows上,而不是使用make,Tcl文件可以从Vivado获取。)
overlay的比特流和Tcl可在电路板上以及GitHub项目存储库中获得:
/ boards / / base