Forum: FPGA, VHDL & Co. VGA Bildschrim mit 320x240 möglich?


von you2 (Gast)


Lesenswert?

Moin!

Ich hab da mal ne Frage!
Ich habe ein VGA Signal für 640x480 mit meinenm FPGA generiert. Alles 
super. Nun wollte ich eigentlich auch ein VGA Signal (60HZ) mit einer 
Auflösung 320x240 generieren. Habe ich auch gemacht.Timing dafür habe 
ich unter VESA gefunden (hor. Frequ. 15kHz, Vert. Freq. ca. 60Hz) Nun 
habe ich meinen Bildschirm an die VGA schnnittstelle von meinem FPGA 
angeschlossen und es passiert nichts. Es erscheint nur eine Textmeldung, 
in der mir gesagt wird, dass die Frequenzen nicht in den für den 
Bildschirm möglichen Frequenzbereich liegen!
Liegt es nun daran, dass ich die Frequenz nicht 100%ig genau habe, oder 
kann es sein, dass manche Bildschirme keine 320x240 Auflösung können?!

Bei meinem 640x480 Timing kommt es auch nicht 100%ig hin und es 
funktioniert trotzdem!

Bitte um Hilfe!!!

von V. B. (dr-robotnik)


Lesenswert?

Ich glaube die meißten heutigen Monitore können keine 15kHz 
Horizontalfrequenz. Nur ab 31kHz aufwärts. Sollte im Handbuch des 
Monitors stehen.

von lkmiller (Gast)


Lesenswert?

@  V. Baumann
ACK
siehe gOOgle: horizontal-frequenz lcd-monitor

von V. B. (dr-robotnik)


Lesenswert?

Nicht nur die LCD-monitore sondern auch die normalen Röhren-monitore 
arbeiten ab mitte 90er Jahre nur noch ab 31kHz aufwärts.

von Joerg W. (joergwolfram)


Lesenswert?

jedes Pixel die doppelte Zeit und jede Zeile zweimal anzeigen. Dann 
ändert sich auch das Timing gegenüber 640x480 nicht.

Gruß Jörg

von Andreas K. (a-k)


Lesenswert?

Fernseher dranhängen. Der kann, sofern wie heute üblich mit 
NTSC-Frequenz verträglich.

von you2 (Gast)


Lesenswert?

ABer ein Fernseher verarbeitet doch nur Halbbilder!
D.h. ich muss aus dem Vollbild noch zwei Halbbilder genrieren und dann 
an den Fernseher senden!

von Benedikt K. (benedikt)


Lesenswert?

you2 wrote:
> ABer ein Fernseher verarbeitet doch nur Halbbilder!

Nicht ganz. Er verarbeitet auch problemlos 312 Zeilen, also alles mit 
15,625kHz/50Hz.

von Andreas K. (a-k)


Lesenswert?

Oder eben 240 sichtbare Zeilen von 262 technisch vorhandenen Zeilen, bei 
60Hz/15,750KHz im hier eher relevanten NTSC-Timing.

von Morin (Gast)


Lesenswert?

> jedes Pixel die doppelte Zeit und jede Zeile zweimal anzeigen. Dann
> ändert sich auch das Timing gegenüber 640x480 nicht.

Dem kann ich mich nur anschließen. Wenn der Rest deiner Display-Logik 
mit den höheren Zeilenfrequenzen klarkommt, sollte das Problemlos gehen. 
Ansonsten bau nen Zwischenpuffer ein, der sich eine Zeile merkt, um sie 
nochmal anzeigen zu können.

von you2 (Gast)


Lesenswert?

Alles klar, vielen Dank!
Nur noch mal kurz ne Frage:
Ich möchte jetzt noch ein PAL Signal (640x480, 50HZ) generieren und über 
die VGA SChnittstelle an einen Fernseher schicken. Ich erzeuge nun 
allerdings eine Pixel Clock von 25 MHz. Würde das ein normaler fernseher 
vertragen????
Die Timings habe ich von VESA.

von Andreas K. (a-k)


Lesenswert?

