Tag Archives: E8bC

E8BC : opérations arithmétiques

Une calculatrice élémentaire pour vérifier le fonctionnement des opérations arithmétiques ADD, SUB, MUL (unsigned), DIV(unsigned). Le résultat ne doit pas dépasser 8 bits (=255).

Les opérandes sont introduites en IN0,IN1 et l’opération est sélectionnée en IN2 via un clavier élémentaire. Résultat affiché sur OUT0. Toutes les données sont entrées ou affichées en hexadécimal.

Dépôt du projet : https://github.com/CodingPat/E8BC/

Continue reading E8BC : opérations arithmétiques

Advertisements

E8BC : l’assembleur disponible en version pre-alpha

A la veille de la rentrée, on franchit une étape importante dans le développement de notre plate-forme E8BC : l’assembleur en version alpha est disponible !

Vous pourrez donc coder en langage assembleur qui sera traduit en langage machine par le programme assembleur. Une étape fondamentale d’abstraction du hardware : c’est la première couche logicielle de notre plate-forme.

Attention : il s’agit d’une version pre-alpha, un nombre restreint d’instructions sont disponibles. Les instructions restantes seront ajoutées au fur et à mesure …

Un premier programme de test est disponible : leds_01.asm, qui permet d’incrémenter un compteur et d’afficher le résultat sous forme de leds.
Dépôt du projet : https://github.com/CodingPat/E8BC/

Continue reading E8BC : l’assembleur disponible en version pre-alpha

E8BC assembler

Maintenant que l’ensemble des instructions E8BC est en phase de finalisation, nous allons démarrer à présent le développement d’un assembleur qui nous permettra de traduire un programme source écrit en assembleur vers le code machine.

Pour ce faire, j’ai choisi le langage python. Le programme s’appelle : “assembler.py” et est placé dans le répertoire /script.

Le dépôt : https://github.com/CodingPat/E8BC/

Continue reading E8BC assembler

E8bC : exécution d’une instruction à la fois

step_debug

Jusqu’à présent, nous avons testé les instructions en les exécutant cycle par cycle via le signal MAN_CLK. Mais les instructions ayant des cycles variables, il n’est pas toujours aisé de passer rapidement sur plusieurs instructions pour atteindre l’instruction qui nous intéresse précisément. C’est le but de la petite modification avec le signal DEBUG.

Continue reading E8bC : exécution d’une instruction à la fois

E8BC : redesign des registres

En ajoutant les registres C,D, E, SP HI, SP LO, je me suis aperçu de l’augmentation exponentielle du nombre de signaux de contrôle et des instructions nécessaires pour pouvoir passer les informations d’un registre à l’autre. Il a été très simple d’augmenter le nombre de signaux de contrôle disponibles en utilisant 2 registres 32 bits (=64 signaux de contrôle) au lieu d’un seul de 32 bits (=32 signaux de contrôle).

Par contre la correspondance des instructions 8 bits avec une adresse en ROM correspondant aux signaux de contrôle entraîne des limitations. Sur 8 bits, 256 adresses sont disponibles. Les instructions allant de 3 à 7 cycles, il y a environ de la place pour une cinquantaine d’instructions, et c’est trop court !  J’ai donc dû faire un choix …

Continue reading E8BC : redesign des registres