Portes logiques

Identification

Infoforall

2 - Portes logiques


Nous avons vu comment l'ordinateur avait été concu et pensé au fil du temps.

Nous avons vu qu'il comporte plusieurs parties indépendantes mais communicantes :

  • Le processeur qui contient
    • Unité de Contrôle (UDC) qui gère les instructions basiques
    • Unité Arithmétique et Logique (UAL) qui gère les calculs
    • des registres : de très petites mémoires mais très rapides d'accès
  • Une mémoire centrale

Nous allons aujourd'hui nous pencher sur la délicate question de l'action de l'UAL.

Que peut faire l'UAL rapidement, et comment ? Comment fonctionne cette partie de l'ordinateur ?

Nous allons notamment reparler des XOR :

Les XOr : le bleu, le rouge et le gris

Les schémas électriques interactifs de cette page ont été générés à l'aide du site https://logic.modulo-info.ch/.

Evaluation ✎ : -

Documents de cours : open document ou pdf

1 - Rappels de logique

1.1 Les tables de vérité

Expression a Expression b a AND b a NAND b a OR b a NOR b a XOR b
FAUX FAUX FAUX VRAI FAUX VRAI FAUX
FAUX VRAI FAUX VRAI VRAI FAUX VRAI
VRAI FAUX FAUX VRAI VRAI FAUX VRAI
VRAI VRAI VRAI FAUX VRAI FAUX FAUX
1.2 Algèbre de Boole

Algèbre booléenne
  • 0 pour FAUX
  • 1 pour VRAI

Attention, les symboles + et . ci-dessous ne correspondent pas à l'addition et la multiplication classique. Ils ne s'appliquent qu'à des termes booléens et l'addition réagit de cette façon :

1 + 1 = 1

1 + 1 + 1 = 1

AND

Le AND correspond à la multiplication booléenne : \({a.b}\)

OR

Le OR correspond à l'addition booléenne : \({a+b}\)

NAND

Le NAND est le complément du AND : \(\overline{a.b}\)

NOR

Le NOR est le complément du OR : \(\overline{a+b}\)

XOR

Le XOR  : \(a \oplus b = a.\overline{b}+\overline{a}.b\)

Lois de De Morgan

\(\overline{a.b} = \overline{a} + \overline{b}\)

not(a and b) = (not a) or (not b)

not(a and b) =  not a  or  not b

Version symétrique avec le OR :

\(\overline{a+b} = \overline{a} . \overline{b}\)

not(a or b) = (not a) and (not b)

not(a or b) =  not a  and  not b

2 - Un peu d'électricité

B C E G D S G S D 5V True 0V False 0V False 5V True Vcc = 5V 5V 0V 0A 0V E E1 E2 E2 S a b s a s ET & OU ≥1 & ≥1 =1 1 a a a s

L'informatique est basée de nos jours sur l'électricité et plus particulièrement l'électronique.

L'un des composants matériels de base des ordinateurs est le transistor. On le trouve dans toutes les parties de ces machines.

Survolons donc rapidement les notions que vous devriez connaître, à défaut de vraiment maitriser.

2.1 Courant électrique

Un courant électrique est dû à un mouvement global d'électrons. Les électrons se dirigent massivement dans la même direction. C'est l'analogie du courant d'eau où les molécules d'eau se dirigent globalement dans la même direction.

2.2 Intensité électrique

On caractérise l'importance d'un courant électrique par une grandeur algébrique

  • qu'on nomme intensité électrique
  • qu'on représente par la lettre I
  • qu'on mesure en Ampère

Pour information, 1A correspond au transport de plus de 6 milliards de milliards d'électrons par seconde. Plus facile de mesurer ça en Ampère non ?

2.3 Tension électrique

Un courant électrique est constitué d'électrons. Encore faut-il leur donner envie de bouger !

C'est là qu'intervient la tension électrique entre deux points, A et B par exemple. Plus la tension électrique entre deux points est grande, plus les électrons auront tendance à se déplacer.

C'est d'ailleurs la raison physique de l'existence des éclairs lors des orages : la tension électrique entre les deux zones devient tellement grande que les électrons parviennent à se déplacer alors que l'air est normalement un isolant électrique ! Il faut dire qu'on atteint plusieurs millions de Volt.

Animation montrant un éclair qui décharge le surplus d'électrons
Eclair, animation du domaine public

Une fois les électrons déplacés, la tension repasse sous le seuil où l'air est isolant. C'est fini, jusqu'à la recharge progressive et l'arrivée du prochain éclair.

On peut donc voir la tension électrique entre deux points A et B comme une mesure de la différence de charges électriques entre le point A et le point B.

On définit pour cela la tension électrique UAB = VA - VBVA désigne le potentiel électrique du point A.

Tensions et potentiels se mesurent en VOLT.

On peut voir le potentiel électrique VA comme une mesure des charges électriques présentes au point A.

Ainsi une batterie possède bien

  • une borne + (on y trouve plus de charges électriques positives que de charges négatives) et
  • une borne - (on y trouve plus de charges électriques négatives que positives).
Symbole d'une pile
Symbole d'une pile tiré de physique-chimie-college.fr

