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-Q1: Serializer/De-Serializer interface not working

Part Number: DS90UB913A-Q1
Other Parts Discussed in Thread: ALP

We are bringing up a new custom board with a DS90UB913A serializer (SER). Our test setup is a host controller connected to a DS90UB964 de-serializer (DE_SER) eval board which is connected to our SER board.

We also have a DS90UB933 SER eval board. We are using Analog LaunchPAD SW (ALP) to configure the 964

When we connect our SER board to the DE-SER eval board we cannot 1) Pass I2C through the DE-SER/SER and see it on our board or 2) Use ALP to read or set the SER registers. What we do see with ALP is that the 964 detects the 913, shows the 25 MHz clock (as 26 MHz) and the PASS status.

When we connect the 933 eval board to our setup, we can both pass I2C to it, and use ALP to set its registers. This requires relatively little configuration of the 964. We use register 0x4C to select port 0 and registers 0x5D and 0x65 to set the sensor I2C addr and alias.

Our SER differs from the eval SER in the following ways:
- we use a 913 chip instead of a 933
- our 913 has an 8-bit I2C addr of 0xBA, the SER eval board has an 8-bit I2C addr of 0xB0
- our SER board has a 25 MHz clock set up in the PCLK-from-imager-mode, the eval board has a 66 MHz clock set up in external clock mode.

A few final points, we analyzed the 964 registers when we connect our board and the eval board.
- The 0x4f and 0x50 registers show the different RX_FREQ values correctly, or close. The 25 MHz signal into the serializer is reported as 26.246 MHz. Another of our prototypes sometimes reports 12.5 MHz. The clock going into the 913 appears to be a clean 25 MHz.
- The 0x5B register correctly shows the I2C addrs for both boards, 0xBA and 0xB0
- When the eval board is connected, some 964 registers are getting set up without our intervention. The 0x58 I2C register gets a value of 0x58 and register 0x5C, remote serializer alias, is 0x18. These registers are initially 0 on our board. When I manual set the same values on our board the I2C through the SER and the access to SER registers do not start working.

