I am a beginner in FPGA development and currently working on implementing OFDM on the PYNQ Z1 board. Since the board cannot transmit data via RF directly, I plan to connect it to either an Arduino or a Raspberry Pi for this purpose.
I’m trying to figure out the best way to connect the FPGA with these devices and establish efficient communication for data transfer. One idea I’ve come across is to write the required values to be transmitted into BRAM or DMA on the FPGA, but I’m unsure how to proceed from there.
Could anyone guide me on:
- Which device (Arduino or Raspberry Pi) would be better for this use case?
- What communication protocol (e.g., UART, SPI, I2C) would be most suitable between the FPGA and the selected device?
- How to implement the data transfer efficiently?
Any advice, resources, or examples would be greatly appreciated!
Thanks in advance!
Hi @Saranathan,
Welcome to the PYNQ community.
- The decision on the connector will depend on the module you want to interface. Do you know this?
- It depends on the module you want to interface and what is supports to
- What is the bandwidth? In general DMA is the most efficient way to transfer data from/to PS/PL.
Mario
Hi,
About DMA, did you check the parts of the tutorial provided for Pynq?
Here is part 1: Tutorial: PYNQ DMA (Part 1: Hardware design)
Thank you for responding! I’m currently using the PMOD’s I2C port to connect it to an Arduino Uno. From a Jupyter Notebook, I send data to the Arduino using the command Pmod_IIC(base.PMODA, SDA_PIN, SCL_PIN, IIC_ADDR)
, and this setup is working fine for now.
However, I’d like to explore other, potentially more optimized methods for data transfer. Specifically, how would you handle routing data, for example, from Jupyter Notebook to a DMA and then from the DMA to an Arduino via I2C? Any insights or recommendations would be greatly appreciated!