Page suivante Page précédente Table des matières

16. Représentation graphique des capacités du moniteur

Pour tracer le diagramme d'un mode moniteur, il vous faudra le programme gnuplot (un langage libre de tracé graphique pour plate-formes de type UNIX) et l'outil modeplot, un fichier de commandes shell/gnuplot qui tracera le diagramme sur base des caractéristiques de votre moniteur, fournies comme options sur la ligne de commande.

Ci-dessous se trouve une copie de modeplot :

#!/bin/sh
#
# modeplot -- crée un graphe X des modes moniteurs disponibles
#
# Invoquez `modeplot -?' pour afficher les options de contrôle.
#

# Description du moniteur. Bande passante en MHz, fréquences horizontales
# en kHz et fréquences verticales en Hz.
TITLE="Viewsonic 21PS"
BANDWIDTH=185
MINHSF=31
MAXHSF=85
MINVSF=50
MAXVSF=160
ASPECT="4/3"
vesa=72.5       # fréq. de rafraîchissement min. recommandée VESA

while [ "$1" != "" ] 
do
        case $1 in
        -t) TITLE="$2"; shift;; 
        -b) BANDWIDTH="$2"; shift;; 
        -h) MINHSF="$2" MAXHSF="$3"; shift; shift;; 
        -v) MINVSF="$2" MAXVSF="$3"; shift; shift;; 
        -a) ASPECT="$2"; shift;; 
        -g) GNUOPTS="$2"; shift;; 
        -?) cat <<EOF
options de contrôle de modeplot :

-t "<description>"   nom du moniteur            défaut : "Viewsonic 21PS"
-b <nn>              bande passante en MHz      défaut : 185
-h <min> <max>    HSF min & max (kHz)        défaut : 31 85
-v <min> <max>    VSF min & max (Hz)         défaut : 50 160
-a <aspect ratio>    proportions de l'image     défaut : 4/3
-g "<options>"       options à transmettre à gnuplot

La présence des paramètres -b, -h et -v est requise, -a, -t, -g sont
optionnels.  Vous pouvez utiliser -g pour transmettre un nom de
périphérique à gnuplot de façon à ce que (par exemple) les sorties
produites par modeplot puissent être redirigées vers une imprimante.
Voyez gnuplot(1) pour de plus amples détails.

L'outil modeplot a été conçu par Eric S. Raymond <esr@thyrsus.com> sur
base d'une analyse et d'un code original par Martin Lottermoser
<Martin.Lottermoser@mch.sni.de>

Voici modeplot $Revision: 1.13 $
EOF
                exit;;
        esac
        shift
done

gnuplot $GNUOPTS <<EOF
set title "$TITLE Mode Plot"

# Nombres magiques.  Malheureusement, le graphe est très sensible à toute
# modification de ceux-ci, et ils pourraient être loin de la vérité dans
# le cas de certains moniteurs.  Il nous faut déterminer des valeurs afin
# d'obtenir même une approximation du diagramme de mode. Ces valeurs
# proviennent d'une comparaison de nombreux exemples fournis dans la base
# de données ModeDB.
F1 = 1.30       # facteur de conversion résol. horiz. -> largeur de trame
F2 = 1.05       # facteur de conversion résol. vertic. -> hauteur de trame

# Définition de fonctions
# (multiplier par 1.0 force l'arithmétique en nombres réels)
ac = (1.0*$ASPECT)*F1/F2
refresh(hsync, dcf) = ac * (hsync**2)/(1.0*dcf)
dotclock(hsync, rr) = ac * (hsync**2)/(1.0*rr)
resolution(hv, dcf) = dcf * (10**6)/(hv * F1 * F2)

# Place les légendes le long des axes
set xlabel 'DCF (MHz)'
set ylabel 'RR (Hz)' 6  # Place la légende juste au-dessus de l'axe des Y

# Génère le diagramme
set grid
set label "VB" at $BANDWIDTH+1, ($MAXVSF + $MINVSF) / 2 left
set arrow from $BANDWIDTH, $MINVSF to $BANDWIDTH, $MAXVSF nohead
set label "max VSF" at 1, $MAXVSF-1.5
set arrow from 0, $MAXVSF to $BANDWIDTH, $MAXVSF nohead
set label "min VSF" at 1, $MINVSF-1.5
set arrow from 0, $MINVSF to $BANDWIDTH, $MINVSF nohead
set label "min HSF" at dotclock($MINHSF, $MAXVSF+17), $MAXVSF + 17 right
set label "max HSF" at dotclock($MAXHSF, $MAXVSF+17), $MAXVSF + 17 right
set label "VESA $vesa" at 1, $vesa-1.5
set arrow from 0, $vesa to $BANDWIDTH, $vesa nohead # style -1
plot [dcf=0:1.1*$BANDWIDTH] [$MINVSF-10:$MAXVSF+20] \
  refresh($MINHSF, dcf) notitle with lines 1, \
  refresh($MAXHSF, dcf) notitle with lines 1, \
  resolution(640*480,   dcf) title "640x480  " with points 2, \
  resolution(800*600,   dcf) title "800x600  " with points 3, \
  resolution(1024*768,  dcf) title "1024x768 " with points 4, \
  resolution(1280*1024, dcf) title "1280x1024" with points 5, \
  resolution(1600*1280, dcf) title "1600x1200" with points 6