SI on permet aux électrons de se déplacer en plaçant un conducteur entre les deux, l'intensité électrique sera d'autant plus forte que la tension électrique est forte.

2.4 Pour information : tensions limites de danger

Le danger pour un être humain est bien la différence de tension entre deux points (main - pied par exemple).

Avec un système générant une tension continue

  • Milieu mouillé : sans danger si U < 30 V
  • Milieu humide : sans danger si U < 60 V
  • Milieu sec : sans danger si U < 120 V

Avec un système générant une tension alternative

  • Milieu mouillé : sans danger si U < 12 V
  • Milieu humide : sans danger si U < 25 V
  • Milieu sec : sans danger si U < 50 V (définition de la Très Basse Tension)
2.5 Résistance électrique

Loi d'Ohm

Un conducteur dit ohmique possède une caractéristique : il s'oppose au courant électrique sans être isolant.

On caractérise cette opposition au passage du courant continu par une grandeur algébrique

  • qu'on nomme résistance électrique
  • qu'on représente par la lettre R
  • qu'on mesure en Ohm (Ω)

Sur un tel conducteur, on peut utiliser la loi d'Ohm :

$$U = R.I$$

On peut déduire de la loi d'Ohm que pour une source de tension U constante, on a :

$$I = \frac{U}{R}$$.

Cela veut donc dire que plus la résistance électrique est grande, plus l'intensité électrique est petite. Logique.

Deux cas particuliers

Fil conducteur : R = 0

Un fil conducteur est conçu pour laisser passer le courant. On peut considérer que sa résistance est nulle en première approche.

D'après la loi d'Ohm, on en déduit facilement que U = 0.I = 0V.

Il n'existe donc aucune tension aux bornes d'un fil conducteur et la tension est intégralement retransmise : si l'un des côtés est à 5V, l'autre côté est à 5V également. En réalité, l'intégralité du fil est à 5V.

Résistor non parcouru par un courant : I = 0

Un résistor dont l'intensité I est nulle possède à ses bornes une tension U de 0V : U = R.0 = 0V.

Il se comporte donc comme un simple fil conducteur et on peut donc le remplacer mentalement par un fil.

01° Calculer la tension nécessaire pour établir une intensité de 0,002 A à travers un résistor de 2000 Ω.

...CORRECTION...

U = R . I = 2000 * 0.002

U = 4 V

02° Calculer l'intensité obtenue pour une tension continue de 5V et une résistance de 40 Ω.

...CORRECTION...

U = R . I

U / R = I

I = 5 / 40

I = 0.125 A

3 - Transistor

Aucune connaissance n'est exigible sur les transistors en NSI. Toute cette partie n'est qu'un ensemble de connaissances de culture générale.

Le transitor est le composant électronique principal de tout ordinateur, que ce soit dans le processeur ou dans la mémoire.

3.1 Description du transistor

Dans le cadre de cette introduction à l'architecture interne d'un ordinateur, on peut voir le transistor comme un interrupteur commandé par une action électrique plutôt que mécanique.

Image montrant plusieurs types de transistors
Des transistors, Par ArnoldReinhold — Travail personnel, CC BY-SA 3.0,

Voyez le transistor comme un composant possédant 3 bornes :

  • une borne qui sert de commande. Selon la technologie du transistor, on doit y imposer un courant ou une tension.
  • deux autres bornes qui servent à laisser passer le courant, ou pas.

Il existe plusieurs technologies de transistors. En voici trois :

  • La technologie bipolaire à jonction, contrôlée par courant positif (dit Transistor NPN) ou négatif (dit Transistor PNP).
    Les trois bornes sont nommées B C E pour Base - Collecteur - Emetteur.
  • La technologie MOSFET (Field Effect Transistor, transistor à effet de champ), controlée par tension positive (dit à canal N) ou par tension négative (dit à canal P).
    Les trois bornes sont nommées G D S pour Grille Drain Source.
  • La technologie MOS, comportant à chaque fois un couple de transistors à canal N et à canal P.
3.2 Montage du transistor avec une entrée à 5V

Transistor bipolaire à jonction NPN

La borne de gauche est placée à 5V :

  • ce transistor est commandé en fermeture par un courant positif.
  • ici, le 5V d'entrée va bien provoquer l'apparition d'un courant positif.
  • le transistor est donc équivalent à un interrupteur fermé.
  • 0V en sortie puisque la sortie est alors directement reliée à la masse (en bas) par un fil conducteur.
Transistor MOSFET à canal N

La borne de gauche est placée à 5V :

  • ce transistor est commandé en fermeture par une tension UGS positive entre sa borne G et S.
  • ici, UGS = 5-0 = 5V, une tension positive.
  • le transistor est donc ici équivalent à un interrupteur fermé.
  • 0V en sortie puisque la sortie est alors directement reliée à la masse (en bas) par un fil conducteur.
3.3 Montage du transistor avec une entrée à 0V

Transistor bipolaire à jonction NPN

