Hier werde ich einige Formeln und Grundlagen erläutern die ich bei der Entwicklung dieses Projekts verwendet habe.
- Berechung der "realen" Auflösung anhand der aktiven Pixel
Für einen Arcade Monitor mit Standard-Auflösung (im folgenden 15KHz) benutzen wir folgende Werte:
Um die "realen" Pixel zu berechnen, benutzen wir folgende Formeln:Code:Horizontal Aktiv Front Sync Back Total 0,73 0,09 0,09 0,09 1,00 Vertikal Aktiv Front Sync Back Total 0,92 0,01 0,01 0,06 1,00
Als Beispiel errechnen wir die Werte für die Auflösung 320*240 Pixel:Code:Total = Pixel / Aktiv Start = (Aktiv + Front) * Total Ende = (Aktiv + Front + Sync) * Total
Für die Auflösung 320*240 Pixel ergeben sich also folgende Werte:Code:Horizontal Aktiv = 320 Total = 320 / 0,73 = 438 Start = (0,73 + 0,09) * 438 = 0,82 * 438 = 359 Ende = (0,73 + 0,09 + 0,09) * 438 = 0,91 * 438 = 399 Vertikal Aktiv = 240 Total = 240 / 0,92 = 261 Start = (0,92 + 0,01) * 261= 0,93 * 261= 242 Ende = (0,92 + 0,01 + 0,01) * 261= 0,94 * 261= 245
Dem geübten Auge fällt sofort auf das die Ergebnisse der Zahlen gerundet wurden.Code:Horizontal Aktiv Start Ende Total 320 359 399 438 Vertikal Aktiv Start Ende Total 240 242 245 261
Diese "Messungenauigkeit" darf man ignorieren, da jede Grafikkarte bzw. jeder Bildschirm hier eine gewisse Tolleranz hat.
- Berechnen der Monitor-Frequenz
Die Frequenz berechnet sich zum einen aus der "realen" Anzahl der Zeilen, sowie der Anzahl der Bilder pro Sekunde.
Daraus ergibt sich im groben folgende Tabelle:
Da man in der Regel von der maximalen Auflösung ausgeht ergibt sich folgende Tabelle:Code:Standard Auflösung = 262 Zeilen die 50 bis 60 mal pro Sekunde erneuert werden Erweiterte Auflösung = 312 Zeilen die 53 mal pro Sekunde erneuert werden Mittlere Auflösung = 416 Zeilen die 50 bis 60 mal pro Sekunde erneuert werden Hohe Auflösung = 525 Zeilen die 50 bis 60 mal pro Sekunde erneuert werden
Eine gemessene Frequenz "pro Sekunde" wird gerne mit Hertz (kurz Hz) abgekürzt und ergibt dann schließlich diese Tabelle:Code:Standard Auflösung = 262 Zeilen * 60 Bilder pro Sekunde = 15720 Zeilen pro Sekunde Erweiterte Auflösung = 312 Zeilen * 53 Bilder pro Sekunde = 16536 Zeilen pro Sekunde Mittlere Auflösung = 416 Zeilen * 60 Bilder pro Sekunde = 24960 Zeilen pro Sekunde Hohe Auflösung = 525 Zeilen * 60 Bilder pro Sekunde = 31500 Zeilen pro Sekunde
Man bezeichnet das Endergebniss auch gerne als Horizontal-Auflösung, sowie die "Bilder pro Sekunde" als Vertikal-Auflösung.Code:Standard Auflösung = 262 Zeilen * 60 Hz = 15,7 kHz Erweiterte Auflösung = 312 Zeilen * 53 Hz = 16,5 kHz Mittlere Auflösung = 416 Zeilen * 60 Hz = 25,0 kHz Hohe Auflösung = 525 Zeilen * 60 Hz = 31,5 kHz
Man kann selbstverständlich mit ein kleinwenig Rechnen bereits zu folgenden Formeln kommen:
Da wäre allerdings noch ein Wert von großer Bedeutung, nämlich die sogenannte Pixel-Frequenz, die bestimmt wie oft eine Grafikkarte die Farbsignale verändert.Code:Horizontal-Auflösung = Anzahl der Zeilen * Vertikal-Auflösung Vertikal-Auflösung = Horizontal-Auflösung / Anzahl der Zeilen Anzahl der Zeilen = Horizontal-Auflösung / Vertikal-Auflösung
Diese lässt sich allerdings ziemlich leicht berechnen:
Um nochmal unsere Beispielauflösung von 320*240 Pixel aufzugreifen ergibt sich folgende Tabelle:Code:Anzahl der Pixel = Total Horizontal * Total Vertikal Pixel-Frequenz = Anzahl der Pixel * Bilder pro Sekunde
Code:Anzahl der Pixel = 438 Pixel pro Zeile * 261 Zeilen = 114318 Pixel pro Bild Pixel-Frequenz = 114318 Pixel pro Bild * 60 Bilder pro Sekunde = 6859080 Pixel pro Sekunde = 6,86MHz- Die "XFree86 Modeline"
Im weiteren Projekt wird mit sogenannten Modelines gearbeitet.
Eine Modeline setzt sich mit allen nötigen Informationen für eine Auflösung zusammen.
Modeline <NAME> <PIX_FREQ> <H_AKTIV> <H_START> <H_ENDE> <H_TOTAL> <V_AKTIV> <V_START> <V_ENDE> <V_TOTAL> <OPTIONEN>
Der NAME hat eigentlich nur einen kosmetischen Wert und dient lediglich der Erkennung, allerdings verwenden wir im folgenden einfach die "aktive" Auflösung.
PIX_FREQ steht für die Pixel Frequenz, angegeben in MHz.
H_AKTIV steht für die aktiven Pixel in der Breite.
H_START steht für den Beginn der Synchronisation in der Breite.
H_ENDE steht für das Ende der Synchronisation in der Breite.
H_TOTAL steht für die realen Pixel in der Breite.
V_AKTIV steht für die aktiven Zeilen in der Höhe.
V_START steht für den Beginn der Synchronisation in der Höhe.
V_ENDE steht für das Ende der Synchronisation in der Höhe.
V_TOTAL steht für die realen Zeilen in der Höhe.
OPTIONEN kann, sofern angegeben eine Reihe von Schlüsselwörtern beinhalten.
interlace gibt an, das das Bild im Zeilensprungverfahren aufgebaut wird, welches die Anzahl der sichtbaren Zeilen effektiv halbiert in dem es abwechselnd nur die graden bzw. die ungraden Zeilen darstellt.
doublescan gibt an, das das Bild im Zeilendoppelverfahren aufgebaut wird, welches die Anzahl der sichtbaren Zeilen effektiv verdoppelt, in dem es jede Zeile doppelt darstellt.
(+/-)hsync gibt an ob das horizontale Synchronisations-Signal positiv (+) oder negativ (-) ist.
(+/-)vsync gibt an ob das vertikale Synchronisations-Signal positiv (+) oder negativ (-) ist.
Hierbei sei erwähnt das 99% aller Arcademonitore mit negativer Synchronisation arbeiten.
Unsere Beispielauflösung von 320*240 Pixel sähe als Modeline wiefolgt aus:
Modeline "320x240@60" 6,86 320 359 399 438 240 242 245 261 -hsync -vsync