<!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: Magia Nera e Impulsi di Sincronismo</TITLE> <LINK HREF="XFree86-Video-Timings-HOWTO-11.html" REL=next> <LINK HREF="XFree86-Video-Timings-HOWTO-9.html" REL=previous> <LINK HREF="XFree86-Video-Timings-HOWTO.html#toc10" REL=contents> </HEAD> <BODY> <A HREF="XFree86-Video-Timings-HOWTO-11.html">Avanti</A> <A HREF="XFree86-Video-Timings-HOWTO-9.html">Indietro</A> <A HREF="XFree86-Video-Timings-HOWTO.html#toc10">Indice</A> <HR> <H2><A NAME="magic"></A> <A NAME="s10">10. Magia Nera e Impulsi di Sincronismo</A></H2> <P> <P>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. <P>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. <P>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). <P> <H2><A NAME="ss10.1">10.1 Sincronismo orizzontale</A> </H2> <P> <P>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: <P> <PRE> |___ __ __ __ __ __ __ __ __ __ __ __ __ |_ _ _ _ _ _ _ _ _ _ _ _ | |_______________________|_______________|_____ 0 ^ ^ unità: impulsi | ^ ^ | HR | | HFL | |<----->| | |<->| HSP |<->| HGT1 HGT2 </PRE> <P>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. <P>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). <P>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). <P>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... <P>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. <P>Ancora per praticità, diciamo che HSP è 3.8 microsecondi (che poi, detto fra noi, non è un cattivo valore di partenza quando si sperimenta). <P>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] <P>Ad alcuni costruttori piace specificare i loro parametri di quadro orizzontale come tempi piuttosto che come larghezza di punti. Potreste vedere i seguenti valori: <DL> <DT><B>tempo attivo (HAT)</B><DD><P>Corrisponde a HR, ma in millisecondi. HAT * DCF = HR. <P> <DT><B>tempo di oscuramento (HBT)</B><DD><P>Corrisponde a (HFL - HR), ma in millisecondi. HBT * DCF = (HFL - HR). <P> <DT><B>piedistallo frontale (HFP)</B><DD><P>Questo è proprio HGT1. <P> <DT><B>tempo di sincronismo</B><DD><P>Questo è proprio HSP. <P> <DT><B>piedistallo secondario (HBP)</B><DD><P>Questo è proprio HGT2. <P> </DL> <P> <H2><A NAME="ss10.2">10.2 Sincronismo verticale</A> </H2> <P> <P>Tornando alla figura precedente, come mettiamo i 247 impulsi di clock secondo quanto mostrato nel disegno? <P>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? <P>La prima cosa è aumentare 1176 a 1184, e diminuire 944 a 936. Adesso la differenza = 1184-936= 248. Hmm, più vicino. <P>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? <P>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. <P>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. <P>In più, 936/1232 0.76 o 76%, che non è lontano dall'80%, così dovrebbe essere tutto a posto. <P>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. <P>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. <P>La frequenza di refresh dello schermo = 65Mhz/(737*1232)=71.6 Hz. Questo è ancora eccellente. <P>Disegnare il layout dell'impulso di sincronismo verticale è simile: <P> <PRE> |___ __ __ __ __ __ __ __ __ __ __ __ __ |_ _ _ _ _ _ _ _ _ _ _ _ | |_______________________|_______________|_____ 0 VR VFL unità: impulsi ^ ^ ^ | | | |<->|<----->| VGT VSP </PRE> <P>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. <P>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. <P>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). <P>Alcuni fabbricanti preferiscono dare i loro parametri di quadro verticale come temporizzazioni piuttosto che ampiezza di punti. Potrete vedere i seguenti valori: <P> <DL> <DT><B>tempo attivo (VAT)</B><DD><P>Corrisponde a VR, ma in millisecondi. VAT * VSF = VR. <DT><B>tempo di oscuramento (VBT)</B><DD><P>Corrisponde a (VFL - VR), ma in millisecondi. VBT * VSF = (VFL - VR). <DT><B>piedistallo frontale (VFP)</B><DD><P>Questo è proprio VGT. <DT><B>sincronismo</B><DD><P>Questo è proprio VSP. <DT><B>piedistallo secondario (VBP)</B><DD><P>Questo è come un secondo tempo di guardia dopo l'impulso di sincronismo verticale. Spesso è zero. </DL> <P> <HR> <A HREF="XFree86-Video-Timings-HOWTO-11.html">Avanti</A> <A HREF="XFree86-Video-Timings-HOWTO-9.html">Indietro</A> <A HREF="XFree86-Video-Timings-HOWTO.html#toc10">Indice</A> </BODY> </HTML>