###### tags: `SIN`
# TP1 Systèmes d'Information Numérique (SIN1)
Nous allons à présent aborder la seconde partie du cours qui porte sur la **logique combinatoire**. Nous utiliserons pour cela un logiciel de simulation de circuits logiques appelé **Logisim**.
## *Partie 1 : Installation et découverte de Logisim*
### 1. Installation de Logisim
Les consignes d'installation de Logisim sont données sur [cette page](http://www.cburch.com/logisim/download.html) (en anglais). Si vous ne parvenez pas à installer Logisim, vérifiez que vous avez une [version de Java à jour](https://www.java.com/fr/download/manual.jsp). Si le problème persiste, n'hésitez pas à contacter votre enseignant.
### 2. Premiers pas avec Logisim
1. Lorsque vous démarrez Logisim, vous voyez une fenêtre similaire à la suivante. Note : certains détails peuvent être légèrement différents.

2. Logisim est divisé en trois parties, appelées l'explorateur, le tableau des attributs et le canvas. Au-dessus de ces parties se trouvent la barre de menu et la barre d'outils.

3. Nous allons à présent créer une porte logique ET (AND Gate en anglais). Pour cela, on clique dans la barre d'outil sur l'élément logique correspondant (en forme de "D"), puis on clique dans le canvas à l'endroit où on souhaite le déposer.

4. Cette porte réalise l'opération logique ET entre deux variables d'entrée $a$ et $b$ et nous donne son résultat $s$ en sortie. Nous allons ajouter deux entrées, représentées par un carré vert dans la barre d'outils et une sortie, représentée par un rond vert.

5. Il est possible d'ajouter un label (une étiquette) pour chaque entrée et chaque sortie en modifiant le paramètre Label dans le tableau d'attributs :

6. Enfin, nous allons relier les entrées et les sorties à la porte logique en créant des fils avec le bouton gauche de la souris :

7. Pour tester notre système, on lance ensuite la simulation en cliquant sur l'icône de la main dans la barre d'outils. On peut alors activer ou désactiver les entrées en cliquant dessus (c'est-à-dire les mettre au niveau d'un $1$ ou d'un $0$ logique), et observer le résultat en sortie.

Lorsque vous avez réalisé les étapes 1 à 7, vous pouvez passer à la suite.
## *Partie 2 : Exercices théoriques et pratiques*
### 1. Exercices « théoriques » préliminaires
A- On considère une fonction logique combinatoire ayant un certain nombre d’entrées et un certain nombre de sortie. Lister dans un tableau et dans l’ordre de numération toutes les combinaisons possibles des entrées pour :
- Une fonction à 1 entrée
- Une fonction à 2 entrées
- Une fonction à 3 entrées
- Une fonction à 4 entrées
B- Rappeler les symboles (norme IEEE) des portes logiques suivantes : NOT, NAND, NOR, AND, OR, XOR. Donner l’équation logique de chacune de ces portes
### 2. Exercice « théorique » : équations et schéma logique
Donner le schéma logique correspondant à chacune des équations logiques suivantes :
$S= \overline{A+B}$
$S= A+B.C$
$S= A .\bar{B}+ \bar{A}.B$
$S= AB +\bar{A}BC+\bar{B}\oplus D$
### 3. Exercice « pratique » : simulation sur LogiSim
Redessiner et simuler sur LogiSim :
- les portes logiques de l'exercice 1-B,
- les schémas logiques de l'exercice 2.
#### Étapes à suivre :
1. Commencez par sauvegarder votre projet sous le nom TD4_SIN.
2. Cliquez dans le menu sur `Project>Add Circuit` pour ajouter un nouveau circuit et nommez-le.
3. Dans l'explorateur, le nom du circuit devrait apparaître dans la liste en dessous de "main". Cliquez dessus et réalisez le circuit.
4. Les éléments nécessaires peuvent être trouvés dans l'explorateur dans la catégorie *Wiring* et la catégorie *Gates*.
### 4. Exercice « pratique » : tables de vérité
Pour chacun des schémas réalisés, tester chaque combinaison à l’entrée puis donner la table de vérité liant les entrées et la sortie
### 5. Exercice « théorique » : création de portes logiques à partir de transistors.
Rappeler les schémas correspondants aux portes logiques NOT, NAND et NOR à base de transistors PMOS/NMOS (voir par exemple sur [ce site](https://www.irif.fr/~carton/Enseignement/Architecture/Cours/Gates/))
:::info
#### Rappel : fonctionnement des transistors
Le fonctionnement des transistors peut-être expliqué en utilisant la métaphore d'une valve dans un circuit hydraulique.

:::
### 6. Exercice « pratique » :
Nous avons vu que Logisim dispose de portes logiques déjà implémentées. Vous allez implémenter votre propre version de ces portes directement à partir de transistors. Pour cela :
1. Vous allez commencer par implémenter les portes NOT, NAND et NOR à partir de transistors et vérifier leur table de vérité. :warning: chaque circuit doit avoir son propre fichier, ce sera utile pour la suite.
2. Pour implémenter les portes AND et OR, vous allez utiliser une combinaison des portes que vous avez créées grâce à la fonction "Macro" de LogiSim.
:::info
### TUTO : création d'un composant macro
a. Cliquer sur le symbole rectangulairede la barre d'outil pour obtenir une vue macro.

b. Décider de l'apparence du composant en utilisant les outils de dessin proposés. Les entrées et les sorties sont indiquées respectivement par des carrés et des ronds et peuvent être déplacés.

c. Vous pouvez maintenant utiliser ce composant dans un nouveau circuit comme s'il s'agissait d'un nouvel outil.

:::
3. Combinez les composants macros créés pour les portes NAND, NOT et NOR dans un nouveau circuit pour réaliser les portes OR et AND.