Forum: Mikrocontroller und Digitale Elektronik VGA Signal Zeitberechnung


von tja (Gast)


Lesenswert?

Gibt es eine Formel um das VGA Signal zu berechnen?

Das VGA Signal besteht ja aus folgendem:

HSYNC = horizontales Synchronisationszeit

Das HSYNC Signal liegt in der Zeit an, wo eine Zeile von links nach 
rechts geschrieben wird.

In der Zeit wo der Elektronenstrahl bei alten Röhrenmonitore in die 
nächste Zeile links gelangt, wird als Schwarzschulter bezeichnet.

In dieser Zeit liegt das HSYNC Signal nicht an.



VSYNC = vertikale Synchronisationszeit:

Dieses Signal liegt in der Zeit an, bis das komplette Bild  geschrieben 
wurde.
Da sich der Elektronenstrahl in der letzten Zeile unten rechts befindet, 
wird nun das VSYNC Signal deaktiviert.

Der Elektronenstrahl bewegt sich nun beim neuen Bild in die erste Zeile 
links.
Diese Zeit wird ebenfalls als Schwarzschulter bezeichnet.

Bildwiederholrate:
Wie oft das Bild in einer Sekunde dargestellt wird.

Auflösung:
Wieviele Pixel breit und hoch das Bild ist.

RGB:
Durch das Anlegen einer unterschiedlichen Spannung beim r g u. b Pin 
kann man eine andere Farbe beim Pixel setzen.

Spannungsbereich 0 - 0.7 V.


Es muß hier doch Formeln geben um die Zeiten der Signale zu berechnen.

vsync Signal, Schwarzschulter vsync Signal, hsync Signal, 
Schwarzschulter hsync

von Sebihepp (Gast)


Lesenswert?

Es gibt keine Formeln, sondern nur feste Werte. Du schaust einfach in 
einer Tabelle nach deiner Auflösung und den dazu gehörigen Werten.

von tja (Gast)


Lesenswert?

Ok...dann mach ich das.

Gibt ja etliche gute Tabellen im Netz

von User (Gast)


Lesenswert?

Wenn Du mit VGA Ur-VGA meinst:
Horizontalfrequenz wurde auf 32kHz festgelegt. Vertikal 70 bzw. 60Hz.
Und jetzt geht es darum, das Bild möglichst mittig mit einer geeigneten 
Pixel Clock am Schirm anzuzeigen.

von tja (Gast)


Lesenswert?

Dank Dir User

Vertikal 70 bzw. 60Hz.

70 für Pal ? 4:3 Bilder

60 für Secam ? 16: 9 Bilder?

Ok...

Das Bild ist 800 x 600 Pixel groß...die Refreshrate beträgt 70 HZ, wie 
werden nun die Zeiten berechnet?

Ich wäre echt für jede Hilfe dankbar.

von tja (Gast)


Lesenswert?

War Quark was ich geschrieben habe....60 u. 70 HZ ist ja die 
Bildwiederholfrequenz

von oszi40 (Gast)


Lesenswert?

Fang mal da an http://de.wikipedia.org/wiki/Video_Graphics_Array

VGA sind analoge Farb-Signale! Je mehr sie verschliffen werden, desto 
schlimmer wird das Bild.

von c-hater (Gast)


Lesenswert?

tja schrieb:

> Es muß hier doch Formeln geben um die Zeiten der Signale zu berechnen.

Die General Timing Formula.

Die liefert allerdings nur Näherungswerte, die von den exakten 
Spezifikationen der einzelnen VGA-Modi weit genug abweichen, daß es zu 
Problemen kommen kann.

Früher, im Zeitalter der analogen CRTs, hat sie gereicht, um immer ein 
sichtbares Bild darzustellen, wenn auch nicht ganz an der eigentlich 
vorgesehenen Stelle und nicht ganz in der richtigen Größe, die 
Abweichungen waren aber klein genug, daß man sie problemlos mit den 
entsprechenden Reglern der Monitore kompensieren konnte.

Bei digitalen Displays mit eingebautem Framebuffer ist das anders, da 
passiert es immer wieder mal, daß irgendsoein Teil irgendeinen mit GTF 
angenäherten Modus komplett verweigert.

Also am besten: Tabelle verwenden, nix Formel.

von tja (Gast)


Lesenswert?

Ok.....ein Atmega ist aber zu schwach um die zeitkritischen Sachen 
"hsync, vsync" ein zu halten.


Vielleicht doch einen arm Mikrocontroller hernehmen.

Bei ebay gibt es gute Boards.

Was hat das Board?

- den arm Mikrocontroller
- eine USB Schnittstelle


Über USB könnte man ja die png Bilder zum arm schicken.
Der arm entpackt dann das png Bild, so dass einem dann die Rawdaten des 
Bilds vorliegen.


