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.

DS90UB954-Q1: How to configure for Eye pattern test using CMLOUT?

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

Tool/software:

Hi team,

I created a custom board using DS90UB954.
I am measuring the eye pattern to check the communication quality, but the eye is unstable, perhaps because the back channel signal is mixed in.
I am using the script included in the ALP.

import time

# 953 config
runTime = 3

Alias953 = 0x18
DES954 = 0x60


# Reset 954
board.WriteI2C(DES954, 0xb0, 0x14)
time.sleep(1.0)
# CSI enable , continuous clock, 4 lanes
board.WriteI2C(DES954, 0xb1, 0x00)
time.sleep(0.1)
# Set CSI_TX_SPEED to select 800Mbps
board.WriteI2C(DES954, 0xb2, 0x80)
time.sleep(0.1)
# Port Control
board.WriteI2C(DES954, 0xb1, 0x03)
time.sleep(0.1)
# Port Selection
board.WriteI2C(DES954, 0xb2, 0x28)
time.sleep(0.1)
# set alias
board.WriteI2C(DES954, 0xb1, 0x04)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb2, 0x28)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb1, 0x02)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb2, 0x20)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb0, 0x04)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb1, 0x0f)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb2, 0x01)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb1, 0x10)
time.sleep(0.1)

board.WriteI2C(DES954, 0xb2, 0x02)
time.sleep(0.1)

The signal is the CSI signal from the camera, converted by the SerIC and sent to the DesIC.

I am also using the same script between development boards (EVMs) and sending test patterns from the SerIC, and measurements are successful.

Is there a setting I've missed?
On the custom board, several devices are connected via I2C, so do I need to disconnect that communication?

Best Regards,
ANDO Satoshi

  • Hello Ando,

    we do not recommend measuring the Eye diagram at the input of the DES. As you said, the forward channel is mixed with the back channel hence you will not be getting a meaningful result.

    Instead, we do recommend doing one of the followings:

    1) Measure the Eye at the DES CMLOUT pins as described in the data sheet, or

    2) Use the MAP tool which is integrated in our ALP GUI. This will give you the quality of your link. Please refer to this App note:

    www.ti.com/.../snlu243.pdf

  • Hello Hamzeh,

    Thank you for your reply.

    But I tried to measure the eye pattren using CMLOUT pins with the above script.
    Nevertheless, there may be other signals on the board.

    When I use the script you posted on the EVM board, I can measure the eye, but I don't understand why it can't be measured on our board.
    Are there any commands missing from the above script?
    The EVM board barely uses I2C, but our board uses I2C to communicate with various devices.
    Could that be the problem?

    Best Regards,
    ANDO Satoshi

  • Hello Ando,

    If your Oscope is connected to CMLOUT pins, and the Camera/SER is connected to the DES RX port 0 then the above is the right script.

    You may need to check:

    1) Make sure you are using DSE RX port 0 is the input.

    2) Make sure you have a stable LOCK on the DES

    3) Make sure you have the AC coupling capacitors and the differential 100-ohm termination resistor on CMLOUT pins,

    4) Make sure your board does understand the language used on the script, because this is specific for using on our EVM and our MSP430 microcontroller.

    If you are using RX port 1 as input, then you need to use the following script:

    import time
    
    # 953 config
    runTime = 3
    
    Alias953 = 0x18
    DES954 = 0x60
    
    
    # Reset 954
    board.WriteI2C(DES954, 0xb0, 0x14)
    time.sleep(1.0)
    board.WriteI2C(DES954, 0xb1, 0x00)
    time.sleep(0.1)
    board.WriteI2C(DES954, 0xb2, 0x80)
    time.sleep(0.1)
    # Port Control
    board.WriteI2C(DES954, 0xb1, 0x03)
    time.sleep(0.1)
    # Port Selection
    board.WriteI2C(DES954, 0xb2, 0x28)
    time.sleep(0.1)
    # set alias
    board.WriteI2C(DES954, 0xb1, 0x04)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb2, 0x28)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb1, 0x02)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb2, 0xA0)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb0, 0x08)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb1, 0x0f)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb2, 0x01)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb1, 0x10)
    time.sleep(0.1)
    
    board.WriteI2C(DES954, 0xb2, 0x02)
    time.sleep(0.1)

  • Hello Hamzeh,

    Thank you for your reply.

    Just to confirm, when using these scripts above that set CMLOUT,
    the FPD-Link signal with the back channel turned off is output from the CMLOUT pin, right?

    Best Regards,
    ANDO Satoshi

  • Hello Ando,

    the FPD-Link signal with the back channel turned off is output from the CMLOUT pin, right?

    Yes, you will get the incoming signal amplified and cleaned up, without BC, on CMLOUT pins.