TP Logique numérique

jeu. 10 septembre 2009

Introduction

Le but de ce TP est de vous familiariser avec la logique numérique en construisant de petits circuits logiques. Ces circuits ne comportent que des portes NOT, AND, OR et XOR ainsi qu'un doubleur de signal. A l'intérieur d'un petit robot, ils permettent de mettre en relation quatre radars (dont le rôle est d'envoyer un signal si le robot s'approche d'un mur) et quatre réacteurs (qui permettent au robot de se déplacer dans le plan de la simulation, suivant les quatre points cardinaux nord, sud, est et ouest, notés respectivement N, S, E et O). Différents exercices vous sont proposés illustrant un parcours plus ou moins difficile à réaliser pour le robot. A chaque parcours doit correspondre un circuit adapté, soit construit par vos soins, soit proposé au départ.

Préliminaires

Techniques

  1. Créer le répertoire Robot dans votre répertoire de travail (man mkdir).
  2. Faire de Robot votre répertoire de travail (man cd).
  3. Ajouter à votre variable d'environnement PATH, le chemin d'accÚs /usr/local/irobot par la commande setenv PATH $PATH\":/usr/local/irobot\".
  4. Recopier tous les fichiers d'extension .niv présents dans le répertoire /usr/local/irobot dans votre répertoire Robot.
  5. Lancer l'exécutable irobot.tcl.

Théoriques

Nous allons nous servir des notions de logique vues en cours pour résoudre les exercices de ce TP. Dans ce contexte, on considère les variables booléennes RN, RS, RE, RO. La variable booléenne RX vaut 1 si le radar X "détecte" un mur au point cardinal X et 0 sinon. Un radar "détecte" un mur si le robot est contre ce mur. Par exemple, RN vaut 1 si le radar nord "détecte" un mur au nord. Une fonction booléenne est associée à chaque moteur, qui dépend des 4 variables booléennes RN, RS, RE, RO. Nous considérons les quatre fonctions booléennes MN(RN, RS, RE, RO), MS(RN, RS, RE, RO), ME(RN, RS, RE, RO) et MO(RN, RS, RE, RO) qui décrivent le déplacement du robot dans le plan. Par exemple, MN(1, 1, 0, 1) = 1 signifie que le moteur nord est activé si le robot est entouré de murs au nord, au sud et à l'ouest.


Exercice 1. A la découverte du monde

Soit le parcours à effectuer par le robot suivant, représenté par une flèche rouge, la première chose à faire est de discrétiser le déplacement du robot le long de ce parcours comme on peut le voir sur le schéma de droite ci-dessous :

parcours choisi pour le robot discrétisation du chemin
image1 image2

A chaque étape de ce parcours, on étudie le comportement de chaque moteur en fonction de l'environnement immédiat du robot, c'est à dire en fonction de la présence ou non d'un mur suivant les 4 points cardinaux. La formalisation de cette étude passe par le remplissage de 4 tableaux de Karnaugh associés aux 4 moteurs du robot. Pour les remplir, on procède de la manière suivante : case après case, on détermine quel(s) mur(s) entoure(nt) le robot et le comportement associé, i.e quel(s) reacteur(s) allumer.

Par exemple, pour la position initiale du robot représentée ci-dessus, il y a un mur à l'ouest et un mur au sud (donc les radars ouest et sud vont envoyer un signal, ce qui correspond à RO=1 et RS=1) et le robot devant aller vers l'est, on doit allumer uniquement le moteur MO (comportement représenté en rouge ci-dessous) soit MN(0, 1, 0, 1)=0, MS(0, 1, 0, 1)=0, ME(0, 1, 0, 1)=0 et MO(0, 1, 0, 1)=1. Par la suite, le robot étant dans la case suivante, il n'a plus qu'un mur au sud et doit toujours aller vers l'est, le moteur MO reste donc allumé suivant cette condition (représenté en vert ci-dessous). Ce comportement est vrai jusqu'à ce que le robot atteigne le coin sud-est. A ce moment là (RS=1et RE=1), on souhaite que le robot soit propulsé vers le haut, il faut donc simultanément couper le moteur MO et allumer le moteur MS (représenté en bleu ci-dessous). Enfin, lorsque le robot n'a plus qu'un mur à l'est, il doit continuer sa progression vers le nord (représenté en rose ci-dessous). Une fois parvenu au drapeau, l'exercice est terminé.

image3 00 01 11 10 image3 00 01 11 10 image3 00 01 11 10 image3 00 01 11 10
00       0 00       1 00       0 00       0
01 0 0   0 01 0 0   1 01 0 0   0 01 1 1   0
11         11         11         11        
10         10         10         10        
  MN   MS   ME   MO

Une fois les tableaux de Karnaugh remplis, on en déduit la forme simplifiée soit :

  • pour MS : ¬Rn^Re^¬Ro
  • pour MO : ¬Rn^Rs^¬Re

Ce qui correspond au circuit numérique représenté ci-dessous :

premier

  1. Construisez le circuit représenté ci-dessus et constatez son bon fonctionnement
  2. Notons qu'il existe de nombreuses cases vides dans le tableau de Karnaugh correspondant à des valeurs indéterminées de la fonction associée. Ces valeurs peuvent être remplacées soit par des 0 soit par des 1. Dans cet exercice, notons que MO(x, x, 0, x)=1 avec x=0 ou x=1, ce qui signifie que l'on peut choisir d'allumer le moteur ouest quel que soit les états des radars nord, sud et est. Pour simplifier le problème, on peut donc choisir de mettre la valeur 1 dans le tableau de Karnaugh de MO quelles que soient les valeurs de x. On en déduit la nouvelle forme simplifiée associée à MO(RN, RS, RE, RO) = ¬Re. Faites un raisonnement similaire pour le moteur MS. Construisez les circuits correspondant et vérifiez le déplacement du robot.
  3. Etablissez, grâce aux tableaux de Karnaugh, le circuit correspondant au parcours ci-dessous, construisez-le puis testez-le :

autre


Exercice 2. Chambre de bonne

Soit le nouvelle configuration suivante :

deuxième tableau

Construisez les 4 tableaux de Karnaugh suivant le parcours proposé. Que constatez-vous ?


Exercice 3. Et si le vrai luxe c'était l'espace ?

Soit le chemin suivant :

troisième tableau
  1. Discrétisez chaque étape du chemin en remplissant les champs correspondants dans les tableaux de Karnaugh
  2. Déterminez les formes simplifiées en ajoutant des X dans certains cas indéterminés et en remplaçant dans un deuxième temps certains par des 1
  3. Câblez le circuit correspondant et constatez si la solution proposée est correcte.