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).
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:
Corrisponde a HR, ma in millisecondi. HAT * DCF = HR.
Corrisponde a (HFL - HR), ma in millisecondi. HBT * DCF = (HFL - HR).
Questo è proprio HGT1.
Questo è proprio HSP.
Questo è proprio HGT2.
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:
Corrisponde a VR, ma in millisecondi. VAT * VSF = VR.
Corrisponde a (VFL - VR), ma in millisecondi. VBT * VSF = (VFL - VR).
Questo è proprio VGT.
Questo è proprio VSP.
Questo è come un secondo tempo di guardia dopo l'impulso di sincronismo verticale. Spesso è zero.