I wrote HDL code to program ADV7513 register, the timing, data on i2c bus look correct but no respond from slave device (ADV7513).
I tried both method, tied PD pin to '1': using address 0x7A, then tied PD pin to '0' using address 0x72. ADV513 never respond.
I instantiated IOBUF primitive:for SDA signal: (the FPGA is Spartan 6 from Xilinx)
( IN => SDA_OUT,
T => SDA_OE,
IO => SDA,
O => SDA_IN);
Where SDA is connect to an IO pad, SDA_OUT is output from my i2c_master logic along with SDA_IN and SDA_OE. On the snapshot shown
I generated "start" to low while SCL is high) command (SDA goes high then serial data on SDA_OUT is "1111_0100" for a write, expected an "ACK" at 9th SCLpulse,where SDA_OE inactive.. (i2c_write_slave_addr.PNG)
I ignored it ( in HDL code), the next serial data is 0100_0001 for base register 0x41 to power up the ADV7513, expected an "ACK" from AV again and SDA_OE inactive, (i2c_write_reg_41.PNG)
Then next serial data sequence is "0001_0000", no "ACK" received,
Finally, the "stop" command (SDA goes high while SCL is high) (i2c_write_19_o_reg41.PNG)
I checked the board, looked good, HDMI_SDA, HDMI_SCL pins have 2,2K pulled up to 1.8 v, nothing on PP pin, AVDD pins group connected to 1.8 v, DVDD to 1.8, DVDD_3v to 3.3 v.
Attached are the snapshots took with Xilinx ChipScope on real hardware not simulation waveforms, I m struggle with this for awhile until find this forum...