SOMMAIRE

 

1) GENERALITES 
1.1) Principe du projet
1.2) Caractéristiques
1.3) Ma vision du projet

2) HARDWARE
2.1) Carte de développement
2.2) Verilog, schéma global
2.3) Verilog, coeur CPU
2.4) Verilog, Vidéo VGA
2.5) Verilog, périphériques

3) OUTILS DEVELOPPEMENT SOFTWARE
3.1) Généralités
3.2) Langage A2Z Basic
3.3) Compilateur
3.4) Assembleur
3.5) Autres outils
3.6) Emulateur sur PC

4) LES LOGICIELS A2Z
4.1) Le Boot
4.2) Système fichier & OS
4.3) Editeur texte
4.4) Image viewer & map viewer
4.5) Le jeu : Micromachines

Blog (hackaday.io)

2.4) Verilog - VGA

La carte vidéo génère un signal VGA 640 x 480 60Hz.
Elle est composée de 2 parties :

1) Partie graphique, 256 couleurs.
La palette est fixe : sur les 8 bits j’alloue 2 bits à chacune des 3 couleurs (R, V, B), et 2 bits pour la luminosité.
La palette vient alimenter 3 convertisseurs numériques/analogiques 4 bits fait avec des composants discrets.

La mémoire vidéo est partagée avec le CPU, comprise dans la RAM 2Mo. On alloue 50% du temps à la carte vidéo, et 50% du temps au CPU. La vitesse d’exécution du CPU est donc fortement réduite.
Je gère un double buffer vidéo : on peut dessiner une image pendant qu’une autre est affichée. Sur ordre du logiciel, le basculement d’une image à l’autre se fait entre 2 balayages d’écran. Cela permet d’obtenir des mouvements fluides et sans « rayures » dans les animations. Il n’y a aucune accélération hardware graphique (gestion de sprites ou autre), tous les graphiques sont générés par logiciel.

2) Partie texte :
80 colonnes x 30 lignes, en surimpression par rapport au graphique. Avoir une sortie texte, c’est très pratique pour débugger un ordinateur, et commencer à coder les premiers programmes. Je ne regrette pas d’avoir codé ça.

Les 3 parties (cœur, VGA graphique, et VGA texte) doivent être parfaitement synchronisées entre elles. Vu le peu d’expérience en FPGA que j’ai, j’ai eu beaucoup de mal à coder cette synchronisation.

 

Voici la gestion d’adresse de la partie VGA.

F4HDK| Janvier 2017
f4hdk_arob_free.fr