Forum: FPGA, VHDL & Co. VGA Signal wird nicht korrekt erzeugt


von Mark (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Ich arbeite mich gerade in VHDL ein und habe mich seit gestern an mein 
erstes größeres Projekt (ist immer relativ ;)) gewagt, einen VGA 
Signalgenerator.

Leider funktioniert er einfach nicht richtig. Das Board arbeitet 
einwandfrei, aber sobald ich das .bit file auf den FPGA Lade, wird der 
Bildschirm dunkel und im OSD des Monitors wird die auflösung nicht 
erkannt. Kann vielleicht mal jemand kurz über meinen Sourcecode schauen 
und mir vielleicht einen kleinen hinweiß geben, wo der Fehler liegen 
könnte? Ich stehe hier gerade ziemlich auf dem Schlauch.
Ich würde mich auch über Kommentare zum Source selber freuen, also ob 
ich irgendwo ein No-Go eingebaut habe o.ä.

Noch kurz zur Erklärung
Clk25xCI ist der Eingang für die 25,175MHz Clock (auf dem Board 
vorhanden)
HsyncxDBO und VsyncxDBO sind die Signalleitungen für die Syncsignale.
GlobalxRI habe ich auf einen Taster gelegt.
Die anderen Signale sind für den Test meiner Meinung nach nicht weiter 
relevant, da der Monitor die Auflösung auch ohne Farbansteuerung 
erkennen sollte (wenn ich die VGA-Spezifikation richtig verstanden 
habe).

Über eine Antwort würde ich mich sehr freuen

MfG
Mark

von Nephilim (Gast)


Angehängte Dateien:

Lesenswert?

hast du dir in der simulation schonmal angeschaut, ob die hsync und 
vsync signale vom verlauf her soweit passen, wie du dir das vorgestellt 
hast ? ich poste dir mal dazu 2 bilder wie ich es bei meiner Master 
Arbeit gemacht hatte. vielleicht kannst du aus den infos und bildern 
ableiten ob dein konzept so richtig ist.

von Nephilim (Gast)


Angehängte Dateien:

Lesenswert?

so, und das 2. pic. hierbei ist grad der nichtsichtbare bereich zu 
sehen, daran kann man vielleicht so das verhältnis zwischen Hsync, 
vsync, frontporch und backporch erkennen

von Cpt (Gast)


Lesenswert?

Hallo Mark!

Ich hatte damals ein vergleichbares Problem. Ich hatte die Blankingarea 
nicht beachtet. Kurz gesagt: Die RGB Leitungen sind notwendig. Keine 
Ahnung ob das nur an meinem Monitor lag. Wenn ich mich recht entsinne 
müssen die RGB Leitungen während des Blanking-Intervalls "null" sein, 
aber schau lieber nochmal nach.

Viel Erfolg und Grüße

Cpt

von Nephilim (Gast)


Lesenswert?

ich hab alles annem TFT getestet und da waren die werte der RGB signale 
in dem moment nicht wichtig, aber zur kontrolle des bildes und ob es 
denn auch steht würde ich in bestimmen zeilen und spalten einfach mal 
was einfärben und ansonten einfach auf null setzen.
dann geht man kein risiko ein und sieht schonmal was.

von Mark (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Nephilim

Was mir gerade bei deinem Signalverlauf aufgefallen ist, deine Hsync und 
Vsync Signale sind anscheinend von den Flanken her synchron zueinander
bei mir sind sie leicht verschoben, kann das daran liegen?

Gruß Mark

von Nephilim (Gast)


Lesenswert?

also ich würd sagen, mach es einfach mal so synchron zueinander und 
schaue, obs einen effekt hat.
ach und als nachtrag zu meinem 2. bild, das war für eine auflösung von 
800x600  gewesen, also nich wundern, das die polarität der syncsignale 
anders herum ist.
was für einen monaitr verwendest du ? wenn du einen TFT verwendest dann 
brauchen die zusätzlich noch ein DE signal.

von Mark (Gast)


Lesenswert?

Also ich habe mir jetzt gerade ein anderes Board besorgt (vorher Xilinx 
S3ADSP1k8 jetzt S3AN) und damit läuft das Programm bzw. die Auflösung 
wird im OSD richtig angezeigt. Anscheinend hängt das also nicht mit dem 
Sourcecode zusammen... da werd ich wohl also noch ein bissl suchen 
müssen...

Trotzdem danke für die Antworten...

PS: gibt es noch was Formelles am Code zu bemängeln?

Gruß
Mark

von The one (Gast)


Lesenswert?

Warum schreibst du die Schlüsselwörter eigentlich groß?

von Mark (Gast)


Angehängte Dateien:

Lesenswert?

Finde das irgendwie übersichtlicher, ist halt geschmackssache...

Habe den Fehler inzwischen auch gefunden. Die Timings die ich benutzt 
habe stammten aus dem 3AN-Board Manual. Dieses besitzt einen 50MHz 
Clock, der für den VGA-Sync-Generator einfach halbiert wird. Auf dem 
3DSP sitzt aber ein 25,175MHz Quartz. Diese Abweichung sorgte dann 
dafür, dass die Timings nichtmehr korrekt waren. Nach einer kleinen 
modifikation funzt der Code inzwischen auch auf beiden Boards. (Code ist 
im Anhang, falls das noch wen interessiert)

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.