La borne d'entrée (à gauche) est placée à 0V :

  • ce transistor est commandé en fermeture par un courant positif.
  • ici, le 0V d'entrée ne provoque l'apparition d'aucun courant positif.
  • le transistor est équivalent à un interrupteur ouvert.
  • pas de courant dans le résistor du haut puisque le courant ne peut s'évacuer vers la masse. On a donc I = 0A dans le résistor
  • Puisque U = R.I, il y a U = 0V aux bornes du résistor qui se comporte donc comme un simple fil conducteur
  • la borne 5V est donc reliée à la sortie par un simple fil : 5V en sortie !
Transistor MOSFET à canal N

La borne de gauche est placée à 0V :

  • ce transistor est commandé en fermeture par une tension UGS positive entre sa borne G et S.
  • ici, UGS = 0-0 = 0V, une tension positive.
  • le transistor est équivalent à un interrupteur ouvert.
  • pas de courant dans le résistor du haut puisque le courant ne peut s'évacuer vers la masse. On a donc I = 0A dans le résistor
  • Puisque U = R.I, il y a U = 0V aux bornes du résistor qui se comporte donc comme un simple fil conducteur
  • la borne 5V est donc reliée à la sortie par un simple fil : 5V en sortie !

Bon, et c'est quoi le rapport avec l'informatique ?

3.4 Porte logique NOT avec le NPN ou le MOSFET canal N

On peut donc construire une porte logique NON à l'aide d'un transistor.

Voici comment on gère les états Vrai et Faux dans un ordinateur :

L'état HAUT (ou 1 ou True en Python) est encodé physiquement par une tension différente de 5V.
Techniquement, on prend plus large : toute tension supérieure à 2.5 V.

L'état BAS (ou 0 ou False en Python) est encodé physiquement par une tension de 0V.
Techniquement, on prend plus large : toute tension inférieure à 2.5 V.

Etat Nombre Python Tension
HAUT différent de 0 True U > 2.5 V (5V)
BAS égal à 0 False U < 2.5 V (0V)

Si on reprend les deux possibilités précédentes mais en plaçant les états True et False, on obtient ceci :

Nous venons de créer l'équivalent d'un NOT / NON.

C'est comme cela que l'UAL parvient à exécuter électroniquement un not de Python :

>>> a = 12 >>> a > 5 True >>> not(a > 5) False
CONCLUSION : LOI DE MOORE

Aujourd'hui, les transistors sont de tailles microscopiques. C'est en réduisant leurs tailles qu'on augmente leur nombre et donc la vitesse de calcul des ordinateurs.

Nous atteignons aujourd'hui la taille des atomes. Il va donc falloir trouver des nouvelles façons d'augmenter cette vitesse si on veut continuer à ne pas faire mentir la loi de Moore .

Graphique (en ordonnées logarithmiques) illustrant la loi de Moore par rapport à l'évolution réelle du nombre de transistors dans les microprocesseurs Intel; en pointillés verts au-dessus, représentation de l'hypothèse selon laquelle ce nombre doublerait tous les 18 mois :

Courbe montrant l'évolution du nombre de transisors dans un ordinateur au fil du temps
Loi de Moore, The original uploader was QcRef87 at French Wikipedia, CC BY-SA 3.0,

La réduction de la taille des transistors impose des usines de plus en plus chères. Pour les plus petits modèles, on peut monter à plus de 3 milliards. Ceci explique aussi pourquoi la plupart des constructeurs Européens ont jeté l'éponge. Ces usines ne se trouvent quasiment plus qu'en Asie.

Cela renforce bien entendu la dépendance de nos pays à ces quelques et rares usines.

Aujourd'hui, la loi empirique de Moore tend à ne plus être suivie car les transistors atteignent la taille de quelques atomes.

On commence donc à créer des microprocesseurs en 3D plutôt qu'en 2D. Mais cela provoque des problèmes d'évacuation de la chaleur. Cela devient vraiment compliqué de continuer à augmenter les capacités de calculs.

4 - Porte logique NON

Première opération possible pour l'UAL : l'inversion ou le complément.

(Rappel) Table de vérité du NON

On considère une expression booléenne notée a et une valeur booléenne de sortie notée s.

Voici la table de vérité du NON :

En version FAUX / VRAI

Expression a Sortie s
FAUX VRAI
VRAI FAUX

En version 0 / 1

Expression a Sortie s
0 1
1 0
4.1 Créer électroniquement un NON

A - Avec un transistor bipolaire ou mosfet

Au début de la généralisation des microprocesseurs, les circuits étaient conçus à l'aide des deux technologies susnommées.

Ce qui amène à ces deux cas possibles en fonction de l'état de l'entrée :

B - Technologie CMOS

C'est le cas des portes logiques actuelles. On utilise un ou des couples de transistors : l'un avec un canal N, l'autre avec un canal P (même symbole mais un rond en entrée pour symboliser l'inversion de fonctionnement).

Canal N Canal P
Symbole
Interrupteur fermé entre DS si sa tension UGS est
UGS > 0 UGS < 0
Interrupteur ouvert entre DS si sa tension UGS est
UGS ≤ 0 UGS ≥ 0

Voici le montage à réaliser pour obtenir un NON :

