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