Fonction logique

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir combinatoire (homonymie).

Il existe deux grands types de fonctions logiques :

  • les fonctions logiques « combinatoires », bases du calcul booléen, qui résultent de l'analyse combinatoire des variations des grandeurs d'entrées uniquement.
  • les fonctions logiques « séquentielles » ou bascules, qui résultent de l'association de plusieurs fonctions logiques « combinatoires » synchronisées grâce à une "horloge" qui donne le tempo; les valeurs de sorties dépendent non seulement des valeurs d'entrée, mais aussi de l'instant ou elles sont mesurées (avant ou après la synchronisation par l'horloge).

Les fonctions logiques combinatoires directement issues des mathématiques (algèbre de Boole) sont les outils de base de l'électronique numérique. Elles sont mises en œuvre en électronique sous forme de portes logiques. Ainsi les circuits électroniques calculent des fonctions logiques de l'algèbre de Boole. Ces portes électroniques sont construites à partir de plusieurs transistors connectés de manière adéquate.

Dans d'autres applications, on peut trouver des portes logiques à base de relais, de fluides ou d'éléments optiques ou mécaniques. Selon la modélisation utilisée, on prendra en compte les temps de retard ou pas dans les calculs.

NB: L'automatisme et l'informatique utilisent la logique combinatoire mais surtout la logique séquentielle.

Historique[modifier | modifier le code]

De la roue dentée à la molécule[modifier | modifier le code]

Les premières fonctions logiques furent réalisées de manière mécanique. Charles Babbage, vers 1837, conçut la « machine analytique », assemblage de portes reliées à des roues dentées pour effectuer des opérations logiques. Par la suite, les opérations logiques furent effectuées grâce à des relais électromagnétiques.

En 1891, Almon Strowger déposa un brevet pour un appareil contenant un commutateur basé sur une porte logique ((en) Brevet U.S. 0447918). Son brevet ne fut guère exploité jusque dans les années 1920. À partir de 1898, Nikola Tesla déposa une série de brevets concernant des appareils basés sur des circuits à portes logiques. Finalement, les tubes à vides remplacèrent les relais pour les opérations logiques. En 1907, Lee De Forest modifia l'un de ces tubes et l'utilisa comme une porte logique ET. Claude E. Shannon introduisit l'utilisation de l'algèbre de Boole dans la conception de circuits en 1937. Walther Bothe, inventeur du circuit de coïncidence, reçut le prix Nobel de physique en 1954, pour la création de la première porte logique ET électronique moderne en 1924. Des travaux de recherche sont actuellement menés pour la génération de portes logiques moléculaires.

Les portes logiques à transistors[modifier | modifier le code]

La forme la plus simple de la logique électronique est la logique à diodes. Cela permet la fabrication de portes ET et OU, mais pas de portes NON ce qui conduit à une logique incomplète. Pour créer un système logique complet, il est nécessaire d'utiliser des lampes ou des transistors.

La famille la plus simple de portes logiques utilisant des transistors bipolaires est appelée résistance-transistor ou RTL (resistor-transistor logic). Au contraire des portes à diodes, les portes RTL peuvent être mises en cascade indéfiniment pour produire des fonctions logiques complexes. Pour diminuer le temps de retard, les résistances utilisées par les portes RTL furent remplacées par des diodes, ce qui donna naissance aux portes logiques diode-transistor ou DTL (diode-transistor logic). On découvrit ensuite qu'un transistor pouvait faire le travail de deux diodes en prenant la place d'une seule, ce qui mena à la création de portes logiques transistor-transistor ou TTL (transistor-transistor logic). Dans certains types de circuits, les transistors bipolaires furent remplacés par des transistors à effet de champ (MOSFET) ce qui donna naissance à la logique CMOS.

Circuit intégré 7400 contenant 4 portes NON-ET (NAND). Les deux autres broches servent à l'alimentation 0V / 5V.

