Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1347

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>XFree86 Video Timings HOWTO: Tracciare le Capacit&agrave; del Monitor</TITLE>
 <LINK HREF="XFree86-Video-Timings-HOWTO-17.html" REL=next>
 <LINK HREF="XFree86-Video-Timings-HOWTO-15.html" REL=previous>
 <LINK HREF="XFree86-Video-Timings-HOWTO.html#toc16" REL=contents>
</HEAD>
<BODY>
<A HREF="XFree86-Video-Timings-HOWTO-17.html">Avanti</A>
<A HREF="XFree86-Video-Timings-HOWTO-15.html">Indietro</A>
<A HREF="XFree86-Video-Timings-HOWTO.html#toc16">Indice</A>
<HR>
<H2><A NAME="cplot"></A> <A NAME="s16">16. Tracciare le Capacit&agrave; del Monitor</A> </H2>

<P>
<P>Per tracciare un diagramma della modalit&agrave; del monitor, vi serve il pacchetto
gnuplot (un linguaggio di disegno freeware per sistemi operativi
UNIX-compatibili) e il tool <CODE>modeplot</CODE>, uno script di shell/gnuplot per
tracciare il diagramma delle caratteristiche del vostro monitor, digitate come
opzioni a linea di comando. 
<P>Ecco una copia di <CODE>modeplot</CODE>:
<P>
<PRE>
#!/bin/sh
#
# modeplot -- genera un grafico X mode delle modalit&agrave; 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 &lt;&lt;EOF
modeplot control switches:

-t "&lt;description>"   nome del monitor           default: "Viewsonic21PS" 
-b &lt;nn>              largh.di banda in MHz      default: 185
-h &lt;min> &lt;max>    min &amp; max HSF (kHz)        default: 31 85
-v &lt;min> &lt;max>    min &amp; max VSF (Hz)         default: 50 160
-a &lt;aspect ratio>    aspect ratio               default: 4/3
-g "&lt;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&igrave; che (per esempio) l'output di
modeplot pu&ograve; essere rediretto ad una stampante. Vedi gnuplot(1) per dettagli. 

Il tool modeplot &egrave; stato creato da Eric S. Raymond &lt;esr@thyrsus.com> basato
su analisi e codice di Martin Lottermoser &lt;Martin.Lottermoser@mch.sni.de> 

Questo &egrave; modeplot $Revision: 1.11 $
EOF
                exit;;
        esac
        shift
done

gnuplot $GNUOPTS &lt;&lt;EOF
set title "$TITLE Mode Plot"

# Numeri magici.  Sfortunatamente, il grafico &egrave; abbastanza sensibile a
# modifiche, e potrebbe fallire nel rappresentare la realt&agrave; 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
</PRE>
<P>Una volta che avete a posto <CODE>modeplot</CODE> e il package gnuplot, vi servono
le seguenti caratteristiche del monitor:
<P>
<UL>
<LI> larghezza di banda video (VB)</LI>
<LI> gamma delle frequenze di sincronismo orizzontale (HSF)</LI>
<LI> gamma delle frequenze di sincronismo verticale (VSF)</LI>
</UL>
<P>Il programma plot deve fare delle semplificazioni che non sono tecnicamente
corrette. Questo &egrave; il motivo per cui il diagramma che ne risulta ne &egrave; solo
una rozza descrizione. Queste semplificazioni sono: 
<P>
<OL>
<LI> 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
<CODE>modeplot</CODE> assumono 4/3 di default, ma si pu&ograve; non tenerne conto.</LI>
<LI> Per le modalit&agrave; considerate, lunghezze e larghezze di quadro sono
multipli fissi di risoluzioni orizzontali e verticali, rispettivamente: 

<BLOCKQUOTE><CODE>
<PRE>
        HFL = F1 * HR
        VFL = F2 * VR
