| 223 | 234 |
|---|---|
| 0-… | 1 |
| 2 | |
| 3-4 | |
| 5-8 |
@0 Préparer une présentation orale résumant 2 à 3 notions abordées lors de la dernière séance de cours :

En 1801, Joseph Marie Jacquard conçoit un métier à tisser mécanique programmable avec cartes perforées.
En 1834, pendant le développement d’une machine à calculer destinée au calcul et à l’impression de tables mathématiques (la machine à différences), Charles Babbage eut l’idée d’y incorporer des cartes perforées du métier Jacquard, dont la lecture séquentielle donnerait des instructions et des données à sa machine. Il imagina, ainsi, l’ancêtre mécanique des ordinateurs électroniques d’aujourd’hui. Il n’acheva jamais sa machine analytique, faute de moyens financiers suffisants. Mais, il fut le premier à énoncer le principe d’un ordinateur.
Ada Lovelace, qui travailla avec Charles Babbage, écrivit le premier véritable programme informatique de l’histoire. Son portrait figure d’ailleurs sur les hologrammes des produits Microsoft.
Un siècle plus tard, l’architecture générale des ordinateurs a été imaginée par John Von Neumann, mathématicien et physicien américano-hongrois en 1945.
L’architecture dite de "Von Neumann" décompose l’ordinateur en 5 parties distinctes :

On trouve ci-dessous une représentation en 4 blocs avec regroupement des entrée et des sorties.
On note surtout que l’unité de controle et l’unité arithmétique et logique sont regroupées dans un bloc appelé "Central Processing Unit" (CPU) que l’on nomme en français "processeur" ou "micro-processeur" ou encore "puce" du faite de sa taille réduite.

Dans le diagrame ci-dessous, le bloc vert représente l’ordinateur. Les périphériques d’entrée (clavier, souris, camera, scanner…) et les périphériques de sortie (écran, enceintes, imprimante…) ne sont pas considérés comme inclu dans l’ordinateur mais extérieur à celui-ci.

Le diagramme suivant apporte un niveau de détail supplémentaire en ajoutant les "registres" qui sont des cases mémoire peu nombreuses, extrèmement rapide et très proche de la zone de l’unité arithmétique et logique.

D’autres diagrammes comme ci-dessous considère que les registres (ici seul le registre “accumulateur” est présenté) sont incluts dirrectement dans l’UAL (ALU en anglais).

Il existe de nombreuses représentations de l’Architectre de Von Neumann. Toutes sont en général correcte. Ce qui compte c’est de comprendre les liens entre elles et la logique qu’elle présentent.

Imaginons que nous programmions notre calculatrice pour calculer f(4) connaissant f(x) = 2x + 5 en utilisant un pseudo langage machine faisant appel à maximum quatre variables M, N, O et P ainsi que les quatre opérations arithmétiques élémentaires, à savoir :
M <- 2
N <- 4
O <- M x N
M <- 5
P <- O + M
@1 Traduire à l’aide du pseudo langage machine que nous avons créé les opérations suivantes
3 + 6 x 27 + 5 x 3f(4) sachant que f(x) = 3x2 + 5x + 12L’unité arithmétique et logique est le cœur de l’ordinateur. On la représente habituellement par ce schéma (en forme de V). Un “V” c’est presque un “cœur” non ?

Dans l’exercice précédant nous avons utilisé des variables M, N, O et P pour stocker les résultats intermédiaires des opérations à effectuer.
En réalité, quand on “programme” une UAL, nous devons utiliser les variables A, B, R, F et D de celle-ci.
Ce qui donne pour calculer f(4) connaissant f(x) = 2x + 5 :
A <- 2
B <- 4
F <- "x"
A <- R
B <- 5
F <- "+"
P <- R
@2 Traduire à présent, les opérations de l’exercice @1, à l’aide de ce nouveau pseudo langage machine utilisant les variables A, B, R, F et D de l’UAL.
La mémoire est un tableau dans lequel seront stockés aussi bien les variables que les programmes. Chaque cellule de ce tableau possède une adresse X. Il existe plusieurs façons de noter les valeurs : M[X], X pour une adresse (et $X pour une valeur ou #X), etc.
Exemple :
Adresse X |
Valeurs M[X] |
|---|---|
| 0 | 48 |
| 1 | 23 |
| 2 | H |
| 3 | e |
| 4 | l |
| 5 | l |
| 6 | o |
| 7 | A <- 2 |
| 8 | B <- 4 |
Donc :
X est égal à 3 alors M[X] vaut e, etX vaut 8 alors M[X] vaut B<-4.On peut donc parcourir toutes les cases de la mémoire en augmentant la valeur de X de 1 (X <- X + 1) et en lisant chaque case mémoire (M[X]) à chaque tour, à chaque “clic” d’horloge.
La mémoire contient deux types de choses :
M[8], l’instruction B<-4 qui signifie stocke 4 dans la case B).Voici un exemple de contenu stocké dans une mémoire de 256 cases numérotées (on dit “adressées”) de 0x00 à 0xFF. Il est difficile, à priori de distinguer les valeurs qui sont des nombre ou caractères à traiter et les bouts de programme… Normal tout n’est que binaire dans l’ordinateur !

