Per tracciare un diagramma della modalità del monitor, vi serve il pacchetto
gnuplot (un linguaggio di disegno freeware per sistemi operativi
UNIX-compatibili) e il tool modeplot
, uno script di shell/gnuplot per
tracciare il diagramma delle caratteristiche del vostro monitor, digitate come
opzioni a linea di comando.
Ecco una copia di modeplot
:
#!/bin/sh # # modeplot -- genera un grafico X mode delle modalità disponibili con il # proprio monitor # # Dare `modeplot -?' per vedere le opzioni di controllo. # # ($Id: video-modes.sgml,v 1.7 1999/01/18 13:24:58 esr Exp $) # Descrizione del monitor. Larghezza di banda in MHz, frequenze orizzontali # in kHz e frequenze verticali in Hz. TITLE="Viewsonic 21PS" BANDWIDTH=185 MINHSF=31 MAXHSF=85 MINVSF=50 MAXVSF=160 ASPECT="4/3" vesa=72.5 # minima frequenza di refresh raccomandata da 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 modeplot control switches: -t "<description>" nome del monitor default: "Viewsonic21PS" -b <nn> largh.di banda in MHz default: 185 -h <min> <max> min & max HSF (kHz) default: 31 85 -v <min> <max> min & max VSF (Hz) default: 50 160 -a <aspect ratio> aspect ratio default: 4/3 -g "<options>" opzioni passate a gnuplot Le opzioni -b, -h e -v sono obbligatorie, -a, -t, -g opzionali. Potete usare -g per passare un tipo di device a gnuplot così che (per esempio) l'output di modeplot può essere rediretto ad una stampante. Vedi gnuplot(1) per dettagli. Il tool modeplot è stato creato da Eric S. Raymond <esr@thyrsus.com> basato su analisi e codice di Martin Lottermoser <Martin.Lottermoser@mch.sni.de> Questo è modeplot $Revision: 1.11 $ EOF exit;; esac shift done gnuplot $GNUOPTS <<EOF set title "$TITLE Mode Plot" # Numeri magici. Sfortunatamente, il grafico è abbastanza sensibile a # modifiche, e potrebbe fallire nel rappresentare la realtà di alcuni # monitor. Dobbiamo correggere questi valori per ottenere una # approssimazione del diagramma dei modi. Questi sono ricavati analizzando # molti valori nel database ModeDB. F1 = 1.30 # moltiplicatore per convertire la risoluzione orizzontale # in larghezza di quadro F2 = 1.05 # moltiplicatore per convertire la risoluzione verticale # in altezza di quadro # Definizione delle funzioni (moltiplicando per 1.0 si forza # l'aritmetica a numeri reali) 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) # Mette delle etichette sugli assi set xlabel 'DCF (MHz)' set ylabel 'RR (Hz)' 6 # La mette proprio sopra l'asse y # Genera il diagramma 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
Una volta che avete a posto modeplot
e il package gnuplot, vi servono
le seguenti caratteristiche del monitor:
Il programma plot deve fare delle semplificazioni che non sono tecnicamente corrette. Questo è il motivo per cui il diagramma che ne risulta ne è solo una rozza descrizione. Queste semplificazioni sono:
modeplot
assumono 4/3 di default, ma si può non tenerne conto.
HFL = F1 * HR
VFL = F2 * VR
Come linea guida, prendete F1 = 1.30 and F2 = 1.05 (vedi frame "Calcolare le grandezze di quadro").
Ora prendete una particolare frequenza di sincronismo, HSF. Dato l'assunto prima presentato, ogni valore di clock DCF già determina la frequenza di refresh RR, per esempio per ogni valore di HSF c'è una funzione RR (DCF). Questo può essere derivato come segue.
La frequenza di refresh è uguale al clock diviso per il prodotto della grandezza del quadro:
RR = DCF / (HFL * VFL) (*)
D'altra parte, la larghezza di quadro è uguale al clock diviso per la frequenza di sincronismo orizzontale:
HFL = DCF / HSF (**)
VFL può essere ridotto a HFL secondo i due assunti precedenti:
VFL = F2 * VR
= F2 * (HR / AR)
= (F2/F1) * HFL / AR (***)
Inserendo (**) e (***) in (*) otteniamo:
RR = DCF / ((F2/F1) * HFL**2 / AR)
= (F1/F2) * AR * DCF * (HSF/DCF)**2
= (F1/F2) * AR * HSF**2 / DCF
Per un HSF fisso, F1, F2 e AR, questo è un iperbole nel nostro diagramma. Disegnando due tali curve per le frequenze di sincronismo orizzontale minime e massime noi otteniamo i bordi rimanenti dell'area permessa.
Le righe dritte che attraversano l'area possibile rappresentano risoluzioni particolari. Questo è basato su (*) e il secondo assunto:
RR = DCF / (HFL * VFL) = DCF / (F1 * HR * F2 * VR)
Disegnando tali linee per tutte le risoluzioni che ci interessano, si possono immediatamente leggere le possibili relazioni fra risoluzione, frequenza di clock e frequenza di refresh delle quali il monitor è capace. Notate che queste linee non dipendono dalle proprietà del monitor, ma dipendono dal secondo assunto.
Il tool modeplot
vi offre un modo facile per farlo. Date modeplot
-?
per vedere le sue opzioni di controllo. Una chiamata tipica è
questa:
modeplot -t "Swan SW617" -b 85 -v 50 90 -h 31 58
L'opzione -b specifica la larghezza di banda video; -v e -h settano le gamme di frequenza di sincronismo orizzontale e verticale.
Quando leggete l'output di modeplot
, tenete sempre a mente che vi dà
solo una descrizione approssimativa. Per esempio, non tiene conto dei limiti
di un HFL risultante da una minima ampiezza richiesta dell'impulso di
sincronismo, e può essere solo accurato quanto lo sono gli assunti. Non c'è
niente di meglio quindi di un calcolo dettagliato (compresa un po' di magia
nera) come viene presentato in
Mettere Tutto Assieme.
Comunque, vi dovrebbe dare un miglior feeling per quanto possibile e per quanti
compromessi si debbano fare.