DS90UB954-Q1: DS90UB954 : CSI-2 Synchronous Back Channel config not working

Part Number: DS90UB954-Q1
Other Parts Discussed in Thread: TSER953, DS90UB953-Q1, TDES954

Part Number: DS90UB954-Q1
Other Components: TSER953 / DS90UB953-Q1 Serializer, ECS-2520MVLC-250-CN-TR (25MHz Active Oscillator)
Host Controller: Raspberry Pi Compute Module 5 (CM5) via I2C Bus
 
Hello, I am relatively new to working with the TI SerDes ecosystem. I am designing a custom board to bridge a Sony IMX678 camera sensor to a Raspberry Pi Compute Module 5 host using the DS90UB954-Q1 deserializer and a remote TSER953 serializer over a physical Shielded Twisted-Pair (STP) cable link.
My goal is to configure the link for CSI-2 Synchronous Mode with a 50 Mbps Back Channel so that the remote serializer can derive its operational clock directly from my deserializer.
The Roadblock:
I can successfully communicate with the local deserializer over I2C at address 0x30, but the hardware link will not lock (Register 0x4D = 0x40 or 0x00). Following troubleshooting advice, I checked the reference clock tracking register, and Register 0x57 (REFCLK_FREQ) reads completely 0x00.
Since I am new to initializing this chip, I am not sure if I am missing a prerequisite register configuration sequence to wake up the clock detection block, or if my hardware implementation has an underlying error.
Hardware Setup Context:
  1. Clock Circuit: I have a 4-pin active CMOS oscillator (ECS-2520MVLC, 25 MHz) wired directly to Pin 5 (REFCLK). Using an oscilloscope right at Pin 5, I can verify a clean, stable 25 MHz wave swinging fully between 0V and 1.8V (DC coupled). The oscillator and the deserializer VDDIO pins share the exact same 1.8V power plane.
  2. Mode Strapping (Pin 37): My board uses resistor dividers (Rhigh = 78.7 kOhm and Rlow = 97.6 kOhm), which outputs a steady 0.99V to Pin 37. This is intended to select Mode 5 (Synchronous STP Mode).
  3. PDB Delay (Pin 30): Tied to a 4.7 kOhm pull-up to 1.8V and a 10uF capacitor to GND to delay startup.
  4. High-Speed Line Termination: Our custom PCB layout omits external termination resistors on the high-speed differential traces, as we intend to leverage the chip's internal 50 Ohm + 50 Ohm software-controlled termination. Inline 0.1uF AC-coupling capacitors are physically mounted.
What I Have Tried So Far:
I wrote a basic startup script to initialize the registers, executing the following sequence over I2C:
  1. Select RX Port 0: Register 0x4C = 0x01
  2. Force external REFCLK select and unlock divider: Register 0x56 = 0x1C
  3. Force internal termination active and select 50 Ohm single-ended / 100 Ohm differential STP: Register 0x6D = 0x7C
  4. Set Back-Channel Rate to 50 Mbps and enable Pass-Through: Register 0x58 = 0x58
  5. Trigger a soft digital core reboot to re-probe: Register 0x01 = 0x02
Even after running this sequence and verifying that the clock is continuously ticking on Pin 5 via an oscilloscope, Register 0x57 stubbornly reads 0x00.
Questions for the TI Team:
  1. As a beginner to this SerDes family, is there a specific, strict register write order required at boot time to get the chip out of power-down and force it to lock onto a 25 MHz reference clock?
  2. Does the internal auto-detection engine need to be explicitly disabled via secondary registers (like 0x6E) for my manual 0x56 clock override or 0x6D manual internal termination selections to take effect?
  3. Could a slight ramp-up timing delta between my 1.1V core logic rail and the 1.8V VDDIO rail be locking the internal PLL into a fault state before the PDB pin releases the chip from hardware reset?
Any guidance, example code snippets, or typical reference scripts for setting up an STP Synchronous link with internal termination would be immensely appreciated. Thank you!

 
  • Hi Vijay, 

    Thank you for your patience. Below is the power-up sequencing requirements for your reference: 

    As a beginner to this SerDes family, is there a specific, strict register write order required at boot time to get the chip out of power-down and force it to lock onto a 25 MHz reference clock?

    No programming sequence is required for the reference clock detection. Key item here is to follow the power up sequencing as documented above. The deserializer has an internal oscillator to allow for I2C communication in the event the reference clock is not detected. Below are the REFCLK specifications: 

    Would you be able to share a schematic for the project? I don't understand the set-up in regards to the RIN traces currently. The STP configuration wouldn't be dependent on the local reference clock being detected as these are separate blocks. Can you also share a register dump? 

    Force external REFCLK select and unlock divider: Register 0x56 = 0x1C

    Register 0x56 on the DS90UB954 is RX_PAR_ERR_LO. To force REF_CLK_DET on the deserializer, write to 0x02[0]=1. REFCLK valid is reported in 0x04[4].

    Register 0x57 (REFCLK_FREQ) reads completely 0x00.

    REFCLK_FREQ is register 0xA5. 0x57 is BIST error count which should be 0 in normal operation. 

    Set Back-Channel Rate to 50 Mbps and enable Pass-Through: Register 0x58 = 0x58

    For sync mode with TSER953, the device should be paired with 0x58=0x5E. 

    Force internal termination active and select 50 Ohm single-ended / 100 Ohm differential STP: Register 0x6D = 0x7C

    0x6D=0x7C will set the device in coax mode. For STP, 0x6D=0x78. 

    I recommend referencing the following datasheet since I believe there is a misalignment in which registers are being referenced. The TSER953 is compatible to the TDES954, not the UB954. 

    DS90UB954: https://www.ti.com/lit/ds/symlink/ds90ub954-q1.pdf?ts=1686032632230&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FDS90UB954-Q1 

    TDES954: https://www.ti.com/lit/ds/symlink/tdes954.pdf?ts=1785795665865&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTDES954 

    Best,

    Zoe

  • Hi Zoe,

    Thank you for your response and for providing the correct information.

    It appears that I had assumed the TDES954 and DS90UB954 were identical in certain aspects. Based on your clarification, I will recheck my circuit design and hardware configuration to ensure everything is aligned correctly.

    I will review the setup and share the results once I have verified whether the system is working as expected.

    Thanks again for your support.

    Best regards,
    Vijay Pal

  • Hello Vijay,

    Yes, please keep us updated.