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.2) Verilog - Schéma global


L’architecture est Von-Neumann (par opposition à une architecture Harvard), ce qui simplifie énormément les choses, et donne plus de souplesse. 1 seule zone mémoire est utilisée pour les données, pour le code.

Au sein d’un mot de 16bits, les données sont représentées en « little endian », ça me parait plus logique.

Fréquence :
Attention, la fréquence d’exécution n’est pas optimale. J’aurais dû en théorie faire tourner tout l’ordinateur à 50MHz. A une telle fréquence, les 3/4 du temps sont alloués au cœur, et 1/4 est alloué au VGA. On a donc l’équivalent d’un cœur seul à 37MHz.
Mais j’ai eu d’énormes problèmes de stabilité à 50MHz, certainement dus à la non maitrise des « timing constraint » du FPGA. C’est mon premier projet FPGA, j’ai encore des choses à apprendre.
Je n’ai pas voulu insister, j’ai donc divisé par 2 la fréquence, donc 25MHz, avec une répartition 50% / 50% entre cœur et VGA, donc un équivalent d’un cœur à 12MHz, soit 3 fois moins performant que prévu.
C’est une grosse déception, mais je n’avais pas envie de rester bloqué sur ce sujet.

Attention :
Il faut faire très attention à la taille des mots manipulables dans chaque périphérique.
Seule la SRAM accepte des manipulations 8 bits ou 16bits au choix.
La ROM de boot n’accepte que des manipulations 16bits.
La RAM texte n’accepte que des manipulations 8 bits, et elle ne peut pas être lue par le CPU.
Il n’y a aucun garde-fou dans le compilateur ou ailleurs, donc attention si vous codez quelque chose. 

Pour tous les registres internes, et le cache, il n’y a aucun choix possible, donc pas d’erreur possible.

F4HDK| Janvier 2017
f4hdk_arob_free.fr