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.

DM6446 VGA output problems

Other Parts Discussed in Thread: TMS320DM6446

HI all,

We are using the TI TMS320DM6446 to output VGA video. I am experiencing a lot of problems in getting this to work correctly.

VGA 640x480:

I am able to output VGA 640x480@60Hz. I also enable the internal colour bar of the DM6446 to have a standard reference to work with. I measured the signals coming out of the DM6446 using a logic analyser and they all fall within the timing specifications of this video standard. This is output from the DM6446 is fed into an Analog Devices ADV7343 configured for 525p.  I am able to see the colour bars on the monitor connected to the VGA output, but the colour bar is shifted to the left by a few pixels. Approximately 25-30 pixels.

It looks like this :

 

The register values are shown here :

VMOD = 0x00002501
VIDCTL = 0x00006000
VDPRO = 0x0000A340
SYNCCTL = 0x000000AB
HSPLS = 0x00000066
VSPLS = 0x00000002
HINT = 0x00000320
HSTART = 0x00000099
HVALID = 0x000002A8
VINT = 0x0000020D
VSTART = 0x00000023
VVALID = 0x000001E0
HSDLY = 0x00000000
VSDLY = 0x00000000
YCCCTL = 0x0000001D
RGBCTL = 0x00000000
RGBCLP = 0x0000FF00
LINECTL = 0x00000000
CULLLINE = 0x00000000
LCDOUT = 0x00000003
BRTS = 0x00000000
BRTW = 0x00000000
ACCTL = 0x00000000
PWMP = 0x00000000
PWMW = 0x00000000
DCLKCTL = 0x00000801
DCLKPTN0 = 0x00000003
DCLKPTN1 = 0x00000000
DCLKPTN2 = 0x00000000
DCLKPTN3 = 0x00000000
DCLKPTN0A = 0x00000003
DCLKPTN1A = 0x00000000
DCLKPTN2A = 0x00000000
DCLKPTN3A = 0x00000000
DCLKHS = 0x00000000
DCLKHSA = 0x00000001
DCLKHR = 0x00000000
DCLKVS = 0x00000000
DCLKVR = 0x00000000


MODE = 0x000002FF
VIDWINMD = 0x00000001
OSDWIN0MD = 0x000050C6
OSDWIN1MD = 0x000050C2
OSDATRMD = 0x000050C2
RECTCUR = 0x00000012
RSV0 = 0x00000000
VIDWIN0OFST = 0x00000000
VIDWIN1OFST = 0x0000002D
OSDWIN0OFST = 0x0000002E
OSDWIN1OFST = 0x00000017
RSV1 = 0x00000000
VIDWIN0ADR = 0x80200000
VIDWIN1ADR = 0x80400000
RSV2 = 0x00000000
OSDWIN0ADR = 0x80A00000
OSDWIN1ADR = 0x80E00000
BASEPX = 0x00000000
BASEPY = 0x00000000
VIDWIN0XP = 0x00000000
VIDWIN0YP = 0x00000000
VIDWIN0XL = 0x00000320
VIDWIN0YL = 0x0000020D
VIDWIN1XP = 0x00000001
VIDWIN1YP = 0x00000001
VIDWIN1XL = 0x0000000A
VIDWIN1YL = 0x0000000A
OSDWIN0XP = 0x00000001
OSDWIN0YP = 0x00000001
OSDWIN0XL = 0x0000000A
OSDWIN0YL = 0x0000000A
OSDWIN1XP = 0x00000001
OSDWIN1YP = 0x00000001
OSDWIN1XL = 0x00000005
OSDWIN1YL = 0x00000005
CURXP = 0x00000168
CURYP = 0x0000003C
CURXL = 0x000000C8
CURYL = 0x000000C8

Any ideas as to why the output is shifted to the left?

 

VGA 800x600@60Hz:

When I move over to this configuration, I don’t get any output on the monitor. The ADV7343 is configured here for 625p.

The problem I have is that the HINT & HVALID registers don’t respond to the updated settings, The horizontal pixels remain at 640 pixels. All the other register and timings seem to work fine, but the data width between Hsyncs do not change. I think this is why I get no output on the monitor as it does not understand the timings with the short horizontal period. I tried this with other pixel clock rates as well, I get the same result.

The register settings are as follows: 

 

