ORIC ATMOS jr
GPU jr - Accueil
GPU jr
TECHNIQUE
TIMING
Je vais utiliser le timing qui a été adopté pour la norme EGA/VGA/SVGA.
Les résolutions proposées ne sont donc pas aussi innocentes que cela.
Récapitulatif de la norme vga:
SOURCE : Der einfache SVGA Generator
Resolution | Vertical Refresh Rate | Horizontal Frequency | Pixel Clock Frequency |
640 x 480 | 60 Hz | 31.5 KHz | 25.175 MHz |
640 x 480 | 72 Hz | 37.9 KHz | 31.5 MHz |
640 x 480 | 75 Hz | 37.5 KHz | 31.5 MHz |
640 x 480 | 85 Hz | 43.3 KHz | 36 MHz |
- Quelle fréquence de pixel devons nous prendre ?
- 31.5 MHz.
- Pourquoi ?
- Parce que 32 MHz / 2 = 16 Mhz, fréquence de fonctionnement du processeur !!
- De plus 32 ~ 31.5. Les moniteurs peuvent s'en accommoder !!
- Le mode d'origine de l'ula est un peu spécial : 240 x 200.
- Cela nous donne une fréquence de rafraichissement très élevée !!
- Mais il y a un autre problème. La fréquence horizontale étant incompatible avec celle admise par les moniteurs, il
faut trouver une solution pour pouvoir afficher les faibles résolutions.
- J'ai pensé à utiliser un scandoubler.
- LES DETAILS TECHNIQUES
-
- A l'origine, l'ULA accédait à la mémoire durant la période où le 6502 n'utilisait pas la mémoire.
- L'horloge qui cadençait le CPU est asymétrique c'est à dire que l'état bas de l'horloge était deux fois plus grande
que l'état bas.
- Ce qui nous laisse penser que le 6502 utilisé était une version 2 MHz et non pas 1 MHz.
- La conception de l'ULA ne répond pas à un désir à son remplacement mais à comprendre le fonctionnement de celle-ci.
- Le but de l'ULA II est de proposer une amélioration de son prédecesseur tout en gardant une compatibilité totale.
-
- La tache n'est pas aisée car :
- Les pixels affichés sont régis par des attributs.
- De nos jours, les pixels sont indépendants les uns des autres.
- L'ULA II ne sera pas connecté au téléviseur mais à un moniteur.
- FONCTIONNEMENT DE L'ULA
-
- LE MODE TEXTE
- L'ULA effectue deux accès mémoire.
- Le premier accés permet de déterminer si nous avons affaire à un attribut.
- Si c'est un attribut nous le stockons et nous affichons la couleur papier.
- Si c'est un caractère, nous allons chercher sa description en mémoire pour afficher les pixels.
-
- LE MODE HAUTE RESOLUTION
- L'ULA lit un octet.
- Si c'est un attribut nous le stockons et nous affichons la couleur papier.
- Sinon nous affichons les pixels.
- LES AJOUTS
-
- Nous allons ajouter une unité de calcul qui permettra d'effectuer un scrolling hard et divers effets tels que :
- Le remplissage avec une couleur / motif prédefini,
- Le tracé de ligne.
- Le problème vient des conflits d'accès mémoire. En effet :
- L'ULA est prioritaire pour afficher les pixels,
- Le CPU ayant une priorité moindre pour écrire/lire les octets en mémoire,
- L'unité de calcul, ayant la plus basse des priorités, pour écrire/lire en mémoire vidéo.
- Il faut donc ajouter un module d'arbitrage pour les accès mémoire.