Entrée à 5V

  • Pour le canal P du haut : UGS = 5-5 = 0V : se comporte comme un interrupteur ouvert.
  • Pour le canal N du bas : UGS = 5-0 = 5V : se comporte comme un interrupteur fermé.

Entrée à 0V

  • Pour le canal P du haut : UGS = 0-5 = -5V : se comporte comme un interrupteur fermé.
  • Pour le canal N du bas : UGS = 0-0 = 0V : se comporte comme un interrupteur ouvert.

L'avantage du montage CMOS est liée à l'absence du résistor de dissipation, encombrant physiquement et thermiquement.

4.2 Symbole

Symbole dans un schéma électrique

On note 1 à l'intérieur de la boîte qui ne possède qu'une entrée unique a. Pour indiquer qu'on inverse la sortie par rapport au OUI, on rajoute un rond ou une barre oblique sur la sortie.

On trouve également le symbole suivant qui correspond à la norme ANSI américaine :

Schéma du NON ANSI : un TRIANGLE avec un point au bout
NON ANSI, image dans le domaine public, réalisée par jjbeard, récupérée sur Wikipedia
Exemple inverseur sur un unique bit
4.3 NON bit à bit : complément

Un processeur X bits est capable de manipuler X bits d'un seul coup.

Sur l'exemple ci-dessus, l'UAL 8 bits est donc capable d'inverser en une opération les 8 bits d'un octet.

Un exemple avec les 8 bits :

On comprend donc qu'en utilisant 8 portes logiques NON, l'UAL peut calculer le complémentaire d'un octet à temps constant.

Avec 8*X portes logiques NON, l'UAL peut calculer le complémentaire de X octets à temps constant.

5 - Portes logiques NAND et AND

Porte logique NAND

(Rappel) Table de vérité du NAND

Le AND n'est VRAI que si toutes les expressions d'entrée sont VRAIES.

Le NAND n'est FAUX que si toutes les expressions d'entrée sont VRAIES.

Avec 2 expressions :

Expression a Expression b a NAND b
FAUX FAUX VRAI
FAUX VRAI VRAI
VRAI FAUX VRAI
VRAI VRAI FAUX
5.1 Créer électroniquement un NAND

A - Technologie TTL (avec des transistors bipolaires)

On peut réaliser un NAND avec deux transistors en série :

Le schéma de principe (la différence avec le AND vient de la position de la sortie et du résistor) :

Les 4 cas possibles :

Lors des trois premiers cas, aucun courant ne peut circuler dans le résistor du haut : il se comporte comme un fil et la tension 5V se retrouve en sortie.

Sur le dernier cas, le 0V se retrouve en sortie et le résistor chauffe.

B - Technologie CMOS (avec des couples de MOSFET N et P)

Les 4 cas possibles :

5.2 Symbole du NAND

Symbole dans un schéma électrique

On symbolise le NON-ET comme une porte logique ET en rajoutant le cercle symbolisant qu'on complémente (inverse) l'état de sortie.

On trouve également le symbole suivant qui correspond à la norme ANSI américaine :

Schéma du NAND ANSI : un AND avec un point au bout
NAND ANSI, image dans le domaine public, réalisée par jjbeard, récupérée sur Wikipedia

On notera la présence d'un trait droit du côté de l'entrée, symbolisant le fait qu'il faut que les deux entrées soient à VRAI.

Exemple NAND 2 entrées d'un bit

03° Trouver les deux opérateurs logiques qu'on parvient à simuler en combinant des portes logiques NAND de cette façon.

...CORRECTION...

Dans le premier cas, il s'agit d'un NON puisque le montage parvient à inverser l'entrée.

Le schéma en notation européenne donne ceci :

a a a s

Pour le deuxième, c'est un ET : on voit que la réponse est réalisée en deux temps.

Le premier NAND permet de réaliser une fonction NAND.

Le second NAND permet de réaliser une fonction NOT.

Avec des explications sur les schémas :

a b a NAND b a NAND b NOT(a NAND b)

04° En utilisant la table de vérité du AND, démontrer a NAND a = NOT a.

...CORRECTION...

On place deux fois la même valeur a sur les deux entrées du NAND.

Expression a Expression b a NAND b
FAUX FAUX VRAI
FAUX VRAI VRAI
VRAI FAUX VRAI
VRAI VRAI FAUX

La seule utilisation de la table de vérité dans laquelle b = a permet de voir qu'on a bien une inversion avec les deux seuls cas possibles.

05° Démontrer NOT(a NAND b) = a AND b en utilisant simplement la définition du NAND et le fait que deux négations successives revient à ne pas avoir de négation.

...CORRECTION...

La démonstration attendue

On obtient NON (a NAND b) = NON ( NON (a AND b)) = a AND b

Avec des explications sur les schémas :

a b a NAND b a NAND b NOT(a NAND b)

La démonstration algébrique

Le circuit peut s'écrire algébriquement \(\overline{\overline{a.b}}=a.b \)

5.3 NAND X bits

NAND sur X bits

On applique une entrée de X bits à un NAND acceptant X bits en entrée. Il fournit un seul bit de réponse : Vrai ou Faux.

Cette porte logique répond FAUX si et seulement si tous les bits sont à 1.

