PYNQ的定义是:Python productivity on Zynq, 它是一种开源的软件框架,可以方便工程师在赛灵思 Zynq SOC器件上方便进行嵌入式开发。PYNQ 会采用我们常用的python 语言和函数库让开发者可以发挥Zynq 器件的逻辑和处理器资源去构建高效能的嵌入式系统。
在PYNQ里有个核心的术语:overlay。你可以理解为是一个硬件逻辑实现的电路被表达成函数库的形式被调用,所以我们也叫它为 hardware library。 这些overlay 很类似我们常用的软件库 library,软件工程师可以根据自己的项目需求去调用适合的overlay 去设计项目。这些overlay 可以用传统的 API 的方式去调用。创建一个新的overlay 依然需要FPGA 工程师来参与,和传统的创建FPGA的IP 工作一样。一个好的事情是这些overlay 也和 IP 一样,或者说和软件library一样,是可以复用的,你可以轻松地把overlay 通过配置用到其他的项目里面。所谓的PYNQ 框架就是要求FPGA 工程师设计好 overlay,firmware工程师设计好驱动软件,要先搭好这个PYNQ 框架。很幸运的是PYNQ的开源社区已经有大量的设计好的overlay 供开发者使用。
在PYNQ 里面,python 是编程语言,可以运行在ARM 处理器上也可以调用 overlay。众所周知,C和C++ 语言主导了大部分的嵌入式编程设计,而python 则提供了编程效率。这2个事情在PYNQ 里面并不矛盾,PYNQ 是采用CPython的,所以仍然可以接受C的library和一些经过优化的C代码。开发者可以在有需要的时候采用高效能的python 开发环境和采用C 语言来编程。

PYNQ 是个开源的项目,本意也是跨平台和操作系统的。这个是基于web的架构来实现的,也要通过浏览器来操作。PYNQ 里面集成了开源的 Jupyter notebook 架构,可以在Zynq器件的ARM 处理器上直接运行IPython kernel 和web server。开发者可以通过常用的浏览器工具去开发程序、编写代码、远程终端控制、图表等功能。同时开发者可以直接在嵌入式的实际产品环境中进行调试,主机 host 就是Zynq 里的ARM 处理器,这样使开发效率更高。当然第一步可以先在ARM 处理器上运行全部的python 代码进行纯软件实现,第二部再调用overlay 去做某些计算密集型算法的加速。
后期大家可以通过一些PYNQ的实验课程去慢慢体会 PYNQ 对嵌入式开发效率的提升感受,也希望大家逐渐喜欢用 PYNQ 框架去开发更多的嵌入式产品。
Xilinx PYNQ
PYNQ 是 Xilinx 发起的一个开源项目
了解详情Let's Talk
请联系我们安富利的赛灵思团队去找到适合的方案
了解详情