SNLA474A October 2024 – October 2024 DS90UB971-Q1
Level 1 Optimizations
The following script example combines the recommended software optimizations for system level ESD testing performance. These settings are generally applicable to all systems using FPD-Link III/IV ADAS devices with FEC capability. This example uses 7-bit FEC, but the FEC setting can be adjusted based on system needs and testing performance.
board.WriteI2C(desAddr,0x4C,0x0F) # Select all RX Ports
board.WriteI2C(desAddr,0xB9,0x1F) # Increase LINK_ERR_THRESH
board.WriteI2C(desAddr,0x4A,0x02) # Enable FPD FEC (7-bit)
board.WriteI2C(desAddr,0x7C,0x00) # Disable FPD frame discard on parity error
board.WriteI2C(desAddr,0xB6,0x1C) # Disable CLK0/CLK1 check for LOCK drop
Level 2 Optimizations
In some cases, performance can be improved further by adjusting FPD-Link AEQ gain, or by locking the FPD-Link AEQ range to a smaller value. Adjustments to AEQ needs to only be used as a last resort, when all other hardware and level 1 software optimizations have been exhausted. Adjusting AEQ to extreme values can also have unintended negative side effects to link performance, the recommendation is to contact TI for assistance when manually adjusting AEQ.
For FPD-Link devices including DS90UB960-Q1, DS90UB962-Q1, DS90UB662-Q1, DS90UB954-Q1, DS90UB936-Q1, DS90UB934-Q1, DS90UB964-Q1, and DS90UB638-Q1, performance can be improved by forcing low AEQ values. In most cases, for cable lengths <2-3m, forcing an AEQ value of 0 can improve system level ESD performance.
# 960, 962, 662 AEQ Force for short cable length
board.WriteI2C(desAddr,0x4C,0x0F) # Select all RX Ports
board.WriteI2C(desAddr,0xD4,0x01) # Force AEQ = 0
For FPD-Link IV deserializer operating with FPD-Link IV CDR mode, including DS90UB9702-Q1, DS90UB9722-Q1, DS90UB9724-Q1, and DS90UB9742-Q1, performance can be improved by increasing AEQ values. An example starting value for system designers to experiment with is to add +5 to the automatically selected AEQ. To increase the AEQ, make the following underlined adjustments to TI's initialization script within the en_AEQ_LMS() function.
def en_AEQ_LMS(first_time_power_up=1):
if(first_time_power_up == 1):
board.WriteI2C(devAddr,0xB1,0x2C)
read_aeq_init = board.ReadI2C(devAddr,0xB2)
board.WriteI2C(devAddr,0xB1,0x27)
board.WriteI2C(devAddr,0xB2,read_aeq_init + 5)
board.WriteI2C(devAddr,0xB1,0x28)
board.WriteI2C(devAddr,0xB2,read_aeq_init + 6)
...
...