Information

Deadline 05/04/2024 12:00:00
Submission limit No limitation

Sign in

Introduction au logiciel

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

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_main.png

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,

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_loadchip.png

on choisit le bon fichier,

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_selectChip.png

on va maintenant loader le script de test,

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_loadscript.png

le nom du test est Not.tst,

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_selectScript.png

on run le script,

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_runScript.png

on vérifie que le test a réussi,

https://inginious.info.ucl.ac.be/course/LSINC1102/$common/TP2/HWS_solution_is_correct.png

J'ai réussi à setup le logiciel

Répondez honnêtement, cette question ne sera pas prise en compte pour la note de participation.