AnsweredAssumed Answered

Why iic_mixer in Zynq ADV7511 reference design?

Question asked by henry10210 on Oct 12, 2014
Latest reply on Oct 13, 2014 by larsc

I've been learning about and debugging the ADV7511 reference design generated from Vivado 2014.2 for the past month (as a hobby; detailed attempt documented here).  The bare metal reference application apparently does NOT use the IIC communication, but hits the HDMI core, HDMI VDMA, and CLKGEN cores directly.  I made the mistake of assuming that the design works based on seeing the test image pattern on the screen from the bare metal application, and trying to debug the Linux device driver modprobe failure in finding the ADV7511 on the I2C bus.  It would have been great if the bare metal C application tested the IIC communication--would have saved me a lot of "learning" time.  While staring at the input and output I2C SCL/SDA on the scope, I generated far more questions than answers.


One that I cannot begin to fathom is the need for the iic_mixer core.  According to the reference design doc: "since axi_iic_main only has a single IIC port, an external multiplexer is required to connect multiple external IIC peripherals. The sys_i2C_mixer multiplexes the IIC ports of both the ADV7511 and the ADAU1761 back to the axi_iic_main IIC controller in the Zynq PL."  My understanding of I2C is that it's a multi-slave protocol (in some cases, even multi-master is possible), corroborated by the wiki page  So why not put both ADV7511 and ADAU1761 SPI on the same wire?

I can't read VHDL very well, but glancing at the 2 VHDL source for the iic_mixer, I don't understand how it's multiplexing correctly.  It looks more like adding the pairs of SCL and SDA together, but maybe that's the original intent?