Hallo, bisher habe ich VGA hauptsächlich generiert mittels FPGA o.ä. Bis hierhin war das für mich auch immer sehr logisch. Man generiert seine Pixel und sendet entpsrechend HSYNC/VSYNC. Ich stehe nun davor, eine VGA Senke zu bauen. Jetzt verstehe ich aber nicht, wie ich in einer Zeile, also zwischen zwei HSYNC Pulsen herausfinde, was zum front/back porch gehört, und was Pixeldaten sind. VGA besitzt keine übertragene Pixelclock. Wie detektiere ich die horizontale Auflösung? Wie erkenne ich, wie breit meine front/back porches sind? Die scheinen nicht zwangsweise gleich groß zu sein. Vielen Dank.
Ich selbst kenn mich damit zwar quasi überhaupt nicht aus, erinnere mich aber das Ben Eater (youtuber) in seinem "worst videocard of the world"-Video ziemlich ausführlich aufs VGA-Timing eingegangen ist. Wie das Video exakt hieß, weiß ich auch nicht mehr, aber mit "Ben Eater Videocard" sollte es findbar sein. MfG Chaos
J. T. schrieb: > Ich selbst kenn mich damit zwar quasi überhaupt nicht aus, erinnere mich > aber das Ben Eater (youtuber) in seinem "worst videocard of the > world"-Video ziemlich ausführlich aufs VGA-Timing eingegangen ist. Wie > das Video exakt hieß, weiß ich auch nicht mehr, aber mit "Ben Eater > Videocard" sollte es findbar sein. Ist das der mit der Diskreten VGA Karte aus Logikgrab + EEPROM? Wenn ja, dann habe ich das schonmal gesehen. Der geht leider auch nur darauf ein, wie man das Signal generiert. Wie man aus dem generierten Signal allerdings wieder herausfinden soll, wo die Pixeldaten sind, ist mir ein Rätsel. IMHO gehen da Infos verloren. Erkennen Bildschirme die Front/Back porches daran, dass diese immer schwarz sind? Was würde in diesem Fall passieren, wenn ich ein VGA Bild sende, bei dem die linkeste Pixelspalte immer schwarz ist. Würde der Bildschirm diese dann fälschlicherweise als Teil des Front Porches interpretieren und aus dem Bild nehmen?
M. H. schrieb: > Wie detektiere ich die horizontale Auflösung? Der Witz ist: das geht nicht wirklich. Kann man nur indirekt aus den Syncs ableiten. Die haben für jeden definierten Modus ganz typische Werte bezüglich Frequenz und Polarität. Aus den Werten kann man also umgekehrt den Modus ableiten und damit den nötigen Pixeltakt. > Wie erkenne ich, wie breit meine front/back porches sind? Auch das geht nicht wirklich. Kann man bestenfalls nur aus dem Bildinhalt ableiten. Wenn er denn geeignet ist. Ein vollkommen schwarzes Bild ist schonmal völlig ungeeignet... Schau dir einfach mal an, was ein normaler Monitor tut, wenn du "AutoAdjust" drückst. Ungefähr dasselbe musst auch du tun, eine bessere Lösung gibt's nicht wegen ist nicht. Gibt das Signal einfach nicht her.
c-hater schrieb: > Der Witz ist: das geht nicht wirklich Das ist auf der einen Seite natürlich schön, dass ich das schon richtig angenommen hatte. Auf der anderen Seite aber blöd für die implementierung. Ich denke ich werde im FPGA entweder die üblichen Timings hinterlegen, oder eine statistik führen, wie viele Pixel vor/nach dem HSYNC immer schwarz sind und entsprechend die Porches annehmen. Genauso für die Zeilen. Gibt es eine Garantie, dass die Porches immer schwarz sind, beziehungsweise nah an schwarz (wegen analog und so)?
Hallo Bambel, ich bin auch kein Experte. Ich glaube, es gibt einige "Standard" Auflösungen bei VGA (VGA Modi) und durch zählen der HSyncs und Messen Ihrer Länge wird zuerst entschieden, welche der Standard Auflösungen es sein könnte. Wenn man das weiß, dann ist auch das Timing für Pixelclock bekannt und die vordere und hintere Flanke der HSync Signals werden benutzt um das interne Pixelclock zu synchronisieren (eventuell auch die PLL Frequenz). Dann wird gezählt. Im Prinzip ist die Vorgehensweise ähnlich wie beim analogen Fernseher. Dort gab es "Blanking" Signale, aber ich weiß nicht wie sie generiert waren. Grüße, Aleks
M. H. schrieb: > Gibt es eine Garantie, dass die Porches immer > schwarz sind, beziehungsweise nah an schwarz (wegen analog und so)? Definiere "nah"... ;o) Also: nein. Aber es gibt Anhaltspunkte, wenn man statistisch unterstützt über mehrere oder alle Zeilen hinweg analysiert. Oftmals selbst bei einem komplett "schwarzen" Bild (was eigentlich NICHT so sein sollte). Man kann allerdings immerhin meist davon ausgehen, dass das, was man so als Schwarzpegel für die Porches der Zeilen identifiziert hat (wenn es was zu identifizieren gab), auch der Schwarzpegel für die Vertikalporches ist. Allerdings habe ich auch von dieser Regel schon fiese Ausnahmen gesehen... Zusammenfassend: eine praktisch brauchbare Erkennungslogik zu schaffen, wird dich einige Zeit lang gut beschäftigen. Wenn das eine kommerzielle Lösung werden soll, würde ich den Einkauf von entsprechendem IP vorschlagen. Sehr gut möglich, dass das am Ende kostenmäßig deutlich günstiger kommt.
M. H. schrieb: > Die scheinen nicht zwangsweise gleich groß zu sein. So ist es. Aus der Zeit analoger Monitore ohne sonderlich viel Eigenintelligenz wissen ältere Semester, dass man Bildgrösse und Position manuell je nach Signalquelle manuell einstellen musste. Bei Fernsehern war das nur deshalb nicht nötig, weil die so eingestellt waren, dass sie stets am Rand einen Teil des Bildes abschnitten. Bei Computerbildschirmen erwies sich dieses Overscan jedoch als unpraktisch, aber da war dieses lockere Timing der Übertragungstechnik bereits erschaffen und definiert.
Aleks schrieb: > Ich glaube, es gibt einige "Standard" > Auflösungen bei VGA (VGA Modi) Exakt: http://tinyvga.com/vga-timing Aleks schrieb: > durch zählen der HSyncs und Messen > Ihrer Länge wird zuerst entschieden, welche der Standard Auflösungen es > sein könnte. Richtig. Es reicht nicht nur auf Flanken zu reagieren, es muss tatsächlich gemessen werden wie lange die Pulse sind. Und dann gibt es noch die EDID und DDC. Was da alles möglich ist weiß ich nicht, aber es ist ein digitales Interface zwischen Monitor und Grafikkarte. Darüber kann vermutlich gesagt werden welche Auflösungen der Monitor kann und vielleicht sagt die Grafikkarte auch welche Auflösung er ausgibt. c-hater schrieb: > würde ich den Einkauf von entsprechendem IP vorschlagen. Ja, vielleicht ist es aber auch günstiger einen IC zu kaufen der das kann.
:
Bearbeitet durch User
Gustl B. schrieb: > Ja, vielleicht ist es aber auch günstiger einen IC zu kaufen der das > kann. Jetz wo ich weiß, dass da keine Magie drin versteckt ist, sondern das ganze einfach bisschen kaputt ist, ist es an sich kein Problem die Timings zu messen und entsprechend einen "educated guess" zu machen, was es sein wird. Zur Not kann man den Modus eben noch manuell einstellen.
Genau. Aber vielleicht kannst du noch irgendwelche Tricks lernen wenn du dir fertige Lösungen anguckst wie den https://www.analog.com/media/en/technical-documentation/data-sheets/ADV7403.pdf Fertige Lösungen gibt es auch für sehr kleines Geld: https://www.ebay.de/itm/184456583503 Das IC: http://aitendo3.sakura.ne.jp/aitendo_data/product_img/lcd_controller/Xs/RTD2660.jsp.pdf
:
Bearbeitet durch User
M. H. schrieb: > Jetz wo ich weiß, dass da keine Magie drin versteckt > ist, sondern das ganze einfach bisschen kaputt ist, Das sieht nur für den so aus, der die Historie nicht kennt. Bildröhren kennen keine (definiert adressierbaren) "Pixel", sondern nur Farbtripel. Wieviele Signalwechsel die Quelle je Zeile erzeugen kann, ist der Bildröhre VÖLLIG wumpe -- davon hängt technisch nichts ab.
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.