Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles AM3 Transistors, portes booléennes Au comme ncement é tait le transis tor, puis nous cré âmes les por tes boolée nnes, e t à la fin de la journée, les or dinate urs. 1. Fonctions booléennes a. Type booléen Un booléen en logique et en programmation informatique est un type de variable à deux états : VRAI (représenté par 1 en langage machine) ou FAUX (représenté par 0 en langage machine) Une fonction booléenne est une fonction qui associe un booléen (0 ou 1) à un ou plusieurs booléens. Elle peut s’exprimer de façon symbolique, par exemple : "(𝑛𝑜𝑛(𝑥) 𝑜𝑢 𝑦) 𝑒𝑡 (𝑥 𝑜𝑢 𝑦)" Testez les exemples ci-contre dans le Shell Python b. Fonctions booléennes de base: NON, ET, OU (NOT, AND, OR) En-dehors de leur expression symbolique, les fonctions booléennes se représentent aussi par une table, parfois appelée « table de vérité ». Remarque : Le « ou » est un « ou inclusif » et non exclusif. Il est vrai également si x et y sont vrais tous les deux. « Je viendrai si je trouve un bus ou un taxi » (inclusif) Et non : « Choisis entre la mer ou la montagne !» (exclusif) Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles c. Autres fonctions booléennes Théorème : on peut exprimer de façon symbolique n’importe quelle fonction booléenne avec les seules fonctions « et », « ou », « non » Exemple : on définit une fonction booléenne nommé multiplexeur (mux) par : 𝑦 𝑠𝑖 𝑥 = 0 𝑚𝑢𝑥(𝑥, 𝑦, 𝑧) = { 𝑧 𝑠𝑖 𝑥 = 1 Compléter la table de vérité de cette fonction : Prouver en comparant les tables de vérité x 0 0 y 0 0 z mux(x,y,z) 0 1 (voir ci-dessous) que l’expression symbolique de la fonction mux est : 𝒎𝒖𝒙(𝒙, 𝒚, 𝒛) = [𝒏𝒐𝒏(𝒙)𝒆𝒕 𝒚] 𝒐𝒖 (𝒙 𝒆𝒕 𝒛) x 0 0 y 0 0 z 0 1 non(x) non(x) et y x et z [𝑛𝑜𝑛(𝑥)𝑒𝑡 𝑦] 𝑜𝑢 (𝑥 𝑒𝑡 𝑧) mux(x,y,z) Exercice : Déterminer les quatre fonctions booléennes de {𝑂; 1} dans {𝑂; 1}. Les exprimer chacune avec les fonctions booléennes « de base » NON, ET, OU. Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles Exemple : trouver une expression symbolique pour la fonction « ou exclusif » (OUX / XOR) On commence par construire la table de vérité de cette fonction : x 0 0 1 1 𝑓(𝑥, 𝑦) = 𝑥 𝑜𝑢𝑥 𝑦 y 0 1 0 1 On construit ensuite les fonctions g et g’ : 𝑔(𝑥) = 𝑓(𝑥, 0) = 𝑥 𝑜𝑢𝑥 0 𝑔′(𝑥) = 𝑓(𝑥, 1) = 𝑥 𝑜𝑢𝑥 1 On remarque alors (c’est l’étape-clef de l’exercice, la moins évidente, mais ce sera la même à chaque fois…) que 𝒇(𝒙, 𝒚) = 𝒎𝒖𝒙(𝒚, 𝒈(𝒙), 𝒈′ (𝒙)) En effet : si 𝑦 = 0, alors 𝑚𝑢𝑥(𝑦, 𝑔(𝑥), 𝑔′ (𝑥)) = 𝑚𝑢𝑥(0, 𝑔(𝑥), 𝑔′ (𝑥)) = 𝑔(𝑥) = 𝑓(𝑥, 0) = 𝑓(𝑥, 𝑦) Par définition de la fonction « mux » si 𝑦 = 1, alors 𝑚𝑢𝑥(𝑦, 𝑔(𝑥), 𝑔′ (𝑥)) = 𝑚𝑢𝑥(1, 𝑔(𝑥), 𝑔′ (𝑥)) = 𝑔′(𝑥) = 𝑓(𝑥, 1) = 𝑓(𝑥, 𝑦) Dans tous les cas (que 𝑦 = 0 ou que 𝑦 = 1), on a donc bien 𝑚𝑢𝑥(𝑦, 𝑔(𝑥), 𝑔′ (𝑥)) = 𝑓(𝑥, 𝑦) Or, on a prouvé que la fonction mux s’écrivait : 𝒎𝒖𝒙(𝒙, 𝒚, 𝒛) = [𝒏𝒐𝒏(𝒙)𝒆𝒕 𝒚] 𝒐𝒖 (𝒙 𝒆𝒕 𝒛) On en déduit donc que 𝑓(𝑥, 𝑦) = [𝑛𝑜𝑛(𝑦)𝑒𝑡 𝑔(𝑥)]𝑜𝑢 [𝑦 𝑒𝑡 𝑔′(𝑥)] Si l’on regarde d’un peu plus près les fonctions g et g’ (en faisant leur table de vérité), on voit qu’elles s’expriment elles-mêmes comme des fonctions simples : Table de vérité de g x 0 1 g(x) Table de vérité de g’ x 0 1 g’(x) On constate que g est la fonction ……………………….. alors que g’ est la fonction ……………………….. Finalement, on peut donc écrire l’expression de OUX uniquement avec ET, NON, OU : 𝑥 𝑂𝑈𝑋 𝑦 = 𝑓(𝑥, 𝑦) = Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles d. Fonctions booléennes avec NON et OU On a vu qu’il était possible d’exprimer toutes les fonctions booléennes avec les trois fonctions de base ET, OU, NON. En réalité, il est même possible de se passer de la fonction ET : les fonctions de base NON et OU suffisent ! Pour le démontrer, il suffit d’exprimer la fonction ET comme combinaison des deux autres. Exercice : prouver en comparant les tables de vérité que 𝑥 𝐸𝑇 𝑦 = 𝑛𝑜𝑛[𝑛𝑜𝑛(𝑥) 𝑂𝑈 𝑛𝑜𝑛(𝑦)] 𝑥 𝑦 𝑛𝑜𝑛(𝑥) 𝑛𝑜𝑛(𝑦) 𝑛𝑜𝑛(𝑥)𝑂𝑈 𝑛𝑜𝑛(𝑦) 𝑛𝑜𝑛[𝑛𝑜𝑛(𝑥)𝑂𝑈 𝑛𝑜𝑛(𝑦)] 𝒙 𝑬𝑻 𝒚 Remarque : on peut également utiliser seulement les fonctions ET et NON , car la fonction OU peut s’exprimer en fonction de ces deux-là. Un peu de culture... George Boole, mathématicien anglais, a utilisé pour la première fois en 1850 une algèbre à 2 éléments pour l’étude de la logique mathématique. Il a défini une algèbre (i.e. un ensemble muni d’opérations : +, x, ….) permettant de modéliser les raisonnements sur les propositions vraies ou fausses. Etudiée après Boole par de nombreux mathématiciens, l’Algèbre de Boole a trouvé par la suite de nombreux champs d’application : réseaux de commutation, théorie des probabilités, recherche opérationnelle (étude des alternatives). Aujourd’hui, les ordinateurs sont composés de transistors électroniques fonctionnant sur 2 modes : bloqué ou passant. Ils utilisent une arithmétique binaire. L’algèbre de Boole constitue un des principaux fondements théoriques pour leur conception et leur utilisation. Les circuits sont des implémentations matérielles de fonctions booléennes. Nous allons voir à présent de quoi sont faits les ordinateurs à l’échelle microscopique : ce qu’est un transistor électronique, et comment on construit « physiquement « des circuits ET, NON et OU, permettant ainsi de construire des circuits pour n’importe quelle fonction booléenne. Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles 2. Transistors A l’échelle la plus petite, un ordinateur est un assemblage de transistors. Définition : un transistor est un circuit électronique à trois fils (drain, source et grille). La résistance entre le drain et la source varie en fonction de la tension appliquée entre la grille et la source ; Quand cette tension est inférieure à un certain seuil, la résistance est très grande : le transistor est dit bloqué Quand cette tension est supérieure au seuil, la résistance est très petite : le transistor est dit passant. a. Circuit « NON » SCHEMA 1 SCHEMA 2 SCHEMA 3 Le schéma 1 présente un circuit constitué d’un transistor, d’un générateur délivrant une tension supérieure au seuil du transistor, et d’une résistance. Quand le transistor est bloqué, le circuit est équivalent à celui du schéma 2. Quand le transistor est passant, le circuit est équivalent à celui du schéma 3. 𝑼𝑶𝑨 (entrée) « faible » Bit d’entrée 0 (inférieure au seuil) « forte » Etat transistor Bloqué 𝑼𝑶𝑩 (sortie) Bit de sortie (schéma 2) 1 (supérieure au seuil) Passant (schéma 3) Ce circuit permet donc de simuler une fonction booléenne : la fonction « non ». b. Circuit « OU » Le circuit OU est construit sur le même principe, mais avec deux entrées A et B : On va étudier le comportement de ce circuit en fonctions des valeurs d’entrées A et B. Le but est de compléter la table : Entrée A Entrée B Sortie 0 0 0 1 1 0 1 1 … pour démontrer qu’en sortie, on a bien la valeur de « A ou B » Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles Etudier l’état des transistors dans chaque cas, et dessiner les circuits équivalents : Entrée Entrée Transistor Transistor Transistor A B en A en B en C 0 0 0 1 1 0 1 1 bloqué bloqué passant On obtient bel et bien la table de la fonction « OU ». Circuit équivalent : Sortie D Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles On arrive ainsi à une représentation différente du même circuit (à un autre niveau). Souvent, même, on ne représente pas le générateur. Il est implicite que chaque porte est alimentée. Exemple : (avec et sans générateur) Exercice : déterminer la table des circuits suivants Exercice : Construire un circuit réalisant la fonction multiplexeur (mux) vue au début de ce chapitre. Source : Manuel de spécialité ISN par Gilles Dowek et son équipe, éditions Eyrolles Exercice corrigé :