Maker Pro
Maker Pro

8051 to DVI interface?

M

msg

Jan 1, 1970
0
Guy said:
jasen wrote:


Hmmm. No acual ISA cards on the market nowdays, but there
are PC104 cards. A 8051 to PC104 interface might do it.
I am always astounded by the lack of interest in component
re-use as found in so many posts in this newsgroup; there
are _scads_ of ISA VGA cards around in every berg
on the planet and even in rural waste transfer stations;
drive down any alley in a town of more than one stoplight
and you are bound to find PCs which are likely to contain
an ISA VGA card (8 or 16-bit useable in 8-bit mode). For
a 'small volume' application coming up with even hundreds
of ISA VGA cards should present less of a logistics problem
than specifying some currently marketed solution. Our
local metal recycler has a gaylord with at least that
many at any given instant in time.

Regards,

Michael
 
L

larwe

Jan 1, 1970
0
I am still thinking that a counter clocking data out of
RAM can make a VDI signal.

I agree this sounds doable, but I would not expect this system to work
unless you are delivering at minimum VGA scanrates.

A method I used to drive an LCD (not DVI) "directly" from an 8051 was
to embed the sync signal in spare RAM bits; i.e. I used two bits each
for r,g,b in a x8 SRAM and put the v-sync and h-sync bits in the
remaining bits. The v-sync bit caused a micro interrupt; the micro
then held v-sync active while resetting the counter that addressed the
video RAM. (Actually it was a bit more complex than this - the micro
tristated the counter and held the v-sync active, then if necessary
wiggled the address/data bus on the RAM to update display data).

Your intermediate divider and base dot clock will depend on what
resolution you want to use to drive the display. You will probably
also want to add extra logic so that you can reuse scanline data; i.e.
have separate scanline and dot position counters and ignore the lower
bits.

Let's try to work some nice numbers into this. Start with a 32kHz horz
sync, since it's a nice round number. You need to supply a v-sync
pulse every 480 lines, which is 15ms (66.67Hz).
 
G

Guy Macon

Jan 1, 1970
0
Guy Macon said:
I am working on an 8051-based project that needs a
display. Normally I would just use a small character-
based LCD display, but in this case I am thinking of
going with something a bit more impressive; a standard
flat-panel PC monitor.


Here are the results of my resarch so far:

This fellow did 20 rows by 20 columns of 8x12 characters
using a 16MHz AVR.:
http://www.serasidis.gr/circuits/AVR_VGA/avr_vga.htm

...and a simle colorbar generator:
http://www.serasidis.gr/circuits/colour_bar_gen/colour_bar_gen.htm

If a 16Mhz. AVR can do that, what can a 100mips Cignal C8051F120 do?

A OMAP5910 might have potential:
http://focus.ti.com/lit/an/spra847/spra847.pdf

Or maybe this TVT-KVGA:
http://www.tvterminal.de/Flyer_TVT_KVGA_international_070129.pdf

The Parallax Propeller appears to have some sort of "video object":
http://www.parallax.com/propeller/index.asp

Or maybe a Xlinnx XC4005XL?
http://www.ece.umr.edu/courses/cpe214/vga_datasheet.pdf

Or I could go with good old DonTronics:
http://www.dontronics-shop.com/product.php?productid=16388&cat=262&page=1

Any thoughts on any of the above?


Guy Macon
<http://www.guymacon.com/>
 
J

Jim Granville

Jan 1, 1970
0
Guy said:
I am still thinking that a counter clocking data out of
RAM can make a VDI signal.

Yes, it could.
You could use a fast uC, and then a TS counter
like the HC590, to clock the line pixels, and INT the uC
at line ends, so the processor runs < line speeds.
If you are ok with 256n clocks across the screen, then
uC resource like the PCA in the SiLabs parts, would
manage blanking and any resets needed.
DRAM would be interesting, but perhaps not a very stable target.

-jg
 
P

Paul Carpenter

Jan 1, 1970
0
On 12 Feb, in article
<[email protected]>
I agree this sounds doable, but I would not expect this system to work
unless you are delivering at minimum VGA scanrates.

A method I used to drive an LCD (not DVI) "directly" from an 8051 was

Well I would first look at the manufacturers of the DVI (LVDS etc chips)
for example National DS90CF383, they have a whole series of app notes
on driving monitors using these sorts of interfaces.
to embed the sync signal in spare RAM bits; i.e. I used two bits each
for r,g,b in a x8 SRAM and put the v-sync and h-sync bits in the
remaining bits. The v-sync bit caused a micro interrupt; the micro
then held v-sync active while resetting the counter that addressed the
video RAM. (Actually it was a bit more complex than this - the micro
tristated the counter and held the v-sync active, then if necessary
wiggled the address/data bus on the RAM to update display data).

