Informações

Autores Nikita Tyunyayev, Aurélien Buchet
Prazo de entrega 02/04/2025 12:00:00
Limite de submissão 5 submissões
a cada 1 hora(s)

Entrar

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 installé 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.bat.

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.