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.

DS90UB962-Q1: SerDes Interface: Configuring FRAME_SYNC between ub962 & ub953 (Synchronous vs. Non-Synchronous modes)

Part Number: DS90UB962-Q1

Regarding FrameSync configurations based on the Deserializer ub962 and Serializer ub953 Datasheets:

 

I have the following understanding:

  1. If DeSer 962 and Ser 953 (in camera) are in Synchronous mode, then FrameSync is directly dependent on the REFCLK of the DeSer.  That means,
    1. No need to configure the registers in TI 962 (i.e., 0x18, 19, 1A, 1B, 1C) >> Leave them as default
    2. Need to configure Serializer GPIOs as outputs
    3. FrameSync is automatically taken cared by the Synchronous mode configuration

 

  1. If DeSer 962 and Ser 953 are operating in Non-Synchronous mode,
    1. Better to use internally generated frame sync (configuration is simpler)
    2. Configure all registers in TI 962 (0x18, 0x19, 0x1A, 0x1B, 0x1C) as indicated in the 962 datasheet
    3. Configure Serializer GPIOs as outputs

 

Please confirm if I have the correct understanding between both cases mentioned above.  Are there anything else to consider when configuring frame_sync?

  • Hello Mayunthan,

    1. The 962 DES has an internally generated FrameSync mode and an externally generated FrameSync mode. In internal FS mode, the 962 will generate the FrameSync signal based on the device's REFCLK, but the resolution of the sent FrameSync signal is based on a selected RX Port's Back Channel Frame Period.
      1. If your 962 is internally generating the FrameSync signal, then you do need to configure the registers in the 962.
      2. If your 962 is operating in external FrameSync mode, then there are a different set of registers to configure.
      3. You need to configure these registers, regardless of whether you are in Synchronous Mode or Non-Synchronous Mode.
      4. More specific configuration details are in sections 7.4.24.1 External FrameSync Control and 7.4.24.2 Internally Generated FrameSync in the 962 datasheet.
    2. It does not matter if you are in Non-Synchronous Mode or Synchronous Mode. If your system consists of only 4 camera sending video data to a single quad-hub deserializer, then you could use either Internal or External FrameSync mode. The Internal FrameSync mode does not require an external signal to be inputted into your deserializer device. If your system consists of more than 4 cameras, then you will need to use at least 2 or more FPD-Link deserializers. In that case, in order to make sure that all of your cameras receive the same FrameSync signal, you would have an external processor send the exact same FrameSync signal to the 2 deserializers used in your system, which would then be propagated to all of the connected cameras.
      1. If your system consists of three 962 deserializers, for example, you could have one of them generate an Internal FrameSync signal and then send it to the other 2 deserializers over GPIO. In this example, the other two deserializers are configured for External FrameSync mode. 
      2. Which mode to use depends on the specific customer application.
      3. One mode does not necessarily provide improved performance, compared to the other.

    Best,

    Justin Phan

  • Hi Justin,
    Thanks so much for clarifying this. That was very helpful. I apologize for the delayed response.

    Based on your feedback, it is better for us to use the internally generated framesync for our design: The Goal is to send I2C transactions across BCC to control SER GPIOs locally.

    Just to review the setup in general - On the Serializer side, we would have to configure ..
    1. GPIOs as outputs via (0x0E)
    2. Control Local GPIO Data via (0x0D)

    On the Deserializer side, we'd have to configure ..
    1. 0x18 (FS_CTL) to enable internal framesync, set HI/LO, and use FS_MODE to configure the four ports for internally generated framesync, if all ports are used.
    2. 0x6E or 0x6F to configure the one chosen GPIO used and assign framesync to it.
    3. 0x19, 0x1A, 0x1B, 0x1C >> configure high and low periods based on the back channel frequency of 0x58 Register
    4. 0x10 - 0x16 >> configure one of the GPIOs. So if GPIO[0] is used in 0x6E then configure the register 0x10 here. 

    Please let me know if I am missing anything. 

    Thanks,

    Mayunthan

  • Hello Mayunthan,

    You can look at the datasheet for an example of how to configure the internal FrameSync on the UB962, but you can also reference this old example I made for a 954/953 setup, which has similar configurations:

    DES = 0x60
    SER = 0x18
    
    # UB954/953 Internal FrameSync Config (FPD3 Synchronous, 50Mbps Back Channel)
    board.WriteI2C(DES, 0x4C, 0x01)  # RX0
    board.WriteI2C(DES, 0x6E, 0xAA) 
    board.WriteI2C(DES, 0x4C, 0x12)  # RX1
    board.WriteI2C(DES, 0x6E, 0xAA) 
    board.WriteI2C(DES, 0x4C, 0x24)  # RX2
    board.WriteI2C(DES, 0x6E, 0xAA) 
    board.WriteI2C(DES, 0x4C, 0x38)  # RX3
    board.WriteI2C(DES, 0x6E, 0xAA) 
    
    board.WriteI2C(DES, 0x10, 0x91)  # FrameSync status
    board.WriteI2C(DES, 0x58, 0x5E)
    board.WriteI2C(DES, 0x19, 0xB2)  # FrameSync HIGH[15:0] = 0xB208 
    board.WriteI2C(DES, 0x1A, 0x08)
    board.WriteI2C(DES, 0x1B, 0xFF)  # FrameSync LOW[15:0] = 0xFFFF
    board.WriteI2C(DES, 0x1C, 0xFF)
    board.WriteI2C(DES, 0x18, 0x01)  # Enable FrameSync
    
    # Period of FrameSync = (1 sec / 15Hz) / 600ns = 111,111 counts
    # FS_HIGH_TIME = 0xB208 = 45,576
    # FS_LOW_TIME = 0xFFFF = 65,535
    # 41% Duty Cycle
    
    board.WriteI2C(SER, 0x0E, 0x1E)

    Best,

    Justin Phan

  • Thanks so much for the feedback
    This was very helpful. 

    Best Regards,

    Mayunthan N.

  • Hello Mayunthan,

    You are welcome. Feel free to post again if you need clarification, or start a new E2E thread if you have a question on a different topic.

    Best,

    Justin Phan