Background
- Using the PYNQ-Z2 with Image v2.6
- Goal is to build a control system in RTL that uses sensor data as an input, interfaced through I2C
My goal is to build an RTL control system that uses a hall effect sensor (which has an I2C interface) as an input. For prototyping, my first control system will be in software written in Python. For this software controller I made a custom hardware overlay with Zynq, AXI-IIC, and AXI-GPIO blocks. In Jupyter, I simply instantiate the IP blocks, call the respective methods to read the sensor data, perform some software processing, and then actuate a current driver through the AXI-GPIO.
When I transition to a more high performance RTL (hardware) controller, I do not want to use the Zynq as the middle man to read in the sensor data because of latency issues. I wish to read the I2C data directly into the fabric and into my RTL controller. The only thing I want to do in software is DMA monitoring, but I do not want the processing system in the path of the control loop. Is there an easy way to do this with the AXI-IIC IP or is there an alternative way to do this?