Learn how to program SoCs with PYNQ

Xilinx Zynq SOC’s (System on Chip) combine the benefits of microprocessors like Raspberry Pi, microcontrollers like Arduino, and FPGA programmable logic. Integrating all these components in a single chip enables high performance embedded systems, but designing and using these devices can require a complex set of hardware and software design skills.

PYNQ (Python productivity for Zynq) is an open-source framework that makes it easier to design and use Xilinx Zynq and Zynq Ultrascale+ SoCs systems. Custom programmable logic circuits are imported as hardware libraries and programmed through their Python APIs, in essentially the same way that software libraries are imported and programmed.

Pynq xilinx framework

PYNQ combines the following features:
• Use of a high-level productivity language for embedded SOC’s (Python in this case)
• Open source Python APIs
• Browser-based development incorporating Jupyter Notebook
• Client-side Jupyter notebook web apps
• Extensive Python Linux-based libraries

The result is a web-centric programming environment that enables software programmers to work with high performance SOC’s at higher levels of abstraction. In order to start programming PYNQ products, a designer needs only a compatible web-browser.

The PYNQ project supports the PYNQ-Z1, PYNQ-Z2 and ZCU104 boards with downloadable images that can be used to boot the board and quickly get started using PYNQ. The PYNQ images including example notebooks to help new users explore PYNQ and to quickly get started using PYNQ. The full PYNQ source code is available from the project’s GitHub repository PYNQ images have also been built for other boards including the Ultra96 from Avnet, the Snickerdoodle Zynq board, the Digilent Zybo, and Zedboard, and more.

Extensive resources are available from the PYNQ website, including PYNQ images for supported boards, documentation, training material and examples. PYNQ has a growing design community, and many designs are available in the areas of machine learning, computer vision, hardware acceleration, industrial IOT, networking, and more. The full PYNQ source code and can be found on the project’s GitHub repository. Here examples of projects of the projects made for PYNQ board: Resizer in Programmable Logic and  Object detection.

PYNQ can be used in education, and in industrial applications for prototyping and development. PYNQ is especially good for designers who target a wide audience and would like to design with open source tools and hardware libraries.

More details about PYNQ projects and boards are available on the official website and