The problems I have found with various LCDs/monitors that use a DVI or
DVI style interface, they can go screwball if you miss one clock cycle or
worst get one pixel difference between two frames. They tend to use Hsync
Vsync and enable as helpers, and not resyncers as monitors do, so make sure
you have the right amount of clock pulses on every line INCLUDING blanking.

Work out what scheme of bpp you want as well as encoding. Supply the parallel
data to the LVDS or TMDS chip and timing and you are away.
Your intermediate divider and base dot clock will depend on what
resolution you want to use to drive the display. You will probably
also want to add extra logic so that you can reuse scanline data; i.e.
have separate scanline and dot position counters and ignore the lower
bits.

Make sure the clock sent has the expected frequency for the display format
even if you are using it a lower resolution, not all the rescalers are
good at dcoding and expect exact frequencies and ratios.
Let's try to work some nice numbers into this. Start with a 32kHz horz
sync, since it's a nice round number. You need to supply a v-sync
pulse every 480 lines, which is 15ms (66.67Hz).

Some displays will balk at that especially if they do not get a repeated
frame in 40-60 Hz rate. LCD specs are notoriously at specifying min and max
clock, Hsync, Vsync rates. they tend to spec at one display format only.
 
P

Paul Carpenter

Jan 1, 1970
0
Here are the results of my resarch so far:

This fellow did 20 rows by 20 columns of 8x12 characters
using a 16MHz AVR.:
http://www.serasidis.gr/circuits/AVR_VGA/avr_vga.htm

Not bad, but like all things you do not see what the overhead of changing
the text is like as to what happens on scrolling the text as a new line is
added.
..and a simle colorbar generator:
http://www.serasidis.gr/circuits/colour_bar_gen/colour_bar_gen.htm

If a 16Mhz. AVR can do that, what can a 100mips Cignal C8051F120 do?

Firstly Mips means nothing when doing video circuits, continuous data
bandwidth is the major key, as you cannot miss anything or everything
slides or gets holes in.

Not very impressive, considering I have driven two LCDs with parallel
24 bit to EACH LCD from one PLD, having proper 8 colours in the colour bar
pattern, greyscale ramps (ALL codes) and many other patterns, no memory
required. Each LCD had switch selectable pattern, inverted, missing colours
and other test functions. Each LCD could display its own pattern.

That was with a 128 macrocell device. Not uncommon for me to drive 10 bit
video ADCs to generate the analog signals.

I class most we can do complete VGA in a micro as 'willy waving' excercises
to show what a processor can do, not whether it is a useful example or
exercise.

Have any of the above been used in anger?
Are they more than just interesting projects documented on web pages?

Probably closest to what you are looking for but analog not DVI output,
would need digitising and serialising to use the digital portion of the
DVI interface.

From about 1981, when I was working at DEC in Reading it would considered as
what was then the VT30H (quad and hex unibus card) graphics controller,
converted to VT30S. This had 8085A processor to control the colour graphics
controller and keyboard for remote mimic displays in factories/railways
and the like.

The ANSI command set makes it look like later VT30S or VT2xx colour
terminal on a chip actually at lower resolution.
The Parallax Propeller appears to have some sort of "video object":
http://www.parallax.com/propeller/index.asp

Not had time or resources to test the usefulness of this approach
but see it more as another interesting exercise and what can be done.
Whether it is useful or can provide the parallel digital output to drive
the LVDS/TMDS interface is to be seen as these interfaces run at 7 x main
clock rate by internal PLL.

The basis of that in a newer chip could easily provide the VGA timing
and control a dual port RAM, which favoured display cycles to host cycles
which in simplest forms can have WAIT states inserted. Interupts for H and V
blanking can get major updates done.

Xilinx and Altera have examples for NTSC timing generation so it would be
easy to implement.

Without knowing more of the application it is difficult to say as most of
theirs seem suited to CSTN/STN displays that operate differently to
TFT the major types of LCD on DVI interface monitors.

Their outputs are analog or stepped analog (crude R2R ladders for lower
res), which is not much use on a digital DVI interface.
Any thoughts on any of the above?

Important questions

Are you displaying symbols/text/moving text or just changing
complete display frames (aka bill board advertising)

What type of DVI interface are you going to do
Analog
Digital
Both at same time

How often does a display change (average and peak)

Is colour required?

What is the max update rate for say a screen full of text scrolling
to add another complete line of text or Direct Cursor Addressing
to change a partial of whole line of text.

The big killers in simple text displays is scrolling/inserting text in
the display and what happens to wrapped or cropped data. The other killer
is how they scroll the text i.e. jump or smooth for the character lines.

Do any of these blank displays during large updates, and what is a large
update for each controller?

I have seen many that assume a few characters of change occur a second
so stop displaying video to do the update. It is better to update as
low priority compared to displaying to avoid extra flicker and judder
on displays.
 