I'm wondering what else I can check to show if the SER/DE-SER connection is fully up and running? I think the best clue is that the access to the SER registers from ALP only works with the eval board. What would prevent the DE-SER from accessing the SER registers?

  • Hello,
    If you are not able to access I2C remotely, can you check if the IDx address for Ser/Des and the I2C configuration registers are set properly? You should also confirm there is proper SDA/SCL pullup and filtering if needed.
    Have you tried BIST mode between 913 and 964? You can also refer to the FPD-Link diagnostic features in our video module on the FPD-Link learning center link below.
  • Thanks for your reply. We have looked at this quite a bit more and have some further insight.

    The problem I'd like to focus on is access to the SER registers from the DES side. So the pull-ups and filtering are not involved. (But they look okay.)

    We ran BIST and the results were inconclusive. With the 933 eval board, we ran BIST and saw zero errors in the BIST_ERR_COUNT register. We also observed a distinct change in the signal over the coax. With our SER board we also saw zero errors in the BIST_ERR_COUNT register. But we did not see the change in the signal on the coax. I suspect the BIST test was not starting, possibly because of the issue with communicating to the SER's registers?

    Since we do see the expected I2C address for the SER in the DES 0x5B register, I think the I2C addresses are correct. We tried changing the IDX resisters on the SER and saw the new, correct, I2C addr in the DES 0x5B register as well.

    We ran a logic analyzer on the I2C exchange when the ALP SW connects to the DES eval board for both the SER eval board and our SER board.

    In both cases the 0x5B register contains the expected I2C address for the SER. So whatever mechanism the DES uses to get the SER I2C addr at startup is working.

    With the SER eval board, the initial read of the 0x4D,4E RX_PORT_STS registers shows
    lock state true, PASS state true, and frequency stable

    With our SER board we get the same, lock, PASS, freq stable, but also the "lock state change" bit is set.

    With the SER eval board, the initial read of the 0x58 BCC_CONFIG register shows 0x58, (register 0x58 has value 0x58)
    I2C passthru, backchannel (BC) always on, BC CRC on.
    ALP later sets the same 0x58 value, but on the first read that value is already there.

    With our SER board the initial value for the BCC_CONFIG register is: backchannel (BC) always on and BC CRC on, but NOT I2C passthru. So whatever mechanism in the DES that sets those values when it connects to the SER is seeing something different with our board.

    Similarly, with the SER eval board the DES 0x5C SER_ALIAS_ID reg is already set to 0x1A. With our SER board the same register reads zero.

    In both cases ALP then writes 0x58 to BCC_CONFIG and 0x1A to SER_ALIAS_ID and attempts to read the SER 0x00 register. With the eval SER board this succeeds and with our SER board it is NACKed.

    To summarize, the DES sees the SER, we're getting lock, the DES reads the I2C addr of the SER. But we are seeing no access to the SER registers from the DES.

  • Hello,
    The lock state change bit should clear upon read and stay at zero. If this is showing one for repeated reads then you have intermittent forward channel connection with your SER board.
    If you are not able to run BIST this may be indicative of a bigger problem on your SER board.
    Please double check the supply power on sequence and initialization.
    If you have access to the local I2C at the serializer side you could check for backchannel CRC errror flag without running BIST.

    Regards,
  • thanks,

    I am working on I2C access to the serializer and will post when I have some results.

    In the meantime, I want to jump right to what we suspect is the issue. Should  a 913 be able to operate with a 964 when the 913 has a 25 MHz pixel clock as the timing source? With the 25 MHz clock, does it have to operate in 12-bit low frequency mode?

  • We set up I2C directly to our 913 SER board and were able to read the registers. We saw three things that look wrong:
    DES ID = 0
    CRC err LSB = 0x25
    The DES Error bit in reg 0x0C was set.

    So this confirms that the SER is running and seeing errors communicating to the DES.

    We agree that the issue is probably with our board, but exactly what is going wrong is hidden in some details of the SER/DES interface that is not visible to the registers.

    The obvious candidate is the clock on the SER. The two obvious differences between our board and the SER eval board are the clock, speed and mode, and 913 vs 933. Please see my other reply about whether a 25 MHz clock is supposed to work.

    Here are all the 913 registers we read:

    reg value notes
    0x00 0xB0 - correct SER I2C addr from idx resisitors
    0x03 0xC5 - RX CRC Checker Enable,
    TX Parity Generator Enable,
    I2C PassThrough,
    Pixel Clock Rising Edge
    0x05 0x14 - MODE_UP_TO_DATE
    10-bit mode selected
    0x06 0x00 - DES ID - does this indicate a problem ?
    0x0A 0x25 - CRC err LSB
    0x0B 0x00- - CRC err MSB
    0x0C 0x06 - PCLK detected, DES Error
    0x2A 0x00 - BIST CRC errors

    thanks,
  • Hi,I am writing I2C driver by FPGA.While I don't know whether I mistake my register,I cannot receive any data from 964 csi-2 port.But initial data flows out from PFD-linkIII by detecting the data before flowing into the chip PUB964Q.My I2C device ID is 7A.Thank you!
  • Hi,I am trying confiuring the 964 register values by ALP.While the value writen cannot be applied.Once click the button "Apply",the value becomes 00.And the Device information shows UNKNOWN FPD-LINKIII DESerializer to CSI-2 ADAS HUB.Do you known the reaon or how to resolve it? What's more,the computer(win 7 X64)is connected with the 964 De Hub by a USB cable. Thank you!
  • We are now able to exchange I2C with the sensor through the DES/SER.

    What fixed it for us was the clock. We originally had a 25 MHz clock to the sensor and from the sensor to the 913 as a 25 MHz PCLK reference clock.

    We changed the oscillator to 52 MHz  and brought it into the 913 as external oscillator and applied the 52/2 = 26 MHz clock from the 913 to the sensor.

    thanks

  • 1) better to open a new issue/thread with a new question

    2) in general, ALP does the thing where you apply and the value becomes 0 when it can't talk to the register you are trying to read/write.
    The only time I've seen "UNKNOWN FPD-LINKIII DESerializer" is when I didn't have the DES connected to a MIPI host. If ALP isn't reporting your DES correctly, I wouldn't expect anything else to work.