ADV7401 - howto improve RGsB input

Hello, could cetainly use help identifying which registers/sections in the ADV7401 user manual, will help to improve the decoded RGsB proccessed signal.

I am using a custom PCB with ADV7401 (decoder) --> Toshiba TC358748 (bridge converter) --> RPi CM3 (encoder).

At the moment,  I have an input analog RGsB signal of 1024x768 @60hz  and the output on the monitor (after passing through the encoder) is:

1024x768 @ 60hz

The colours look "bleached" and the frame seems to not sync properly.

From the many use cases here on AnalogDevices forums, what could be the main causes of seeing such an output.

I kindly thankyou for your time and patience in addressing my query.

Edit::

Forgot to mention, that everytime I disconnect the Analog input signal to the ADV7401,  the default blue screen "no-signal found" screen shows the following:

1280x1024 @ 47hz



Forgot to add a second image
[edited by: FCaroPromel at 6:17 PM (GMT -4) on 27 Oct 2020]

Top Replies

  • 0
    •  Analog Employees 
    on Oct 28, 2020 12:51 PM 27 days ago

    Hi,

     Please let me know, whether you are facing issue particularly only with RGsB input ?

    Thanks,

    Poornima

  • Hi Poornima,

    Thankyou for your assistance.

    At the moment, I can focus my attention on just the configs surrounding the ADV7401 analog to digital decoder chip.

    I am able to confirm valid settings on Toshiba TC358748 --> CSI-2 -->  RPi CM3+,  since it's Freerun mode is showing the following output:

    Test_mode_RGB888_1200x1020x71hz

    Fortunately, I can use those same settings to place the Toshiba TC358748 device in 24bit RGB input to CSI-2 output mode.

    And when i configure the ADV7401 device to receive a standard 1280x1024 @ 60Hz RGsB signal... I see the following on the output screen

    RX_rgb888_1200x1020x60hz_input

    The good news for me, is that I can now just focus on the documentation and forum information surrounding the ADV7401.

    But I could certainly use a "push" in the right direction.  Which part of the user manual do you recommend I try out? 

    Here is my I2C code that I've used so far,  I apologise for leaving it in linux BASH script format:

    #!/bin/bash
    echo 'attempt 3 Rx mode'
    
    echo '## AIN1, AIN2, AIN3 - RX mode CP 1024 YPrPb 1X1##'
    echo ':1280x1024/47hz RGsB In 1X1 24Bit 888 Out:'
    i2cset -f -y 0 0x21 0x05 0x02       &&      echo '; Prim_Mode =010b CP  Graphics Mode'
    i2cset -f -y 0 0x21 0x06 0x05       &&      echo '; VID_STD=0101b for 1280x1024 1x1'
    i2cset -f -y 0 0x21 0x3A 0x20       &&      echo '; set latch clock settings to 010b'
    i2cset -f -y 0 0x21 0x3B 0x80       &&      echo '; External Bias Enable'
    i2cset -f -y 0 0x21 0x3C 0x5D       &&      echo '; PLL_QPUMP to 101b'
    
    i2cset -f -y 0 0x21 0x6B 0xC0       &&      echo '; 24-bit 8:8:8 output'
    
    i2cset -f -y 0 0x21 0x87 0xE0       &&      echo '; Man set PLL_DIV_MAN_EN=1 '
    i2cset -f -y 0 0x21 0x87 0xE6       &&      echo '; Man set PLL_DIV_RATIO 1688'
    i2cset -f -y 0 0x21 0x88 0x98       &&      echo '; Man set PLL_DIV_RATIO 1688'
    i2cset -f -y 0 0x21 0x8A 0x90       &&      echo '; VCO_RANGE_MAN=1'
    i2cset -f -y 0 0x21 0x8A 0xF0       &&      echo '; VCO Range to 11b'
    i2cset -f -y 0 0x21 0x8F 0x02       &&      echo '; Set FR_LL = 572'
    i2cset -f -y 0 0x21 0x90 0x3C       &&      echo '; Set FR_LL = 572'

  • 0
    •  Analog Employees 
    on Oct 29, 2020 11:13 AM 26 days ago in reply to FCaroPromel

    Hi,

    Please refer Table154 - 1024x768@60Hz and Table158 - 1280x1024@60Hz at 0412.ADV7401_Manuals.zip and crosscheck your configuration according to the Table154,158 and some configuration are different from your side.

     Also Please refer Table 14 - PLL Recommended settings for GR Modes
     Note that PLL_DIV_RATIO and VCO_RANGE parameters are automatically set up from the VID_STD settings, the only user required action is to program the PLL_QPUMP as per Table 14

    Thanks,

    Poornima

  • Hi Poornima,

    Just a little feedback,  thank you so much for those tips, one can easily get lost in the documentation surrounding the ADV7401.  And thank goodness that there is plenty of information available.

    I am using the App Notes "Non-standard Video formats" as a guide together with the Code example in Table 156 as suggsted by you.  And working with the ADV7401 in RGsB input mode (AIN1, AIN2, AIN3 and SOG pin analog input).  The RGsB signal is 1280x1024 @60hz  with 83Mhz Pixel clock.

    That gave me a PLL_DIV_RATIO of 1776 = 0x6F0

    #!/bin/bash
    echo '## Sig_test attempt 11'
    echo '##CP RGB Graphics Special Modes##'
    echo ':1280×1024_@ 46.83Hz, 83.000MHz Out:'
    
    i2cset -f -y 0 0x21 0x05 0x02   &&   echo 'Prim_Mode =010b for GR'
    i2cset -f -y 0 0x21 0x1D 0x47   &&   echo 'Enable 28MHz Crystal'
    
    i2cset -f -y 0 0x21 0x06 0x05   &&   echo 'VID_STD=0101b for 1280x1024_@60'
    i2cset -f -y 0 0x21 0x3A 0x61   &&   echo 'latch clock=110b (111Mhz -> 140Mhz), Power Down ADC3'
    i2cset -f -y 0 0x21 0x3B 0x80   &&   echo 'Enable External Bias'
    i2cset -f -y 0 0x21 0x3C 0x58   &&   echo 'PLL_QPUMP to 000b -> 50uA'
    i2cset -f -y 0 0x21 0x6A 0x00   &&   echo 'DLL Phase Adjust'
    i2cset -f -y 0 0x21 0x6B 0x80   &&   echo 'Enable DE output, swap Pr Pb'
    
    i2cset -f -y 0 0x21 0x85 0xd9    && echo 'Turn off SSPD and force SOG'
    i2cset -f -y 0 0x21 0x86 0x0B    && echo 'Enable NEW stdi_line_count_mode'
    i2cset -f -y 0 0x21 0x73 0x90   &&   echo 'Set man_gain'
    
    i2cset -f -y 0 0x21 0x7B 0x1D   &&   echo 'TURN OFF EAV & SAV CODES Set BLANK_RGB_SEL'
    
    i2cset -f -y 0 0x21 0x87 0xE6   &&   echo '; Man set PLL_DIV_RATIO 1776=(6)F0h'
    i2cset -f -y 0 0x21 0x88 0xF0   &&   echo '; Man set PLL_DIV_RATIO 1776= 6(F0)h'
    i2cset -f -y 0 0x21 0x8A 0xF0   &&   echo 'VCO Range to 11b'
    i2cset -f -y 0 0x21 0x8F 0x02   &&   echo 'FR_LL = 612=264h'
    i2cset -f -y 0 0x21 0x90 0x64   &&   echo 'FR_LL = 612=264h'
    i2cset -f -y 0 0x21 0xF4 0x3F   &&   echo 'Max Drive Strength'
    i2cset -f -y 0 0x21 0xBF 0x02   &&   echo 'Addr=0xBF; Set FREE RUN OFF=0x02, ON=0x01'
    i2cset -f -y 0 0x21 0x0E 0x80   &&   echo 'ADI Recommended Setting'
    i2cset -f -y 0 0x21 0x52 0x46   &&   echo 'ADI Recommended Setting'
    i2cset -f -y 0 0x21 0x54 0x00   &&   echo 'ADI Recommended Setting'
    i2cset -f -y 0 0x21 0x0E 0x00   &&   echo 'ADI Recommended Setting'

    and I see the following output:

    Screen Image:  1280x1024x47hz

    Could that be a result of the RGsB colours not being detected?  Maybe a register that clamps onto the black level is set too high, rendering all other colour levels as 0x00?

    Where section of the manual should I investigate next?  Any tips would be greatly appreciated.

    kind regards,

    Francisco

  • 0
    •  Analog Employees 
    on Nov 4, 2020 2:50 PM 20 days ago in reply to FCaroPromel

    Hi,

       Are you using "1280×1024@ 46Hz" ? if so, the pixel clock would be differ. So depending on the required pixel clock frequency, the PLL Divisor Ratio, VCO Range and PLL_QPUMP settings must be set to configure the PLL to generate a stable LLC.

       There is an application note (https://www.analog.com/media/en/technical-documentation/application-notes/AN-0978.pdf) describes how to configure the CP to process nonstandard video formats using the following steps:

    1. Choose the appropriate PRIM_MODE/VID_STD.
    2. Program the latch clock.
    3. Program PLL_DIV_RATIO[11:0]
    4. Program FR_LL[10:0]

    Also Refer section 6.4.3 at 8446.ADV7403_Manuals.zip

    Note: For all non-standard CP PLL modes, the PRIM_MODE and VID_STD must be to set to the nearest available standard to correctly configure the internal parameters of the CP core to decode the specific SD/HD/GR and Interlace/Progressive standard.

    Thanks,

    Poornima