Der Pixeltakt ist dem TV egal, den kriegt er ja nicht. Er kriegt nur die 
Daten aus der Bildzeile. Kriegt er die schneller als er darstellen kann, 
dann werden einzelne Pixel u.U. ganz verschwinden oder mit den 
Nachbarpixeln verwurstet.

Die Bandbreite eines klassischen SVGA/ScartRGB TV-Eingangs dürfte bei 
maximal 3-4MHz liegen, was einem Pixeltakt von 6-8MHz entspricht. Der 
VGA-Eingang eines heutigen TVs kann allerdings besser sein.

Passen muss allerdings Zeilen- und Bildfrequenz.

von Benedikt K. (benedikt)


Lesenswert?

So ganz egal ist es dem TV nicht. Er bekommt ihn indirekt über die 
Horizontalfrequenz mit: 25MHz/800 (640+Overscan)=31,25kHz. Das ist dem 
TV zu viel. Du musst den Pixeltakt also halbieren, oder eben wie schon 
geschrieben immer die Pixel doppelt ausgeben.

Davon mal abgesehen ist 640x480,50Hz und 25MHz Pixeltakt ein 
Widerspruch, denn Framerate und Pixeltakt stehen in einem festen 
Verhältnis zueinander, das durch die Auflösung bestimmt wird.

Der "offizielle" Pixeltakt von digitalem PAL beträgt übrigends 13,5MHz. 
Das ergibt dann nämlich eine Auflösung von 864x625 bzw. 768x576 
sichtbaren Pixeln.

von you2 (Gast)


Lesenswert?

Oh sorry, habe mich verschrieben. Bei 640x480 (50Hz) wären es in etwa 
20MHz Pixel_CLK.
Mein PRoblem ist, dass ich ein Bild mit einer AUflösung von 640x480 über 
PAL darstellen möchte. Könnte ich denn die fehlenden Zeilen und Pixel, 
die durch das PAL Timing entstehen einfach durch das BLANK sxhwarz 
darstellen lassen???

von Andreas K. (a-k)


Lesenswert?

Wie Benedikt korrekt anmerkt: 640 Pixel pro Zeile und 64µs Zeilendauer 
(einschliesslich Austastlücke) gehen nicht zusammen mit 20MHz Pixeltakt. 
Da die Zeilendauer festliegt, müssen sich die Pixel dem anpassen. Ob du 
dann bei hohem Pixeltakt jedes davon doppelt darstellst, oder den Takt 
reduzierst, das kannst dir aussuchen.

Der zeitliche Aufbau der Zeile jedenfalls, also die Dunkelzeiten 
innerhalb der Zeile, die ergeben sich aus dem TV-Standard. Wenn du daran 
drehst, also die dunklen Zeiten vor und nach dem Sync-Puls hochdrehst um 
640 Pixel mit 20MHz rausschieben zu können, dann wird das sichtbare Bild 
entsprechend schmaler und du guckst links und rechts in stattliche 
Schwarzbalken.

von you2 (Gast)


Lesenswert?

So ich habe nun folgende Timing Angaben von der VESA:
320x240 @50 Hz
Hor. Frequ.: 12,5kHz
Vert. Frequ.: 50 Hz
Pixel CLK: 5 MHz

Hor. total: 80 us = 400 Pixel

usw.

Kann ein Fernseher das denn ohne Probleme verarbeiten?????

von Benedikt K. (benedikt)


Lesenswert?

Nein !
Wie schon mehrmals gesagt:
Horizontalfrequenz 15,625kHz (auf wenige % genau !!!) und 
Vertikalfrequenz 50-60Hz je nachdem ob der TV nur PAL oder auch NTSC 
kann.

von you2 (Gast)


Lesenswert?

Ja, bin da wieder durcheinander gekommen. Ich muss also nur die 50HZ 
Vert. frequ. und 15,625kHz Hor. Frequ. beachten! Die Pixelclock kann ich 
dann entsprechen nach meiner nach belieben auswählen, solange ich 
natürlich die Vertikal und Hor. Sync einhalte! Wie ist das denn mit dem 
Blank? Kann ich das nach belieben verändern, wenn sich die Pixel Zahl 
ändert???

von Benedikt K. (benedikt)


Lesenswert?

Schau dir das mal an:

http://www.edv-tip.de/dvd/004_aufloesung.htm

