Sending data to custom IP and receiving it back

Hi,

I have written some hdl code that takes in 9 32 bit integers, performs some data processing on them, including things like finding the mean, variance etc, then after a couple of clock cycles, a valid signal is set high I can read 18 32 bit integers from the outputs of my logic, written in System Verilog.

This all works in simulation, but now I want to run it on my PYNQ Z1 board, however, I have no idea how to send data from the pynq PS to the PL where my logic would be and then read the outputs again when i set the valid signal in my logic.

Any help/ tutorials on this would be greatly appreciated.

1 Like

Hi,
You could write the data in memory addresses via MMIO.
Here is an interesting page:
(PS/PL Interfaces — Python productivity for Zynq (Pynq))

Yopu could also use a Direct Memory Access block to enable the communication betweeen PS and PL. Maybe you can find more details here:
Tutorial: PYNQ DMA (Part 1: Hardware design)

1 Like

I thought about using MMIO, however, how do I verify that I read the output registers/ memory addresses when my valid from my custom hardware is set high?

Your PS could send the 9 integers to the PL to specific registers. The PS could then check another register containing the valid indicator. When this indicator has a high value, the PS could read from the 18 registers of the integers.
Could this be possible?

1 Like