Hallo,
ich muss für eine Anwendung die Timings des VSYNC-Signals eines
DVI-Signals bestimmen (Front Porch, Blanking Interval, Back Porch).
Wie kann ich aus den Videosignalen (DVI-Decoder spuckt Pixel Clock,
Display Enable, VSYNC und HSYNC aus) erkennen, wann der Vertical
Blanking Interval stattfindet?
Als Referenz:
http://www.javiervalcarce.eu/wiki/VGA_Video_Signal_Format_and_Timing_Specifications
VSYNC und HSYNC verhalten sich bei DVI wie bei VGA.
Meine Ansatz: Hört HSYNC während dem Vertical Blanking Interval auf zu
toggeln? Dann könnte ich daraus entscheiden, ob gerade Zeilen übertragen
werden oder Blanking stattfindet. Ich konnte diese Information online
nicht finden, und meine Intuition sagt, dass HSYNC weiterläuft (wäre ja
bei VGA ein unnötiger Aufwand, das anzuhalten...)
Dabei gleich: Wie erkennt man denn beim (analogen) VGA-Signal den VBI?
Weiß hier jemand weiter?
Danke, und viele Grüße
> Wie erkennt man denn beim (analogen) VGA-Signal den VBI?
Gar nicht. Der VSYNC löst den Zeilenrücklauf aus, währenddessen wird
dunkelgetastet bzw. der Schwarzwert geklemmt. Aus dem Grund ist der
VSYNC ja auch immer viele Zeilen lang und nicht nur eine (würde als Puls
ja reichen).
Nochwas: Wenn das Display-Enable auf der Encoderseite richtig
angesteuert wird, kann man damit den effektiven Videobereich auch
erkennen. Allerdings fängt das schon ein paar Zeilen vor dem VSYNC an.
Wenn du den DVI-Decoder schon hast, häng doch einfach mal das Oszi an
DE, VSYNC und HSYNC, das sollte einiges aufklären ;)
DVIman schrieb:> Ich weiß aber leider vorher nicht, wie viele Zeilen das Bild hat, bzw> ich kenne die Auflößung nicht. :/
Du kannst zählen und davon ausgehen, daß die Zeilenzahl im nächsten Bild
die gleiche ist. Wenn man im laufenden Betrieb die Auflösung ändert,
kommt es zu einer kurzen Störung. Das sollte aber zu verkraften sein.
Duke
Hallo,
danke für die zahlreichen Antworten!
Ich hab mir nochmal Gedanken gemacht, bin aber leider immer noch nicht
auf die Lösung gekommen. :/
Ich suche immer noch nach einer Lösung, wie ich den Vertical Blanking
Interval erkennen kann. Den brauche ich, um die Länge des Front Porch
und Back Porch des VSYNC zu bestimmen (oder?).
Leider ist mir immer noch nicht ganz klar, wie ich aktives Video (dh
Zeilen, die Videodaten enthalten) unterscheiden kann vom Vertical
Blanking Interval (dh Zeilen, die keine Videodaten enthalten - Front
Porch und Back Porch).
Das brauche ich auch, um die Anzahl der (aktiven) Zeilen zu bestimmen -
oder?
Danke für eure Hilfe!
> Leider ist mir immer noch nicht ganz klar, ...
Den TFT-Monitoren auch nicht ;) Deswegen können die meisten zuverlässig
auch nur VESA-Modi darstellen, die allein über die
HSYNC/VSYNC-Frequenzen erkannt werden. Damit ist dann schon alles
festgelegt...
Danke für deine Antwort :)
D.h. die haben die gängen Videomodi in einer Tabelle, und schlagen
anhand den Frequenzen nach, wieviel Spalten, und Zeilen das Bild haben
sollte, und wie die VSYNC und HSYNC Timings bzgl. Front Porch usw
aussehen sollten?
Schade, das klingt als ob ich VSYNC nicht wirklich vermessen kann...
Eine Möglichkeit, die ich mir noch durch den Kopf gehen hab lassen, ist
die R, G, und B Werte auszuwerten, und damit zu entscheiden ob das Pixel
zum Video gehört oder zu einem Blanking Interval. Das geht dann aber
auch wieder nur zuverlässig, wenn das Bild kein Schwarz enthält...
@ DVIman (Gast)
>Eine Möglichkeit, die ich mir noch durch den Kopf gehen hab lassen, ist>die R, G, und B Werte auszuwerten, und damit zu entscheiden ob das Pixel>zum Video gehört oder zu einem Blanking Interval. Das geht dann aber>auch wieder nur zuverlässig, wenn das Bild kein Schwarz enthält...
??? Mensch, wenn du das enable Signal hast, steckt dort doch die
gesuchte Information drin! Nämlich wieviele "enabelte" Pixel zwischen
zwei HSYNC/VSYN Flanken auftreten. Das kann man einfach auszählen! Du
hast doch den Pixeltakt.
@Falk:
Ja, beim HSYNC leuchtet mir das ein - da mache ich das auch so.
Aber beim VSYNC war mir das noch nicht klar - diese Info konnte ich
bisher nicht bekommen. Während dem gesamten Vertical Blanking Interval
bleibt Display Enable also auf low? (Tut mir leid, ich hab gerade kein
Scope zur Verfügung, sonst würd ichs mir einfach anschauen).
Theoretisch sollte DE wirklich nur den Fensterausschnitt der gültigen
Pixeldaten übertragen. Ich bilde mir aber ein, schon mal ein Gerät
gesehen zu haben, dass DE auf Encoderseite nicht vernünftig konfiguriert
hatte (kann man ja entweder per Signal übertragen oder per Setup im
Encoderchip selbst ausrechnen lassen).
Man zähle die Pixel zwischen fallender DE-Flanke und steigender
DE-Flanke. Wird ein (für die Auflösung ermittelter) charakteristischer
Wert überschritten, befindest Du dich im V-Frontporch-Bereich ;-)
Ich wollte das ganze so flexibel halten wie möglich, also nicht
irgendwelche "magic numbers" verwenden :)
Ich habs jetzt mal so probiert wie @falk und @georga vorgeschlagen
hatten, dh. unter der Annahme, dass DE während dem VBI konstant low ist
(und während dem HBI natürlich auch). Funktioniert! Im Nachhinein
logisch, aber die Info hab ich nirgends klar gefunden, oder überlesen :)
Danke für eure Hilfe!