In this blog, I will, in short, try to explain about PYNQ- What, Why & How.

An in-depth in detail everything about the use is already described in this tutorial workshop.
PYNQ-Z2 Workshop: Getting Started with PYNQ (Win a $500 Gift Card for Your Embedded Vision Project!)

We generally used to do embedded system programming using different Architecture based MicroController or for advanced DSP Processor or some other ASIC.

FPGA comes in picture with its reconfigurable architecture, acceleration computing & parallel execution facilities.

SoC is a hybrid MicroController -FPGA single Integrated Chip Processor that facilitates both the pros of Microcontroller & FPGA in a single processor IC.
ZYNQ is such a specific architecture based SOC manufactured by Xilinx. PYNQ-Z2 & Ultra96 are two low-cost ZYNQ SoC based development platforms through which learning can be done & also basic prototypes can be built.

In general FPGA programmers use VHDL-Verilog languages to define hardware-level descriptions to do the programming while Software Programmers use C/C++ or Python-like high definition language to code the problem statement.
PYNQ stands for Python for ZYNQ. It provides an easy to use Python Interface through Jupyter Notebook Web Access.
Both the PYNQ-Z & Ultra96 hardware have this facility. PYNQ has Zynq®-7000 SoC while Ultra96 has Zynq UltraScale+ ™ MPSoC which results is some pros & cons. Pros are in terms of speed of operation & Cons in terms of the comparative cost difference.
PYNQ-Z boards have HDMI-in, HDMI-out ports, Arduino headers, RPI compatible 40pin GPIO headers which facilitates direct interfacing of different types of sensors & motors besides FPGA's basic plus points.
PYNQ is a device driver programming firmware operating system that is being developed using petalinux. So even if we are building a custom hardware platform using ZYNQ ICs we can build a custom PYNQ platform for the board. These boards processor mainly consists of two parts known PS(Processing System) & PL(Programming Logic). PL generates a bit file that results from programming a specific hardware configuration using Vivado- Vitis Software. Through PS we generally first call those bit file and then using python script run the program. We can create different Operation specific hardware bit files & call them for different types of problems embedded solution. This hardware approach for creating solutions provides high-speed execution being power efficient compare to only a software-based programming approach. Even we can build a state of the art deep learning-based solution's hardware PL logic and call them through python programming using this ZYNQ platform with PYNQ. This platform development environment facilitates even the software programmer to directly work on embedded solution building.
First, we have to download this PYNQ image file and burn it on the memory card using etcher. Then inserting the memory card, we have to power on the hardware platform. Next, we have to connect the hardware from the specific IP of the web interface of the hardware. This will open the jupyter platform. Then on it, we have to call the specific PL bit file known as overlay & write an application-specific python program to execute it.
I have ordered the PYNQ-Z2 Platform which is on the way to receive. As soon as I receive it, I will provide some in-depth hands-on here.
Session 1 of the workshop covered two overlays that are included in the standard PYNQ image - the Base overlay and the Logictools overlay.