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.

DS90UB913A /914 in wrong mode (10 instead of 12 bit), why?

Hello,

we have an automotive measurement design using the DS90UB913A/914 in a coax setup (also using power over coax).

Most boards are working just fine, but a few (~5-10%) of all hardware because of no apparent reason doesn't work.

After some debugging we found that: the deserializer (914) is bootstrapped in 12-bit high speed mode, but the serializer somehow doesn't get that and is definitely in 10 bit mode.

We know this because we input 40.5 MHz into the serializer, but the deserializer is locked and outputs 30.37 MHz, which is exactly 0.75 the frequency (the difference between HS-12 and 10 bit mode). Unfortunately, the datasheet does not state HOW the serializer is configured into the correct mode by the deserializer, it is just "magic". But this magic doesn't always work, as it seems.

On the other hand I2C back-channel communication is working fine over this channel, also the lock/parity error outputs are completely fine (the link is locked, just in the wrong serializer mode). Obviously the output of the deserializer is a complete mess this way...

We tried removing the power inductors, change the values for AC coupling but nothing helps. The Serializer always boots up into 10 bit mode, even after manually triggering PDB pins on both, 913 and 914 chip side of the link.

Is there any description of the handshake between the Deserializer and Serializer to set the correct mode? What factors could influence its operation?

Thank you!

Thomas

  • Thomas, it is possible to manually set the mode of the serializer by writing to register 0x05 on the DS90UB913 - either directly or via the backchannel - to force 12 bit high speed mode, write 0x28 to register 0x05 in the 913A. Please try this and let me now if the 913 goes into 12 bit high speed mode and behaves correctly.
    Mark
  • Hello Mark,

    thank you for the fast answer.
    Unfortunately this doesn't work. I can read and write the serializer (over the backchannel). For instance I can write 0x18 (override bit = 0) to this register, I also read 0x18 from there. As soon as I write any combination (0x28, 0x24 etc.) with override=1, the serializer is gone and doesn't answer to any I2C request anymore, even after waiting some time (100 ms).
    The serializer (purely guessing from the clock I see at the deserializer) seems to end up in 12 bit low speed mode, because the clock is 1.5 times the expected value on the deserializer now (which is in 12 bit high speed mode).
    If I write 0x14 to the serializer, I still read back 0x18 afterwards.

    Any ideas? These measurement were made even with hardware that is acutally working (with the magic handshake).

    Thank you,
    Thomas
  • Addition: on "good" hardware/channels, the serializer register 5 reads 0x18, on "bad" ones 0x00
  • Correction: Overwriting works, I2C / backchannel doesn't crash (my fault)... but it is not the bits 3&2 to switch the mode, but bits 1&0 as in the deserializer. These are marked RSVD in the datasheet, but do what they say. So writing 0x22 to the register 5 helps.