Les concepteurs de circuits logiques utilisent actuellement des circuits intégrés préfabriqués, notamment en TTL, la série 7400 de Texas Instruments, et en CMOS, la série 4000 de RCA, ainsi que leurs dérivés plus récents. La plupart de ces circuits contiennent des transistors à plusieurs émetteurs, utilisés pour implémenter la fonction ET, et qui ne sont pas disponibles séparément. De plus en plus, ces circuits logiques fixes sont remplacés par des circuits programmables, qui permettent aux concepteurs d'intégrer un grand nombre de portes logiques diverses dans un seul circuit intégré. La nature programmable de ces circuits, parmi lesquels les FPGA, a enlevé au hardware son aspect "dur" : il est désormais possible de changer les fonctions logiques d'un système en reprogrammant certains de ses composants, ce qui permet de modifier les caractéristiques d'un circuit logique hardware.

Les portes logiques électroniques diffèrent de manière significative de leurs équivalents à relais et contacts. Elles sont bien plus rapides, moins gourmandes et beaucoup plus petites (au moins un million de fois dans la plupart des cas). De plus, il y a une différence fondamentale dans la structure. Les circuits à contacts créent un chemin continu, dans lequel le courant peut circuler dans les deux directions entre l'entrée et la sortie. La porte logique à semi-conducteurs, au contraire, agit comme un puissant amplificateur de tension, qui reçoit un courant faible en entrée et produit une tension de basse impédance en sortie. Le courant ne peut pas circuler entre la sortie et l'entrée d'une porte à semi-conducteurs.

Un autre grand avantage des circuits logiques standardisés est qu'ils peuvent être mis en cascade. Autrement dit, la sortie d'une porte peut être reliée aux entrées d'une ou plusieurs portes, et ainsi de suite à l'infini, ce qui permet de construire des circuits d'une complexité quelconque sans avoir besoin de connaître le fonctionnement interne des portes. Dans la pratique, la sortie d'une porte ne peut être connectée qu'à un nombre fini d'entrées, mais cette limite est rarement atteinte dans les nouveaux circuits CMOS comparé aux circuits TTL. Il existe également un délai nommé temps de propagation entre la modification d'une entrée et la modification correspondante en sortie. Dans des portes en cascade, le temps de propagation total est à peu près égal à la somme des temps de propagation individuels, ce qui peut poser problème dans les circuits à grande vitesse.

Portes logiques à 3 états[modifier | modifier le code]

Les portes logiques dites « à trois états » possèdent une sortie qui peut prendre trois états différents : haut, bas comme sur tout autre circuit logique et un troisième état haute impédance nommé Z. L'état de haute impédance ne joue aucun rôle dans la logique proprement dite qui demeure binaire, mais il équivaut en fait à un circuit ouvert, ou à une « absence » de sortie. Cet état permet de ne pas "polluer" la valeur circulant sur le bus de données auquel il est connecté, lorsque ce circuit ne doit pas en changer l’état.

Ces portes sont utilisées dans les bus électroniques pour l'envoi de données ; un groupe de portes à trois états contrôlées par un circuit approprié équivaut à un multiplexeur qui peut être réparti physiquement sur plusieurs appareils ou plusieurs cartes électroniques.

Classification[modifier | modifier le code]

Niveaux logiques[modifier | modifier le code]

En algèbre de Boole, une donnée, qu'elle soit en entrée ou en sortie, n'a que deux niveaux possibles. Selon les applications, ces deux niveaux peuvent porter des noms différents : marche / arrêt, haut / bas, un (1) / zéro (0), vrai / faux, positif / négatif, positif / nul, circuit ouvert / circuit fermé, différence de potentiel / pas de différence, oui / non.

Dans le cas de circuits électroniques, les deux niveaux sont représentés par deux niveaux de tension, « haut » et « bas ». Chaque type de circuit possède ses propres niveaux de tension, pour s'assurer de la connectivité entre les entrées et sorties des circuits. Habituellement, deux niveaux bien distincts (ne risquant pas de se chevaucher) sont définis ; la différence entre les deux niveaux varie entre 0,7 V et 28 V (ce dernier dans le cas des relais).