N

nappy

Jan 1, 1970
0
Paul Carpenter said:
What type of DVI interface are you going to do
Analog

What is an analog DVI interface? :)

Digital
Both at same time

How often does a display change (average and peak)

Is colour required?

I don' think there is a monochrome DVI protocol.
 
H

Homer J Simpson

Jan 1, 1970
0
I am working on an 8051-based project that needs a
display. Normally I would just use a small character-
based LCD display, but in this case I am thinking of
going with something a bit more impressive; a standard
flat-panel PC monitor.
Another possibility would be some sort of display chip;
does anyone know of one suitable for a slow 8-bit micro?

Look at "The Cheap Video Cookbook" Donald E. Lancaster, Vols 1 and 2.
 
F

Frank-Christian Kruegel

Jan 1, 1970
0
I am working on an 8051-based project that needs a
display. Normally I would just use a small character-
based LCD display, but in this case I am thinking of
going with something a bit more impressive; a standard
flat-panel PC monitor.

Depending on your needs TV and teletext chips would be another option.
Philips makes the SAA5x9x series, which is 8051 based, and some of these
chips even allow external data and external program memory. These processors
have video hardware inside, and instead of receiving teletext data you could
write into the internal display ram in order to to display things. Some of
these are also 100/120 hz ready.

The older chips (SAA1054 etc) were i2c controllable, without internal CPU.
If you can still get them, they are easier to work with due to lower
pincount.

You must feed an empty BAS signal (sync only) into these controllers for
video timing.

Mit freundlichen Grüßen

Frank-Christian Krügel
 
P

Paul Carpenter

Jan 1, 1970
0
On Monday, in article
<[email protected]>
What is an analog DVI interface? :)

That would be 'funny' if you were right but you are wrong as analog DVI
interface for monitors exists. I suggest you read up on the matter as
that is refered to as DVI-A connections.

The other references below refer to single link, compared to dual link for
larger displays and alternate pixels on alternate links to reduce clock
speeds.
DVI-D

DVI-I
.....

I don' think there is a monochrome DVI protocol.

The same as a monochrome RGB, making all channels the same, colour depends
on the application driving the signals.
 
J

jasen

Jan 1, 1970
0
Hmmm. No acual ISA cards on the market nowdays, but there
are PC104 cards. A 8051 to PC104 interface might do it.

used ones are easily had in small volumes, the hardware,
if treated as VGA, should perform near identically across
different brands if N of identical cards can't be found.

some of them want +/- 12V supplies which may be a hassle.

Bye.
Jasen
 
N

nappy

Jan 1, 1970
0
Paul Carpenter said:
On Monday, in article
<[email protected]>


That would be 'funny' if you were right but you are wrong as analog DVI
interface for monitors exists. I suggest you read up on the matter as
that is refered to as DVI-A connections.

Yes.. but those are not DVI connections.. that's just (analog) VGA
piggybacked on the DVI connector. There is NO analog digital video
interface.
 
N

nappy

Jan 1, 1970
0
nappy said:
Yes.. but those are not DVI connections.. that's just (analog) VGA
piggybacked on the DVI connector. There is NO analog digital video
interface.

FWIW I am a display developer. NTSC, VGA, DVI, 343, 170 etc...
 
G

Guy Macon

Jan 1, 1970
0
nappy said:
FWIW I am a display developer. NTSC, VGA, DVI, 343, 170 etc...

Just the person I was looking for!

In order to create a valid DVI signal that is:

1024 x 768 pixels

8 bits per color per pixel

60 Hz. refresh rate

Generated from the data lines of a SRAM

....that said SRAM has it's address lines incremented by
a counter (assume RD. WR. CS, etc are all taken care of
properly).

....and that said counter can be reset to zero at any
point you choose (not just powers of 2)


....



What frequency should the counter run at?

How many RAM addresses does it need to access?

How many bits wide should the RAM be?

At what number of bits should the counter be reset
in order to start the next frame?

Hint: A single DVI link consists of four twisted pairs
(red, green, blue, and clock) to transmit 8 bits for
each 3 colors per pixel. All you need to do is add them up
and then figure out how much, if any time is spent blanking
and retrcacing. This should be a simple task for a display
developer.
There is NO analog digital video interface.

In front of me is a catalog that lists the following connectors:

DVI-A
One set of eight pins and one set of four
pins plush four contacts around the blade

DVI-D Single Link
Two sets of nine pins with no contacts
around the blade

DVI-D Dual Link
One set of 24 pins with no contacts around
the blade

DVI-I Single Link
Two sets of nine pins plus four contacts
around the blade

DVI-I Dual Link
One set of 24 pins plus four contacts around
the blade

Tell me, what does the "A" in "DVI-A" stand for?