Du musst die Größe der Sync Impulse und deren Frequenz einhalten. Der 
Blank muss mindestens die vorgeschriebene Länge haben. Wenn dieser 
länger aktiv ist, ist das nicht schlimm, der sichtbare Bereich wird nur 
kleiner.

von you2 (Gast)


Lesenswert?

Moin, ich noch einmal!
Also, ich will ja ein Bild mit 320x240 Pixel darstellen. Und zwar in 
PAL.
Jetzt muss ich ja 50Hz pro Halbbild und 15,625 kHz Zeilenfrequenz 
einhalten. Zusätzlich die Zeit des H_Sync und V_Sync. Jetzt möchte ich 
gerne eine Pixel Clock von 20MHz erzeugen. D.h. dass die Anzahl der 
gesamten Pixel in 64us ansteigt. Aber das müsste doch egal sein, so 
lange ich die Sync- Signale, die Wiederholfrequ. und die Zeilenfrequnez 
einhalte, ODER?????

von Andreas K. (a-k)


Lesenswert?

- Wenn du in einer Zeile mehr als 320 Pixel anzeigt, sind es keine 
320x240 mehr.

- Wenn du bei PAL Timing in einer Zeile genau 320 Pixel mit 20MHz 
Pixeltakt anzeigst, ist das Bild schmal wie ein Handtuch.

- Wenn du bei PAL Timing genau 320 Pixel pro Zeile so anzeigst, dass das 
Bild satt auf den TV passt, sind es keine 20MHz Pixeltakt.

Such es dir aus.

von you2 (Gast)


Lesenswert?

Also ich habe jetzt eine Pixel Clock von 12,5MHz, 15,625kHz 
Zeilenfrequenz, 50 HZ Bildwiederholrate. D.h. pro Zeile 800 Pixel, wovon 
ihc nur 320 als Bild darstellen will. D.h mein Front- u. Back Porch ist 
länger als normal. H-Sync = 4,7us und V-Sync = 2,5x64us=160us.
Jetzt wollte ich eignetlich das Timing für die Even  und Odd-Zeilen 
generieren. Aber ich hab da gerade ein verständnisproblem:
Wie bekomme ich es hin, dass ich immer eine Zeile dazischen frei 
habe.Erst hatte ich überlegt, jeweils einen Counter für Odd und für Even 
zu machen. Aber so richtig scheint mir das auch nicht zu sein?????

von Andreas K. (a-k)


Lesenswert?

you2 wrote:

> V-Sync = 2,5x64us=160us.

???

160µs pro Bild, für 2,5 Zeilen? Was soll das werden?

von you2 (Gast)


Lesenswert?

Das Timing steht überall, wo man etwas zur Fernsehtechnik findet.Der 
VErtikal_Sync_Impuls ist 2,5 Zeilen lang. Da eine Zeile 64us 
dauerte....!

von Andreas K. (a-k)


Lesenswert?

Ok, sorry, ich hatte das als Periode verstanden ;-).

von you2 (Gast)


Lesenswert?

Alles klar. Weißt du denn, wie man das Halbbild-Timing richtig 
generiert. Ich brauche ja einmal die geraden und ungeraden Zeilen. Mit 
den ungeraden fange ich dann an. Das ist ja alles klar. Aber sind denn 
auch die Front- und Back-Porch gleich groß? Oder muss ich diese jeweils 
den Odd und Even Bild anpassen, da ja das 1. halbbild mit einer 
Halbezeile endet und das 2. mit einer halben Zeile beginnt.????????

von Andreas K. (a-k)


Lesenswert?

Hast du denn erst einmal die Variante ohne Interlacing hinbekommen? Für 
240 Zeilen braucht's das ja nicht.

von you2 (Gast)


Lesenswert?

Nee. Kann ich denn ein NON-Interlaced mit einem Fernseher verarbeiten?
Ich hab jetzt einfach bei dem Odd_halbbild den FrontPorch auf 1/2 Zeile 
verlängert und bei dem Even-Halbbild den Bck-Porch.  Müsste doch jetzt 
eigentlich so gehen, oder?

von Andreas K. (a-k)


Lesenswert?

Ich geb's auf.

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.