This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DS90UB914A-Q1: (16) DS90UB914 on the same i2c bus, with only a few responding to i2cdetect

Part Number: DS90UB914A-Q1

Hello,

We have (16) DS90UB914ATRHS-Q1 on the same i2c bus.  We can see that valid, clean i2c traffic is arriving at the sda and scl pins of each of the devices on the board.  The bus is running at 100khz.  Upon doing an i2cdetect -y -a -r in Linux, we are only seeing a sub-set of the de-serializers.  Below is the output.  We would expect there to be a deserializer at 0x60 - 0x6F per table 6 of the datasheet ( http://www.ti.com/lit/ds/symlink/ds90ub914a-q1.pdf ).

# i2cdetect -y -a -r 0
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- 0c -- -- --
10: -- -- -- -- -- -- -- -- 18 19 -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 2f
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- 63 -- -- -- 67 -- -- -- -- 6c 6d -- 6f
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

When reading register 0x00 from 0x63, 0x67, 0x6c, 0x6d, and 0x6f, they all return 0xC0 ( inferring they all believe that their ID is set from the IDx[0]and IDx[1] pins, but have an address of 0x60.

Additionally, with no serializer attached and bisten de-asserted, some of the devices have one or both of LOCK and PASS asserted high.  On reboot, the same devices have the same level for LOCK and PASS.  Viewing on the scope shows these pins are not toggling, and steady state.

We are using the RIN0 pair, with the RIN1 floating to test points.

GPIO0 - GPIO3 are pulled to GND via a 100k resistors.

SDA and SCL are driven from a TCA9803DGKR with no pull-ups on the "B side" of the buss.  The "A side" has 2k pull ups.

VDDIO1, VDDIO2, VDDIO3 are pulled to a 1.8v rail ( 1V8A ), and VDDD, VDDSSCG, VDDR, VDDCML0, VDDCML1, and VDDPLL are pulled to a different 1.8v rail (1V8B ).  VSS is pulled to a shared ground.  The timing of the two 1.8v rails is 1V8A comes up first, then 1V8B after.  The time between the two is hundreds of microseconds.

PDB is, for ~100ms floating before being driven high ( this is due to the configuration time of an FPGA, and the net does not have a pull down on it ).

MODE is set with a resistor divider of RMODE is set to 11k per table for 10 bit mode ( note: it has been identified this needs to be 0 ohms to work with our serializer and clock, however I would not expect that to impact the i2c traffic functionality in this manor )

BISTEN is, for ~100ms floating before being driven low ( this is due to the configuration time of the FPGA, and the net does not have a pull down on it ).

SEL is pulled low.

OSS_SEL and OEN is pulled high to 1V8A.

Is there something that sticks out as being very wrong?  This design was validated on the EVM for the deserialize with just one device on the bus, and everything worked as expected.

Thank you,

-TD

  • Hello TD, 

    The main thing that seems concerning to me is the PDB pin floating during power up. Can you please send a scope shot of the power sequence including the power rails and the PCB pin all on the same shot?

     Best Regards,

    Casey 

  • Hi TD,

    From your messages, it seems totally 16pcs 914A share the same I2C bus? how do you arrange the I2C addr. for these 16pcs 914A? it would be helpful if you can share the block diagram here. also, have you measured the SCL/SDA signals here and what?

    best regards,

    Steven

  • Hi Steven, 

    Please see attached for screen shots of the deserializer I2C configuration resistors. 

    -Cousins

  • Stephen, Casey,

    I've verified that all 16 devices do have different voltages on all of their voltage deviders for the IDx[0] and IDx[1] ( validating that the CM did not populate the board incorrectly ).

    We did have PDB at 3.3v rather than 1.8v and was driving that into the part.  It is higher than the VDDIO, but still within range.  After fixing that issue, we do not have any of the deserializers showing up in i2cdetect, however they are definitely alive and trying to talk ( just talking over each other )

    I took a look at the I2C bus, and saw that there appears to be contention on the bus when trying to read AFTER the initial write.  I've tried the various switches for i2cdetect and i2cget, and none appear to produce any different results.

    I have the DS90UB914A evaluation board.  I took a look a the 1.8v VDD rail vs the 3.3v rail for sequencing, and they appear to come up at the same time ( 1.8v in yellow, 3.3v in blue ).

    We have our VDD on one 1.8v rail, and the other inputs on another 1.8v rail.  VDDIO1, VDDIO2, VDDIO3 are on 1.8v_A, which comes up first.  Then, about 50 ms later, VDDD, VDDSSCG, VDDR, VDDCML0, VCCDMC1, and VDDPLL come up.  During this time PDB is pulled low with a 10k resistor to ground.  1.8v_A and 1.8v_B are both fed by 3.3V, but 1.8v_B is sequenced by power good signals from other regulators.

    Per Figure 42 ( http://www.ti.com/lit/ds/symlink/ds90ub913q-q1.pdf ), I would have expected that this sequencing was acceptable:

    The serializer/deserializer pair are working, as I can de-assert PDB ( drive high ) and see that the link Locks, and that I get a valid pclk out.  So it does appear that the deserilizers can't seem to figure out what their i2c address is from the external IDx pins.

  • Hi,

    in your case, every package has two IDX0 and IDX1? it has two devices here?

    Also, our UB914a only support 8 diff. IDX addr., if the IDX voltage is not accurate, the IDX addr. would be confused in the I2C bus.

    regards,

    Steven

  • btw, can you disconnect some ub914a in the bus, and verify the link's I2C status step by step? I concern that the IDX setting issue in the bus which makes you fail to visit the 914a in the i2c bus.

    best regards,

    Steven

  • Steven,

    Thank you for your reply.

    Per Table 2 of the UB914A datasheet ( http://www.ti.com/lit/ds/symlink/ds90ub913q-q1.pdf

  • Sorry, it looks like my previous post did not go through correctly.  Please see below.

    Steven,

    Thank you for your reply.

    Per Table 2 of the UB914A datasheet ( http://www.ti.com/lit/ds/symlink/ds90ub913q-q1.pdf ), it looks like there are 16 valid addresses.

    We do have the sixteen devices separated into two groups on the other side of two i2c buffers.  We can try isolating the 8 from the other 8 and see if that results in anything different.  I will post back the results there.

    It looks like the UB913 only supports 6 valid addresses, which is fine for us since we'll be using the Alias mechanism in the deserializers.

    Thanks,

    -TD

  • HI TD,

    From the SCL/SDA signals measured in your post, it sounds the SDA data is not correct. it sounds it has I2C bus contention here?

    also, can you check the IDX resistor accuracy or can you measure the IDX voltage, is it right?

    regards,

    Steven

    regards,

    Steven

  • HI TD,

    From the SCL/SDA signals measured in your post, it sounds the SDA data is not correct. it sounds it has I2C bus contention here?

    also, can you check the IDX resistor accuracy or can you measure the IDX voltage, is it right?

    regards,

    Steven

    regards,

    Steven

  • Steven,

    I have good news!

    We were using two TI i2c buffers that were clearly misbehaving.  Both were removed and sda and scl jumpered, and all 16 devices showed up.  Additionally, we were able to see the serializer when plugged in as well.

    Not sure why they weren't playing nice, but they are actually not needed in our design, so all is well.

    Thank you very much for your support!

    Thanks,

    -TD