PYNQ介绍
PYNQ全称为Python ProducTIvity for Zynq,即在原有Zynq架构的基础上,添加了对python的支撑。Zynq是赛灵思公司推出的职业第一个可扩展处理渠道系列,在芯片中集成了ARM处理器和FPGA可编程逻辑器材,旨在为视频监督、轿车驾驶员辅佐以及工厂自动化等高端嵌入式运用供给所需的处理与核算功用水平。PYNQ期望能够凭借python言语自身易用易学、扩展库多而全、社区活泼贡献度高级特性,有用下降Zynq嵌入式体系的开发门槛。PYNQ将ARM处理器与FPGA器材的底层交互逻辑彻底封装起来,顶层封装运用python,只需要import对应的模块称号即可导入对应的硬件模块即可进行底层到上层数据的交互或许为体系供给硬件加快。关于PYNQ的开发者来说,ARM上运转着一个Linux体系,FPGA被笼统为若干加快IP,开发者能够经过一行简略的python脚本即可完结动态加载bitstream,经过DMA将数据撒播输到加快IP交融输出。PYNQ板卡也供给了十分丰富的接口资源,如HDMI、AUDIO、Grove模块、常用接口如SPI/I2C等等以及许多通用IO。
图 Python调用底层硬件结构
下面给一个在PYNQ中刺进HDMI输入和输出的比如
from pynq importOverlay
frompynq.lib.video import *
base =Overlay(‘base.bit’)
hdmi_in =base.video.hdmi_in
hdmi_out = base.video.hdmi_out
简略高效开发PYNQ-Jupyter
关于嵌入式体系开发来说,往往因为功用的局限性,咱们只能ssh进嵌入式linux,在命令行终端进行开发,开发功率是个很大的问题。在PYNQ上,咱们运用了python扩展库Jupyter Notebook,其本质上是一个web服务器,供给了长途可视化、分步运转python脚本的才能。Jupyter一起能够实时显现程序运转成果,咱们乃至能够在浏览器中直接看到咱们运用硬件加快处理图画的成果。咱们只需要将PYNQ板子接入网关,即可经过浏览器拜访在板上运转的作为嵌入式web服务器的Jupyter Notebook。
图 JupyterNotebook实时显现运算图片
PYNQ能做什么
PYNQ的整个技能栈包括了python+linux+ARM+FPGA,供给了无限种扩展的可能性,咱们能够运用它来做许多有意思的运用。在pynq.io的社区页面咱们能够看到许多PYNQ社区开发的项目。包括BNN(二值神经网络)的事例。
图 PYNQ社区运用事例
一起,官方供给了十分多的外部接口事例。一起还包括了OpenCV的事例。
图 pynq.io 官方事例
Logictools功用则完成了运用python编写FPGA状态机的功用,运用Logictools能够用python编写FPGA I/O端口输出恣意波形了。
图 PYNQ Logictools
查阅PYNQ文档
关于PYNQ的一切材料都能够在网站pynq.io中找到,点击getTIng started就进入了PYNQ的文档页面。文档中包括了怎么设置PYNQ等入门材料、怎么创立PYNQ的FPGA硬件工程、PYNQ libraries的具体介绍以及最要害的python-PYNQ的函数文档,也能够运用查找功用直接查找关键词。
图 pynq.io GetTIng Started