PYNQ是一个基于Linux和Ubuntu 以及 Python 语言的开源软件框架 (Framework),主要针对赛灵思(Xilinx) 的Zynq-7000 SoC 系列、Zynq UltraScale+ MPSoC 系列器件以及赛灵思的数据加速卡 Alveo 系列提供了一个基于Python语言的开发平台。PYNQ得名于“Python Productivity for Zynq”, 顾名思义,PYNQ是借助于目前最流行的Python编程语言简化了使用Zynq器件创建嵌入式应用的流程,是嵌入式开发者的福音。
借助PYNQ 平台,设计者可以使用Python这种高效的编程语言进行处理器的应用开发,提高开发效率;同时,基于PYNQ 中的Hardware Overlay and API以及Xilinx提供的xfOpenCV 硬件加速库,可以充分利用Zynq-7000、Zynq UltraScale+ MPSoC 中的可编程逻辑(Programmable Logic)资源,实现硬件加速。
在这里大家可以把PYNQ设想为一个多层堆栈,从底层的硬件系统延伸到操作系统层(包括用于与硬件接口的底层软件驱动程序和API),再到运行于操作系统之上的软件应用。PYNQ提供了一整套集成式软件与硬件组件,开发者不仅可以直接使用现有组件,而且也可以根据需要进行调整和扩展功能。总体而言,PYNQ加速了基于Zynq嵌入式系统的软硬件协同设计工作,提高了开发效率。
PYNQ支持哪些器件和开发板
PYNQ 主要支持赛灵思(Xilinx) 的Zynq-7000 SoC 系列、Zynq UltraScale+ MPSoC 系列器件以及Xilinx Alveo 系列加速卡。
- PYNQ 最早由Xilinx Research Lab 和Xilinx University Program (XUP)合作开发,目前,一些第三方也加入了PYNQ的开发,为一些基于Zynq-7000、Zynq UltraScale+ MPSoC 的通用开发板(如:Pynq-Z1, Pynq-Z2, Xilinx的ZCU104, ZCU111 以及安富利 Ultra96)生成PYNQ 镜像文件 (Image file) 并提供持续更新,设计者可以到www.pynq.io 下载这些开发板的最新PYNQ 镜像文件。
- 最新版本的PYNQ 也可以支持 Xilinx Alveo加速卡
- 用户也可以利用github.com/Xilinx/pynq 提供的Source Code和Build 步骤为自己设计的Zynq-7000、Zynq UltraScale+ MPSoC 电路板生成PYNQ Image.
PYNQ Image 基本构成
PYNQ Image主要由三部分组成,如下图:
- Ubuntu Root FS + Python 3.x Package + Jupyter Notebook
- Ubuntu根文件系统可以是Ubuntu 16.04或18.04
- Python 3.x 的解释器和Python库
- Jupyter Notebook 是一个基于Web 应用的交互式笔记本,可用于创建、运行Python代码
- 用Xilinx Petalinux工具生成的Linux Image,这部分与器件或开发板的配置有关
- 使用Xilinx Petalinux工具和流程基于Zynq-7000、Zynq UltraScale+ MPSoC的BSP 生成Linux Image (该流程适用于通用的开发板,开发板一般会提供完整的BSP)
- 也可以使用从赛灵思开发工具Vivado 导出的.hdf 先产生BSP,再生成Linux Image (该流程适用于用户设计的开发板,不需要设计者提供BSP,直接使用Vivado工程导出的.hdf文件)
- Xilinx 提供的 PYNQ Python Module and Class
- Hardware Overlay API
- 针对外设和PS-PL接口的Library,如GPIO, DMA, Interrupt …

运行PYNQ Image
大家可以从www.pynq.io 下载开发板的PYNQ Image 或者自己生成Pynq Image之后,该Image是一个磁盘镜像文件(.iso),使用烧录工具(如Win32 Disk Imager或Etcher)将该.iso 文件烧录到SD卡,设置SD卡启动模式。
PYNQ Image运行之后,相当于启动了一个图形化界面的Desktop Linux (Ubuntu),上面运行Jupyter Notebook这个应用程序,利用Jupyter Notebook 以及打包在Image中的Python 解释器和Python Library,用户就可以使用Python语言编写、运行自己的应用程序和文档了。


Xilinx PYNQ
PYNQ 是 Xilinx 发起的一个开源项目
了解详情Let's Talk
请联系我们安富利的赛灵思团队去找到适合的方案
了解详情