Hps i2c fails after FPGA programmed


I have a DE10-Standard board. When I boot up Linux I can use the HPS to access the onboard video chip (ADV7180) using i2c reads and setting the HPS_I2C_CONTROL. However, after I program the FPGA portion using Quartus programmer or load an rbf file, I’m unable to use the HPS to access the ADV7180. Does programming the FPGA logic somehow change how the HPS accesses GPIO registers or the I2C pins?



It turns out that the verilog top file of my project didn’t drive the TD_RESET_N output to the ADV7180 - it was just floating.

I properly connected it to async assert/synchronous deassert reset logic clocked by TD_CLK27.

This was a tough one but I learned a lot about how to use the i2c registers built in the Cyclone V.