Forum: FPGA, VHDL & Co. VGA-Ausgang mit FPGA DE2-115 ansteuern


von E. H. (epimeth)


Lesenswert?

Hallo,

ich möchte mithilfe des FPGA (VGA) ein Bildschirmsignal ausgeben auf 
1024*768 oder höher.

Am Anfang würde mir erstmal ein weißer Bildschrim ausreichen.

Könntet Ihr mir bitte sagen, was ich dafür alles benötige?

Im Internet habe ich bereits einige Beispiele gefunden jedoch kam ich 
mit den Anleitungen nicht ganz so gut zurecht.

Ziel ist es die Bildschirmausgabe eines "Master Mind Spiel´s". Dieses 
ist bereits vollständig in VHDL geschrieben und wird auf einem Touch 
Display ausgegeben. Nun soll es jedoch zusätzlich noch auf einem Monitor 
ausgegeben werden. Dabei werden dann zusätzliche Hinweise eingeblendet.

von PittyJ (Gast)


Lesenswert?

Auf Opencores ist etwas zu finden.
Und im Prizip brauchst die nur die Zeiten für HSync, VSync und Pixel 
einhalten.

Komplexer wird es, wenn noch etwas sinnvolles ausgegeben werden soll. 
Dann braucht es noch eine passende RAM-Ansteuerung.

von Falk B. (falk)


Lesenswert?

So eine Bilderzeugung ist ja nicht sllzu schwer. Man gibt zeilenweise 
die Bilddaten aus, wobei am Anfang und Ende je etwas Leerdaten liegen. 
Parallel dazu generiert man H-Sync und V Sync. Beim V Sync gabe es 
einige Leerzeielen, das ist die vertikale Austastlücke. Die genauen 
Frequnezen und zeiten findet man überall im Netz. Eine handvoll Zähler 
und bissel Logik, mehr braucht es nicht.

von Sigi (Gast)


Lesenswert?

Beispiele gibt's zu Hauf, z.B.
http://www.ece.unm.edu/~jimp/vhdl_fpgas/slides/VGA.pdf

Ob jetzt 1024x768 oder 640x480 sollte eigentlich am
Anfang egal sein, Hauptsache ist, man versteht das
grundsätzliche Prinzip.

von Xilinx Phreak (Gast)


Lesenswert?

Hier ist ein Beispielprojekt: Projekt VGA Core in VHDL.
Da ist sogar Dein Altera Board erwähnt.

von E. H. (epimeth)


Lesenswert?

Hallo,

erstmal großen Dank für die hilfreichen Antworten. Ich komme leider erst 
nächste Woche dazu an dem Projekt weiterzumachen. Aber ich bin der 
Lösung nun schon viel näher gekommen.

Großes Danke :-)

von GS (chromosoma)


Lesenswert?

Hier ist mein Video Tutorial zu VGA+De Board.

http://www.youtube.com/watch?v=WK5FT5RD1sU
 Ich hoffe das Hilft;)

von Paul B. (Gast)


Lesenswert?

Interessanten nick hast du da. Zu Deinem Tutorial: Gibt es den Code auch 
zum Laden? so ist das ein bischen "strange".

von GS (chromosoma)


Lesenswert?

Hi,
Ja  den Code findest du in der Videobeschreibung (show more)

von E. H. (epimeth)


Lesenswert?

Hallo @Böser Kommunist,
ich habe dein Video mir angesehen und den Code in mein Projekt eingfügt. 
Ich habe nun aber das Problem das ich bei der Assignmentliste nicht 
genau weiß wie du nun den 108MHz Takt benannt hast? Ansonsten wäre noch 
dann die PIN Assignmentliste vom DE2 geladen.

@All
Ich hätte noch eine grundsätzliche Frage. Ich lege ja die PIN´s für die 
Assginmentliste des DAC Wandlers fest. Muss ich auch die PIN´s vom DAC 
zum VGA Ausgang des DE2 Boards festlegen oder geschieht das dann 
automatisch?

Grüße

von PittyJ (Gast)


Lesenswert?

Was sagt denn der Schaltplan zwischen DAC und VGA Ausgang?
Kann man da überhaupt etwas schalten?

von E. H. (epimeth)


Lesenswert?

Hallo,
@PittyJ
zwischen DAC und VGA gibt es keine weitere Belegung. Die Pinbelegung ist 
gelöst und der VGA anschluss wird richtig angesteuert.


Ich habe nun jedoch folgendes Problem.
Das ausgegebene Bild hat immmer an der selben stelle senkrechte schmale 
leicht flackernde Streifen in allen Farben (diese wandern aber nicht und 
auch sonst ist das Bild stabil).

Beim erstellen des Bildes werden für das farbliche umschalten der 
Rechtecke Eingangssignale mit einer kleineren Frequenz verwendet. 
Deswegen habe ich diese dann in der jeweiligen Entity als "Buffer" 
gekennzeichnet.

Hätte jemand noch einen Rat wie diese Streifen zustanden kommen?
Oder deuten diese Streife eher auf eine falsche Synchronistation mit dem 
Monitor hin?

Falls noch wichtig das Farbsignal, wird direkt nach dem erzeugen in Rot, 
Grün und Blau aufgeteilt und ausgegeben.

: Bearbeitet durch User
von Dimi S. (Gast)


Lesenswert?

Hallo,

wahrscheilich reicht es einfach sogenannte "Auto-Bildeinstellung" am 
Monitor zu machen weil solche Symthome hat man wenn die "Phase" u.s.w. 
nicht stimmt.

MfG

von E. H. (epimeth)


Lesenswert?

Hallo,
AutoBild wurde bereits am Monitor durchgeführt und hat keine Veränderung 
bewirkt.

Wäre es besser die Farbwerte erstmal in einen Speicher laufen zu lassen? 
und sie von dort wieder rauszuholen?

von The Expert (Gast)


Lesenswert?

Ich glaube, du machst da was ganz grundsätzliches falsch. Entweder 
stimmt Dein timing nicht oder du taktst falsch. Wenn das Bild als 
solches steht, aber der Inhalt flackert, sit das immer ein Zeichen für 
falsch eingeschriebene Wert. Überprüfe deine Synthesergebnisse auf met 
timing constraints.

von E. H. (epimeth)


Lesenswert?

Hallo,
es war ein Problem mit der blanking time. Nun steht das Bild und es gibt 
auch kein Flackern mehr.
Was ich jedoch nicht verstehe ist folgendes
1
blue <= "00000000";
und als ich es änderte in
1
blue <= (OTHERS => '0');
hörte das flackern auf.

Aber bewirken nicht beide Befehle das gleiche?
Einmal als Bitstring und bei dem andern halt eine einzelne Zuweisung von 
Nullen für alle Stellen?

Ansonsten habe ich noch eine gute Seite gefunden zum Ansteuern eines 
VGA´s.   http://eewiki.net/pages/viewpage.action?pageId=15925278

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Wenn die Vektorbreite stimmt, machen beide Befehle selbstredend 
dasselbe. Dein Effekt muss eine andere Ursache haben. Hast du noch 
andere Dinge geändert, die gfs ein anderes routing-Ergebnis provozieren, 
das einen Einfluss auf das Ergebnis hat (was es nicht sollte!)?

Wenn das FPGA-Design ok ist, könnte es noch ein Pegelproblem mit den 
R2R-Netzwerken sein oder dem DAC. Bei bestimmten Farbkombis kommt es 
dann zu Problemen, was ich in Deinem Fall aber nicht annehme.

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.