Der VGA-Simulator ist in Betrieb. Sie können Ihre eigenen Designs simulieren oder einfach die Beispieldatei verwenden, um zu sehen, wie es funktioniert. Ich habe auch einen Blog-Beitrag geschrieben , um allen den Einstieg in die Verwendung für ihre eigenen VHDL-Designs zu erleichtern.
Ich mache einen VGA-Simulator oder virtuellen Monitor, weil Xilinx zu lange braucht, um VHDL zu synthetisieren (auf meinem PC und im Allgemeinen für große Projekte). Mit diesem VGA-Simulator kann ich einfach meine Testbench ausführen, die in einer Datei protokolliert, während sie in einem normalen Simulator wie Isim ausgeführt wird, und diese Protokolldatei dann in meinem VGA-Simulator verwenden, um die Frames zu generieren.
Der VGA-Simulator dekodiert hsync, vsync und rgb (5 Hauptsignale), um die Frames zu erzeugen.
Gibt es eine Möglichkeit, die Auflösung oder Pixeltaktrate nur aus den 5 Hauptsignalen zu erhalten? Im Moment habe ich nur einige Textfelder, die Sie manuell eingeben müssen (siehe Formular). Ich brauche die Pixeltaktrate, um zu verfolgen, an welchem Pixel das System arbeitet.
Ich gehe davon aus, dass jeder Monitor 640 x 480 bei 60 Hz als Standardeinstellung für VGA verwendet, weil ich an nichts herumfummeln muss, damit es funktioniert. Ich verstehe, dass es einige EDID-Pins und einige neuere serielle Schnittstellen gibt, die spezifiziert sind, aber werden sie tatsächlich verwendet, um eine andere Auflösung oder fps/Hz zu bestimmen? Auf dem Basys 2 sind sie nur geerdet.
Mein Simulator funktioniert im Moment hervorragend, berücksichtigt aber nicht, back porch
dass ich oben links Leerzeichen und unten rechts einige abgeschnitten habe. Dies liegt daran, dass ich nur nach einer steigenden Flanke in hsync und vsync suche und mit der Erfassung beginne. Dies ist keine große Sache und leicht zu beheben, aber ich bin mir nicht sicher, welchen Wert ich für back porch
verwenden soll, um mit einer Vielzahl von Protokolldateien von Personen zu arbeiten.
Mein VHDL-Design (basierend auf diesem Design ) hat back porch
48 Taktzyklen und dieses Dokument sagt zum Beispiel, dass es 45 sein sollte, und dieses sagt 48. Was ist die richtige Toleranz für die back porch
oder die richtige Art der Synchronisierung, um diese Diskrepanzen zu vermeiden?
Natürlich ist ein Monitor so konzipiert, dass dies alles berücksichtigt wird, aber was sind die richtigen Wege, um mit der Toleranz nicht nur bei der Pixeluhr umzugehen, sondern auch bei der Anzahl der Zyklen, die jeder Prozess benötigt (Front Porch, Back Porch, Auflösung, fps)?
Ein Beispiel für eine Diskrepanz: Mein Design teilt einfach den 50-MHz-Takt auf dem Basys 2 durch zwei, um einen 25-MHz-Pixeltakt zu erhalten, um den VGA anzusteuern, wenn er überall auf 25,175 Hz spezifiziert ist, aber natürlich müssen Sie Ihren Pixel setzen Uhr in der Form, so dass es für mein Design im Moment kein Thema ist.
Hier ist nur ein schönes Diagramm des Timings von hsync und vsync (nur eine gute Referenz):
EDID wird unter anderem verwendet, um den Monitor nach den gewünschten Timings abzufragen. Es wird nicht zur Übertragung von Videoinformationen verwendet.
Ich schätze, es ist so lange her, dass sich niemand daran erinnert, aber VGA-Monitore hatten damals Anpassungen für die Bildposition auf der CRT. Sie können es nach links oder rechts, oben oder unten verschieben oder horizontal oder vertikal skalieren. Fortgeschrittenere Monitore hatten zusätzliche Anpassungen. Mit diesen können Sie das verwendete Timing, das lokale Magnetfeld, das das Bild verzerren könnte, usw. kompensieren.
Was diese Anpassungen hinter den Kulissen tun, ist natürlich die Anpassung der Timing-Parameter. Sie waren notwendig, weil das VGA-Signal nicht explizit sagt, wie viel Austastzeit vorhanden ist. Wie Sie bemerkt haben, gibt es einige allgemeine Konventionen, und der Monitor kann (über EDID) Unterstützung für bestimmte Timings ankündigen, aber es ist nicht erforderlich, dass diese Timings an den Monitor gesendet werden.
Was Sie tun können, und was LCD-Monitore tun, die noch über VGA-Schnittstellen verfügen, wenn Sie die Taste "Auto Adjust" drücken, ist, die Austastzeit zu erraten, indem Sie einfach die R-, G- und B-Signale betrachten. Diese sollten für die Austastzeit schwarz sein, und wahrscheinlich sind sie sonst nicht schwarz. Natürlich könnte jemand auf einen schwarzen Bildschirm schauen, und dieser Ansatz wird nicht funktionieren.
Ebenso glaube ich nicht, dass das VGA-Signal irgendetwas enthält, das Ihnen sagt, wie hoch die Auflösung ist. Sie können es erraten, indem Sie nach den Rändern zwischen den Pixeln suchen und diese zeitlich abstimmen, und das ist wiederum das, was LCD-Monitore tun. Denken Sie jedoch daran, dass VGA ein analoges Signal ist, das für die Anzeige auf einem analogen Gerät entwickelt wurde. Es hat kein Konzept von "Pixeln".
Nur Jeff
MLM
back porch
Werte, und ich habe ein paar Bereichseingaben hinzugefügt, damit die Leute ihr Signal ausrichten können.Superkatze
Superkatze
Nur Jeff