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.
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.
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.
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.
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 :-)
Hier ist mein Video Tutorial zu VGA+De Board. http://www.youtube.com/watch?v=WK5FT5RD1sU Ich hoffe das Hilft;)
Interessanten nick hast du da. Zu Deinem Tutorial: Gibt es den Code auch zum Laden? so ist das ein bischen "strange".
Hi, Ja den Code findest du in der Videobeschreibung (show more)
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
Was sagt denn der Schaltplan zwischen DAC und VGA Ausgang? Kann man da überhaupt etwas schalten?
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
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
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?
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.