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 # # Digitare `modeplot -?' per vedere le opzioni di controllo. # # 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> rapporto visivo 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 <Martin.Lottermoser@mch.sni.de> This is modeplot $Revision: 1.25 $ 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 # Put it right over the Y axis # 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:
larghezza di banda video (VB)
gamma delle frequenze di sincronismo orizzontale (HSF)
gamma delle frequenze di sincronismo verticale (VSF)
Il programma plot deve fare delle semplificazioni che non sono necessariamente corrette. Questo è il motivo per cui il diagramma che ne risulta ne è solo una rozza descrizione. Queste semplificazioni sono:
Tutte le risoluzioni hanno una singola frequenza fissa di aspetto AR = HR/VR. Risoluzioni standard hanno AR = 4/3 o AR = 5/4. I programmi modeplot assumono 4/3 di default, ma si può non tenerne conto.
Per le modalità considerate, le larghezze di quadro orizzontali e verticali sono multipli fissi di risoluzioni orizzontali e verticali, rispettivamente:
HFL = F1 * HR VFL = F2 * VR |
Come linea guida, prendete F1 = 1.30 and F2 = 1.05 (vedi 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, questa è 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. Digitate 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 dovreste sentire più a vostro agio per quanto possibile e per quanti compromessi si debbano fare.