INF1600 Travail pratique 1 Périphériques et architecture Département de Génie I

INF1600 Travail pratique 1 Périphériques et architecture Département de Génie Informatique et Génie Logiciel Polytechnique Montréal Polytechnique Montréal Département de Génie Informatique et Génie Logiciel INF1600 2/10 Hiver 2021 1 Introduction et sommaire Vous commencez aujourd’hui le premier travail pratique du cours INF1600. Le laboratoire porte sur la manipulation des bits et le processeur à accumulateur. 1.1 Remise Voici les détails concernant la remise de ce travail pratique :  Méthode : sur Moodle, une seule remise par équipe, incluant un rapport PDF et les fichiers sources des exercices 1, 2 et 3.  Format: un rapport PDF. Incluez une page titre où doivent figurer les noms et matricules des deux membres de l’équipe, votre groupe de laboratoire, le nom et le sigle du cours, la date de remise et le nom de l’École. Dans une seconde page, incluez le barème de la section 1.2. Finalement, pensez à incluez les réponses aux questions et des captures d’écran lorsque requis.  Pour l’exercice 1, remettez le fichier source complété sous la forme <matricule1>-<matricule2>-<tp1exo1>.c  Pour l’exercice 2, remettez le fichier source complété sous la forme <matricule1>-<matricule2>-<tp1exo2>.vhdl  Pour l’exercice 3, remettez le fichier source complété sous la forme <matricule1>-<matricule2>-<tp1exo3>.vhdl  Distribution : les deux membres de l’équipe recevront la même note. Attention : L’équipe de deux que vous formez pour ce TP sera définitive jusqu’au TP5. Il ne sera pas possible de changer d’équipe au cours de la session. Polytechnique Montréal Département de Génie Informatique et Génie Logiciel INF1600 3/10 Hiver 2021 1.2 Barème Le travaux pratiques 1 à 5 sont notés sur 4 points, pour un total de 20/20 Le TP1 est noté selon le barème suivant. Reproduisez ce tableau dans le document PDF que vous remettrez. TP 1 /4,00 Exercice 1 /1,50 Q1 /0,50 Q2 /0,50 Q3 /0,50 Exercice 2 /1,00 Q1 /0,25 Q2 /0,25 Q3 /0,25 Q4 /0,25 Exercice 3 /1,50 Q1 /0,50 Q2 /1,00 Polytechnique Montréal Département de Génie Informatique et Génie Logiciel INF1600 4/10 Hiver 2021 2 Exercice 1 : Opérations binaires et de décalage L’objectif de cet exercice est de vous familiariser avec les opérateurs binaires (&, |, ^, << , >>). Vous devez compléter des parties manquantes d’un code afin de décoder un fichier encodé. Dézipper le dossier INF1600_TP1.zip fourni et changer le dossier de travail : cd exo1 On vous fournit le fichier à compléter (exo1.cpp), accompagné d’un makefile. Vous pouvez faire les commandes suivantes dans un terminal depuis le répertoire exo1. $ make $ ./exec Q1 : Compléter la fonction parity qui prend en paramètre un short1 c et retourne 0 ou 1 selon que le nombre de 1 contenu dans l’encodage binaire de c est respectivement pair ou impair. Par exemple, si c vaut 14 (0b1110), la fonction retournera 1 puisque 14 contient trois 1. Si c vaut 15 (0b1111), la fonction retournera 0 puisqu’il y a quatre 1 dans ce cas. Attention : votre fonction ne doit pas compter le nombre de 1 mais utiliser les opérateurs binaires (&, |, ^, <<, >>) pour déterminer la parité. Cela se fait en effectuant un XOR sur l’ensemble des bits du mot. Q2 : Compléter la fonction hamming_encoding qui prend en entrée un char et le convertit en short selon l’encodage de Hamming2. Pour ce faire, votre fonction ne doit utiliser que les opérateurs binaires (&, |, ^, <<, >>) et la fonction parity réalisée en Q1. L’encodage se fait selon le schéma suivant : short char 1 0 0 0 0 1 1 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 0 8 9 10 11 12 13 14 15 forcés à 0 p0 p1 p2 p3 Figure 1 Illustratiuon de l’encodage de Hamming. Les bits de parité p0, à p3 s’obtiennent comme suit : p0 = parity(b2, b4, b6, b8, b10, b12, b14) p1 = parity(b2, b5, b6, b9, b10, b13, b14) p2 = parity(b4, b5, b6, b11, b12, b13, b14) 1 Un short est un mot de 16 bits. 2 Le code de Hamming permet la détection et la correction d’une erreur. Plus d’information peut être trouvé en suivant ce lien : https://fr.wikipedia.org/wiki/Code_de_Hamming. Polytechnique Montréal Département de Génie Informatique et Génie Logiciel INF1600 5/10 Hiver 2021 p3 = parity(b8, b9, b10, b11, b12, b13, b14) Le calcul des bits de parité est illustré ci-après : p0 0 1 0 0 0 1 2 3 4 5 6 7 0 1 0 0 8 9 10 11 12 13 14 15 p1 1 1 0 0 0 1 2 3 4 5 6 7 1 1 0 0 8 9 10 11 12 13 14 15 p2 0 0 0 0 0 1 2 3 4 5 6 7 0 0 0 0 8 9 10 11 12 13 14 15 p3 0 0 1 1 0 0 0 0 Q3 : Compléter la fonction hamming_decoding qui prend en entrée un short et le convertit en char selon le schéma de décodage de Hamming3 qui permet de détecter et de corriger une erreur si elle se produit. Ceci s’effectue en calculant la bits c0 à c3 comme suit : c0 = parity(b0, b2, b4, b6, b8, b10, b12, b14) c1 = parity(b1, b2, b5, b6, b9, b10, b13, b14) c2 = parity(b3, b4, b5, b6, b11, b12, b13, b14) c3 = parity(b7, b8, b9, b10, b11, b12, b13, b14) Si le mot binaire formé par les bits c0 à c3 (c3c2c1c0) donne 0, aucune erreur n’est détectée. Sinon, il suffit d’inverser le bit à la position c3c2c1c0. Le principe est illustré ci-après : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 short 0 1 1 0 0 0 0 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 0 8 9 10 11 12 13 14 15 c0 = 0 0 1 0 0 0 1 2 3 4 5 6 7 0 1 0 0 8 9 10 11 12 13 14 15 c1 = 0 1 1 0 0 0 1 2 3 4 5 6 7 1 1 0 0 8 9 10 11 12 13 14 15 c2 = 0 0 0 0 0 0 1 2 3 4 5 6 7 0 0 0 0 8 9 10 11 12 13 14 15 c3 = 0 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 8 9 10 11 12 13 14 15 short char 1 0 0 0 0 1 1 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 c3c2c1c0 = 0, il suffit de recopier le short et de reporter les bits vers leur position dans le char 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 short 0 1 1 0 0 1 0 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 0 8 9 10 11 12 13 14 15 c0 = 0 0 1 0 0 0 1 2 3 4 5 6 7 0 1 0 0 8 9 10 11 12 13 14 15 c1 = 1 1 1 1 0 0 1 2 3 4 5 6 7 1 1 0 0 8 9 10 11 12 13 14 15 c2 = 1 0 0 1 0 0 1 2 3 4 5 6 7 0 0 0 0 8 9 10 11 12 13 14 15 c3 = 0 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 8 9 10 11 12 13 14 15 short char 1 0 0 0 0 1 1 0 0 1 2 3 4 5 6 7 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 c3c2c1c0 = 0110(2) = 6, il faut inverser le bit à la position 6 – puis reporter les bits vers leur position dans le char Cas sans erreur Cas avec erreur Ici aussi, votre fonction ne doit utiliser que les opérateurs binaires (&, |, ^, << , >>) et la fonction parity réalisée en Q1. 3 Le code de Hamming permet la détection et la correction d’une erreur. Plus d’information peut être trouvé en suivant ce lien : https://fr.wikipedia.org/wiki/Code_de_Hamming. Polytechnique Montréal Département de Génie Informatique et Génie Logiciel INF1600 6/10 Hiver 2021 Une fois l’exercice complété, le programme exec devrait afficher ce qui suit : Q1 parity(14) retourne 1 parity(15) retourne 0 Q2 Le code hexadecimal de 'a' est 0x61 Le code de Hamming de 'a' donne 0x0606 Q3 Le code hexadecimal de 'a' est 0x61 Le code de Hamming de 'a' donne 0x0606 Une fois decode, on obtient 0x61, cad uploads/s1/ enonce-du-laboratoire-1.pdf

  • 40
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Mar 13, 2022
  • Catégorie Administration
  • Langue French
  • Taille du fichier 0.8624MB