Per tracciare un diagramma della modalità del monitor, vi serve il pacchetto
gnuplot (un linguaggio 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.5 1998/02/21 02:23:11 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: "Viewsonic 21PS" -b <nn> larghezza 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 un'analisi e codice di Martin Lottermoser <Martin.Lottermoser@mch.sni.de> Questo è modeplot $Revision: 1.5 $ EOF exit;; esac shift done gnuplot $GNUOPTS <<EOF set title "$TITLE Mode Plot" # Numeri magici. Sfortunatamente, il grafico è abbastanza sensibile a # modifiche in questi, 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 un sacco di 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 (moltiplicazione per 1.0 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 etichette negli assi set xlabel 'DCF (MHz)' set ylabel 'RR (Hz)' 6 # Put it right over the Y axis # Generera 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 modeplot
e il pacchetto gnuplot funzionanti,
vi servono le seguenti caratteristiche del monitor:
Il programma deve fare delle semplificazioni che possono non essere necessariamete corrette. Questo è il motivo per cui il diagramma che ne risulta è 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 e 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
Con HSF, F1, F2 e AR fissi, questa è un iperbole nel nostro diagramma. Disegnando due curve tali 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.
Fate 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.