VMOD = 0x00002501
VIDCTL = 0x00006000
VDPRO = 0x0000A340
SYNCCTL = 0x000000AB
HSPLS = 0x00000066
VSPLS = 0x00000002
HINT = 0x000003E8
HSTART = 0x00000099
HVALID = 0x00000320
VINT = 0x00000271
VSTART = 0x00000023
VVALID = 0x00000258
HSDLY = 0x00000000
VSDLY = 0x00000000
YCCCTL = 0x0000001D
RGBCTL = 0x00000000
RGBCLP = 0x0000FF00
LINECTL = 0x00000000
CULLLINE = 0x00000000
LCDOUT = 0x00000003
BRTS = 0x00000000
BRTW = 0x00000000
ACCTL = 0x00000000
PWMP = 0x00000000
PWMW = 0x00000000
DCLKCTL = 0x00000801
DCLKPTN0 = 0x00000003
DCLKPTN1 = 0x00000000
DCLKPTN2 = 0x00000000
DCLKPTN3 = 0x00000000
DCLKPTN0A = 0x00000003
DCLKPTN1A = 0x00000000
DCLKPTN2A = 0x00000000
DCLKPTN3A = 0x00000000


MODE = 0x000002FF
VIDWINMD = 0x00000001
OSDWIN0MD = 0x000050C6
OSDWIN1MD = 0x000050C2
OSDATRMD = 0x000050C2
RECTCUR = 0x00000012
RSV0 = 0x00000000
VIDWIN0OFST = 0x00000000
VIDWIN1OFST = 0x0000002D
OSDWIN0OFST = 0x0000002E
OSDWIN1OFST = 0x00000017
RSV1 = 0x00000000
VIDWIN0ADR = 0x80200000
VIDWIN1ADR = 0x80400000
RSV2 = 0x00000000
OSDWIN0ADR = 0x80A00000
OSDWIN1ADR = 0x80E00000
BASEPX = 0x00000000
BASEPY = 0x00000000
VIDWIN0XP = 0x00000000
VIDWIN0YP = 0x00000000
VIDWIN0XL = 0x00000320
VIDWIN0YL = 0x00000258
VIDWIN1XP = 0x00000001
VIDWIN1YP = 0x00000001
VIDWIN1XL = 0x0000000A
VIDWIN1YL = 0x0000000A
OSDWIN0XP = 0x00000001
OSDWIN0YP = 0x00000001
OSDWIN0XL = 0x0000000A
OSDWIN0YL = 0x0000000A
OSDWIN1XP = 0x00000001
OSDWIN1YP = 0x00000001
OSDWIN1XL = 0x00000005
OSDWIN1YL = 0x00000005

I need to know why these registers are not responding as expected. I can’t continue with any other configuration until I have resolved this one.

Any comments or suggestions?

Thank you,

Herman

  • Hi,

    Aologies for the late response.

    We will work on this and willl let you know the update at the earliest.

    Thanks & regards,
    Sivaraj K
  • Hi,

    I think there should be an memory buffer overlap issue or something is accessing the buffer. We have to see the actual image to be sure.

    Are you able to disable other system activities? If so, please do that and directly display a buffer w/ a fixed pattern, at a different memory location, and see if the problem is still there. This will narrow down the issue, if something is wrong with your VPBE setup

    Thanks & regards,

    Sivaraj K

    ----------------------------------------------------------------------------------------------------------------

    Please click the "Verify Answer" button on this post if it answers your question.

    ----------------------------------------------------------------------------------------------------------------

  • HI Sivaraj,

    Thank you for your response. Apologies for my late response, I had a few weeks off in December.

    The image that I display is the internal color bar of the DM6446 which is activated by the CBMD bit in the VDPRO register. Thus, what I have in memory at this point is irrelevant. I have however in the meantime been informed that the video encoder we use does not support VGA timing inherently, which I think is the cause of the left shifted screen.

    My main concern now is why the 800x600 resolution configuration does not output 800 horizontal pixels as expected, even when I configure the HVALID to that value (see registers in previous post) . Can you have a look at the register values and advise on what can be wrong?
    I did measure the output directly on the DM6446 output, thus this is not caused by the encoder.

    Thanks,

    Herman
  • HI Sivaraj,

    I have resolved this issue. The left shift of the screen was nothing to do with the DM6446. The Analog Devices Encoder had to be configured for Non-Standard video output as it does not inherently support VGA.

    The 800x600 and higher resolutions were also corrected by having the HS and VS signals set to the correct polarity.

    Thanks,

    Herman
  • Hi,

    Thanks for your update.

    Glad that the issue got fixed and it would help other e2e community members too.

    Regards,
    Sivaraj K