</PRE>
</CODE></BLOCKQUOTE>
</LI>
</OL>
<P>Come linea guida, prendete F1 = 1.30 and F2 = 1.05 (vedi 
<A HREF="XFree86-Video-Timings-HOWTO-9.html#frame">frame</A>

"Calcolare le grandezze di quadro").
<P>Ora prendete una particolare frequenza di sincronismo, HSF. Dato l'assunto
prima presentato, ogni valore di clock DCF gi&agrave; determina la frequenza di
refresh RR, per esempio per ogni valore di HSF c'&egrave; una funzione RR (DCF).
Questo pu&ograve; essere derivato come segue. 
<P>La frequenza di refresh &egrave; uguale al clock diviso per il prodotto della
grandezza del quadro: 
<P>
<BLOCKQUOTE><CODE>
<PRE>
        RR = DCF / (HFL * VFL)          (*)
</PRE>
</CODE></BLOCKQUOTE>
<P>D'altra parte, la larghezza di quadro &egrave; uguale al clock diviso per la frequenza
di sincronismo orizzontale: 
<P>
<BLOCKQUOTE><CODE>
<PRE>
        HFL = DCF / HSF                 (**)
</PRE>
</CODE></BLOCKQUOTE>
<P>VFL pu&ograve; essere ridotto a HFL secondo i due assunti precedenti: 
<P>
<BLOCKQUOTE><CODE>
<PRE>
        VFL = F2 * VR
            = F2 * (HR / AR)
            = (F2/F1) * HFL / AR        (***)
</PRE>
</CODE></BLOCKQUOTE>
<P>Inserendo (**) e (***) in (*) otteniamo: 
<P>
<BLOCKQUOTE><CODE>
<PRE>
        RR = DCF / ((F2/F1) * HFL**2 / AR)
           = (F1/F2) * AR * DCF * (HSF/DCF)**2
           = (F1/F2) * AR * HSF**2 / DCF
</PRE>
</CODE></BLOCKQUOTE>
<P>Per un HSF fisso, F1, F2 e AR, questo &egrave; 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. 
<P>Le righe dritte che attraversano l'area possibile rappresentano risoluzioni
particolari. Questo &egrave; basato su (*) e il secondo assunto: 
<P>
<BLOCKQUOTE><CODE>
<PRE>
        RR = DCF / (HFL * VFL) = DCF / (F1 * HR * F2 * VR)
</PRE>
</CODE></BLOCKQUOTE>
<P>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 &egrave; capace.
Notate che queste linee non dipendono dalle propriet&agrave; del monitor, ma
dipendono dal secondo assunto. 
<P>Il tool <CODE>modeplot</CODE> vi offre un modo facile per farlo.  Date <CODE>modeplot
-?</CODE> per vedere le sue opzioni di controllo. Una chiamata tipica &egrave;
questa: 
<P>
<BLOCKQUOTE><CODE>
<PRE>
        modeplot -t "Swan SW617" -b 85 -v 50 90 -h 31 58
</PRE>
</CODE></BLOCKQUOTE>
<P>L'opzione -b specifica la larghezza di banda video; -v e -h settano le gamme
di frequenza di sincronismo orizzontale e verticale. 
<P>Quando leggete l'output di <CODE>modeplot</CODE>, tenete sempre a mente che vi d&agrave;
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&ograve; essere solo accurato quanto lo sono gli assunti. Non c'&egrave;
niente di meglio quindi di un calcolo dettagliato (compresa un po' di magia
nera) come viene presentato in 
<A HREF="XFree86-Video-Timings-HOWTO-11.html#synth">Mettere Tutto Assieme</A>.
Comunque, vi dovrebbe dare un miglior feeling per quanto possibile e per quanti
compromessi si debbano fare. 
<P>
<HR>
<A HREF="XFree86-Video-Timings-HOWTO-17.html">Avanti</A>
<A HREF="XFree86-Video-Timings-HOWTO-15.html">Indietro</A>
<A HREF="XFree86-Video-Timings-HOWTO.html#toc16">Indice</A>
</BODY>
</HTML>