Pour harmoniser la notation, ces deux niveaux seront notés ici 1 et 0.

Fonctions logiques élémentaires[modifier | modifier le code]

Les portes peuvent être classées suivant leur nombre d'entrées :

  • « portes » sans entrée : VRAI, FAUX ;
  • portes à une entrée : NON (NOT), OUI ;
  • portes à deux entrées : ET (AND), NON-ET (NAND), OU (OR), NON-OU (NOR), OU exclusif (XOR), coïncidence dite aussi NON-OU exclusif ou équivalence (XNOR), implication ;
  • À partir de trois entrées, le nombre de fonctions commence à subir l'influence de l'explosion combinatoire. On note toutefois l'existence de : ET, OU, etc. à plus de deux entrées.

Il est possible de reconstituer les fonctions NON, ET et OU en utilisant uniquement soit la fonction NON-ET, soit la fonction NON-OU. On évoque cette caractéristique sous la notion d'universalité des opérateurs NON-OU et NON-ET (cf. le connecteur binaire d'incompatibilité, appelé aussi barre de Sheffer).

Lorsqu'on associe deux portes logiques compatibles, on peut connecter deux entrées ensemble, ou une entrée sur une sortie. Il ne faut en aucun cas connecter deux sorties différentes car elles peuvent produire des données différentes ; dans le cas de portes électroniques, cela équivaudrait à un court-circuit.

Représentation[modifier | modifier le code]

Pour définir chacune des fonctions logiques, nous donnerons plusieurs représentations :

  • une représentation algébrique : équation ;
  • une représentation arithmétique : table de vérité ;
  • une représentation graphique : symbole logique.

Dans le cas de portes électroniques, un niveau logique est représenté par un voltage défini (selon le type de composant utilisé). Chaque porte logique doit donc être alimentée pour délivrer la tension de sortie appropriée. Dans la représentation en symboles logiques, cette alimentation n'est pas représentée, mais elle doit l'être dans un schéma électronique complet.

La représentation d'un système combinatoire incluant plusieurs fonctions logiques peut aussi se faire grâce à un schéma à contact, une équation, une table de vérité et un schéma graphique. Dans ce dernier cas on parlera d'un logigramme.

Représentation graphique[modifier | modifier le code]

Deux ensembles de symboles sont utilisés pour représenter les fonctions logiques ; les deux sont définis par la norme ANSI/IEEE 91-1984 et son supplément 91a-1991. La représentation par « symboles distinctifs », basée sur les schématisations classiques, est utilisée pour les schémas simples et est plus facile à tracer à la main. Elle est parfois qualifiée de « militaire », ce qui reflète ses origines, sinon son usage actuel.

La représentation « rectangulaire » se base sur la norme CEI 60617-12 ; toutes les portes y sont représentées avec des bords rectangulaires et un symbole, ce qui permet la représentation d'un plus grand nombre de types de circuits. Ce système a été repris par d'autres standards comme EN 60617-12:1999 en Europe et BS EN 60617-12:1999 au Royaume-Uni.

Symboles et tables de vérités de portes logiques
Type Symbole américain Symbole européen Opération booléenne entre A et B Table de vérité
ET ET ET A \cdot B
Entrée Sortie
A B A ET B
0 0 0
0 1 0
1 0 0
1 1 1
OU OU OU \textstyle A + B
Entrée Sortie
A B A OU B
0 0 0
0 1 1
1 0 1
1 1 1
NON NON NON \overline{A}
Entrée Sortie
A NON A
0 1
1 0
En électronique, une porte NON est plus communément appelée inverseur. Le cercle utilisé sur la représentation est appelé « bulle », et on l'utilise généralement dans les diagrammes pour montrer qu'une entrée ou une sortie est inversée.
NON-ET (NAND) NAND NAND \overline{A \cdot B}
Entrée Sortie
A B A NAND B
0 0 1
0 1 1
1 0 1
1 1 0
NON-OU (NOR) NOR NOR \overline{A + B}
Entrée Sortie
A B A NOR B
0 0 1
0 1 0
1 0 0
1 1 0
OU exclusif (XOR) XOR XOR A \oplus B
Entrée Sortie
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
NON-OU exclusif ou OU-exclusif complémenté (XNOR) ou Identité XNOR XNOR \overline{A \oplus B}
Entrée Sortie
A B A XNOR B
0 0 1
0 1 0
1 0 0
1 1 1

