Linux 14.980 Themen, 106.326 Beiträge

Modelines für den X Server

walter / 2 Antworten / Flachansicht Nickles

Meine unter SuSE 6.1 mit SaX erzeugten (auch mit den anderen Config-Tools komme ich zum gleichen Ergebnis)
Modelines in der XF86Config sind falsch! X.err meldet "valid modelines". Wer erklärt mir auf DEUTSCH (bitte keine verweise
auf irrsinnslange englische Texte) wie ich "richtige" Modelines erzeuge, bzw. berechne und dann eintrage?
Walter (Walter)

Antwort:
Hier eine kleine Einführung:
als Beispiel dient ein VESA Modus, die eigentlich jede Karte können sollte.
Auflösung: 640x480
Bildrate: 72Hz
Horizontalfrequenz: 37.9 kHz
Pixelfrequenz (Dotclock): 31.5 MHz
Eine Modeline hat folgende Felder
Name
Clock
Horizontaltiming (4 Felder)
Vertikaltiming (4 Felder)
Flags (optional)
Betrachten wir den 640x480 Modus. Erstes Feld der Modeline ist einfach. Damit der Modus leicht wiederzufinden ist, nennen wir ihn `640x480x72'
Das Clockfeld gibt an welchen Basistakt der Grafikchip zur Erzeugung des Bildes verwenden soll. Vereinfacht gibt dieser Takt an, wie viele Pixel in der Sekunde insgesamt dargestellt werden. (Nicht alle diese Pixel sind Teil des sichtbaren Bildes) Nicht alle Grafikkarten verfügen über frei programmierbare Taktgeneratoren. Allerdings kann i.A. jede Grafikkarte bestimmte Standardfrequenzen produzieren.
Es sollen 640*480 Pixel 72 mal in der Sekunde dargestellt werden.
Erste Rechnung: 640*480*72 = 22.118.400 = 22.1 MHz
Für diesen Modus ist also eine Pixelfrequenz von mindestens 22.1 MHz erforderlich. Ein Blick ins Handbuch, wahlweise ein X -probeonly, wahlweise ein geschicktes Raten, wahlweise Magie (Kristallkugel usw.) verraten uns, daß die verwendete Grafikkarte einen Clockchip verwendet, der eine Frequenz von 31.5 MHz produzieren kann. (Hier ist Raten nicht verkehrt, da 31.5 MHz ein VESA Std. sind)
Für die sichtbaren Pixel benötigt der Modus 22.1 MHz. Wir wählen einen Modus mit 31.5 MHz, was passiert mit den restlichen 10 Mhz? Um die Frage zu beantworten muß man wissen, wie ein Monitor ein Bild darstellt. Ein Röhrenmonitor produziert ein Bild vergleichbar einem Fernseher mittels eines Elektronenstahls der Zeilenweise auf eine Mattscheibe gelenkt wird. Die Geschwindigkeit der Ablenkeinheit ist aber endlich. Es vergeht also nach jeder Zeile eine gewisse Zeit, bis der Strahl wieder auf der linken Seite angekommen ist, und am Ende jedes Bildaufbaus muß der Stahl von rechts unten wieder nach links oben gebracht werden. Während dieser Zeiten darf die Grafikkarte keine Bildinformationen sondern nur schwarze Pixel schicken. Damit alle Zeilen angenehm untereinander stehen, d.h. an der selben Stelle anfangen muß der Monitor sich synchronisieren für die Synchronisation am Anfang jeder Zeile und am Anfang jedes Bildes benötigt der Monitor erneut ein wenig Zeit. Auch während dieser Perioden darf die Grafikkarte kein
Nun zurück zum Beispiel: Achtung! Die nun folgende Rechenmethode wird vermutlich einigen Leute die Haare zu Berge stehen lassen. Wer hier Verbesserungen kennt, die ohne technische Dokumentation und ohne E-Technik Studium auskommen möge mich korrigieren.
Wir wollen 31.5 MHz verteilen:
Rechnung für horizontale Auflösung:
31500000 / (640*72) = 683.59
Rechnung für vertikale Auflösung:
31500000 / (480*72) = 911.45
Wir könnten nun also 640*683*72 oder 911*480*72 verwenden, um die 31.5 MHz zu verbrauchen. Beides ist unbrauchbar, aber wir wissen nun die absoluten Obergrenzen. Gleichmäßiges verteilen bringt
(640+911)/2 = 775.5
(480+683)/2 = 581.5
775*581*72 = 32419800 = 32.4 MHz
fast richtig.
Die Pixel die der Monitor zum synchronisieren hat sind nun
Horizontal: 775 - 640 = 135 Pixel
Das entspricht einer Zeit von
135 / 31.5 = 4.2us (Mikrosekunden = 1/1.000.000s)
Vertikal: 581 - 480 = 101 Zeilen
Zeilenfrequenz = 581*72 = 41832 Zeilen pro Sekunde
101 / 41832 = 2.41 mS (Millisekunden = 1/1.000s)
Sinnvollerweise verteilt man die Synchronisationzeiten also eher so, daß der vertikale Zeitraum größer wird. (4 millionstel Sekunden sind einfach verflucht kurz)
Basteln wir uns trotzdem nun eine erste Modeline mit den `berechneten' Werten:
Name: 640x480x72
Dotclock: 31.5
Horz sichtbar: 640

bei Antwort benachrichtigen
Modelines für den X Server jay
Modelines für den X Server adam