On voit que :
0x03 alors M[0x03] vaut 0010 0100 c’est à dire 0x24, et0xFE alors M[0xFE] vaut 1101 1110, c’est à dire 0xDE.Le processeur (CPU) est constitué :

C’est cette dernière qui donne les ordres à toutes les autres parties de l’ordinateur. C’est un peu l’aiguillage des trains dans une gare. Les petits trains transportant des valeurs entre la mémoire et l’UAL et inversement.
Le processeur possède principalement quatre registres :
X de M[X] vu plus haut ;-);M[X]);
On peut résumer son fonctionnement par l’algorithme (ou pseudo code) suivant :
Répéter indéfiniment :
IR ← M[PC]
PC ← PC + 1
ACC ← OP(A, B)
Fin du répéter
Explications :
PC se trouve l’instruction à réaliser. Elle est chargée (stockée) dans IRPC est incrémenté (augmenté) de 1IR est exécutée (réalisée) et sont résultat est stocké dans ACC.PCIl existe plusieurs langages assembleurs. Il faut être capable de s’adapter d’un langage machine à l’autre. Mais il n’est pas demandé d’apprendre les instruction par coeur !!
En langage assembleur, on peut rencontrer des calculs simples (addition, soustraction, multiplication), des affectations (placer telle valeur de la mémoire vive dans tel registre et vice versa) et enfin des instructions de saut qui permettent de coder des instructions conditionnelles par exemple.
Ainsi, il y a trois possibilités pour accéder à un opérande (valeur sur laquelle va être opérée une opération) :
Exemple :
On imagine un ordinateur constitué d’une mémoire centrale et d’un jeu d’instructions.
Mémoire : tableau de 32 cellules. Chaque cellule constituée d’un octet.
Instructions : code opération sur 3 bits et une partie adresse sur 5 bits
Voici le tableau d’instructions :
| Instruction | Effet |
|---|---|
| LD X | Lit le contenu de la cellule X (ACC ← M[X]) |
| STO X | Enregistre dans la cellule X (M[X] ← ACC) |
| ADD X | Ajoute le contenu de la cellule X (ACC ← ACC +M[X]) |
| SUBB X | Soustrait le contenu de la cellule X (ACC ← ACC - M[X]) |
| JMP ADR | Saute à l’adresse ADR (CO ← A) |
| JMPZ ADR | Saute à l’adresse ADR si ACC est nul |
| JMPP ADR | Saute à l’adresse ADR si ACC est positif |
| JMPN ADR | Saute à l’adresse ADR si ACC est négatif |
Comme nous l’avons expliqué plus haut, la mémoire contient aussi bien les données que le programme. Dans ce cas, on considèrera que le programme commence à l’adresse 8 et que les adresses 0 à 7 sont réservées au stockage des données (ce n’est pas une règle et peut être organisé autrement pour un autre programme.)
Voici le contenu de la mémoire au démarrage du programme :
| Adresse | Contenu | Commentaires |
|---|---|---|
| 0 | 48 | ??? |
| 1 | 37 | ??? |
| 2 | Le résultat sera stocké ici, à la fin du programme ! | |
| 3 | … | Zone mémoire vide |
| 4 | … | Zone mémoire vide |
| 5 | … | Zone mémoire vide |
| 6 | … | Zone mémoire vide |
| 7 | … | Zone mémoire vide |
| 8 | LD 0 | Charge dans ACC la valeur 48 (actuellement stockée dans M[0]) |
| 9 | SUB 1 | ??? |
| 10 | STO 2 | ??? |
| 11 | END | ??? |
@3 Expliquer, ligne à ligne ce que fait ce programme, en complétant la colonne “commentaires” du tableau ci-dessus.
@4 Ecrire un programme qui traduit l’expression z = x + y . Le programme commencera à l’adresse 8 et écrira à l’adresse mémoire 2 la somme de deux nombres stockés aux adresses mémoire 0 et 1.
@5 Ecrire un programme commence à l’adresse 8 et écrit à l’adresse mémoire 2 le plus grand (le maximum) de deux nombres stockés aux adresses mémoire 0 et 1.
@6 Ecrire, ci-dessous un programme qui commence à l’adresse 8 et écrit à l’adresse mémoire 2 le plus grand (le maximum) de deux nombres stockés aux adresses mémoire 0 et 1 et qui écrit le nombre 0 à l’adresse mémoire 2 si les deux nombres sont égaux.
En simplifiant l’écriture et les commentaires on obtient :
31 # variable M[0]
42 # variable M[1]
LD 0 # ACC <- M[0]
SUB 1 # ACC ← ACC - M[1]
JMPP 13 # Le compte ordinal CO <- 13 si ACC >0
JMPN 16 # Le compte ordinal CO <- 16 si ACC <0
JMPZ 19 # Le compte ordinal CO <- 19 si ACC = 0
LD 0 # ACC <- M[0]
STO 2 # M[2] <- ACC
END # Fin du programme
LD 1 # ACC <- M[1]
STO 2 # M[2] <- ACC
END # Fin du programme
STO 2 # M[2] <- ACC
END # Fin du programme
On peut optimiser le programme :
31 # variable M[0]
42 # variable M[1]
LD 0 # ACC <- M[0]
SUB 1 # ACC ← ACC - M[1]
JMPP 17 # Le compte ordinal CO <- 17 si ACC >0
JMPN 20 # Le compte ordinal CO <- 20 si ACC <0
JMPZ 13 # Le compte ordinal CO <- 13 si ACC = 0 (INUTILE)
LD 0 # ACC <- M[0] (INUTILE)
SUB 1 # ACC ← ACC - M[0] (INUTILE)
STO 2 # M[2] <- ACC
END # Fin du programme
LD 0 # ACC <- M[0]
STO 2 # M[2] <- ACC
END # Fin du programme
LD 1 # ACC <- M[1]
STO 2 # M[2] <- ACC
END # Fin du programme
@7 Utiliser ce simulateur en ligne exécutant un programme “mystère”. Compléter le tableau ci-dessous et commenter chaque ligne. Méfiance, dans ce simulateur, le programme démarre à l’adresse mémoire 0 alors que les données sont stockée ensuite à partir de l’adresse mémoire 10.
| Adresse | Contenu | Commentaires |
|---|---|---|
| 1 | lecture 10 r0 | r0 ← M[10] |
| 2 | lecture 11 r1 | … |
| 3 | sautpos r1 5 | Si r1 > 0 alors CP ← 5 |
| 4 | inverse r1 | … |
| 5 | soustr r1 r0 | … |
| 6 | sautpos r0 5 | … |
| 7 | inverse r0 | r0 ← 0 - r0 |
| 8 | ecriture r0 12 | M[12] ← r0 |
| 9 | stop | |
| 10 | 12 | |
| 11 | -5 | |
| 12 | ? | … |
@8 Ecrire, à l’aide du simulateur, un programme qui écrit à l’adresse mémoire 12 le plus grand (le maximum) de deux nombres stockés aux adresses mémoire 10 et 11 et qui écrit le nombre 0 à l’adresse mémoire 13 si les deux nombres sont égaux.
Dans un ordinateur, le langage au plus proche de la machine n’est composé que de 0 et de 1, de Vrai ou de Faux. Pour concevoir les circuits électroniques effectuant les opérations logiques il a donc fallut “inventer” des outils mathématiques binaires.
George Boole (1815-1864) est un logicien, mathématicien, philosophe britannique. Il est le créateur de la logique moderne, fondée sur une structure algébrique et sémantique, que l’on appelle aujourd’hui algèbre de Boole.
Notons B l’ensemble {0; 1} que nous appellerons ici ensemble des booléens
Nous allons dans ce chapitre manipuler quelques opérateurs booléens, c’est à dire des fonctions d’une ou plusieurs variables dans B et à valeurs dans B.
Nous commençons par définir les opérateurs de base ET, OU, NON. Le nom de ces opérateurs vient de la convention d’associer 0 à “faux” et 1 à “vrai”.
Les variables python de type booléen peuvent prendre deux valeurs : False, True.
Les opérateurs et leur combinaison peuvent être décrit par une table de vérité, exemple :
Exemple :
Entrée A |
Entrée B |
Sortie S |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 0 |
Définition : L’opérateur de négation, noté ~ ou ¬ ou ! ou NOT , qui se lit "non", est une fonction définie sur B et à valeurs dans B définie par :
NON(0) = 1 autrement écrit ( ¬0 = 1 )NON(1) = 0 autrement écrit ( ¬1 = 0 )@10 A l’aide du site suivant, tester l’opérateur NOT, puis compléter la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
S= ~A |
|---|---|
| 0 | 1 |
| 1 | 0 |
A |
S= ~A |
|---|---|
| 0 | ??? |
| 1 | ??? |
Définition : L’opérateur de conjonction, noté “&” ou “*” ou “AND” ou encore “ET”, est une fonction définie sur B² et à valeurs dans B
Cet opérateur est défini par l’équivalence :
x & y = Vrai si et seulement si x et y sont tous deux Vrai.
Autrement dit (x . y = Vrai) ≡ (x = Vrai) ET (y = Vrai)
@11 A l’aide du site suivant, tester l’opérateur AND d’équation booléene (a . b = s) puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
S= A.B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
A |
B |
S= A.B |
|---|---|---|
| 0 | 0 | ??? |
| 0 | 1 | ??? |
| 1 | 0 | ??? |
| 1 | 1 | ??? |
@12 A l’aide du site suivant, tester l’opération booléenne ~a . ~b puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
~A |
~B |
S= ~A . ~B |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 |
A |
B |
~A |
~B |
S= ~A . ~B |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | ??? | ??? |
| 1 | 0 | 0 | ??? | ??? |
| 1 | 1 | ??? | ??? | ??? |
@13 A l’aide du site suivant, tester l’expression booléenne ~(~a . ~b) puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
~A |
~B |
U= ~A . ~B |
S= ~U |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 0 | 0 | 1 |
| 1 | 0 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 | 1 |
A |
B |
~A |
~B |
U= ~A . ~B |
S= ~U |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | ??? | ??? | ??? |
| 1 | 0 | 0 | ??? | ??? | ??? |
| 1 | 1 | ??? | ??? | ??? | ??? |
On remarque que ce circuit logique allume la lampe si au moins un des deux interrupteurs est allumé. Autrement il suffit que A ou B soit Vrai pour que Ssoit Vrai… intéressant !!! 
Définition : L’opérateur de disjonction, noté “|” ou “+” ou “OR” ou encore “OU”, est une fonction définie sur B² et à valeurs dans B
Cet opérateur est défini par l’équivalence :
x | y = Vrai si et seulement si au moins une des deux variables est Vrai.
Autrement dit (x + y = Vrai) ≡ (x = Vrai) OU (y = Vrai)
Le OU "Naturellement" utilisé en logique booléenne est un OU INCLUSIF (fromage ou dessert ou les deux) contrairement au OU “Naturellement” utilisé dans la vie de tous les jours (fromage ou dessert PAS les deux).
@14 A l’aide du site suivant, tester l’opérateur OR, d’équation booléene (a + b = s)** puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
S= A + B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
A |
B |
S= A + B |
|---|---|---|
| 0 | 0 | ??? |
| 0 | 1 | ??? |
| 1 | 0 | ??? |
| 1 | 1 | ??? |
@15 A l’aide du site suivant, tester l’opération booléenne ~a + ~b puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
~A |
~B |
S= ~A + ~B |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 | 0 |
A |
B |
~A |
~B |
S= ~A + ~B |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | ??? | ??? |
| 1 | 0 | 0 | ??? | ??? |
| 1 | 1 | ??? | ??? | ??? |
@16 A l’aide du site suivant, tester l’expression booléenne ~(~a + ~b) puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
~A |
~B |
U= ~A + ~B |
S= ~U |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
A |
B |
~A |
~B |
U= ~A + ~B |
S= ~U |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | ??? | ??? | ??? |
| 1 | 0 | 0 | ??? | ??? | ??? |
| 1 | 1 | ??? | ??? | ??? | ??? |
On remarque que ce circuit logique allume la lampe uniquement si les des deux interrupteurs sont allumés. Autrement il faut que A et B soient Vrai pour que Ssoit Vrai… intéressant !!! 
Définition : L’opérateur OU EXCLUSIF, noté ^ ou (+) ou XOR ou encore NEQV (pas équivalent), est une fonction définie sur B² et à valeurs dans B
Cet opérateur est défini par l’équivalence :
x ^ y = Vrai si et seulement si exactement une des deux variables x, y est Vrai, autrement dit, si les deux variables ont des valeurs différentes.
Ainsi (x (+) y = Vrai) est equivalent à (x != y)
Le OU "Naturellement" utilisé en logique booléenne est un OU INCLUSIF (fromage ou dessert ou les deux) contrairement au OU “Naturellement” utilisé dans la vie de tous les jours (fromage ou dessert PAS les deux).
@17 A l’aide du site suivant, tester l’opérateur XOR d’équation booléene (a (+) b = s)** puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
S= A (+)B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
@18 A l’aide du site suivant, tester l’expression booléenne ( A . ~B ) + (~A . B ) puis en déduire la table de vérité associée, et recopier le schéma de cablage électronique ET sa table de vérité.