Une porte NON-ET (NAND) peut également être représentée en utilisant le symbole OU avec des bulles (inverseurs) sur les entrées, et une porte NON-OU (NOR) peut être représentée par un symbole ET avec des bulles sur les entrées. Cela reflète les lois d'équivalence de De Morgan ; cela permet de rendre également un diagramme plus lisible, ou de fabriquer un circuit facilement avec des portes préfabriquées, car un circuit qui a des bulles des deux côtés peut être remplacé par un circuit non-inversé en changeant la porte. Si une porte NON-ET est représentée par un OU avec des entrées inversées, ou qu'un NON-OU est représenté par un ET avec des entrées inversées, le remplacement se fait automatiquement dans le schéma (les bulles « s'annulent »). C'est courant dans les diagrammes logiques réels — si bien que le lecteur ne doit pas s'habituer à associer les symboles aux portes OU et ET automatiquement, mais doit aussi prendre en compte les inverseurs pour déterminer la bonne fonction représentée. Les entrées inversées sont particulièrement utiles dans le cas de signaux « actifs à l'état bas ».

Les deux autres portes fréquemment rencontrées sont la fonction OU exclusif et son inverse. Un OU exclusif à deux entrées ne renvoie un 1 que quand les deux entrées sont différentes, et un 0 quand elles sont égales, quelle que soit leur valeur. S'il y a plus de deux entrées, la porte renvoie 1 si le nombre d'entrées égales à 1 est impair ([1]). Dans la pratique, ces portes sont souvent réalisées à partir de combinaisons de portes logiques plus simples.

Convention d'écriture[modifier | modifier le code]

La notation surlignée est vite malcommode. On la remplace souvent par la notation " ' " et si nécessaire un parenthésage. Ainsi :

  • NON(x) = x', d'où (x')' = x.
  • NON·ET(x, y)= (x·y)' = x'+y'.
  • NON·OU(x, y)= (x+y)' = x'·y'.
  • NON·ET(NON·ET(a, b, c), NON·ET(d, f)) = ((a·b·c)')'+((d·f)')' = a·b·c + d·f.
  • NON·OU(NON·OU(a, b, c), NON·OU(d, f)) = ((a+b+c)')'·((d+f)')' = (a+b+c)·(d+f)

Les opérateurs physiques NON·ET/NON·OU étant peu commodes dans les calculs, les deux dernières relations (dites de double couche) facilitent la liaison entre calcul et dessin ; ainsi :

  • une double couche NON·ET réalise toute fonction donnée sous forme d'une somme de monômes booléens ;
  • de même, une double couche NON·OU réalise toute fonction donnée sous forme d'un produit de clauses booléennes.

Autres fonctions logiques[modifier | modifier le code]

Multiplexeurs[modifier | modifier le code]

Soient 8 entrées binaires x0 à x7, et 3 entrées de commande a, b, c, permettant d'afficher un nombre de 0 à 7. Un multiplexeur aligne sa sortie s sur l'entrée dont le numéro est affiché. Pour cela, s = a'·b'·c'·x0 + a'·b'·c·x1 + a'·b·c'·x2 + a'·b·c·x3 +....+ a·b·c·x7.

Commande Sortie
a b c s
0 0 0 x0
0 0 1 x1
0 1 0 x2
0 1 1 x3
* * * *
1 1 0 x6
1 1 1 x7

Additionneurs[modifier | modifier le code]

C'est l'exemple type de cellules logiques, regroupements de fonctions des mêmes variables, utilisables comme briques ou boîtes noires dans des ensembles complexes.

simple[modifier | modifier le code]

Soient a et b deux bits à additionner ; le résultat est un couple (r, s) tel que, arithmétiquement a + b = 2r + s. En termes booléens, r = a·b et s =  a \oplus b.

complet[modifier | modifier le code]

L'addition de deux bits a et b sera le plus souvent une addition intermédiaire recevant un report r. Le résultat est alors un couple (R, S) tel que, arithmétiquement, a+b+r = 2R+S. En termes booléens, S = a \oplus b \oplus r et R = MAJ(a, b, r), où la porte MAJ(orité) a pour définition MAJ(x, y, z)= xy + yz + xz.

soustracteur[modifier | modifier le code]

Un additionneur complet peut devenir additionneur/soustracteur en complément à un ou complément à deux s'il fait la somme des bits a, b \oplus $ et r, où r est un report, et $ une commande valant 0 pour une addition et 1 pour une soustraction. Alors, le résultat est un couple (R, S) où S = a \oplus b \oplus $ \oplus r et R = MAJ(a, b \oplus $ , r).

multiplicateur[modifier | modifier le code]

Un additionneur complet peut devenir une cellule de multiplicateur s'il fait la somme des bits a, b·m et r, où a est un bit d'une somme partielle de produits, b un bit du multiplicande, m un bit du multiplicateur, et r un report. Alors S = a \oplus b · m \oplus r et R = MAJ(a, b·m, r).

Unités de stockage[modifier | modifier le code]

Au-delà fonctions logiques purement combinatoires, se pose le problème du stockage d'un bit d'information. Les portes logiques présentées plus haut ne stockent pas de données : quand une entrée change, la sortie réagit immédiatement (au temps de propagation près). Il est possible de créer des éléments de stockage soit avec des condensateurs, soit en utilisant le feedback. En connectant la sortie d'une porte à son entrée, on renvoie la sortie dans le circuit logique ; elle peut ainsi être conservée ou modifiée en utilisant les autres entrées. En connectant des portes de cette manière, on crée un verrou (latch en anglais). D'autres circuits un peu plus complexes utilisent des signaux d'horloge (des signaux qui oscillent à une fréquence connue) et changent quand le signal d'horloge passe à 1 ; on les appelle des bascules ou bistables (flip-flops en anglais). En combinant plusieurs bascules en parallèle pour stocker une valeur de plusieurs bits, on crée un registre.

Les registres et autres circuits de stockage sont regroupés sous le terme de « mémoires électroniques ». Leurs performances varient en termes de vitesse, de complexité et de fiabilité de la mémoire. Leurs types peuvent être très différents selon les applications.

Automates à nombre fini d'états[modifier | modifier le code]

Ils comprennent :

  • un ensemble défini E de variables d'entrée,
  • un ensemble défini I de variables d'état internes, stockées dans un registre,
  • un ensemble défini S de variables de sortie,
  • un réseau combinatoire T : (E, I) → I assurant l'évolution de l'automate en fonction des entrées successives,
  • un réseau combinatoire R : (E, I) → S assurant la définition de la sortie, conformément aux entrées actuelles, et à la mémoire que I a gardé des situations antérieures.

Dès lors que toutes les variables se présentent sous forme binaire, ils sont réalisables à l'aide de circuits logiques.

Ils peuvent être simples, ou fédérés en automates plus complexes.

Unités fonctionnelles[modifier | modifier le code]

Les circuits logiques peuvent également réaliser des éléments comme des multiplexeurs, des unités arithmétiques et logiques (en anglais : Arithmetic and Logic Unit ou ALU), des mémoires, ou les automates animant un processeur. Les microprocesseurs rassemblent de tels éléments, et peuvent contenir plus de 100 millions de portes logiques.

Les composants de microprocesseurs sont à base de transistors à effet de champ, en particulier des MOSFET.

Notes et références[modifier | modifier le code]

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]