La question est donc "L'octet d'entrée est-il différent du maximum ?"

Porte logique AND

(Rappel) Table de vérité du ET

Le ET n'est VRAI que si toutes les expressions d'entrée sont VRAIES.

Avec 2 expressions :

Expression a Expression b a ET b
FAUX FAUX FAUX
FAUX VRAI FAUX
VRAI FAUX FAUX
VRAI VRAI VRAI

Avec 3 expressions :

Expression a Expression b Expression c a ET b ET c
FAUX FAUX FAUX FAUX
FAUX FAUX VRAI FAUX
FAUX VRAI FAUX FAUX
FAUX VRAI VRAI FAUX
VRAI FAUX FAUX FAUX
VRAI FAUX VRAI FAUX
VRAI VRAI FAUX FAUX
VRAI VRAI VRAI VRAI
5.4 Créer électroniquement un AND

A - Technologie TTL (avec des transistors bipolaires)

On peut réaliser un AND à partir de deux transistors en série :

Le schéma de principe (la différence avec le NAND vient de la position de la sortie et du résistor) :

Les 4 cas possibles :

Lors des trois premiers cas, aucun courant ne peut circuler dans le résistor du bas : il se comporte comme un fil et la tension 0V se retrouve en sortie.

Sur le dernier cas, le 5V se retrouve en sortie et le résistor chauffe.

B - Technologie CMOS (avec des couples de MOSFET N et P)

Malheureusement, on ne peut pas vraiment être aussi symétrique qu'avec le NAND.

Le plus simple est de prendre le montage d'un NAND et d'INVERSER la sortie.

5.5 Symbole et propriétés du AND

Symbole dans un schéma électrique

On symbolise le ET comme un carré avec un &.

On trouve également le symbole suivant qui correspond à la norme ANSI américaine :

Schéma du AND ANSI : un AND
AND ANSI, image dans le domaine public, réalisée par jjbeard, récupérée sur Wikipedia

On notera la présence d'un trait droit du côté de l'entrée, symbolisant le fait qu'il faut que les deux entrées soient à VRAI.

Exemple AND 2 entrées d'un bit
Propriété : associativité

On notera qu'on peut vérifier facilement la propriété d'associativité du ET : on peut calculer s = a . b . c comme on le veut.

s = a . b . c = (a . b) . c = a . (b . c)

  • En commençant par a ET b : ( a . b ) . ( c )
  • a b a . b c a . b . c
  • En commençant par b ET c : ( a ) . ( b . c )
  • b c b . c a a . b . c
Commutativité

On peut vérifier facilement la commutativité du ET.

Il s'agit de la propriété qui précise que a ET b est identique à b ET a.

a b a . b b a b . a

Mathématiquement, cela donne s = a . b = b . a

5.6 AND bit à bit

AND sur X bits

On applique une entrée de X bits à un AND acceptant X bits en entrée. Il fournit un seul bit de réponse.

La porte logique répond VRAI si et seulement si tous les bits sont à 1.

La question est donc "L'entrée est-elle au maximum (composée intégralement de 1) ?"

AND Bit à Bit

On a deux entrées comportant chacune X bits.

On applique AND sur chaque couple de bits ayant le même poids.

On obtient un bit de sortie à 1 indique que les deux bits correspondant des entrées sont à 1.

06° Aller sur https://logic.modulo-info.ch/ (ou utiliser le schéma ci-dessous) puis réaliser un AND 8 bits à l'aide du schéma fourni pour réaliser un AND 4 bits.

Remarques :

  • L'entrée 8 bits peut être obtenue en prenant l'entrée 4 bits (mult IN) qu'on peut transformer en entrée 8 bits avec clic droit + nombre de bits
  • Le capteur de valeur de sortie est nommé OUT.

...CORRECTION...

On comprend donc qu'en utilisant des portes logiques AND, l'UAL peut (à temps constant) 

  • Savoir si un groupe d'octets est au maximum (composé intégralemnet de 1)
  • Savoir si deux bits de même position sont tous les deux à 1.

6 - Portes logiques NOR OR XOR

Porte logique NOR

(Rappel) Table de vérité du NOR

Le OR n'est FAUX que si toutes les expressions d'entrée sont FAUSSES.

Le NOR n'est VRAI que si toutes les entrées sont FAUSSES.

Avec 2 expressions :

Expression a Expression b a NOR b
FAUX FAUX VRAI
FAUX VRAI FAUX
VRAI FAUX FAUX
VRAI VRAI FAUX
6.1 Créer électroniquement un NOR

A - Technologie TTL (avec des transistors bipolaires)

On peut réaliser un NOR avec deux transistors en parallèle :

Le schéma de principe :

Les 4 cas possibles :

Sur le premier cas, aucun courant ne peut circuler dans le résistor du haut : il se comporte comme un fil et la tension 5V se retrouve en sortie.

Sur les autres cas, le 0V se retrouve en sortie et le résistor chauffe.

B - Technologie CMOS (avec des couples de MOSFET N et P)

Les 4 cas possibles :

6.2 Symbole du NOR

Symbole dans un schéma électrique

