XFree86 Video Timings HOWTO
Eric S. Raymond <
[email protected]>
v4.1, 2 gennaio 2000
Come comporre una "mode line" per la vostra combinazione scheda
video/monitor su XFree86. La distribuzione XFree86 ora ha reso pi�
agevole la configurazione della maggior parte delle combinazioni stan�
dard; questo documento � particolarmente utile se state ottimizzando
una vostra "mode line" personale per un monitor ad alte prestazioni o
per dell'hardware poco comune. Vi dar� anche una mano sull'uso di
kvideogen per generare le "mode line", o xvidtune per adattare una
modalit� standard che non � proprio quella adatta per il vostro moni�
tor. Traduzione di Angelo Nardoni <
[email protected]>
1. Avvertenze
L'uso del presente materiale � UNICAMENTE A VOSTRO RISCHIO. �
possibile danneggiare sia il monitor che voi stessi quando si
sperimenta oltre le specifiche del produttore. Leggete
``Sovraccaricare il Vostro Monitor'' per precauzioni pi� dettagliate.
Qualsiasi danno a voi o al vostro monitor dovuto al suo sovraccarico �
un problema vostro.
La pi� recente versione di questo HOWTO pu� essere trovata alla pagina
web Linux Documentation Project <
http://metalab.unc.edu/LDP>.
Siete pregati di indirizzare commenti, critiche e suggerimenti per
migliorie a
[email protected]. Siete pregati di non inviare email
chiedendo una soluzione magica al problema speciale con il vostro
monitor, perch� cos� facendo consumate solo il mio tempo e frustrer�
voi -- tutto quello che so sull'argomento � gi� qui dentro.
2. Introduzione
Il server XFree86 permette agli utenti di configurare i loro
sottosistemi video e quindi incoraggia ad un miglior uso dell'hardware
esistente. Questo tutorial intende aiutarvi ad imparare a generare i
vostri propri valori di temporizzazione per sfruttare al meglio la
vostra scheda video e il vostro monitor.
Presenteremo un metodo per ottenere qualcosa che funziona, quindi vi
mostreremo come sperimentare partendo da una base comune per
sviluppare delle specifiche ottimizzate alle vostre esigenze.
Se gi� avete una modalit� che funziona discretamente (in particolare,
se una delle modalit� VESA predefinite vi d� uno schermo stabile ma
spostato troppo a sinistra o a destra, o troppo piccolo, o troppo
largo) potete andare direttamente alla sezione ``Risolvere i Problemi
con l'Immagine''. Questa vi sveler� le possibilit� di manipolare i
valori di temporizzazione per ottenere effetti particolari.
Non pensiate di dover conoscere sin nei minimi particolari tutte le
regolazioni delle "mode line" solo perch� il vostro X vi appare
completamente sballato la prima volta dopo l'installazione; pu� essere
che la maggior parte delle "mode line" fornite dalla distribuzione
sono OK e voi siete capitati in una che non si adatta al vostro
hardware. Invece, provate tutte le vostre "mode line" con CTRL-ALT-+.
Se qualcuna di queste sembra OK, provate a renderle inattive
commentandole tutte eccetto una 640x480 e controllando che quella
funzioni. Se funziona rendete attive scommentandole un paio di altre
"mode line", ad esempio una 800x600 e una 1024x768 ad una frequenza
che il vostro monitor dovrebbe essere in grado di gestire.
3. Strumenti per il Calcolo Automatico
Se avete un monitor relativamente nuovo (dal 1996 in poi) che supporti
le specifiche PnP, potreste usare il programma read-edid per chiedere
al monitor le proprie caratteristiche e calcolare una "mode line" per
voi. Visitate <
http://altern.org/vii/programs/linux/read-edid/>.
Da XFree86 3.2 in poi, XFree86 fornisce un programma XF86Setup(1) che
rende facile generare interattivamente una modalit� funzionante per il
monitor, senza avere a che fare direttamente con i valori delle
temporizzazioni video. Cos� il pi� delle volte non dovete calcolare
una modalit� base per il monitor. Sfortunatamente, XF86Setup(1) ha
alcune limitazioni; riconosce solo modalit� video standard fino a
1280x1024. Se avete un monitor ad alte prestazioni capace di 1600x1200
o pi� dovrete sempre calcolare la modalit� base da soli.
C'� un'applicazione KDE chiamata KVideoGen
<
http://without.netpedia.net/kvideogen/> che genera le "mode line"
dalle caratteristiche del monitor e della scheda video. Ho provato a
generare "mode line" con questa applicazione, ma non le ho provate.
Notate che i suoi parametri di refresh orizzontale e verticale sono
gli stessi delle frequenze di sincronismo HSF e VSF che descriviamo
dopo. L'impulso di sincronismo orizzontale sembra essere una
larghezza di impulso di sincronia in microsecondi, HSP (con
l'applicazione che d� per fissi il 'piedistallo frontale' HGT1 e il
'piedistallo secondario' HGT2). Se non conoscete il valore
dell'impulso di sincronia orizzontale � pi� sicuro usare quello di
default.
Versioni recenti di XFree86 offrono uno strumento chiamato xvidtune(1)
che troverete probabilmente abbastanza utile per testare e
perfezionare le modalit� video. Parte con uno spaventoso avviso sulle
possibili conseguenze se si fanno errori usandolo. Se prestate
un'accurata attenzione a questo documento e imparate cosa c'� dietro
quei simpatici numeri nei riquadri di xvidtune, saprete usare
effettivamente e con confidenza xvidtune.
Se avete xvidtune(1), potrete provare nuove modalit� al volo, senza
modificare i vostri file di configurazione per X o resettare il server
X. Altrimenti, XFree86 vi permette di spostarvi con la tastiera fra
differenti modalit� definite in Xconfig (vedi XFree86.man per
dettagli). Usate questa capacit� per risparmiarvi problemi! Quando
volete provare una nuova modalit�, chiamatela in modo univoco e
aggiungetela alla fine della vostra lista di combinazioni di tasti.
Lasciate una modalit� che sapete che funziona bene come default per
poter tornare l� se la modalit� che state provando non funziona.
Verso la fine di questo documento, includeremo uno script 'modeplot'
che potrete usare per produrre un grafico analogico delle possibili
"mode line". Ci� non � direttamente utile per generare "mode line",
ma vi pu� aiutare per capire meglio le relazioni che le definiscono.
4. Come Funziona lo Schermo
Sapere come funziona lo schermo video � fondamentale per capire quali
valori mettere nei vari campi del file Xconfig. Questi valori sono
usati al pi� basso livello di controllo dello schermo dal server
XFree86.
Lo schermo genera un quadro con quello che considerate essere una
serie di punti raster. I punti sono disposti da sinistra a destra per
formare delle linee. Le linee sono disposte dall'alto in basso per
formare il quadro. I punti emettono luce quando sono colpiti dal
fascio elettronico dentro lo schermo. Per far s� che il fascio
colpisca ciascun punto per un uguale periodo di tempo, il fascio �
diretto sullo schermo con un percorso costante, detto raster.
Abbiamo detto "quello che considerate essere una serie di punti"
perch� questi punti raster non corrispondono propriamente ai fosfori.
I fosfori sono molto pi� piccoli dei punti raster -- lo devono essere,
altrimenti lo schermo mostrerebbe gravi effetti-moir�. I punti raster
sono in realt� campioni del segnale analogico, e si vedono come una
griglia di punti solo perch� i picchi nel segnale sono molto regolari
e spaziati con precisione.
Il percorso parte in alto a sinistra sullo schermo, attraversa lo
schermo verso destra con una linea diritta, e si ferma temporaneamente
sul lato destro dello schermo. Poi il fascio � riportato indietro sul
lato sinistro, ma sotto di una linea. La nuova linea va da sinistra a
destra proprio come la prima. Questo percorso � ripetuto fino a che
l'ultima linea in fondo allo schermo � stata passata. Allora il
fascio viene portato dall'angolo in basso a destra (spazzando avanti e
indietro un p� di volte) all'angolo in alto a sinistra, e il percorso
viene ripetuto.
C'� una variante di questo schema conosciuto come interlacciamento:
qui solamente ogni linea pari � passata ogni mezzo quadro e quelle
dispari sono tracciate durante il secondo mezzo quadro.
Quando il fascio parte dall'angolo superiore sinistro dello schermo �
detto inizio di quadro. Il quadro termina quando il fascio raggiunge
l'angolo superiore sinistro di nuovo venendo dall'angolo inferiore
destro dello schermo. Un quadro � composto da tutte le linee tracciate
dal fascio dall'alto in basso dello schermo.
Se il fascio degli elettroni funzionasse per tutto il tempo che
attraversa il quadro, tutti i punti dello schermo sarebbero accesi.
Non ci sarebbero bordi neri ai lati dello schermo. Ai lati dello
schermo il quadro sarebbe distorto perch� � difficile controllare il
fascio in quei punti. Per ridurre la distorsione, i punti vicino ai
lati dello schermo non sono illuminati dal fascio (perch� sono spenti)
anche se questo, se fossero accesi, li puntasse. L'area visibile
dello schermo � ridotta in questo modo.
Un'altra cosa importante da capire � cosa succede del fascio quando
nessuna cosa � disegnata nell'area visibile. Il tempo che il fascio
avrebbe dovuto usare per illuminare i lati sinistro e destro dello
schermo � invece usato per portare il fascio indietro da destra a
sinistra e per muoverlo gi� alla linea successiva. Il tempo che il
fascio avrebbe dovuto usare per illuminare i lati superiore ed
inferiore dello schermo � usato per muovere il fascio dall'angolo in
basso a destra all'angolo in alto a sinistra.
La scheda video genera i segnali che permettono allo schermo di
accendere il fascio (del colore voluto) ad ogni punto per generare un
quadro. La scheda controlla anche quando lo schermo muove il fascio da
destra a sinistra e gi� di una riga generando un segnale chiamato sync
(per sincronismo) orizzontale. C'� un impulso di sincronismo
orizzontale alla fine di ogni linea. La scheda genera anche un impulso
di sincronismo verticale che segnala allo schermo quando muovere il
fascio dall'angolo sinistro in alto dello schermo. Un impulso di
sincronismo verticale � generato quasi alla fine di ogni quadro.
Lo schermo richiede che ci sia un breve lasso di tempo sia prima che
dopo gli impulsi di sincronismo orizzontale e verticale cos� che si
possa stabilizzare la posizione del fascio di elettroni. Se il fascio
non pu� stabilizzarsi, il quadro non sar� nitido.
Per maggiori informazioni, consultate TV and Monitor Deflection System
<
http://fribble.cie.rpi.edu/~repairfaq/REPAIR/F_deflfaq.html>.
In una sezione pi� avanti, torneremo su queste nozioni basilari con
definizioni, formule ed esempi per aiutarvi ad usarle.
5. Cose Basilari da Sapere sul Vostro Schermo e la Scheda Video
Ci sono delle cose fondamentali da sapere prima di sperimentare con i
valori di Xconfig. Sono:
� le opzioni di frequenza di sincronismo orizzontale e verticale del
vostro monitor
� la larghezza di banda del vostro monitor
� la frequenza della vostra scheda video, o "dot clock".
5.1. Le frequenze di sincronismo del monitor
La frequenza di sincronismo orizzontale � semplicemente il numero di
volte al secondo che il monitor pu� scrivere una linea di scansione
orizzontale; � la pi� importante informazione sul vostro monitor. La
frequenza di sincronismo verticale � il numero di volte al secondo
alla quale il monitor pu� far attraversare il fascio verticalmente
sullo schermo.
Le frequenze di sincronismo di solito sono elencate nelle specifiche
del manuale del monitor. Il valore della frequenza di sincronismo
verticale � tipicamente calibrato in Hz (cicli per secondo), quello
orizzontale in KHz (kilocicli per secondo). Le comuni gamme di valori
sono fra 50 e 150Hz verticali, e fra 31 e 135KHz orizzontali.
Se avete un monitor multifrequenza, queste frequenze saranno date come
gamma di valori. Alcuni monitor, specialmente quelli pi� scadenti,
hanno svariate frequenze fisse. Anche queste possono essere
configurate, ma le vostre possibilit� saranno molto limitate dalle
caratteristiche proprie del monitor. Scegliete il paio di frequenze
pi� alte per la migliore risoluzione. E state attenti --- provare a
mandare un monitor a frequenza fissa ad una velocit� di clock pi� alta
di quella per la quale � stato costruito lo pu� facilmente
danneggiare.
Le prime versioni di questa guida erano piuttosto permissive
sull'overclocking di monitor multifrequenza, spingendoli oltre la loro
pi� alta frequenza verticale di sincronismo per ottenere migliori
risultati. Da allora abbiamo pi� ragioni per essere cauti
sull'argomento; le vedremo nel paragrafo ``Sovraccaricare il Monitor''
pi� avanti.
5.2. La larghezza di banda video del monitor
La larghezza di banda video del vostro monitor dovrebbe essere inclusa
nelle pagine delle specifiche del manuale. Se non ci fosse, guardate
la pi� alta risoluzione del monitor. Indicativamente, ecco come
tradurla in larghezza di banda approssimativa (e quindi nei limiti
superiori approssimati per il dot clock che potete usare):
640x480 25
800x600 36
1024x768 65
1024x768 interlaced 45
1280x1024 110
1600x1200 185
Per inciso, non c'� nulla di magico in questa tabella; questi numeri
sono solo i pi� bassi dot clock per una data risoluzione nel database
standard delle Modalit� XFree86 (a parte l'ultimo, che ho interpolato
io). La larghezza di banda del vostro monitor potrebbe essere pi� alta
del minimo richiesto per la sua massima risoluzione, cos� non abbiate
paura a provare un dot clock di pochi MHz pi� alto.
Notate anche che la larghezza di banda � raramente un limite per i dot
clock sotto i 65 MHz o gi� di l�. Con una scheda SVGA e la maggior
parte dei monitor ad alta risoluzione, non potete andare troppo vicino
ai limiti della larghezza di banda video del vostro monitor. Ecco
alcuni esempi:
Marca Larghezza di Banda Video
---------- ---------------
NEC 4D 75Mhz
Nano 907a 50Mhz
Nano 9080i 60Mhz
Mitsubishi HL6615 110Mhz
Mitsubishi Diamond Scan 100Mhz
IDEK MF-5117 65Mhz
IOCOMM Thinksync-17 CM-7126 136Mhz
HP D1188A 100Mhz
Philips SC-17AS 110Mhz
Swan SW617 85Mhz
Viewsonic 21PS 185Mhz
PanaSync/Pro P21 220Mhz
Anche i monitor di fascia bassa di solito non sono terribilmente
legati alle loro date risoluzioni. Il NEC Multisync II � un buon
esempio --- non pu� neanche raggiungere 800x600 per le sue specifiche.
Pu� raggiungere solo 800x560. Per tali basse risoluzioni non vi
servono alti dot clock o molta larghezza di banda; probabilmente il
meglio che potete fare � 32Mhz o 36Mhz, entrambi non sono troppo
lontani dalla larghezza di banda video del monitor di 30Mhz.
A queste due frequenze video, l'immagine sul vostro schermo potrebbe
non essere cos� chiara come dovrebbe, ma certamente di qualit�
tollerabile. Naturalmente sarebbe stato meglio se il NEC Multisync II
avesse avuto una larghezza di banda video pi� alta, tipo 36Mhz. Ma
questo non � critico per impieghi comuni come editare testi, in quanto
le differenze non sono cos� grandi da causare forti distorsioni
dell'immagine (i vostri occhi ve lo direbbero subito se cos� fosse).
5.3. La frequenza di clock della scheda video
La pagina delle specifiche del manuale della vostra scheda video di
solito vi dar� il valore massimo del dot clock della scheda (che
sarebbe il numero totale dei pixel al secondo che pu� scrivere sullo
schermo).
Se non avete questa informazione, ve la dar� il server X. Le versioni
recenti dei server X supportano tutte l'opzione --probeonly che rileva
questa informazione ed esce senza neanche far partire X o senza
cambiare la modalit� video.
Se non avete -probeonly, non disperate. Anche se il vostro X vi blocca
il monitor, scriver� una riga di valori di clock ed altre informazioni
sul log di errori standard. Se voi ridirigete queste ad un file,
saranno salvate anche se dovete resettare per tornare alla console.
Il risultato del tentativo o il vostro messaggio di partenza di X
dovrebbe essere qualcosa di simile ad uno dei seguenti esempi:
Se usate XFree86:
Xconfig: /usr/X11R6/lib/X11/Xconfig
(**) stands for supplied, (--) stands for probed/default values
(**) Mouse: type: MouseMan, device: /dev/ttyS1, baudrate: 9600
Warning: The directory "/usr/andrew/X11fonts" does not exist.
Entry deleted from font path.
(**) FontPath set to "/usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/"
(--) S3: card type: 386/486 localbus
(--) S3: chipset: 924
---
Chipset - questo � l'esatto tipo di chip; una maschera precedente del 86C911
(--) S3: chipset driver: s3_generic
(--) S3: videoram: 1024k
-----
Quantit� di RAM della scheda
(**) S3: clocks: 25.00 28.00 40.00 3.00 50.00 77.00 36.00 45.00
(**) S3: clocks: 0.00 0.00 79.00 31.00 94.00 65.00 75.00 71.00
------------------------------------------------------
Possibili frequenze in MHz
(--) S3: Maximum allowed dot-clock: 110MHz
------
Larghezza di banda
(**) S3: Mode "1024x768": mode clock = 79.000, clock used = 79.000
(--) S3: Virtual resolution set to 1024x768
(--) S3: Using a banksize of 64k, line width of 1024
(--) S3: Pixmap cache:
(--) S3: Using 2 128-pixel 4 64-pixel and 8 32-pixel slots
(--) S3: Using 8 pages of 768x255 for font caching
Se usate SGCS o X/Inside X:
WGA: 86C911 (mem: 1024k clocks: 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71)
--- ------ ----- --------------------------------------------
| | | Possibili frequenze in MHz
| | +-- Quantit� di RAM della scheda
| +-- Tipo di chip
+-- Tipo di Server
Nota: fate questo senza processi in background sulla vostra macchina
(del tutto se possibile). Poich� X � un'applicazione, le sue
temporizzazioni possono collidere con l'attivit� del disco, rendendo i
valori di cui sopra inaccurati. Fatelo svariate volte e osservate i
valori che si stabilizzano; se non dovessero farlo, cominciate a
fermare i processi finch� non lo fanno. Il programma che gestisce il
mouse, se ne avete uno, pu� in particolare rendere fasulla la lettura
dei valori (cio� gpm per gli utenti Linux, mousemgr per gli utenti
SVr4).
Per evitare la inaccuratezza delle prove sui clock, dovreste
appuntarvi le temporizzazioni del clock e metterle nel vostro Xconfig
come valore delle propiet� dei Clocks --- questo evita il loop delle
temporizzazioni e d� ad X una lista esatta dei valori di clock che pu�
provare. Usando i dati dell'esempio precedente:
wga
Clocks 25 28 40 3 50 77 36 45 0 0 79 31 94 65 75 71
Su sistemi con un carico molto variabile, questo vi potrebbe evitare
misteriosi fallimenti di partenza di X. � possibile per X partire,
ottenere le temporizzazioni sbagliate a causa del carico del sistema,
e quindi non essere capace di trovare un clock uguale nel suo database
di configurazione --- o trovare quello sbagliato!
5.4. Cosa controllano questi dati basilari
La gamma di frequenze di sincronismo del vostro monitor, insieme con
il dot clock della scheda video, determinano la risoluzione definitiva
che potete usare. Ma � compito del driver intercettare il potenziale
del vostro hardware. Avere una combinazione hardware di qualit� senza
un device driver egualmente valido � come buttare i soldi. D'altra
parte, con un device driver versatile insieme ad un hardware meno
capace potete spingere un pochino le caratteristiche dell'hardware.
Questa � la filosofia progettuale di XFree86.
Dovreste far combaciare il dot clock che usate con la larghezza di
banda video del monitor. Ci sono molte possibilit�, comunque ---
alcuni monitor possono funzionare il 30% oltre la loro larghezza di
banda nominale. Il rischio qui � eccedere la frequenza di
sincronizzazione verticale massima del monitor; ne discuteremo in
dettaglio pi� avanti.
Sapere la larghezza di banda vi permetter� di fare scelte pi�
intelligenti fra le possibili configurazioni. Ci� pu� cambiare la
qualit� visiva dello schermo (specialmente la nitidezza nei dettagli).
6. Interpretare le Specifiche di Base
Questa sezione spiega cosa significano le specifiche precedenti, e
alcune altre cose che dovete sapere. Prima, alcune definizioni.
Accanto a ciascuna definizione la sigla che useremo per fare calcoli,
fra parentesi:
frequenza di sincronismo orizzontale (HSF)
Scansioni orizzontali al secondo (vedi sopra).
frequenza di sincronismo verticale (VSF)
Scansioni verticali al secondo (vedi sopra). Principalmente
importante come limite superiore della vostra frequenza di
refresh.
dot clock (DCF)
Pi� formalmente, 'frequenza di clock'; la frequenza del quarzo o
VCO della vostra scheda video --- il numero massimo dei punti-
al-secondo che pu� emettere.
larghezza di banda video (VB)
La pi� alta frequenza che potete immettere nell'input del
monitor e ancora aspettarvi di vedere qualcosa. Se la vostra
scheda produce una trama di accensioni-spegnimenti alternati, la
sua frequenza pi� bassa sar� met� del DCF, cos� in teoria la
larghezza di banda comincia ad avere senso a DCF/2. Per una
videata sufficientemente nitida di piccoli dettagli
nell'immagine video, comunque, non la vorrete molto pi� bassa
del vostro pi� alto DCF, e preferibilmente pi� alta.
larghezza e lunghezza di quadro (HFL, VFL)
La larghezza orizzontale del quadro (HFL) � il numero di impulsi
del dot clock necessari al pennello elettronico del vostro
monitor per scandire una linea orizzontale, inclusi i bordi
inattivi sinistro e destro. La lunghezza di quadro verticale
(VFL) � il numero di linee scandite nell'intera immagine inclusi
i bordi inattivi superiore ed inferiore.
frequenza di refresh dello schermo (RR)
Il numero di volte al secondo che il vostro schermo viene
ridisegnato (ci� � anche detta "frequenza di quadro"). Pi� sono
alte le frequenze, meglio �, perch� riducono lo sfarfallio.
60Hz va bene, lo standard VESA di 72Hz � meglio. Calcolatelo
come
RR = DCF / (HFL * VFL)
Notate che il prodotto nel denominatore non � lo stesso della
risoluzione visibile del monitor, ma tipicamente un po' pi� grande.
Andremo nel dettaglio pi� avanti.
Le frequenze che sono usualmente specificate per le modalit�
interlacciate (come 87Hz interlacciati) sono frequenze di met�
quadro: un intero schermo sembra avere all'incirca quella frequenza
per gli schermi standard, ma ogni singola linea � ridisegnata solo
met� delle volte.
Per scopi di calcolo noi riconosciamo uno schermo interlacciato
dalla sua frequenza a schermo intero (refresh), per esempio 43.5Hz.
La qualit� di una modalit� interlacciata � migliore di quella di
una modalit� non-interlacciata alla stessa frequenza per il quadro
intero, ma sicuramente peggio di quella non-interlacciata
corrispondente alla frequenza di met� quadro.
6.1. Sulla larghezza di banda
Ai costruttori di monitor piace dichiarare ampie larghezze di banda
perch� questo aumenta la nitidezza dell'intensit� e del cambio dei
colori sullo schermo. Un'ampia larghezza di banda significa vedere
dettagli pi� piccoli.
Il vostro monitor usa segnali elettronici per presentare un'immagine
ai vostri occhi. Tali segnali arrivano sempre in forma d'onda una
volta che sono convertiti in forma analogica da digitale. Possono
essere considerati come combinazioni di molte forma d'onda pi�
semplici ognuna delle quali ha una frequenza fissa, molte di esse sono
nella gamma dei Mhz, per esempio, 20Mhz, 40Mhz, o anche 70Mhz. La
larghezza di banda del vostro monitor �, effettivamente, la pi� alta
frequenza di segnale analogico che pu� sopportare senza distorsioni.
Per i nostri scopi, la larghezza di banda video � principalmente
importante come un approssimativo punto di partenza per il pi� alto
dot clock che potete usare.
6.2. Frequenze di sincronismo e la frequenza di refresh
Ogni linea di scansione orizzontale sul display � solo la porzione
visibile della scansione del quadro. Ad ogni istante c'� un solo punto
acceso sullo schermo, ma con una frequenza di refresh abbastanza alta
la persistenza della vista dei vostri occhi vi permette di "vedere"
l'intera immagine.
Ecco alcuni disegni che possono aiutare:
_______________________
| | La frequenza di sincronismo orizzontale
|->->->->->->->->->->-> | � il numero di volte al secondo
| )| al quale il pennello elettronico
|<-----<-----<-----<--- | del monitor pu� tracciare
| | un disegno tipo questo
| |
| |
| |
|_______________________|
_______________________
| ^ | La frequenza di sincronismo verticale
| ^ | | � il numero di volte al secondo
| | v | al quale il pennello elettronico
| ^ | | del monitor pu� tracciare
| | | | un disegno tipo questo
| ^ | |
| | v |
| ^ | |
|_______|_v_____________|
Ricordate che la scansione � un disegno a zigzag molto stretto; cio�,
il pennello va da sinistra a destra e contemporaneamente su e gi�.
Ora possiamo vedere come il dot clock e la grandezza dello schermo si
mettono in relazione con la frequenza di refresh. Per definizione, un
hertz (Hz) � un ciclo al secondo. Cos�, se la vostra larghezza di
quadro orizzontale � HFL e la vostra lunghezza di quadro verticale �
VFL, allora per coprire l'intero schermo servono (HFL * VFL) impulsi.
Dal momento che la vostra scheda emette DCF impulsi al secondo per
definizione, allora ovviamente il pennello elettronico del vostro
monitor pu� andare sullo schermo da sinistra a destra e dall'alto in
basso e indietro DCF / (HFL * VFL) volte al secondo. Questa � la
frequenza di refresh del vostro schermo, perch� � quante volte il
vostro schermo pu� essere aggiornato (ovvero "rinfrescato") ogni
secondo!
Dovete capire questo concetto per ottenere una configurazione che medi
la risoluzione con lo sfarfallio in un modo qualsiasi che rispetti i
vostri bisogni.
Per coloro che capiscono meglio i disegni del testo, eccone uno:
RR VB
| min HSF max HSF |
| | R1 R2 | |
max VSF -+----|------------/----------/---|------+----- max VSF
| |:::::::::::/::::::::::/:::::\ |
| \::::::::::/::::::::::/:::::::\ |
| |::::::::/::::::::::/:::::::::| |
| |:::::::/::::::::::/::::::::::\ |
| \::::::/::::::::::/::::::::::::\ |
| \::::/::::::::::/::::::::::::::| |
| |::/::::::::::/:::::::::::::::| |
| \/::::::::::/:::::::::::::::::\|
| /\:::::::::/:::::::::::::::::::|
| / \:::::::/::::::::::::::::::::|\
| / |:::::/:::::::::::::::::::::| |
| / \::::/::::::::::::::::::::::| \
min VSF -+----/-------\--/-----------------------|--\--- min VSF
| / \/ | \
+--/----------/\------------------------+----\- DCF
R1 R2 \ | \
min HSF | max HSF
VB
Questo � un diagramma di modalit� di un monitor generico. L'asse x del
diagramma mostra la frequenza del clock (DCF), l'asse y rappresenta la
frequenza di refresh (RR). La regione riempita del diagramma descrive
le capacit� del monitor: ogni punto entro questa regione � una
possibile modalit� video.
Le linee etichettate 'R1' e 'R2' rappresentano una risoluzione fissa
(tipo 640x480); vogliono mostrare come una risoluzione pu� essere
realizzata da svariate differenti combinazioni di dot clock e
frequenza di refresh. La linea R2 rappresenterebbe una risoluzione pi�
alta di R1.
Gli spazi in alto e in basso della regione valida sono semplici linee
orizzontali che rappresentano i valori limite per la frequenza di
sincronismo verticale. La larghezza di banda video � un limite
superiore della frequenza di clock e quindi � rappresentato da una
linea verticale che affianca la regione delle possibilit� a destra.
In ``Tracciare le Capacit� del Monitor'' troverete un programma che vi
aiuter� a disegnare un diagramma tipo questo (ma molto pi� carino, con
grafica X) per il vostro monitor. Quella sezione tratter� anche la
parte interessante; la derivazione degli spazi attorno all'immagine
risultante dai limiti sulla frequenza di sincronismo orizzontale.
7. Compromessi nel Configurare il Sistema
Un altro modo di guardare alla formula che abbiamo derivato prima �
DCF = RR * HFL * VFL
Cio�, il vostro dot clock � fisso. Potete usare questi punti al sec�
ondo per guadagnare sia frequenza di refresh, sia risoluzione orizzon�
tale, sia risoluzione verticale. Se uno di questi aumenta, uno o
entrambi gli altri deve diminuire.
Notate, comunque, che la vostra frequenza di refresh non pu� essere
pi� grande della massima frequenza verticale di sincronismo del
monitor. Cos�, per ogni monitor ad un dato dot clock, c'� un prodotto
minimo di lunghezze di quadro sotto il quale non potete andare.
Nello scegliere i vostri parametri, ricordate: se mettete RR troppo
basso, farete una smorfia per lo sfarfallio dello schermo.
Probabilmente non vorrete spingere la frequenza di refresh sotto i
60Hz. Questa � la frequenza di sfarfallio delle luci al neon; se
siete sensibili a queste, dovrete orientarvi verso i 72Hz, lo standard
ergonomico VESA.
Lo sfarfallio � molto affaticante per gli occhi, anche se gli occhi
umani sono adattabili e la tolleranza della gente ad esso � assai
varia. Se siete di fronte al vostro monitor ad un angolo di 90�, su
sfondo scuro e un buon colore di contrasto, e un'intensit� da bassa a
media, voi *potete* stare bene anche a 45Hz.
Il test � questo: aprite un xterminal con puro sfondo bianco e testo
nero usando xterm -bg white -fg black e allargatelo cos� da coprire
tutta l'area visibile. Ora regolate la luminosit� del monitor a 3/4
del suo massimo, e girate la faccia lontano dal monitor. Provate a
sbirciare il monitor (usando le pi� sensibili cellule della visione
periferica). Se non avvertite alcuno sfarfallio o pensate che quello
che c'� � tollerabile, allora la frequenza di refresh va bene per voi.
Altrimenti � meglio che configuriate una pi� alta frequenza di
refresh, perch� quel semi-invisibile sfarfallio vi affaticher� gli
occhi da morire e vi far� venire il mal di testa, anche se lo schermo
sembra OK a prima vista.
Per le modalit� interlacciate, l'ammontare dello sfarfallio dipende su
pi� fattori tipo la attuale risoluzione verticale e il contenuto della
videata. Cos� sperimentate. Anche se non dovreste andare molto sotto
agli 85Hz per met� quadro, comunque.
Cos� diciamo che avete scelto una frequenza di refresh minimamente
accettabile. Nello scegliere il vostro HFL e VFL, avrete un po' di
spazio di manovra.
8. Requisiti di Memoria
La RAM disponibile per il buffer di quadro pu� limitare la risoluzione
che potete ottenere su schermi a colori o in scala di grigi.
Probabilmente non � cos� importante su schermi che hanno solo due
colori, bianco e nero senza gradazioni di grigio.
Per gli schermi a 256 colori, un byte di memoria video � richiesto per
ogni punto visibile. Questo byte contiene l'informazione che determina
quale mistura di rosso, verde e blu deve essere generata per quel
punto. Per ottenere la quantit� di memoria richiesta, moltiplicate il
numero di punti visibili per linea per il numero di linee visibili.
Per uno schermo con una risoluzione di 1024x768, questa sarebbe 1024 x
768 = 786432, che � il numero di punti visibili sullo schermo. Questo
� anche, a un byte per punto, il numero di byte di memoria video che
sono necessari sulla vostra scheda video.
Cos�, la memoria video richiesta sar� tipicamente (HR * VR)/1024
Kbytes di VRAM, arrotondati (sarebbero esattamente 768K nell'esempio
precedente). Se avete pi� memoria di quella strettamente richiesta, ne
avrete extra per il panning di schermo virtuale.
Comunque, se avete solo 512K sulla vostra scheda video, allora non
potete usare questa risoluzione. Anche se avete un buon monitor, ma
non abbastanza video RAM, non potete avvantaggiarvi della potenzialit�
del vostro monitor. D'altra parte, se la vostra SVGA ha un mega, ma il
vostro monitor pu� visualizzare al massimo 800x600, allora l'alta
risoluzione � per voi irraggiungibile (vedi ``Usare le Modalit�
Interlacciate'' per un possibile rimedio).
Non vi preoccupate se avete pi� memoria di quella richiesta; XFree86
la user� per permettervi di scrollare l'area visibile (vedi il file di
documentazione di Xconfig sul parametro dell'ampiezza dello schermo
virtuale). Ricordate anche che una scheda con 512K byte di memoria non
ha realmente 512,000 byte installati, ne ha 512 x 1024 = 524,288 byte.
Se usate X/Inside con una scheda video S3, e volete campare con 16
colori (4 bit per pixel), potete settare la profondit� a 4 in Xconfig
ed effettivamente raddoppiare la risoluzione che pu� gestire la scheda
video. Le schede S3, ad esempio, normalmente fanno 1024x768x256.
Potete farle fare 1280x1024x16 con profondit� 4.
9. Calcolare le Ampiezze di Quadro
Attenzione: questo metodo � stato sviluppato per monitor multisync.
Probabilmente funzioner� lo stesso con monitor a frequenza fissa, ma
non ci sono garanzie!
Iniziate dividendo DCF per il vostro massimo HSF per ottenere la
larghezza di quadro orizzontale.
Per esempio: supponiamo che avete un Sigma Legend SVGA con un dot
clock a 65MHz, ed il vostro monitor ha una frequenza di scansione
orizzontale di 55KHz. La quantit� (DCF / HSF) � allora 1181 (65MHz =
65000KHz; 65000/55 = 1181).
Ecco il nostro primo assaggio di magia. Dovete arrotondare al pi�
vicino multiplo di 8. Questo ha a che fare con il controller hardware
VGA usato dalla SVGA e dalle schede S3; usa un registro a 8-bit,
spostato a sinistra di 3 bit, per cui � in realt� una quantit� di
11-bit. Altri tipi di schede tipo la ATI 8514/A pu� non aver bisogno
di questo, ma non lo sappiamo e correggere non far� male. Cos�
arrotondiamo la configurazione della larghezza orizzontale di quadro a
1176.
Questa configurazione (DCF / HSF arrotondato ad un multiplo di 8) � il
minimo HFL che potete usare. Potete ottenere HFL pi� lunghi (e cos�,
possibilmente, pi� punti orizzontali sullo schermo) settando l'impulso
di sincronismo in modo da produrre un HSF pi� basso. Ma lo pagherete
con una frequenza pi� bassa e sfarfallio pi� visibile.
In genere, � disponibile l'80% della larghezza orizzontale di quadro
per la risoluzione orizzontale, la parte visibile della linea scandita
orizzontale (questo permette, all'incirca, di avere i bordi e il tempo
per il pennello di tornare indietro -- cio�, il tempo necessario al
pennello di muoversi dal lato destro dello schermo al lato sinistro
della prossima linea). In questo esempio, sarebbero 944 impulsi.
Ora, per ottenere il normale rapporto della visualizzazione dello
schermo di 4:3, settate la risoluzione verticale a 3/4 della
risoluzione orizzontale che avete appena calcolato. Per il nostro
esempio, sarebbero 708 impulsi. Per ottenere il vostro attuale VFL,
moltiplicatelo per 1.05 per ottenere 743 impulsi.
Il 4:3 non � una meraviglia della tecnica; nulla vi vieta di usare un
rapporto a Sezione Aurea se questo vi permette di usare al meglio il
vostro monitor. Questo rende conveniente calcolare l'altezza e la
larghezza del quadro dalla diagonale, dovete solo moltiplicare la
diagonale per 0.8 per ottenere la larghezza e per 0.6 per avere
l'altezza.
Cos�, HFL=1176 e VFL=743. Dividendo 65MHz per il prodotto dei due ci
d� una bella e piena di salute frequenza di refresh di 74.4Hz.
Eccellente! Meglio dello standard VESA! E avrete 944x708
all'accensione, pi� dell'800 per 600 che probabilmente vi aspettavate.
Proprio mica male!
Potreste anche aumentare la frequenza di refresh fino a circa 76 Hz,
sfruttando il fatto che i monitor spesso possono sincronizzarsi
orizzontalmente a circa 2khz pi� delle specifiche, e in qualche modo
abbassando lo VFL (che sarebbe, prendere meno del 75% di 944
nell'esempio precedente). Ma prima di provare questa manovra di
"sovraccarico", se lo fate, siate sicuri che i pennelli elettronici
del vostro monitor possano sincronizzarsi verticalmente fino a 76 Hz.
(Il popolare NEC 4D, ad esempio, non pu�. Arriva solo fino a 75 Hz
VSF). (Vedi ``Sovraccaricare il Monitor'' per una discussione pi�
generale su quest'argomento.)
Fino a qui, il pi� � semplice aritmetica e fatti basilari sugli
schermi raster. Proprio poca magia nera!
10. Magia Nera e Impulsi di Sincronismo
OK, ora avete calcolato i valori di HFL/VFL per il dot clock scelto,
trovato la frequenza di refresh accettabile, e controllato di avere
abbastanza VRAM. Adesso facciamo la vera magia nera -- vi serve di
sapere quando e dove piazzare gli impulsi di sincronismo.
Gli impulsi di sincronismo effettivamente controllano le frequenze di
scansione orizzontale e verticale del monitor. Gli HSF e VSF che avete
tirato fuori dalla pagina delle specifiche del manuale sono nominali e
approssimative frequenze massime di sincronismo. L'impulso di
sincronismo nel segnale della scheda video dice al monitor quanto
veloce deve andare.
Ricordate le due figure precedenti? Solamente parte del tempo
richiesto per tracciare (raster-scanning) un quadro � usata per
mostrare l'immagine visibile (per esempio la vostra risoluzione).
10.1. Sincronismo orizzontale
Secondo la precedente definizione, ci vogliono HFL impulsi per
tracciare una linea di scansione orizzontale. Chiamiamo il numero di
impulsi visibili (la risoluzione orizzontale dello schermo) HR.
Quindi, ovviamente, HR < HFL per definizione. Per praticit�,
assumiamo che entrambi partano allo stesso istante come mostrato qui
sotto:
|___ __ __ __ __ __ __ __ __ __ __ __ __
|_ _ _ _ _ _ _ _ _ _ _ _ |
|_______________________|_______________|_____
0 ^ ^ unit�: impulsi
| ^ ^ |
HR | | HFL
| |<----->| |
|<->| HSP |<->|
HGT1 HGT2
Ora, noi vorremmo piazzare un impulso di sincronismo di lunghezza HSP
come mostrato sopra, ad esempio, fra la fine degli impulsi di clock
per mostrare dati e la fine degli impulsi di clock per l'intero
quadro. Perch� cos�? Perch� se possiamo ottenere ci�, allora
l'immagine sullo schermo non si sposter� a destra o a sinistra.
L'immagine sar� dove dovrebbe essere sullo schermo, coprendo
all'incirca tutta l'area visibile del monitor.
In pi�, vogliamo circa 30 impulsi di "tempo di guardia" ad entrambi i
lati dell'impulso di sincronismo. Questo � rappresentato da HGT1 e
HGT2. In una configurazione tipica HGT1 != HGT2, ma se state facendo
una configurazione da zero, vorrete far partire le vostre
sperimentazioni con loro uguali (cio�, con l'impulso di sincronismo
centrato).
Il sintomo di un impulso di sincronismo non centrato � che l'immagine
appare a schermo con un bordo troppo largo e l'altro lato
dell'immagine che si ripiega su se stessa, producendo un spesso bordo
bianco e una striscia di "immagine fantasma" da quella parte. Un
impulso verticale fuori misura pu� far girare il quadro come sui
televisori quando non � regolato bene il sincronismo verticale
(infatti, � lo stesso fenomeno in azione).
Se siete fortunati, le larghezze degli impulsi di sincronismo del
vostro monitor saranno documentate sulle pagine delle specifiche del
manuale. Altrimenti, ecco dove inizia la vera magia nera...
Dovete un po' provare, sbagliare e riprovare in questa parte. Ma il
pi� delle volte, possiamo sicuramente supporre che un impulso di
sincronismo � lungo dai 3.5 ai 4.0 microsecondi.
Ancora per praticit�, diciamo che HSP � 3.8 microsecondi (che poi,
detto fra noi, non � un cattivo valore di partenza quando si
sperimenta).
Ora, usando la temporizzazione di 65Mhz come in precedenza, sappiamo
che HSP � equivalente a 247 impulsi di clock (= 65 * 10**6 * 3.8 *
10^-6) [ricordate che M=10^6, micro=10^-6]
Ad alcuni costruttori piace specificare i loro parametri di quadro
orizzontale come tempi piuttosto che come larghezza di punti. Potreste
vedere i seguenti valori:
tempo attivo (HAT)
Corrisponde a HR, ma in millisecondi. HAT * DCF = HR.
tempo di oscuramento (HBT)
Corrisponde a (HFL - HR), ma in millisecondi. HBT * DCF = (HFL
- HR).
piedistallo frontale (HFP)
Questo � proprio HGT1.
tempo di sincronismo
Questo � proprio HSP.
piedistallo secondario (HBP)
Questo � proprio HGT2.
10.2. Sincronismo verticale
Tornando alla figura precedente, come mettiamo i 247 impulsi di clock
secondo quanto mostrato nel disegno?
Usando il nostro esempio, HR � 944 e HFL � 1176. La differenza fra i
due � 1176 - 944=232 < 247! Ovviamente dobbiamo mettere un po' le cose
a posto qui. Cosa possiamo fare?
La prima cosa � aumentare 1176 a 1184, e diminuire 944 a 936. Adesso
la differenza = 1184-936= 248. Hmm, pi� vicino.
Poi, invece di usare 3.8, usiamo 3.5 per calcolare HSP; quindi,
abbiamo 65*3.5=227. Sembra meglio. Ma 248 non � molto pi� grande di
227. Normalmente servono 30 impulsi o gi� di l� fra HR e l'inizio di
SP, e lo stesso fra la fine di SP e HFL. E DEVONO essere multipli di
otto! Siamo bloccati?
No. Facciamo cos�, 936 % 8 = 0, (936 + 32) % 8 = 0 anche. Ma 936 + 32
= 968, 968 + 227 = 1195, 1195 + 32 = 1227. Hmm... questo non � male.
Ma non � un multiplo di 8, cos� lo arrotondiamo a 1232.
Ma ora abbiamo un problema potenziale, l'impulso di sincronismo non �
pi� messo in mezzo fra h e H. Tranquillamente, usando la nostra
calcolatrice troviamo che 1232 - 32 = 1200 � anche lui un multiplo di
8 e (1232 - 32) - 968 = 232 che corrisponde ad usare un impulso di
sincronismo di 3.57 microsecondi, ancora ragionevole.
In pi�, 936/1232 0.76 o 76%, che non � lontano dall'80%, cos�
dovrebbe essere tutto a posto.
Inoltre, usando l'attuale lunghezza di quadro orizzontale, noi in
pratica chiediamo al nostro monitor di sincronizzarsi a 52.7khz (=
65Mhz/1232) che � nelle sue capacit�. Nessun problema.
Usando le regole che abbiamo summenzionato, 936*75%=702, questa � la
nostra nuova risoluzione verticale. 702 * 1.05 = 737, la nostra nuova
altezza di quadro.
La frequenza di refresh dello schermo = 65Mhz/(737*1232)=71.6 Hz.
Questo � ancora eccellente.
Disegnare il layout dell'impulso di sincronismo verticale � simile:
|___ __ __ __ __ __ __ __ __ __ __ __ __
|_ _ _ _ _ _ _ _ _ _ _ _ |
|_______________________|_______________|_____
0 VR VFL unit�: impulsi
^ ^ ^
| | |
|<->|<----->|
VGT VSP
Facciamo partire l'impulso di sincronismo appena passata la fine degli
impulsi di dati video verticali. VGT � il tempo di guardia verticale
richiesto per l'impulso. La maggior parte dei monitor funzionano bene
con un VGT di 0 (nessun tempo di guardia) e noi useremo questo valore
nel nostro esempio. Pochi monitor abbisognano di due o tre impulsi di
tempo di guardia, e di solito non fa male aggiungerli.
Tornando all'esempio: dal momento che per definizione della lunghezza
di quadro, un impulso verticale � il tempo per tracciare un intera
riga ORIZZONTALE, nel nostro esempio, questa sar� 1232/65Mhz=18.95us.
L'esperienza insegna che un impulso di sincronismo verticale dovrebbe
rientrare nella gamma fra 50us e 300us. Come esempio usiamo 150us, che
si traduce in 8 impulsi di clock verticale (150us/18.95us 8).
Alcuni fabbricanti preferiscono dare i loro parametri di quadro
verticale come temporizzazioni piuttosto che ampiezza di punti.
Potrete vedere i seguenti valori:
tempo attivo (VAT)
Corrisponde a VR, ma in millisecondi. VAT * VSF = VR.
tempo di oscuramento (VBT)
Corrisponde a (VFL - VR), ma in millisecondi. VBT * VSF = (VFL
- VR).
piedistallo frontale (VFP)
Questo � proprio VGT.
sincronismo
Questo � proprio VSP.
piedistallo secondario (VBP)
Questo � come un secondo tempo di guardia dopo l'impulso di
sincronismo verticale. Spesso � zero.
11. Riassumendo
Il file Xconfig "Table of Video Modes" contiene righe di numeri,
essendo ogni riga una completa specificazione di una modalit� di
operazione X-server. I campi sono raggruppati in quattro sezioni, la
sezione del nome, la sezione della frequenza di clock, la sezione
orizzontale, e la sezione verticale.
La sezione del nome contiene un campo, il nome della modalit� video
specificata nel resto della riga. Questo nome � riferito nella riga
"Modes" della sezione Graphics Driver Setup nel file Xconfig. Il campo
nome pu� essere omesso se il nome di una riga precedente � lo stesso.
La sezione della frequenza di clock contiene solo il campo della
frequenza (che noi abbiamo chiamato DCF) della riga modalit� video. Il
valore di questo campo specifica quale dot clock � stato usato per
generare i numeri delle sezioni seguenti.
La sezione orizzontale consiste di quattro campi che specificano come
ciascuna linea orizzontale deve essere generata. Il primo campo della
sezione contiene il numero di punti per linea che saranno accesi per
formare l'immagine (da noi chiamati HR). Il secondo campo (SH1) indica
in quale punto partir� l'impulso di sincronismo orizzontale. Il terzo
campo (SH2) indica a quale punto finir� l'impulso di sincronismo
orizzontale. Il quarto campo specifica la larghezza totale del quadro
(HFL).
Anche la sezione verticale contiene quattro campi. Il primo campo
contiene il numero di linee visibili che appariranno sullo schermo
(VR). Il secondo campo (SV1) indica a quale linea partir� l'impulso di
sincronismo verticale. Il terzo campo (SV2) specifica a quale linea
finir� l'impulso verticale di sincronismo. Il quarto campo contiene
il totale dell'altezza del quadro (VFL).
Esempio:
#Nome Mod. clock temporiz. oriz. temporiz. vert.
"752x564" 40 752 784 944 1088 564 567 569 611
44.5 752 792 976 1240 564 567 570 600
(Nota: X11R5 non supporta i dot clocks frazionari.)
Per Xconfig, tutti i numeri che abbiamo appena menzionato - il numero
dei punti accesi sulla riga, il numero dei punti che separano i punti
accesi dall'inizio dell'impulso di sincronismo, il numero dei punti
che rappresentano la durata dell'impulso, e il numero di punti dopo la
fine dell'impulso di sincronismo - sono sommati per produrre il numero
di punti per riga. Il numero di punti orizzontali deve sempre essere
divisibile per otto.
Esempio di numeri orizzontali: 800 864 1024 1088
Questa linea d'esempio ha il numero di punti accesi (800) seguito dal
numero del punto da dove parte l'impulso di sincronismo (864), seguito
dal numero del punto quando lo stesso impulso termina (1024), seguito
dal numero dell'ultimo punto sulla riga (1088).
Notate di nuovo che tutti i valori dei numeri orizzontali (800, 864,
1024, e 1088) sono divisibili per otto! Ci� non � richiesto per i
valori verticali.
Il numero di righe dall'alto in basso formano il quadro. Il segnale di
temporizzazione base per un quadro � la riga. Un certo numero di righe
formeranno l'immagine. Dopo che l'ultima riga accesa � stata
disegnata, ci sar� un ritardo di un certo numero di righe prima che
sia generato l'impulso di sincronismo verticale. Quindi l'impulso di
sincronismo durer� per un po' di righe, e finalmente saranno generate
le ultime righe del quadro, cio� il ritardo necessario dopo l'impulso.
I valori che specificano questa modalit� d'operazione sono immessi in
una maniera simile al seguente esempio.
Esempio di valori verticali: 600 603 609 630
Questo esempio mostra che ci sono 600 righe visibili sullo schermo,
che l'impulso di sincronismo verticale parte alla 603esima riga e
termina alla 609esima, e che sono usate un totale di 630 righe.
Notate che i valori verticali non devono essere divisibili per otto!
Torniamo all'esempio dove stavamo lavorando. Secondo quanto detto
prima, tutto quello che dobbiamo fare da adesso in poi � di scrivere i
nostri risultati in Xconfig in questo modo:
<nome> DCF HR SH1 SH2 HFL VR SV1 SV2 VFL
dove SH1 � il punto di partenza dell'impulso di sincronismo orizzon�
tale e SH2 � l'ultimo; similmente, SV1 � il punto di partenza
dell'impulso di sincronismo verticale e SV2 � l'ultimo.
Per inserire questi, ricordate il discorso sulla magia nera e gli
impulsi di sincronismo che � stato fatto precedentemente. SH1 � il
punto dove inizia l'impulso di sincronismo orizzontale; quindi, SH1 =
HR + HGT1. SH2 � l'estremo opposto; quindi, SH2 = SH1 + HSP.
Similarmente, SV1 = VR + VGT (ma VGT di solito � zero) e SV2 = SV1 +
VSP.
#nome clock temporiz. oriz. temporiz. vert. flag
936x702 65 936 968 1200 1232 702 702 710 737
Non � necessario alcun flag; questa non � una modalit� interlacciata.
Ora siamo proprio a posto.
12. Sovraccaricare il Vostro Monitor
Non dovreste assolutamente superare le specifiche di scansione del
monitor se questo � un tipo a frequenza fissa. Potreste far fumare il
vostro hardware! Superare le specifiche di un monitor multisincrono
crea dei subdoli problemi potenziali che dovreste evitare.
Al contrario, avere un pixel-clock pi� alto della massima larghezza di
banda del monitor � abbastanza innocuo. (Nota: il limite teorico delle
capacit� � raggiunto quando il pixel-clock raggiunge il doppio della
larghezza di banda del monitor. Questa � una applicazione diretta del
Teorema di Nyquist: immaginate i pixel come una serie di prove dei
segnali guida distribuita nello spazio e capirete perch�.)
� problematico eccedere la frequenza massima di sincronismo. Alcuni
monitor moderni possono avere dei circuiti di protezione che spengono
il monitor a frequenze di scansione pericolose, ma non fateci
affidamento. In particolare ci sono monitor multisinc pi� vecchi (come
il Multisync II) che usano solo un trasformatore orizzontale. Questi
monitor non hanno molta protezione contro il sovraccarico. Mentre
avrete sicuramente un circuito di regolazione dell'alto voltaggio (che
pu� essere assente nei monitor a frequenza fissa), questo non
necessariamente coprir� ogni gamma di frequenza possibile, specie nei
modelli pi� economici. Questo non solo implica un maggior carico sul
circuito, ma causa anche un invecchiamento precoce dei fosfori dello
schermo, ed ulteriori emissioni di radiazioni dallo schermo (inclusi i
raggi X).
Un altro punto da considerare sulla larghezza di banda � che
l'impedenza in entrata del monitor � specificata solo per quella data
gamma di frequenze, e usarne di pi� alte pu� probabilmente causare
minori interferenze sullo schermo, e disturbi radio.
Comunque, la problematica fondamentale in questione � lo slew rate (la
pendenza dei segnali video) dei driver per l'output del video, e
questo � di solito indipendente dalla frequenza dei pixel, ma (se il
costruttore della vostra scheda video ci tiene a questi problemi) in
relazione alla massima frequenza dei pixel della scheda.
Quindi state attenti l� fuori...
13. Usare le Modalit� Interlacciate
(Questa sezione � in gran parte merito di David Kastrup
<
[email protected]>)
Ad un dato clock fisso, uno schermo interlacciato avr� molto meno
sfarfallio di uno non-interlacciato, se il circuito verticale del
vostro monitor lo supporta stabilmente. � principalmente a causa di
ci� che furono inventate le modalit� interlacciate.
Le modalit� interlacciate hanno una cattiva reputazione perch� sono
inferiori alle loro compagne non-interlacciate alla stessa frequenza
di scansione verticale, VSF (quello che di solito viene specificato
nelle pubblicit�). Ma sono assolutamente superiori alla stessa
frequenza di scansione orizzontale, ed � qui che di solito le
caratteristiche decisive del vostro monitor/scheda video dicono le
bugie.
Ad una frequenza di refresh fissa (o mezzo quadro, o VSF) il display
interlacciato sfarfaller� di pi�: un display interlacciato a 90Hz sar�
inferiore ad un display non-interlacciato a 90Hz. Per� avr� bisogno di
met� larghezza di banda video e met� frequenza di scansione
orizzontale. Se lo comparate ad una modalit� non-interlacciata con lo
stesso dot clock e le stesse frequenze di scansione, sar� enormemente
superiore: 45Hz non-interlacciati sono intollerabili. Con 90Hz
interlacciati, io ho lavorato per anni con il mio Multisync 3D (a
1024x768) ed in modo molto soddisfacente. Penso che vi servir� al
massimo uno schermo a 70Hz non-interlacciati per lo stesso comfort.
Dovete stare attenti ad alcuni punti, comunque: usate modalit�
interlacciate solo ad alte risoluzioni, cos� che le righe accese
alternate siano pi� vicine. Vorrete provare varie larghezze e
posizioni dell'impulso di sincronismo per ottenere le posizioni di
riga pi� stabili. Se le linee alternate sono chiare e scure,
l'interlacciamento vi salter� agli occhi. Ho una applicazione che
sceglie tali valori per uno sfondo (XCept, nessun'altra applicazione
lo fa che io sappia, fortunatamente). Io passo a 800x600 usando XCept
perch� altrimenti mi fanno proprio male gli occhi.
Per lo stesso motivo, usate i font di minimo 100dpi, o altri font che
abbiano le stanghette orizzontali spesse minimo due righe (per le alte
risoluzioni, nient'altro avrebbe comunque senso).
E naturalmente, non usate mai la modalit� interlacciata quando il
vostro hardware ne supporterebbe una non-interlacciata con la stessa
frequenza di refresh.
Se, comunque, pensate che per qualche risoluzione state spingendo o il
monitor o la scheda video al massimo delle loro capacit�, e ottenete
sfarfallio o perdita di nitidezza (eccesso di larghezza di banda),
potete provare la stessa risoluzione usando una modalit�
interlacciata. Chiaramente ci� non serve a nulla se il VSF del monitor
� gi� vicino ai suoi limiti.
Scrivere modalit� interlacciate � facile: fatelo come se fossero non-
interlacciate. Sono necessarie solo due considerazioni in pi�: vi
servono un numero totale pari di righe verticali (l'ultima cifra nel
mode line), e quando specificate il flag "Interlace", la frequenza
verticale di quadro raddoppia. Il vostro monitor deve supportare una
frequenza di 90Hz se la modalit� che avete specificato risulta di 45Hz
senza il flag "Interlace".
Come esempio, ecco la mia modeline per 1024x768 interlacciati: il mio
Multisync 3D supporta fino a 90Hz verticali e 38kHz orizzontali.
ModeLine "1024x768" 45 1024 1048 1208 1248 768 768 776 807 Interlace
Entrambi i limiti sono abbastanza sfruttati con questa modalit�.
Specificando la stessa modalit�, ma senza il flag "Interlace", si �
ancora quasi al limite della capacit� orizzontale del monitor (e per
dirla tutta, un po' sotto al minimo della frequenza di scansione
verticale), ma ci� produce uno schermo intollerabilmente sfarfallante.
Regole basilari di programmazione: se avete scritto una modalit� a
meno della met� della capacit� verticale del monitor, rendete pari il
numero totale delle linee ed aggiungete il flag "Interlace". La
qualit� dell'immagine dovrebbe aumentare di molto nella maggioranza
dei casi.
Se avete una modalit� non-interlacciata che in qualche modo sfrutta al
limite le specifiche del monitor dove la frequenza di scansione
verticale giace a circa il 30% o pi� sotto al massimo del monitor,
scrivere a mano una modalit� interlacciata (probabilmente con una pi�
alta risoluzione) potrebbe portare a risultati superiori, ma non ci
giurerei.
14. Domande e Risposte
D. L'esempio che avete fatto � per un formato non standard dello
schermo, lo posso usare?
R. Perch� no? NON ci sono ragioni di usare 640x480, 800x600, o anche
1024x768. I server XFree86 vi lasciano configurare il vostro hardware
molto liberamente. Di solito ci vogliono due o tre prove prima di
arrivare alla scelta giusta. La cosa importante da raggiungere � un
alta frequenza di refresh con un'area visibile ragionevole. Non alta
risoluzione al prezzo di sfarfallio scassa-occhi!
D. � la sola risoluzione possibile quella data di 65Mhz dot clock e
55Khz HSF?
R. Assolutamente no! Siete incoraggiati a seguire la procedura
generica e fare un po' di prova-e-sbaglia fino ad arrivare ad una
configurazione che vi soddisfi. Sperimentare cos� pu� essere molto
divertente. Molte configurazioni vi possono dare solo schermi
sgangherati, ma in pratica i moderni monitor multi-sync non sono
facilmente danneggiabili. Assicuratevi comunque che il vostro monitor
possa supportare le frequenze di quadro che avete scelto prima di
usarlo per periodi pi� lunghi.
State attenti ai monitor a frequenza fissa! Questo genere di
sperimentazioni li pu� velocemente danneggiare. Assicuratevi di usare
frequenze di refresh valide per qualsiasi esperimento su di essi.
D. Tu hai appena nominato due risoluzioni standard. In Xconfig, sono
disponibili molte risoluzioni standard, mi puoi dire a che serve
sperimentare con le temporizzazioni?
R. Certamente! Prendi, ad esempio, lo "standard" 640x480 presente
nell'attuale Xconfig. Usa 25Mhz di frequenza pilota, lunghezze di
quadro di 800 e 525 => frequenza di refresh 59.5Hz. Non male. Ma
28Mhz � una frequenza pilota comune a molte schede SVGA. Se noi la
usiamo per pilotare 640x480, seguendo le procedure prima discusse,
otterremmo lunghezze di quadro tipo 812 e 505. Ora la frequenza di
refresh � aumentata a 68Hz, un miglioramento abbastanza significativo
rispetto allo standard.
D. Puoi riassumere quello che si � detto fino ad ora?
R. In breve:
1. per ogni frequenza pilota fissa, aumentare la risoluzione massima
ci penalizza nell'abbassare la frequenza di refresh e producendo
cos� pi� sfarfallio.
2. se serve un'alta risoluzione e il tuo monitor la supporta, cerca di
procurarti una scheda SVGA che abbia un uguale dot clock o DCF. Pi�
sono elevati, meglio �!
15. Risolvere Problemi con l'Immagine
OK, cos� avete i vostri valori di configurazione X. Li mettete in
Xconfig con una etichetta di modalit� test. Fate partire X, con la
combinazione di tasti andate nella nuova modalit�, ... e l'immagine
non va bene. Che fate? Ecco una lista di comuni distorsioni
dell'immagine e come risolverle.
(Eliminare questi difetti minori � la specialit� di xvidtune(1).)
Spostate l'immagine cambiando la temporizzazione dell'impulso di
sincronismo. La scalate cambiando la lunghezza del quadro (dovete
cambiare l'impulso di sincronismo per mantenere la stessa posizione
relativa, altrimenti cambiarne la grandezza sposter� l'immagine). Ecco
alcune ricette pi� specifiche:
Le posizioni orizzontali e verticali sono indipendenti. Cio�, spostare
l'immagine orizzontalmente non incide sulla sua posizione verticale, o
viceversa. Per� lo stesso non vale sempre per l'ingrandimento o
rimpicciolimento. Mentre cambiare la larghezza non ha nulla a che
vedere con l'altezza o viceversa, cambiare entrambe pu� avere dei
limiti. In particolare, se l'immagine � troppo larga in entrambe le
dimensioni voi probabilmente dovete andare a pi� alti dot clock per
aggiustare le cose. Dal momento che questo alza la risoluzione, �
spesso un problema!
15.1. L'immagine � troppo a destra o troppo a sinistra
Per aggiustare questo, cambiate l'impulso di sincronismo orizzontale.
Ovvero, aumentate o diminuite (a multipli di 8) i due numeri in mezzo
nella sezione della temporizzazione orizzontale che definiscono i
limiti di partenza e fine dell'impulso di sincronismo orizzontale.
Se l'immagine � spostata a sinistra (bordo destro troppo largo, voi
volete muovere l'immagine a destra) diminuite i valori. Se l'immagine
� spostata a destra (bordo sinistro troppo largo, volete spostare
l'immagine a sinistra) incrementate l'impulso di sincronismo.
15.2. L'immagine � troppo su o troppo gi�
Per aggiustare questo, cambiate l'impulso di sincronismo verticale.
Cio�, incrementate o diminuite i due valori mediani della sezione di
temporizzazione verticale che definiscono i limiti di partenza e fine
dell'impulso di sincronismo verticale.
Se l'immagine � spostata su (bordo in basso troppo largo, volete
spostare l'immagine in gi�) diminuite i valori. Se l'immagine �
spostata in gi� (bordo in alto troppo largo, volete spostare
l'immagine in su) incrementate i valori.
15.3. L'immagine � troppo larga sia orizzontalmente che verticalmente
Passate ad una pi� alta velocit� di clock della scheda. Se avete pi�
modalit� nel file di clock, forse � stata attivata per errore una
modalit� a velocit� inferiore.
15.4. L'immagine � troppo larga (troppo stretta) orizzontalmente
Per rimediare a questo, aumentate (diminuite) la lunghezza di quadro
orizzontale. Ovvero, cambiate il quarto valore nella prima sezione di
temporizzazione. Per evitare di muovere l'immagine, cambiate anche
l'impulso di sincronismo (secondo e terzo numero) della met�, per
mantenerla nella stessa posizione relativa.
15.5. L'immagine � troppo alta (troppo bassa) verticalmente
Per rimediare, aumentate (diminuite) la lunghezza del quadro. Cio�
cambiate il quarto numero nella seconda sezione di temporizzazione.
Per evitare di spostare l'immagine, cambiate anche l'impulso di
sincronismo (il secondo e terzo numero) della met�, per mantenerla
nella stessa posizione relativa.
Qualsiasi altra distorsione che non pu� essere risolta dalla
combinazione di queste tecniche � probabilmente sintomo di qualcosa di
profondamente sbagliato, tipo un errore di calcolo o un dot clock pi�
veloce di quello che pu� reggere il monitor.
In ultimo, ricordate che aumentare la lunghezza del quadro diminuir�
la frequenza di refresh, e viceversa.
Occasionalmente potete aggiustare piccole distorsioni con i controlli
del vostro monitor. Lo svantaggio � che se portate i controlli troppo
lontano dallo zero (il settaggio di fabbrica) per risolvere i problemi
di grafica, potreste ottenere un'immagine distorta in modo testo. �
meglio avere una giusta "mode line".
16. Tracciare le Capacit� del Monitor
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 <
[email protected]> basato
su analisi e codice di Martin Lottermoser <
[email protected]>
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:
� 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
tecnicamente corrette. Questo � il motivo per cui il diagramma che ne
risulta ne � solo una rozza descrizione. Queste semplificazioni sono:
1. 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.
2. Per le modalit� considerate, lunghezze e larghezze di quadro 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, 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.
17. Ringraziamenti
Il padre originale di questo documento � stato Chin Fang
<
[email protected]>.
Eric S. Raymond <
[email protected]> ha rielaborato, riorganizzato,
e massicciamente riscritto l'originale di Chin Fang col proposito di
capirlo. In questo processo, ha immesso la maggior parte di un altro
how-to di Bob Crosson <
[email protected]>.
Il materiale sulle modalit� interlacciate � largamente di David
Kastrup <
[email protected]>
Nicholas Bodley <
[email protected]> ha corretto e chiarito
la sezione su come funziona lo schermo.
Martin Lottermoser <
[email protected]> ha contribuito
all'idea di usare gnuplot per fare diagrammi di modalit� e ha fatto
l'analisi matematica che c'� dietro modeplot. Il modeplot in
distribuzione fu ridisegnato e generalizzato da ESR dal codice
originale di Martin per un caso.