How to connect PYNQ Z1 to Raspberry Pi 3B+?

Hi there,

I was wondering if anyone had any knowledge or experience in how I would go about sending signals between the PYNQ Z1 and the Raspberry Pi 3B+ board. I know the PYNQ Z2 has RPi GPIO pins but how could I send signals back and forth with what is on PYNQ Z1, is this even possible?

Thank you,


Depending on the datarate you want to get: UART, I2C, SPI. These are slow forms of communication but are implemented in hardware and are relatively easy to use on RPI.
If you want higher datarates you can write your own driver for raspberry pi to have a software x-bit parallel interface.
On the Z1 side… you have a programmable logic fabric, so you can do whatever the fuck you want :wink:
If you want even higher datarates, it may be better to use ethernet and stream your data from the PS.

All the best

Why do you need to connect the two boards like this?


Thanks for the information, that is really helpful!

Hi Cathal, I am looking into the idea of implementing Hardware Decoded Commands (Commands received by the spacecraft, executed without the intervention of the main computer) on the PYNQ Z1 board, where the RPi will act as the main computer.

What do you need the RPi for? Could you use the Zynq ARM processor instead?


I have built a command and data handling system which runs on the RPi, I am trying just to communicate between the RPi and PYNQ Z1, but I notice there aren’t any GPIO pins on the PYNQ Z1 board (unlike the Z2), do you know how I could send signals between them? I am looking into USB serial comms. right now but I am not that familiar with hardware communications.

I still don’t understand why you need two boards. Could you run your software on the ARM on the Zynq instead of the ARM on the RPi?

I assume you are referring to the RPi header on the Z2.
The Pmods, Arduino, and ChipKit interfaces can all be used as GPIO on the Z1. Both Z1 and Z2 have a similar number of GPIO.

This isn’t a great way to connect the two boards. These are relatively low speed interfaces.
Depending on the data you need to transfer and speed, you may be better connecting them by Ethernet. This is relatively easy to do in Python with “sockets”.


1 Like

I have a requirement of running my software on the RPi but I will look into running it on the ARM on the Zynq. Yes, I was referring to the header of the Z2, and I didn’t realize that those interfaces could be used as GPIO. The idea about using sockets with the Ethernet is a great idea! I will look into all of this. Thank you so much Cathal, this means a great deal !!