On symbolise le NON-OU comme une porte logique OU en rajoutant le cercle symbolisant qu'on complémente (inverse) l'état de sortie.

On trouve également le symbole suivant qui correspond à la norme ANSI américaine :

Schéma du NOR ANSI : un OR avec un point au bout
NOR ANSI, image dans le domaine public, réalisée par jjbeard, récupérée sur Wikipedia

On notera la présence d'un trait arrondi, "souple" du côté de l'entrée, symbolisant le fait qu'il suffit qu'une des deux entrées soit à VRAI.

Exemple NOR 2 entrées d'un bit
6.3 NOR X bits

NOR sur X bits

Il s'agit d'appliquer une entrée de X bits à un NOR acceptant X bits en entrée. Il fournit un seul bit de réponse : Vrai ou Faux.

La porte logique répond VRAI si et seulement si tous les bits sont à 0.

On pose la question "L'entrée est-elle à 0 ?"

NOR Bit à Bit

On a deux entrées comportant chacune X bits.

On applique NOR sur chaque couple de bits ayant le même poids.

On obtient une réponse de X bits où un bit à 1 indique que les deux bits correspondant des entrées est à 0.

Porte logique OR

(Rappel) Table de vérité du OU

Le OU n'est FAUX que si toutes les expressions d'entrée sont FAUSSES.

Avec 2 expressions :

Expression a Expression b a OU b
FAUX FAUX FAUX
FAUX VRAI VRAI
VRAI FAUX VRAI
VRAI VRAI VRAI

Avec 3 expressions :

Expression a Expression b Expression c a OU b OU c
FAUX FAUX FAUX FAUX
FAUX FAUX VRAI VRAI
FAUX VRAI FAUX VRAI
FAUX VRAI VRAI VRAI
VRAI FAUX FAUX VRAI
VRAI FAUX VRAI VRAI
VRAI VRAI FAUX VRAI
VRAI VRAI VRAI VRAI

Remarquez bien que ce OU ne correspond pas au OU usuel du Français : la plupart du temps, on veut dire que l'UNE des choses est possible à la fois. Ici, toutes peuvent être vraies en même temps également.

6.4 Créer électroniquement un OR

A - Technologie TTL (avec des transistors bipolaires)

On peut réaliser un OR à partir de deux transistors en parallèle :

Le schéma de principe (la différence avec le NOR vient de la position de la sortie et du résistor) :

Les 4 cas possibles :

Sur le premier cas, aucun courant ne peut circuler dans le résistor. La sortie est alors à 0V.

Lors des trois autres cas, la sortie est à 5V.

B - Technologie CMOS (avec des couples de MOSFET N et P)

Malheureusement, on ne peut pas vraiment être aussi symétrique qu'avec le NOR.

Le plus simple est de prendre le montage d'un NOR et d'INVERSER la sortie.

6.5 Symbole et propriétés du OR

Symbole dans un schéma électrique

On symbolise le OU comme un carré avec >=1.

Pourquoi >=1 : on peut considérer que tout ce qui n'est pas 0 est donc VRAI.

On trouve également le symbole suivant qui correspond à la norme ANSI américaine :

Schéma du OR ANSI : un OR
OR ANSI, image dans le domaine public, réalisée par jjbeard, récupérée sur Wikipedia

On notera la présence d'un trait arrondi, "souple" du côté de l'entrée, symbolisant le fait qu'il suffit qu'une des deux entrées soit à VRAI.

Exemple OR 2 entrées d'un bit
Propriété : associativité

On notera qu'on peut vérifier facilement la propriété d'associativité du OU : on peut calculer s = a + b + c

  • En commençant par a OU b : ( a + b ) + ( c )
  • a b a + b c a + b + c
  • En commençant par b OU c : ( a ) + ( b + c )
  • b c b + c a a + b + c
Commutativité

On notera d'ailleurs qu'on peut vérifier facilement la commutativité du OU.

Il s'agit de la propriété qui précise que a OU b est identique à b OU a.

a b a + b b a b + a

Mathématiquement, cela donne s = a + b = b + a

6.6 OR X bits

OR sur X bits

Il s'agit d'appliquer une entrée de X bits à un OR acceptant X bits en entrée. Il fournit un seul bit de réponse : Vrai ou Faux.

La porte logique répond FAUX si et seulement si tous les bits sont à 0.

On pose la question "L'entrée est-elle différente de 0 ?"

OR Bit à Bit

On a deux entrées comportant chacune X bits.

On applique OR sur chaque couple de bits ayant le même poids.

On obtient une réponse de X bits où un bit à 0 indique que les deux bits correspondant des entrées est à 0.

07° Aller sur https://logic.modulo-info.ch/ et réaliser une porte OR en utilisant uniquement une porte NOR, une porte INVERSEUR.

  • Vous prendrez deux entrées IN pour simuler a et b
  • Vous visualiserez le résultat en utilisant le capteur OUT.

...CORRECTION...

Porte logique XOR

(Rappel) Table de vérité du OU EXCLUSIF (XOR)

Le XOR n'est VRAI que si UNE UNIQUE EXPRESSION d'entrée est VRAIE.