Die Daten müßte man aber in einem externen RAM ablegen, da der interne 
Ram des arm Mikrocontrollers nicht ausreicht.

Wie müßte der Ablauf des Datentransfers aussehen?

- Bild 1 wird gerade dargestellt ....in dieser Zeit das Bild 2 u. Bild 3 
anfordern u. entpacken.


Was meint ihr?

Welchen Ram würdet ihr hernehmen?

von Georg G. (df2au)


Lesenswert?

tja schrieb:
> ein Atmega ist aber zu schwach um die zeitkritischen Sachen
> "hsync, vsync" ein zu halten

Such doch mal im Forum nach "vga". Und dann denk noch mal über deine 
Aussage nach :-)

von User (Gast)


Lesenswert?

800x600 ist kein Ur-VGA.

von Christian Erker (Gast)


Lesenswert?

tja schrieb:
> Gibt es eine Formel um das VGA Signal zu berechnen?
>
> Das VGA Signal besteht ja aus folgendem:
>
> HSYNC = horizontales Synchronisationszeit
>
> Das HSYNC Signal liegt in der Zeit an, wo eine Zeile von links nach
> rechts geschrieben wird.

Nö, das ist ein Impuls der den Zeilenrücklauf einleitet, je nach Modus 
positiv oder negativ.

> In der Zeit wo der Elektronenstrahl bei alten Röhrenmonitore in die
> nächste Zeile links gelangt, wird als Schwarzschulter bezeichnet.
> In dieser Zeit liegt das HSYNC Signal nicht an.
>

Nein, das ist die Rücklaufzeit, von den Schwarzschultern gibt es 2,
einmal die vordere vor dem Synchronimpuls und die hintere nach dem 
Synchronimpuls.

Die vordere hatte im (F)BAS-Signal die Aufgabe durch einen definierten 
Ausgangspegel vor der Sync-Flanke eine sichere Erkennung des Sync-Pulses 
zu ermöglichen, die hintere ist einfach dazu da dem Rücklauf mehr Zeit 
zu geben.

Weiterhin sind beide dazu da, Linearitätsverzerrungen an den Bildrändern 
zu vermeiden, da der Ablenkstrom nie ideal sägezahnförmig ist 
(Korrekturen wegen des flachen Bildschirms einmal ausgeklammert.)

> VSYNC = vertikale Synchronisationszeit:
>
> Dieses Signal liegt in der Zeit an, bis das komplette Bild  geschrieben
> wurde.
> Da sich der Elektronenstrahl in der letzten Zeile unten rechts befindet,
> wird nun das VSYNC Signal deaktiviert.

Alles entsprechend HSYNC.

> Der Elektronenstrahl bewegt sich nun beim neuen Bild in die erste Zeile
> links.

Nein, er geht einfach nur nach oben, die Horizontalbewegung (mittels 
HSYNC) läuft normal weiter. Die korrekte Phasenbeziehung zwischen HSYNC 
und VSYNC sorgt dafür, das er oben links landet (bei Interlacemodi tut 
er das z.B. nichtmal, da beginnt er abwechselnd oben links und oben 
mittig, um versetzte Zeilen zu schreiben).

> Diese Zeit wird ebenfalls als Schwarzschulter bezeichnet.

Auch hier gibt es zwei, vor und nach dem Synchronpuls.

> Bildwiederholrate:
> Wie oft das Bild in einer Sekunde dargestellt wird.
>
> Auflösung:
> Wieviele Pixel breit und hoch das Bild ist.
>
> RGB:
> Durch das Anlegen einer unterschiedlichen Spannung beim r g u. b Pin
> kann man eine andere Farbe beim Pixel setzen.
>
> Spannungsbereich 0 - 0.7 V.

Analog gibt es keine Pixel, nur Zeilen. Die horizontale Auflösung ist 
nur durch die Lochmaske diskretisiert, sonst aber ein kontinuierlicher 
Verlauf. Begrenzt wird die Auflösung durch die obere Grenzfrequenz des 
Videoverstärkers. Erst LCDs sampeln diesen Verlauf um die einzelnen 
Pixel anzusteuern.

>
> Es muß hier doch Formeln geben um die Zeiten der Signale zu berechnen.
>
> vsync Signal, Schwarzschulter vsync Signal, hsync Signal,
> Schwarzschulter hsync

Kann man, aber normal schaut man einfach in die Tabellen in der Norm. 
800x600 wäre klassisches SVGA.

http://tinyvga.com/vga-timing/800x600@60Hz

Front porch und Back porch sind die 2 Schwarzschultern, und Sync Pulse 
ist die Länge von VSYNC/HSYNC .. zwischen dem Ende der hinteren 
Schwarzschulter und dem Beginn der vorderen Schwarzschulter gibst du den 
Bildsignal auf die RGB-Leitungen.

Gruß,
Christian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.