Table of Contents
Arty-Z7-20 OOB
It is my first time to use PYNQ on AMD® FPGA platform. I did try to deploy PYNQ on Digilent MiniZed last year. However, due to the task of porting a demo Zynq PYNQ project into MiniZed with Vitis 2020.1 tool chain failed, I had not spent any time on PYNQ projects until this design challenge. Here is the photo of the design platform shipped from Element14 Community/Newark in US.
Arty-Z7-20 is a great PYNQ training platform since Arty-Z7-20 is around 95% compatible with Pynq-Z1 platform, except that Pynq-Z1 has microphone with PDM interface. As you know, there are a limited number of ARM® FPGA platforms which are directly supported from Xilinx PYNQ SD images or source code. Pynq-Z1 platform is one of the official supported platforms without extra work to get PYNQ up into running.
Here is the schematic of Arty-Z7-20 comparing with Pynq-Z1 which showing the difference for Zynq FPGA IOs. Arty-Z7-20 FPGA did not populate F17 and G18 pins on FPGA. The rest of FPGA IO pins are same as Pynq-Z1 FPGA’s.

So using Pynq_Z1 PYNQ image on Arty-Z7-20 platform is very safe for most of PYNQ project development.
Resources to Learn PYNQ Framework
One of the good start points to learn PYNQ is PYNQ workshop (Ref[1]) from AMD/Xilinx. The revision of PYNQ is v2.6 in this workshop, which is still good enough for PYNQ v3.0 training. I used one page of the training material for my learning map during this design challenge as below.

After the basic research of PYNQ documentation and training materials, I need to define the tool chain for my path of the design challenge. The latest PYNQ image version is v3.1 now. I decided to use v3.0.1 since it has more support from PYNQ community now. I got a lot of trouble to rebuild v2.6 PYNQ images for Pynq-Z1 last month. I might describe the process in another blog post for how to build PYNQ SD image basing on the guidance from PYNQ website (Ref[2]). The table below from PYNQ community (Ref[3]) presents the tool chain for each version of PYNQ image with the associated AMD/Xilinx tool version.

Here is the list of my PYNQ project tool chain:
- Vitis 2022.1
- Petalinux 2022.1
- PYNQ v3.0.1
- Ubuntu 20.04
- Windows 10 for standalone API experiments
Bring Arty-Z7-20 Up into Running
Here is the list of the OOB bench testing in this blog:
- HDMI-out OOB demonstration
- PMOD ALS with PYNQ v3.0.1 demonstration
The detail of the OOB bench testing is presented as follows.
- OOB bench testing project #1: HDMI Out (Vitis 2022.1) standalone API
Digilent website is a good source for Arty-Z7-20 platform framework. I did run all of OOB projects from Digilent Example projects to make sure that the hardware was good for the projects in my EE lab. Here is the list of example projects from Digilent website.

I am going to demonstrate how I imported the Vitis/Software project of HDMI Output Demo on my local Vitis 2022.1 environment since I found that there were importing errors without extra effort to reproduce a workable Arty-Z7-20 HDMI Output standalone API in house.
1.1 Download the source code from Digilent website (Ref[4]).

1.2 Extract Arty-Z7020-HDMI-out-sw.ide.zip and create a local workspace named as Arty_Z7_20_HDMI_out_sdk01

1.3 Create a Vitis project and import Digilent HDMI Output Demo SW project
I used Image Gallery features to present each step while I imported Vitis project from Digilent unzipped Arty-Z7020-HDMI-out-sw.ide.zip file into my local workspace. Please read each comment under every image for every step I did under Vitis 2022.1 flow.
| {gallery}Import Vitis Project |
|---|
|
Vitis Project workspace at the local PC. |
|
Click Import Project at Vitis GUI. |
|
Import Type of Vitis Project: Eclipse workspace |
|
Import Projects steps: flowing the numbers as marked. |
|
Importing Projects now. |
|
Errors after finishing Importing Projects. |
| Imported Projects at Vitis after ignoring previous error warning message. |
|
The reproduced Arty-Z7-HDMI-OUT project is failed due to previous errors. |
|
Place holder |
| Place holder |
I got trouble while importing Digilent HDMI Output Demo SW project directly now. What was the error message? The GUI as blow showed that the errors were listed at Vitis Log file.

Where is the Vitis Log file? I finally found it at ./metadata in the workspace as below.
The error messages were presented below for the reference. I did not dig deeper for 86 syntax errors there.
I thought I should get a clean platform project at the same workspace to bypass the errors which was most likely from my Porting Flow.
1.4 Reproduce HDMI-Out demo project from the HW handoff file of Digilent HDMI Output Demo
I used Image Gallery features to present each step as 1.3. Please read all comments inside the Gallery for the flow.
| {gallery}Reproduce HDMI-Out demo project |
|---|
|
Create a Platform Project |
|
Select Digilent Arty-Z7-20 HDMI Out XSA file. |
|
Platform project name is Arty_Z7_20_SoC |
|
Select Digilent HDMI_out XSA file from HW export |
|
Arty_Z7_20_SoC Platform Project: click "2(hammer)" to build the project |
|
Create a new application project |
|
Select the platform for API |
|
Create API name: hdmi_out_test |
|
Click "Next" for a standalone API project. |
|
Select "Empty Application", then "Finish" the flow to create the API project. |
|
Empty "hdmi_out_test"project |
|
Import Digilent HDMI-OUT SW source code into hdmi_out_test\src |
|
Updated hdmi_out_test API project |
|
Build hdmi_out_test API and generate boot.bin. |
|
Generate hdmi_out_test API boot.bin for Arty_Z7_20 platform |
The reproduced hdmi_out_test API was up into running on Arty-Z7-20 platform now.
Here is the video record of the HDMI output testing.
2. PYNQ/PMOD ALS project demonstration
2.1 Prepare PYNQ v3.0.1 SD image
I found that balenaEtcher was the best way to burn a SD image from pynq_z1_v3.0.1.image.
2.2 Test PMOD ALS PYNQ project on Arty-Z7-20
The Pynq_Z1_v3.0.1 SD image booted on Arty-Z7-20 very smoothly, which was a better experience than my previous PYNQ SD image build challenge on MiniZed.
Pynq_Z1_v3.0.1 is a simplified version of Ubuntu 22.04 as below.
It is time to rock and roll my way with PYNQ on Zynq platform. I used Jupiter Lab interface on my host PC to communicate with Arty-Z7-20 PYNQ now.
The first PYNQ demo project I ran was PMOD_ALS module as the following bench testing setup on the photo.
PYNQ v3.0.1 provided a demo project for PMOD ALS sensor as below.
As you can see from the photo of my bench testing setup, PMOD_ALS module was installed on J1 connector's top roll. I used a flash light to manipulate the light for PMOD_ALS sensor.
Here is the log plot after a couple of minutes of light sensing recorded by PMOD ALS project from the bench testing.
After a couple of OOB demo projects, I am ready to move forward to other topics on PYNQ framework now. I am going to demonstrate how to port Pynq_Z1 PYNQ build flow to a new board on my next blog. I will also explore PYNQ overlay flow on another blog soon.
References
[1] PYNQ_Workshop for V2.6 https://github.com/Xilinx/PYNQ_Workshop 2020
[2] https://pynq.readthedocs.io/en/latest/pynq_sd_card.html v3.0 2024
[3] https://www.pynq.io/boards.html 2024
[4] https://digilent.com/reference/programmable-logic/arty-z7/demos/hdmi-output 2024