A |
B |
~A |
~B |
U= ( A . ~B ) |
V= (~A . B ) |
S= U + V |
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 |
Définition : Une fonction booléene est obtenue par combinaison d’opérateurs booléens élémentaires et définie par une expression. On peut extraire de chaque expression booléenne une table de vérité. Celle-ci permet parfois de fournir une expression equivalente de la fonction mais plus “simple”.
Par exemple : l’expression booléene ~(~a . ~b) décrit la fonction booléene OR et peut s’écrire à l’aide d’une autre expression booléene (a + b).
@19 Sur le site suivant, il existe une porte logique permettant, à elle seule, de réaliser l’expression booléenne ~( x . y ). La trouver puis en déduire la table de vérité associée et faire une copie d’écran du schéma de cablage électronique.

A |
B |
U= A . B |
S= ~U |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
@20 A l’aide de cette nouvelle porte et d’une autre porte déjà connue, sur le site suivant, réaliser la fonction AND. Faire une copie d’écran du schéma de cablage électronique.

A |
B |
U= ~(A . B) |
S= ??? |
|---|---|---|---|
| 0 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
@21 Toujours à l’aide de cette porte réalisant ~( x . y ), et en la combinant avec d’autres portes connues, sur le site suivant, réaliser la fonction OR. Faire une copie d’écran du schéma de cablage électronique.

