Sto lavorando su un circuito digitale utilizzando componenti discreti per pilotare un display VGA 640x480 in modalità testo 80x30.
Per un display 640x480, il pixel clock è 25.175MHz, che ha un periodo di circa 40 ns. Non capisco come dovrei essere in grado di fornire un nuovo pixel al display così spesso.
L'architettura di base per il mio circuito è la seguente:
Il contatore binario per pixel orizzontali conta da 25.175 MHz a 800 (640 pixel visibili + 160 per portico anteriore, sincronizzazione, portico posteriore). A 800, incrementa il contatore di linee verticali (e resetta a 525 linee)
Usando la posizione orizzontale e verticale, ricava la coordinata x, y del carattere corrente.
Utilizzando le coordinate x, y del carattere, indicizzalo nella memoria video per recuperare il carattere ASCII.
Utilizzare il carattere ASCII per indicizzare nella ROM dei caratteri per ottenere un modello di bit per il carattere
Utilizzare il registro a scorrimento parallelo al seriale per convertire la linea di caratteri a 8 pixel in singoli bit alla frequenza di clock dei pixel
Se segui la catena, va: Counter -> RAM -> ROM -> Parallel to Serial Shift Register
Utilizzando i componenti più veloci che riesco a trovare, i ritardi di propagazione e i tempi di accesso si sommano a circa 15 ns + 20 ns + 70 ns + 15 ns = 120 ns, molto più grandi del periodo di 40 ns per 25 MHz.
Con risoluzioni e frequenze di aggiornamento ancora più elevate, puoi avere pixel clock ben al di sopra di 100 MHz che sarà un periodo di 10 ns.
Come è possibile fornire nuovi pixel al display ogni 10 ns quando solo il tempo di accesso per RAM / ROM è già ben al di sopra di esso, nemmeno considerando tutti gli altri segnali nel sistema?