AnsweredAssumed Answered

Audio quality problem with ADV7513

Question asked by JohnLeung on May 17, 2017
Latest reply on Jun 6, 2017 by JeyasudhaMuthuPerumal

Hi

ADV7513 is used for generating video and audio for the following resolutions:

 enum CEA861D_VIC{
  VIC_640x480p_60Hz=0,
  VIC_720x480p_60Hz=1,
  VIC_1280x720p_60Hz=2,
  VIC_1920x1080p_60Hz=3,
  VIC_720x576p_50Hz=4
};

Video performance all OK. An audio source of 44.1kHz 16-bit I2S standard format is connected to I2S0 input of ADV7513. Audio test all OK except 720x480p @60Hz. This resolution is a standardized 480p DTV signal. Video working OK but audio quality is highly distorted. However, the same audio source tested with other resolutions list above giving beautiful video and audio performance, even with 1080p (1920x1080@60Hz) above.

 

I do understand that there is a frequency regeneration mechanism in ADV7513 with I2S audio input converted to TDMS HDMI packets. The first doubt is an incorrect CTS calculation but I am using automatic CTS. My question is, besides the CTS value, is there any other registers controlling audio quality? List below is my initialization file for ADV7513.

 

 

const i2c_map INIT_ADV7513[]=
{
    {MAIN_MAP, 0x41, 0x50},
    {MAIN_MAP, 0xD6, 0xC0}, 
    {MAIN_MAP, 0x01, 0x00}, //Address 0x01, 0x02, 0x03 set bits[19:0] for N value
    {MAIN_MAP, 0x02, 0x18}, //128fs = f(tmds_clk) * N/CTS
    {MAIN_MAP, 0x03, 0x80}, //N=6272 for pclk=25.2MHz, 27MHz, 54MHz, 74.25MHz, and 148.5MHz
    {MAIN_MAP, 0x0A, 0x0c}, //I2S, 1 stream no BPM,, 128fs, CTS automatic
 
 {MAIN_MAP, 0x0B, 0x0E}, //Audio Clock polarity rising edge, MCLK internally generated
 {MAIN_MAP, 0x0C, 0x84}, //only I2S0 channel enabled with standard I2S format
 {MAIN_MAP, 0x73, 0x07},
{MAIN_MAP, 0x77, 0x08}, //attentuation 8dB, but there is no difference in audio level...
 {MAIN_MAP, 0x14, 0x02}, //I2S Audio word length = 16 Bits
{MAIN_MAP, 0x15, 0x00}, //set video format RGB 4:4:4 input bit[3:0]
                                           //0x15[7:4] = b0000 => I2S 44.1kHz  sampling frequency             
{MAIN_MAP, 0x16, 0x30},
{MAIN_MAP, 0x17, 0x02}, //Aspect ratio 16:9
    
{MAIN_MAP, 0x18, 0x46}, //CSC disabled
{MAIN_MAP, 0x3C, 3}, //fixed to VIC#3 for 480P@60Hz 16:9
{MAIN_MAP, 0x40, 0x80}, //GC packet enabled
    {MAIN_MAP, 0x48, 0x08}, //data right justified (required?)
    {MAIN_MAP, 0x49, 0x00}, //no truncation (required?) default is 0xA8, keep the default value first...
    {MAIN_MAP, 0x4C, 0x00}, //must be default for proper operation
    {MAIN_MAP, 0x55, 0x00}, //set RGB 4:4:4 in AVI info frame
    {MAIN_MAP, 0x56, 0x28}, //aspect ratio 16:9, AVI info frame same as aspect ratio
    {MAIN_MAP, 0x96, 0xff}, //reset all interrupt flags on startup with writing all '1'
    {MAIN_MAP, 0x97, 0xff}, //reset all interrupt flags on startup with writing all '1' 
    {MAIN_MAP, 0x94, 0xC4}, //HPD interrupt enable[7], Monitor Sense interrupt enable[6], EDID ready enabled[2]
    {MAIN_MAP, 0x98, 0x03}, //ADI recommend, must be set 0x03
    {MAIN_MAP, 0x99, 0x02}, //default value
    {MAIN_MAP, 0x9C, 0x30}, //fixed, must be set 0x30
    {MAIN_MAP, 0x9D, 0x61}, //input video CLK not divided bit[3:2]=00, bit[1:0]=00 for proper operation
    {MAIN_MAP, 0xA2, 0xA4}, //ADI recommend
    {MAIN_MAP, 0xA3, 0xA4}, //ADI recommend
    {MAIN_MAP, 0xA5, 0x04}, //ADI recommend
    {MAIN_MAP, 0xAB, 0x40}, //ADI recommend
    {MAIN_MAP, 0xBA, 0x60}, //no delay for input video clock
    {MAIN_MAP, 0xD1, 0xFF}, //default value
    {MAIN_MAP, 0xDE, 0x10},
    {MAIN_MAP, 0xE4, 0x60}, //default ADI value
    {MAIN_MAP, 0xFA, 0x00}, 
    {MAIN_MAP, 0x9A, 0xE0}, //ADI recommend
    {MAIN_MAP, 0xE0, 0xD0}, //ADI recommend
    {MAIN_MAP, 0xF9, 0x00}, //ADI recommend  
    {MAIN_MAP, 0x96, 0x00}, //clear all interrupt flags on startup
    {MAIN_MAP, 0x97, 0x00}, //clear all interrupt flags continue  
    {MAIN_MAP, 0x41, 0x10}, //set 0x41[6] to '0' to power up whole chip
    {MAIN_MAP, 0xAF, 0x06}, //Set HDMI mode (after power up)
    {0, 0, 0} 
    };

Outcomes