Le X du XOR vient du X de eXclusif.

Ce OU correspond au OU usuel du Français : fromage ou dessert ?

Avec 2 expressions :

Expression a Expression b a XOR b
FAUX FAUX FAUX
FAUX VRAI VRAI
VRAI FAUX VRAI
VRAI VRAI FAUX

Avec 3 expressions :

Expression a Expression b Expression c a XOR b XOR c
FAUX FAUX FAUX FAUX
FAUX FAUX VRAI VRAI
FAUX VRAI FAUX VRAI
FAUX VRAI VRAI FAUX
VRAI FAUX FAUX VRAI
VRAI FAUX VRAI FAUX
VRAI VRAI FAUX FAUX
VRAI VRAI VRAI FAUX
6.7 Créer électroniquement un XOR

Comme les autres portes logiques, on peut créer un XOR soit avec la technologie TTL, soit avec la technologie CMOS.

Néanmoins, dans un cas comme dans l'autre, le schéma de principe est assez conséquent, notamment car il faut utiliser à la fois les entrées a et b mais également obtenir leurs compléments avec des inverseurs.

Je ne présente donc pas ici le schéma de principe, même s'il existe. Nous verrons par contre comment construire un XOR en utilisant les autres portes, ce qui permettra d'obtenir un schéma compréhensible.

En conclusion, les portes XOR existent et utilisent à la fois des montages parallèles, séries et inverseurs.

6.8 Symbole du XOR

Symbole dans un schéma électrique

On symbolise le XOR comme un carré avec =1.

Pourquoi =1 : il faut que la somme donne exactement 1 pour obtenir VRAI en sortie.

On trouve également le symbole suivant qui correspond à la norme ANSI américaine :

Schéma du XOR ANSI : un XOR
XOR ANSI, image dans le domaine public, réalisée par jjbeard, récupérée sur Wikipedia

On notera la présence de deux traits arrondis en entrée, le OR n'en comporte qu'un seul.

Exemple XOR 2 entrées d'un bit
6.9 XOR X bits

XOR sur X bits

Il s'agit d'appliquer une entrée de X bits à un XOR acceptant X bits en entrée. Il fournit un seul bit de réponse : Vrai ou Faux.

La porte logique répond VRAI si l'entrée comporte un nombre IMPAIR de bits à 1.

XOR Bit à Bit

On a deux entrées comportant chacune X bits.

On applique XOR sur chaque couple de bits ayant le même poids.

On obtient une réponse de X bits où un bit à 1 indique que les deux bits correspondant sont différents sur les deux entrées.

Une réponse ne comportant que des "1" indique que les deux entrées n'ont aucun bit en commun.

Une réponse ne comportant que des "0" indique que les deux entrées sont identiques.

08° Aller sur https://logic.modulo-info.ch/ (ou utiliser le schéma ci-dessous) puis réaliser une porte XOR à 8 bits d'entrée en continuant le schéma proposé. Vous devriez comprendre pourquoi la sortie n'est sur VRAI que s'il y a un nombre impair de 1 en entrée.

...CORRECTION...

On comprend donc qu'en utilisant des portes logiques OR, l'UAL peut (à temps constant) 

  • Savoir si un groupe d'octets est au minimum (composé intégralemnet de 0)
  • Savoir si deux bits de même position sont tous les deux à 0.

On peut également utiliser des portes XOR pour savoir (à temps constant)

  • si un groupe d'octets comporte un groupe impair de 1
  • si deux bits situés à la même position sont identiques ou différents.
  • et donc si deux octets sont identiques ou différents.

7 - Opérateur Bit à Bit en Python

Vous venez de voir que l'UAL est en capacité de réaliser des opérateurs logiques classiques :

  • Avec X NOT 1 bit, l'UAL peut calculer en une étape le complément d'un mot de X bits.
  • Avec un NAND X bits, l'UAL peut calculer en une étape si un mot de X bits est différent du maximum.
  • Avec un AND X bits, l'UAL peut calculer en une étape si un mot de X bits est au maximum.
  • Avec un NOR X bits, l'UAL peut calculer en une étape si un mot de X bits est à 0.
  • Avec un OR X bits, l'UAL peut calculer en une étape si un mot de X bits est différent de 0.
  • Avec un XOR X bits, l'UAL peut calculer en une étape si un mot possède un nombre impaire de bits à 1.

Mais on peut aussi faire des opérations BIT à BIT :

En appliquant bit à bit XOR entre deux mots de X bits, on obtient :

  • un mot valant 0 si les deux mots d'entrée sont identiques et
  • un mot différent de 0 si les deux mots sont différents.
  • un mot maximum si les deux mots sont complémentaires l'un de l'autre.

Python possède des opérateurs permettant de réaliser les opérations BIT à BIT. Vous allez les découvrir ici.

09° Utiliser ce programme et vérifier bit par bit que l'opérateur Python & permet de réaliser un ET bit à bit entre les deux entrées fournies.

1 2 3 4 5 6 7
x = 0b1011 y = 0b110 z = x & y print(f"x {x:08b}") print(f"y {y:08b}") print(f" {'-' * 8}") print(f"x&y {z:08b}")

