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