pause 9999
EOF

Une fois que vous êtes sûr d'avoir correctement installé modeplot et le programme gnuplot, il vous faudra réunir les caractéristiques suivantes de votre moniteur :

Le programme de tracé doit faire quelques suppositions simplificatrices qui ne sont pas nécessairement correctes. C'est la raison pour laquelle le diagramme résultant n'est qu'une description relativement grossière. Ces suppositions sont les suivantes :

  1. Toutes les résolutions n'ont qu'un seul rapport de proportions prédéfini AR = HR/VR. Les résolutions standard ont AR = 4/3 ou AR = 5/4. Le programme modeplot suppose 4/3 par défaut, Mais il vous est possible de modifier cela.
  2. Pour les modes pris en compte, les longueurs de trames horizontale et verticale sont des multiples fixés des résolutions horizontale et verticale, respectivement :
            HFL = F1 * HR
            VFL = F2 * VR
    

En première approximation, prenez F1 = 1.30 et F2 = 1.05 (voyez la section Calcul de la taille de trame).

Maintenant considérez une fréquence de synchronisation particulière, HSF. Sur base des présupposés que nous venons de mentionner, la valeur que prendra la fréquence pilote DCF déterminera déjà la fréquence de rafraîchissement RR, c'est-à-dire que pour toute valeur de HSF il y a une fonction RR(DCF). Celle-ci peut s'obtenir comme suit.

La fréquence de rafraîchissement est égale à la fréquence pilote divisée par le produit des longueurs de trame :

        RR = DCF / (HFL * VFL)          (*)

D'autre part, la longueur de trame horizontale est égale à la fréquence pilote divisée par la fréquence de synchronisation horizontale :

        HFL = DCF / HSF                 (**)

Il est possible de réduire VFL à HFL au moyen des deux suppositions mentionnées plus haut :

        VFL = F2 * VR
            = F2 * (HR / AR)
            = (F2/F1) * HFL / AR        (***)

En insérant (**) et (***) dans (*) nous obtenons :

        RR = DCF / ((F2/F1) * HFL**2 / AR)
           = (F1/F2) * AR * DCF * (HSF/DCF)**2
           = (F1/F2) * AR * HSF**2 / DCF

Pour des valeurs fixes de HSF, F1, F2 et AR, cette formule se traduit par une hyperbole dans notre diagramme. Si nous traçons deux courbes de ce type pour les fréquences de synchronisation horizontale minimum et maximum nous obtenons les deux limites restantes de la région des solutions permises.

Les lignes droites qui traversent la région des capacités représentent des résolutions particulières. Ceci est basé sur (*) et la deuxième supposition :

        RR = DCF / (HFL * VFL) = DCF / (F1 * HR * F2 * VR)

En traçant ainsi des droites pour chacune des résolutions qui vous intéressent, vous pourrez immédiatement extraire du graphe les relations possibles entre résolution, fréquence pilote et fréquence de rafraîchissement dont le moniteur est capable. Remarquez que ces lignes ne dépendent pas des caractéristiques réelles du moniteur, mais bien de notre seconde supposition.

L'outil modeplot vous offre une manière très simple de faire cela. Tapez modeplot -? pour afficher ses options de contrôle. Une invocation usuelle ressemble à ceci :

        modeplot -t "Swan SW617" -b 85 -v 50 90 -h 31 58

Le paramètre -b spécifie la bande passante vidéo ; -v et -h définissent les gammes de fréquences de synchronisation horizontale et verticale.

Lorsque vous consulterez le graphique produit par modeplot, conservez toujours présent à l'esprit le fait qu'il n'offre qu'une description approximative. Par exemple, il ignore les limitations imposées à HFL dues à ce qu'une largeur d'impulsion de synchronisation minimum est requise, et sa précision ne peut dépasser celle de nos suppositions. Il ne peut dès lors remplacer un calcul détaillé (incluant une certaine dose de magie noire) tel celui que nous avons présenté dans la section Synthèse. Il devrait, cependant, vous offrir une meilleure perception de ce qui est possible et des concessions que cela implique.


Page suivante Page précédente Table des matières