...CORRECTION...

x 00001011 y 00000110 -------- x&y 00000010

Si on regarde la colonne jaune, on obtient bien (0 AND 1) = 0

Si on regarde la colonne bleue, on obtient bien (1 AND 1) = 1

Si on regarde la colonne verte, on obtient bien (1 AND 0) = 0

10° Utiliser ce programme et vérifier bit par bit que l'opérateur Python | permet de réaliser un ET bit à bit entre les deux entrées fournies.

1 2 3 4 5 6 7
x = 0b1011 y = 0b110 z = x | y print(f"x {x:08b}") print(f"y {y:08b}") print(f" {'-' * 8}") print(f"x|y {z:08b}")

...CORRECTION...

x 00001011 y 00000110 -------- x|y 00001111

Si on regarde la colonne jaune, on obtient bien (0 OR 1) = 1

Si on regarde la colonne bleue, on obtient bien (1 OR 1) = 1

Si on regarde la colonne verte, on obtient bien (1 OR 0) = 1

11° Utiliser ce programme et vérifier bit par bit que l'opérateur Python ^ permet de réaliser un ET bit à bit entre les deux entrées fournies.

1 2 3 4 5 6 7
x = 0b1011 y = 0b110 z = x ^ y print(f"x {x:08b}") print(f"y {y:08b}") print(f" {'-' * 8}") print(f"x^y {z:08b}")

...CORRECTION...

x 00001011 y 00000110 -------- x|y 00001101

Si on regarde la colonne jaune, on obtient bien (0 XOR 1) = 1

Si on regarde la colonne bleue, on obtient bien (1 XOR 1) = 0

Si on regarde la colonne verte, on obtient bien (1 XOR 0) = 1

12° En terminal NSI, l'une des parties permet d'aborder le chiffrement des données, la "cryptographie". Or, on y utilise énormement le XOR. Si l'UAL sait réaliser cette opération rapidement à l'aide d'une porte logique, le calcul sera bien entendu rapide. Voyons comment cela fonctionne :

On veut envoyer le message "Bonjour" avec une clé valant 124 par exemple.

  • Trouver chaque valeur ASCII du mot "Bonjour" en utilisant la fonction native ord() pour trouver la valeur encodant chaque caractère. Pour le premier : ord('B') qui donne 64.
  • Transformer ensuite le nombre obtenu à l'aide d'un XOR entre votre nombre et la clé 124. Pour le premier : 64 ^ 124 qui donne 62.

Fournir alors la suite de nombres chiffrés qui représente le message "Bonjour" : 62 ...

...CORRECTION...

ord('B') donne 66 et 66^124 donne 62

ord('o') donne 111 et 111^124 donne 19

ord('n') donne 110 et 110^124 donne 18

ord('j') donne 106 et 106^124 donne 22

ord('o') donne 111 et 111^124 donne 19

ord('u') donne 117 et 117^124 donne 9

ord('r') donne 114 et 114^124 donne 14

62 - 19 - 18 - 22 - 19 - 9 - 14

13° Pour décoder le message, il faut connaître la valeur de la clé.

  • Appliquer un XOR entre chaque nombre caractère chiffré et 124 pour retrouver le code du caractère en clair.
  • Par exemple, pour le premier : 62 ^ 124 donne 66.

  • Utiliser la fonction native chr() pour retrouver le caractère correspondant. Par exemple : chr(66) donne 'B'.

...CORRECTION...

n^124 vaut 66 et chr(66) donne B

n^124 vaut 111 et chr(111) donne o

n^124 vaut 110 et chr(110) donne n

n^124 vaut 106 et chr(106) donne j

n^124 vaut 111 et chr(111) donne o

n^124 vaut 117 et chr(117) donne u

n^124 vaut 114 et chr(114) donne r

14° Utiliser ce schéma qui permet de voir comment l'UAL via ces circuits peut chiffrer puis tenter de déchiffrer les bits d'un message.

Pour rendre le circuit compréhensible, on se limite ici à 4 bits mais cela ne change rien au principe : avec une machine 8, 16, 32 ou 64 bits, il a juste plus de portes.

Utilisation

Utiliser des clés différentes pour chiffrer et déchiffrer pour visualiser qu'on ne peut déchiffrer correctement le message que si on connaît la valeur de la clé qui a permis le chiffrement.

Nous avons vu aujourd'hui qu'on peut réaliser des circuits logiques pour réaliser des portes logiques simulant électroniquement les fonctions logiques usuelles.

Nous avons vu qu'on pouvait ainsi évaluer si un contenu binaire correspond à 0, au maximum et que la porte XOR permet d'exécuter rapidement les opérations de chiffrement / déchiffrement qui utilisent la fonction logique XOR.

Dans la prochaine activité, nous verrons comment réaliser des fonctions logiques plus complexes : d'abord le XOR lui-même, le seul pour lequel vous n'avez pas vu le circuit équivalent et comment réaliser ne serait-ce qu'une addition.

8 - FAQ

Rien pour le moment

Activité publiée le 31 12 2023
Dernière modification : 11 01 2024
Auteur : ows. h.