A |
B |
~A |
~B |
S= ~(~A . ~B) |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 | 1 |
On considère le schéma logique ci-dessous définissant une fonction inconnue S(A, B) et sa table de vérité associée :

A |
B |
K= ~A |
L= K & B |
M= L | A |
N= ~B |
S= M & N |
|---|---|---|---|---|---|---|
| 0 | 0 | |||||
| 0 | 1 | |||||
| 1 | 0 | |||||
| 1 | 1 |
@22 Compléter la table de vérité ci-dessus (SANS l’aide du simulateur de circuits logiques), puis en déduire l’expression booléene complète S= ((~... & ...) | ....). ~... et une version “simplifiée” S= ... . ~.... Et enfin, vérifier les deux expressions logiques (complète et simplifiée) sur le simulateur.
A |
B |
K= ~A |
L= K & B |
M= L | A |
N= ~B |
S= M & N |
|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 0 | 1 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 0 | 1 | 0 | 0 |
Cette expression numérique complexe S= ((~A & B) | A). ~B peut se simplifier puisque l’on voit que S est Vrai uniquement quand A est Vrai et B est NON(Vrai)(donc Faux).
L’expression équivalente mais plus simple devient donc S= A. ~B
A |
B |
~B |
S= A. ~B |
|---|---|---|---|
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
@23 On considère la fonction multiplexeur, notée muxet définie par mux(x,y,z)=((~x) & y) | (x & z).
- Complétez la table de vérité ci-dessous (sans l’aide du simulateur de circuits logiques).
- Vérifier le schéma logique sur simulateur et faire une copie d’écran.
x |
y |
z |
~x |
u= (~x) & y |
v= x & z |
mux(x,y,z)= u | v |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | ||||
| 0 | 0 | 1 | ||||
| 0 | 1 | 0 | ||||
| 0 | 1 | 1 | ||||
| … | … | … |
Nous avons vu que l’on peut créer de multiples fonctions en combinant différentes portes logiques entre elles.
Nous allons voir qu’en réalité nous pouvons faire tout cela en combinant un seul type de portes.
Ce qui veut dire aussi que l’on peut créer des portes OU, NON, ET, XOR… etc en combinant plusieurs portes d’un seul et même type.
C’est un peu comme si, au lieu de combiner 4 / 5 aliments différents pour faire un gâteau, il suffisait de combiner 4 / 5 fois de manières différentes le même aliment !!! Ca simplifierait les courses et le rangement dans le placard 
En informatique c’est une réalité et grâce à cela on peut fabriquer des microprocesseurs composés de millions de portes logiques différentes par cm2 à l’aide d’une seule porte générique… la porte NAND !!!

@24 Tentez de réaliser le meilleur score au jeu NANDGAME.
NAND = NON ETNOT = NON
AND = ET

NOT = NON
AND = ET
OR = OU
XOR = OU EXCLUSIF
HALF ADDER = DEMI ADDITIONNEUR
FULL ADDER = ADDITIONNEUR COMPLET