Ich versuche, HDMI zu FPGA und umgekehrt zu implementieren.
Derzeit beziehe ich mich auf die Website https://www.fpga4fun.com/HDMI.html . Aber ich bin verwirrt, dass "Aber Videosignale haben normalerweise auch einen "Off-Screen" -Bereich, der vom HDMI-Empfänger (Fernseher oder Monitor) für einige Haushaltsarbeiten verwendet wird. Unser 640x480-Frame wird tatsächlich als 800x525-Frame gesendet."
Woher weiß er insbesondere, dass 640 x 480 tatsächlich als 800 x 525-Frame gesendet wird? Wenn ich 1920 x 1080 oder 2592 x 1944 Frames senden möchte, haben sie dann eine bereits definierte Off-Screen-Bereichsgröße?
Moderne Protokolle verlassen sich oft auf historische Entscheidungen und behalten sie aus gutem Grund bei.
A. Der Empfänger erkennt die Bildgröße, indem er die Bildkanten im Quellbild bestimmt, da die vertikalen und horizontalen Synchronisierungssignale immer noch im HDMI-Signal gesendet werden.
B. der Off-Screen-Bereich ist wahrscheinlich nicht vordefiniert (aber ich habe die HDMI-Spezifikation nicht gelesen). Sie beträgt etwa 20 % für horizontales „Off-Screen“ und 10 % für vertikales „Off-Screen“.
Bei unseren guten alten CRT-Bildschirmen nannten wir diesen "Off-Screen-Bereich" das Blanking. Das ist also der Bereich, in dem das eingehende Signal sagte, dass kein Video erzeugt werden sollte. Während der horizontalen Ausblendung würden die "Strahlpositionen" auf die linke Seite des Bildschirms zurückkehren und während der vertikalen Ausblendung kehrt der Strahl zum oberen (und linken) Rand des Bildschirms zurück - die Dauer der Ausblendung ermöglicht es zu bestimmen, ob die Ausblendung ebenfalls erfolgt vertikal oder nicht. Wir bezeichnen die Signale als vertikale und horizontale Synchronisation. Anscheinend (aus Ihrem Link) hat das HDMI-Protokoll immer noch die horizontale und vertikale Synchronisierung.
Dieses Blanking wird jetzt anscheinend als Off-Screen bezeichnet, da kein tatsächliches Blanking durchgeführt wird. Die zur Verfügung stehende Zeit kann somit für „Housekeeping“ genutzt werden. Dies kann umfassen: Speichern der Zeile im "Videospeicher", Zurücksetzen einiger Zähler und allgemeiner das Ausführen von Berechnungen, die nicht durchgeführt werden konnten, während die eingehenden Daten decodiert werden mussten.
Bei dem historischen Signal war die Ausblendung kürzer als der „Bereich außerhalb des Bildschirms“, weil der Strahl sich wieder nach rechts bewegen musste, bevor ein tatsächliches Video auf den Bildschirm gebracht werden konnte. Sonst würde das Bild auf der linken Seite etwas gestaucht, weil die Geschwindigkeit noch nicht konstant wäre. Aus anderen Gründen wurde auf der rechten Seite ein ähnlicher Rand angewendet.
Mehrere Standards (NTSC, PAL) geben Bildgrößen und Gesamtgrößen an, die für Video verwendet werden sollen, aber in der Praxis existieren viel mehr Formate. Ich habe den HDMI-Standard nicht gelesen, bin mir aber sicher, dass sie da flexibel sind. Normalerweise beträgt die horizontale Austastung etwa 20 % der horizontalen Zeit und die vertikale Austastung etwa 10 %. Die tatsächlichen Zahlen hängen von der Bildrate und den Pixeltakten ab.
Woher kennt der Fernseher die Größe des Bildes? Es gibt mehrere Möglichkeiten: Eine Methode besteht darin, dass der Fernseher/Monitor die Breite des Bildes erkennt (indem er prüft, welche Pixel schwarz sind und welche nicht), eine andere besteht darin, dass der Benutzer dies konfiguriert. Auf meinem Fernseher sind beide innerhalb der Liste der verfügbaren Formate möglich. Als ich FGPAs für die Videoverarbeitung entwarf, analysierten wir die Anzahl der schwarzen Pixel von der Synchronisationskante, um den Versatz zu bestimmen, und wir bestimmten das Ende der Zeile/letzten Zeile, indem wir die schwarzen Pixel erneut erkannten. Wir hatten einen Algorithmus, um die "beste Schätzung" für das gesamte Bild und für mehrere Frames zu erhalten. Ein Fernseher würde aus der voreingestellten Liste von Formaten auswählen und muss es auf den digitalen (!) Bildschirm passen. Ein 640x480-Format würde also auf 1280x960 skaliert, da dies eine "einfache" Wiederholung von Pixeln und Zeilen impliziert.
CapnJJ
Fuhrmann
CapnJJ
Tony Stewart EE75
Alter Furz
David Tweed
Guill