PYNQ-Z2 audio (ADAU1761) in Vivado 2024.1 – need guidance

PYNQ version & Board & Tools

  • PYNQ: PYNQ-Z2 image (v3.x)
  • Board: PYNQ-Z2
  • Tools: Vivado 2024.1

What I’m trying to do
I want to get the on-board ADAU1761 audio codec working on the PYNQ-Z2 using Vivado 2024.1 so I can take audio in, process it in the PL, and send audio back out in real time.

What I have tried

  • I created a custom Verilog block called i2s_top that generates I2S clocks (mclk / bclk / lrclk) and connects an I2S transmitter and receiver.
  • I packaged i2s_top as IP, added it to my block design, and wired it to the audio pins in the XDC (bclk, lrclk, sdata_i, sdata_o, codec_address[1:0], IIC_1_scl_io, IIC_1_sda_io, etc.).
  • There is also an audio_codec_ctrl / i2s_ctrl IP in my design. In Vivado 2024.1 it was previously shown as locked and I had TCL errors when trying to reconnect sdata_in / sdata_out, but I eventually got the design to synthesize and generate a bitstream.
  • When I load the bitstream as an overlay in PYNQ and print overlay.ip_dict, the audio part is basically not usable and I don’t get any sound in or out.

My understanding

  • The ADAU1761 needs:
    1. I2C configuration (register setup for PLL, routing, DAC/ADC enable, etc.)
    2. I2S signals (MCLK, BCLK, LRCLK, SDATA) for audio data.
  • My current IP mainly handles the I2S side; I’m not sure what the recommended way is in 2024.1 to handle the codec configuration and overall audio path.

What I’d like guidance on

  • For PYNQ-Z2 + Vivado 2024.1, is it better to:
    • Reuse the PYNQ base overlay audio design (the one that already works with ADAU1761) and insert a small custom processing block in the middle, or
    • Build a minimal fresh design with PS I2C (or AXI IIC) for ADAU1761 init + a simple custom I2S IP, and ignore the older audio_codec_ctrl IP?

If possible, I’d really appreciate:

  • Any example projects or block designs showing PYNQ-Z2 audio working on recent Vivado versions (2022+/2023+/2024+),
  • A pointer to a working ADAU1761 init sequence for PYNQ-Z2 (e.g. 48 kHz line-in to line-out),
  • General advice on what the PYNQ team/community recommends as a clean starting point for custom audio work on this board.

Thank you!