Forum: FPGA, VHDL & Co. Fehlersuche lernen. Beispiel vga


von Christian F (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.

Ich habe damit begonnen, mich zur Ablenkung mit fpga zu 
beschäftigen..... Nun auf jeden Fall hoffe ich hier Impulse und Hilfe zu 
finden.
Ich benutze ein Nexys2 Board von Digilent mit Spartan3E.



VGA ist langweilig und anscheinend macht das jeder Student... dennoch 
ist es motivierend etwas am Bildschirm zu finden und kann nachher 
beliebig komplizierter werden um neue Techniken zu lernen. So habe ich 
mich dafür entschieden. Einige Wochen uc.net und Internet Studium habe 
ich hinter mir und jetzt will ich mal konkreter werden.


Es gibt aber Probleme. Ich habe meinen Code angehängt. Vielleicht findet 
sich ja jemand der mir schnell helfen kann....bei folgendem Problem: ich 
gabe ein Schachbrett aus Linien aus. (Speicher, Framebuffer oder Linien 
sind mir viel zu kompliziert ich weiß noch nich einmal wie ich vorgehen 
würde)
Dabei fällt mir auf, dass ich einige Senkrechte Linien, also bei einem 
festen x verscmiert sehe. Das ist bei 32 px Breite nicht da, bei 16 sehe 
ich einen und bei 8 3. Wobei im letzten Fall es so scheint, als ob die 
Nachbarpixel auch etwas flattern, also als ob da alle ca 300 Pixel eine 
Art Störung sichtbar ist.


Ich habe im isim einen Takt auf das Design gegeben und nachgehalten ob 
da etwas außer Plan zu sein scheint. Wie zu erwarten sehe ich das da 
nicht.


Meine (erste) Frage an euch: Seht ihr einen grundlegenden Fehler im 
Design? Was kann/sollte ich prinzipiell ändern? Oder kann es am 
Interpolieren liegen? VGA 640x480 ist ja auch für ein altes 19'' tft 
grenzwertig. Ich habe den 50 MHz TAkt halbiert. 25 MHz Pixeltakt schien 
mir für VGA zu passen.

Was tun.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Christian F schrieb:
> als ob die Nachbarpixel auch etwas flattern, also als ob da alle ca 300
> Pixel eine Art Störung sichtbar ist.
Welche Auflösung hat denn dein Monitor ermittelt? Das hört sich nach 
Skalierungs-Artefakten an...

Der Monitor synchronisiert sich ja nicht auf dein Signal, sondern tastet 
es mit seiner Frequenz ab. Und die ist offenbar um 0,3% daneben. So 
kommt immer nach 300 Pixel ein "Sprung".

: Bearbeitet durch Moderator
von Christian F (Gast)


Lesenswert?

Danke schon mal für die Hilfe.
Ich werde zu Hause nachschauen - ich habe mich wegen der 25 MHz 
Pixeltakt für vga entschieden. 1200x768 hatten diese Monitore glaube 
ich. Da gibt es dann schon unangenehm hohe Pixeltakte für einen ersten 
Versuch und einen möglichen Framebuffer würde ich auch kaum intern 
hinbekommen.....
Ich habe wegen Familie und Arbeit leider nicht die Muße die ich gerne 
hätte (und bestimmt bräuchte). 'Autoadjust' habe ich aber als erstes 
probiert.

Wobei ich mir aber unsicher bin, ist die Farbgenerierung mit dem 
osl_viden Signal. Das wird in dem Block der das Timing macht aus den 
Pixel- und Zeilenzählern gemacht.
1
osl_viden <= '1' WHEN usig_hcount < c_hdisp AND usig_vcount < c_vdisp ELSE '0';

Darf ich das dann wie hier im color_gen in anderen Prozessen benutzen
1
grid : process(isl_viden,islv_xpos,islv_ypos)
2
(....)
3
  if( isl_viden = '1' ) then
oder muss das auch irgendwie wieder in einem Flipflop gespeichert 
werden? Ich bin verunsichert bis paranoid wegen logischer Signale die 
unregistriert durch das design gereicht werden. Das hat das Forum 
immerhin erreicht.

Und zum Fehlerbild eines solchen theoretischen Fehlers: Dann würde nicht 
eine ganze x Zeile betroffen sein, sondern sporadischer Grafikfehler 
auftauchen?

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.