Premier projet

Votre premier projet dans le cadre de ce cours est de construire les circuits de base que l’on retrouve dans tout ordinateur en utilisant exclusivement des fonctions NAND. Ces circuits sont:

Construisez ces différents circuits dans l’ordre indiqué en réutilisant pour chaque circuit votre circuit précédent.

Dans la suite du cours, vous devrez aussi utiliser des circuits qui manipulent des mots de 16 bits. Vous devez donc construire les circuits :

En outre, vous devez également construire les circuits suivants:

Ce projet est également décrit en ligne sur le site nand2tetris.org/project01.

La date limite pour ce projet est fixée au 18 février 2022 à 18h00. Vous devez déposer toutes vos solutions aux exercices pour cette date sur https://inginious.info.ucl.ac.be/course/LSINC1102/ Vous aurez un retour sur votre projet durant la séance de travaux pratiques de la semaine suivante.

Deuxième projet

Ce projet est à rendre par groupe de deux étudiants pour le 4 mars 2022 à 18h00 sur inginious.

  1. Construisez un demi-additionneur sur un bit, https://inginious.info.ucl.ac.be/course/LSINC1102/HalfAdder

  2. Construisez un additionneur complet sur un bit, https://inginious.info.ucl.ac.be/course/LSINC1102/FullAdder

  3. Construisez un additionneur sur 16 bits, https://inginious.info.ucl.ac.be/course/LSINC1102/Add16

  4. Construisez un circuit permettant d’incrémenter un nombre sur 16 bits, https://inginious.info.ucl.ac.be/course/LSINC1102/Inc16

  5. Construisez l’ALU qui a été présentée en détails dans la section précédente, https://inginious.info.ucl.ac.be/course/LSINC1102/ALU

Troisième projet

Ce projet est à rendre par groupe de deux étudiants pour le premier avril 2022 à 18h00 sur inginious.

  1. Construisez un circuit permettant de stocker un bit, https://inginious.info.ucl.ac.be/course/LSINC1102/Bit

  2. Construisez un circuit permettant d’implémenter un registre à 16 bits, https://inginious.info.ucl.ac.be/course/LSINC1102/Register

  3. Construisez un circuit permettant de supporter une mémoire RAM comprenant 8 registres de 16 bits chacun, https://inginious.info.ucl.ac.be/course/LSINC1102/RAM8

  4. Construisez un circuit permettant de supporter une mémoire RAM comprenant 64 registres de 16 bits chacun, https://inginious.info.ucl.ac.be/course/LSINC1102/RAM64

  5. Construisez un circuit permettant de supporter une mémoire RAM comprenant 512 registres de 16 bits chacun, https://inginious.info.ucl.ac.be/course/LSINC1102/RAM512

  1. Construisez un circuit permettant d’implémenter un compteur de programme, https://inginious.info.ucl.ac.be/course/LSINC1102/PC

Quatrième projet

L’objectif de ce quatrième projet, qui se fera de façon individuelle, est de démontrer votre connaissance de la programmation en langage d’assemblage. Vous devrez écrire deux petits programmes dans ce langage pour le 6 mai 2022 à 18h00. Ce projet vaut trois points et sera le dernier projet côté pour le cours cette année.

  1. Implémentez un programme en langage d’assemblage qui permet de calculer le résultat de la multiplication entre deux naturels. Ce programme est à déposer sur inginious : https://inginious.info.ucl.ac.be/course/LSINC1102/MultAsm Cet exercice compte pour un point sur les trois points de ce projet.

  2. Vous avez maintenant appris les bases vous permettant d’écrire un petit programme en langage d’assemblage. En utilisant ces connaissances, soyez créatifs et proposez un programme non trivial qui traite des données sous la forme d’un tableau, d’une matrice ou de chaînes de caractères. Le type de traitement est laissé à votre choix. Inventez un traitement qui est utile et écrivez d’abord un petit programme python qui réalise un traitement de votre choix. Écrivez un script de test qui permettra de valider votre programme. Ensuite, traduisez ce programme en minuscule langage d’assemblage et utilisez votre script de test pour démontrer le bon fonctionnement de votre programme. Justifiez vos choix éventuels dans les commentaires de votre programme et du script de test. Cette seconde partie du projet comptera pour 2 points, le programme et le script de test auront le même poids.