Guy Macon
<http://www.guymacon.com/>
 
G

Guy Macon

Jan 1, 1970
0
More info from my looking into this (I have the flu, so
forgive me if this is disjointed and/or wrong...):

http://www.playtool.com/pages/dvicompat/dvi.html
gives these figures:

1024 X 768 @ 60 Hz = 65 MHz Pixel clock.

http://www.interfacebus.com/Design_Connector_Digital_Visual_Interface_DVI_Bus.html
Gives me the following DVI-D pinout:

1 TMDS Data2-
2 TMDS Data2+
3 TMDS Data2/4 Shield

6 DDC Clock [SCL]
7 DDC Data [SDA]
8 Analog vertical sync

9 TMDS Data1-
10 TMDS Data1+
11 TMDS Data1/3 Shield

14 +5 V Power
15 Ground
16 Hot Plug Detect

17 TMDS Data0-
18 TMDSData0+
19 TMDS Data0/5 Shield

22 TMDS Clock Shield
23 TMDS Clock +
24 TMDS Clock -

4, 5, 12, 13, 20, 21 not used

DDC = Display Data Channel
TMDS.= Transition Minimized Differential Signal

http://www.ddwg.org/lib/dvi_10.pdf (page 25 or so)
talks about TMDS encoding. My next step is to get a
good enough understanding of TMDS encoding to determine
whether I can pre-encode before storing to SRAM or
whether I need a post-SRAM hardware encoder. Or
whether to give up and stick with VGA.

Guy Macon
<http://www.guymacon.com/>
 
J

Jim Granville

Jan 1, 1970
0
Guy said:
nappy wrote:




Just the person I was looking for!

In order to create a valid DVI signal that is:

1024 x 768 pixels

8 bits per color per pixel

60 Hz. refresh rate

Generated from the data lines of a SRAM

...that said SRAM has it's address lines incremented by
a counter (assume RD. WR. CS, etc are all taken care of
properly).

...and that said counter can be reset to zero at any
point you choose (not just powers of 2)


...



What frequency should the counter run at?

How many RAM addresses does it need to access?

How many bits wide should the RAM be?

At what number of bits should the counter be reset
in order to start the next frame?

Hint: A single DVI link consists of four twisted pairs
(red, green, blue, and clock) to transmit 8 bits for
each 3 colors per pixel. All you need to do is add them up
and then figure out how much, if any time is spent blanking
and retrcacing. This should be a simple task for a display
developer.

You can get some easy ball-park numbers :
- assume no dead-time, and you get 60*768*1024 = ~47MHz (call that 50MHz).
Ram width is up to you - 24bits wide = Pixel clock, 8 bits = 3x pixel
clock. Plus you need to serialise if this is LVDS, so to serialise 8
bits digital onto 1 pair, is > 8x pixel clock = 2.5ns data slices

So to keep this sensible, you'd probably need x24 SRAM, and commercial
SerDes encoder.


Check a recent device like
http://www.fairchildsemi.com/ds/FI/FIN324C.pdf
targets links to LCDs in cellphones,
(Wider fanin, but lower Fin than above numbers), has link clock of ~275MHz

-jg
 
N

nappy

Jan 1, 1970
0
Tell me, what does the "A" in "DVI-A" stand for?

As you know the A stands for ANALOG. The Analog portion of the DVI connector
is a VGA signal set piggybacked on the DVI interface. There is no
ANALOG-DIGITAL-VIDEO format. Nor is there any ANALOG - DIGITAL Anything
format. When I am told there is a DVI signal in a system I never ask "Is it
the Analog DVI?", cause I like my job.

You can find the timings for generating vga, svga, xga, sxga, uxga anywhere
on the web.

The pixel clock for xga is 65 Mhz. Don't forget the inactive, non-displayed
portions of the signal.


test over.
 
D

Didi

Jan 1, 1970
0
The pixel clock for xga is 65 Mhz.

This makes something like 70 Hz V-sync frequency.
I wonder why do they refresh the TFT-displays that
frequently, they don't have the flicker CRTs had.
Those TFT modules I have used can work at much lower
frequencies, 30 Hz V-sync is quite achievable. I suspect
this should be the case with "digital" only
monitors - do you know if it is?

Dimiter
 
N

nappy

Jan 1, 1970
0
Didi said:
This makes something like 70 Hz V-sync frequency.
I wonder why do they refresh the TFT-displays that
frequently, they don't have the flicker CRTs had.
Those TFT modules I have used can work at much lower
frequencies, 30 Hz V-sync is quite achievable. I suspect
this should be the case with "digital" only
monitors - do you know if it is?

Dimiter

The monitors I develop are multi format. The H&V timings for DVI are
equivalent to VGA timings. Regardless of the display type.
 
Top