Je travaille sur un circuit numérique utilisant des composants discrets pour piloter un écran VGA 640x480 en mode texte 80x30.
Pour un affichage 640x480, l'horloge pixel est de 25,175 MHz, qui a une période d'environ 40 ns. Je ne comprends pas comment je suis censé pouvoir fournir un nouveau pixel à l'affichage aussi souvent.
L'architecture de base de mon circuit est la suivante:
Le compteur binaire pour les pixels horizontaux compte de 25,175 MHz à 800 (640 pixels visibles + 160 pour le porche avant, la synchronisation, le porche arrière). À 800, incrémenter le compteur de lignes verticales (et réinitialiser à 525 lignes)
En utilisant la position horizontale et verticale, dérivez les coordonnées x, y du caractère actuel.
En utilisant les coordonnées x, y du caractère, indexez dans la mémoire vidéo pour récupérer le caractère ASCII.
Utilisez le caractère ASCII pour indexer dans la ROM de caractères pour obtenir le modèle de bits pour le caractère
Utilisez un registre à décalage parallèle à série pour convertir une ligne de caractères de 8 pixels en bits individuels à une fréquence d'horloge de pixels
Si vous suivez la chaîne, cela va: Compteur -> RAM -> ROM -> Parallel to Serial Shift Register
En utilisant les composants les plus rapides que je puisse trouver, les délais de propagation et le temps d'accès totalisent environ 15 ns + 20 ns + 70 ns + 15 ns = 120 ns, bien plus que la période de 40 ns pour 25 MHz.
À des résolutions et des taux de rafraîchissement encore plus élevés, vous pouvez avoir des horloges de pixels bien au-dessus de 100 MHz, ce qui représente une période de 10 ns.
Comment est-il possible de fournir de nouveaux pixels à l'affichage toutes les 10 ns alors que le temps d'accès à la RAM / ROM est déjà bien supérieur, sans même prendre en compte tous les autres signaux de votre système?