Lors de ce deuxième TP, nous allons prendre en main un HDL(Hardware Description Language ou Langage de description de matériel en français), celui du livre nand2tetris : https://www.nand2tetris.org/ . Cette première question servira à vous aider à setup tous les outils nécessaires pour les autres questions.
Pour commencer, vous devez télécharger les différentes ressources à l'adresse suivante : https://drive.google.com/open?id=1xZzcMIUETv3u3sdpM_oTJSTetpVee3KZ
Assurez-vous d'avoir Java installer sur votre ordinateur, si ce n'est pas le cas, vous pouvez trouver un lien de téléchargement ici : https://www.java.com/en/download/manual.jsp
Sous Ubuntu :
sudo apt install default-jdk sudo apt install default-jre
Vous pouvez ensuite lancer le programme nandtetris/tools/HardwareSimulator:
WINDOWS :
Vous pouvez simplement double-cliquer sur HardwareSimulator.
LINUX/MacOS :
Vous pouvez ouvrir un terminal et lancer la commande "bash HardwareSimulator.sh" depuis le dossier nand2tetris/tools.
Une fois le programme lancé, voilà à quoi ressemble la fenêtre
Pour comprendre comment fonctionne le logiciel, nous allons vous guider dans la réalisation et le testing d'une porte logique simple : la porte NOT.
Un circuit est décrit par un fichier avec l'extension .hdl, vous pouvez trouver par exemple le circuit Not dans le dossier projects/01/Not.hdl. Le contenu devrait ressembler à ceci :
/** * Not gate: * out = not in */ CHIP Not { IN in; OUT out; PARTS: // Put your code here: }
Pour le moment, il déclare un circuit appelé Not qui a un seul input: in et un seul output out. Afin d'implementer le circuit, il faut compléter la partie PARTS en liant l'input à l'output au moyen de portes NAND qui sont notre brique de base. Le circuit peut être écrit comme suis :
CHIP Not { //Le mot clef CHIP permet de définir un nouveau circuit IN in; //input du circuit OUT out; //output du circuit PARTS: //Description du circuit Nand(a=in, b=true, out=out); //Not(in) == NAND(in,true) //Les keywords true et false sont acceptés //Ici on utilise la porte Nand afin de construire la porte Not }
Pour vous assurer du bon fonctionnement de vos circuits, vous devrez effectuer des tests, ces derniers sont décrits dans des fichiers .tst, exemple Not.tst
//Ne vous préoccupez par de ceci pour le moment load Not.hdl, output-file Not.out, compare-to Not.cmp, output-list in%B3.1.3 out%B3.1.3; //On set la valeur de in à 0 et on vérifie que le circuit se comporte correctement set in 0, eval, output; //On set la valeur de in à 1 et on vérifie que le circuit se comporte correctement set in 1, eval, output;
Not.tst compare l'output du circuit à celui spécifié dans Not.cmp pour vérifier que le circuit est correct,
Not.cmp :
| in | out | | 0 | 1 | | 1 | 0 |
La suite de screenshot suivante décrit l'utilisation du logiciel,
on commence par load le chip,
on choisit le bon fichier,
on va maintenant loader le script de test,
le nom du test est Not.tst,
on run le script,
on vérifie que le test a réussi,