Strange I2C signals emitted from FPGA

fpgai2c

I have a ZedBoard FPGA device and I'm trying to implement an I2C interface to communicate with a camera module. I'm using Vivado 2014.2 and I have added an AXI IIC block to my design with the SCL clock frequency set to 90KHz. The physical SCL/SDA pins have a 10k pullup resistor to VCC (tried 4K7 also). For some reason, my scope shows both pins as already having some kind of invalid signal being output on them, when it should be asserted low as I have not setup any actual communication in software yet. Also notice that the speed of these signals is 24MHz! Which happens to be the speed of the onboard processor clock for some reason (no, the pins are NOT mixed up). Here is the scope output with the SCL/SDA pins:

photo

Any idea why this is happening?

Best Answer

So, the unwanted signals are synchronised but not perfectly identical (although that could be the scope) and about 1Vpp.

Crosstalk, perhaps? Is there another synchronised but digital signal on a nearby pin or trace? Do the unwanted signals disappear if you ground the pins rather than leaving them floating with pullups?

If you don't include the I2C module in the build, do the pins exhibit the same behaviour? If you build in some GPIO attached to those pins and drive the pins high and/or low, is the unwanted signal overlaid on the driven logic level or does it disappear?

Also, doesn't the Zynq PS block have two I2C peripherals already? Why aren't you using one of them?