Logo Viscera
Logo Main Pomme

Manipulateurs robotiques

mercredi 30 mars 2011

Les circuits logiques

Pour terminer en beauté mes interventions sur ce blogue, laissez-moi vous entretenir des circuits logiques. Nous les étudions dans le cadre d’une partie sur le contrôle des manipulateurs pour notre travail car ils sont omniprésents dans tout système informatique.

Un circuit logique est en fait un assemblage de portes logiques. Chaque porte logique est un assemblage précis de transistors et de résistances qui applique une fonction logique sur au moins deux entrées, et qui donne comme résultat une sortie. Or, dans les circuits logiques, les entrées et les sorties ne peuvent prendre que deux valeurs : 0 ou 1, distinguées par une différence de voltage dans les réalisations électroniques de circuits logiques qui seront présentées ici.

Les principaux types de portes logiques sont les suivants. Il faut noter que les images ont été prises sur le site http://cpuville.com/logic_gates.htm.

1. La porte AND (ET en français) est représentée par le symbole suivant, et donne les sorties suivantes selon les valeurs de l’entrée A et de l’entrée B :

Elle porte donc logiquement sont nom : elle ne retourne 1 que si les deux entrées sont 1.

2. Voici maintenant la porte OR (OU en français) :

En voilà une autre qui porte logiquement son nom. Dès que A ou B est 1, la sortie est 1 également.

3. Le type XOR (soit OU exclusif) est déjà un tantinet plus complexe :

Il ne donne 1 comme résultat que si les deux entrées sont différentes.

Les types suivants seront des négations des trois premiers. Vous allez comprendre pourquoi :

4. Voici ainsi le type NAND (NON-ET en français) :


En effet, la porte NAND donne l’inverse de la sortie d’une porte AND. Si on ne branche qu’une seule entrée à la porte NAND, elle se contentera de donner l’inverse de cette entrée (par exemple, 0 devient 1 et vice-versa. Bref).

5 et 6. Le principe est le même pour la porte NOR, ainsi que pour la porte XNOR.


Chacune donne l’inverse de la sortie de son homologue sans N dans le nom (si vous voyez ce que je veux dire).

Il est bien beau de savoir reconnaître individuellement chacune des portes logiques, mais il est bien plus excitant de créer des circuits de portes logiques et de contempler ce qui arrive !

Par exemple, saviez-vous qu’il est possible de réaliser tous les types de portes logiques de base en utilisant seulement des portes NAND ou des portes NOR ? Voici la réalisation d’une porte OR qui utilise seulement des portes NAND. Mais ne la regardez pas si vous voulez essayer de la trouver par vous-mêmes, juste pour le plaisir.



En tout cas, voici la réponse :

Imaginez le trajet des 0 et des 1, vous allez voir, ça ne peut pas échouer.

Pour finir, voici le circuit d’un additionneur complet tel que les ordinateurs en utilisent pour additionner des nombres binaires (représentés justement par des 0 et des 1). Il n’a aucun rapport direct avec les manipulateurs robotiques, mais sachez qu’il vous a servi plus d’une fois dans votre vie :

L’image de l’additionneur complet vient de http://en.wikipedia.org/wiki/File:Full_Adder.svg

Bon, ça peut avoir l’air rébarbatif, mais rassurez-vous, le fonctionnement de cette chose est parfaitement compréhensible. Avant de lire ce qui suit, je vous conseille toutefois de vous assurer de connaître les principes de base du système de numération en binaire, ou base 2. Eh bien, ce n’est pas très complexe, alors voici une simple comparaison pour comprendre (j'ai utilisé l'astérisque (*) comme symbole de l'exponentiation) :

En décimal :

104 = 1 x 10*2 + 0 x 10*1 + 4 x 10*0 = 100 + 4 = 104

En binaire :

1101000 = 1 x 2*6 + 1 x 2*5 + 0 x 2*4 + 1 x 2*3 + 0 x 2*2 + 0 x 2*1 + 0 x 2*0 = 64 + 32 + 8 = 104

Bref, passons outre.

Pour imaginer ce circuit en marche, considérons un exemple simple où nous voulons additionner deux nombres binaires à trois bits chacun : 011 (soit 3) et 010 (soit 2). On s’attend logiquement à ce que le résultat soit 101, c’est-à-dire 5.

Pour chaque position de bit, il doit y avoir un circuit additionneur complet. On en a donc 3 ici. Dans chacun des 3, A et B sont les entrées pour cette position de bit et S est le bit de résultat pour cette même position. Cout est la valeur à retenir vers la position supérieur de bit ; elle est donc envoyée dans l’entrée Cin de l’additionneur de la position supérieure. On peut voir la fonction de Cout et Cin comme étant celle de la retenue dans l’addition.

Ainsi, pour le premier additionneur, A est 1 (le 1 au bout de 011), B est 0 (le 0 au bout de 010), et la valeur de Cin est 0 (car il n’y a pas eu d’addition à partir de valeurs précédentes). Ainsi, si on imagine les petits 0 et 1 qui se promènent dans le circuit, on arrive à S = 1, et Cout = 0.

Pour le second additionneur, A est 1 (deuxième chiffre de 011) et B est 1 (deuxième chiffre de 010). Cin est 0, car il est directement branché sur le Cout de l’additionneur, et le Cout de ce premier additionneur était 0. On arrive donc à S = 0, et Cout = 1.

Pour le troisième et dernier additionneur, voici les valeurs d’entrée : A = 0, B = 0, et Cin = 1 (car le Cout de l’additionneur précédent était 1, on s’en rappelle). En se concentrant très fort une dernière fois sur les entrées et les sorties des portes logiques du circuit, on arrive à S = 1 et Cout = 0.

Bref, en mettant les trois sommes bout à bout dans le bon ordre, on arrive effectivement au résultat voulu : 101.

La prochaine fois que vous utiliserez votre calculatrice, ayez donc une petite pensée pour l’armée d’additionneurs et d’autres unités logiques à votre service…

Aucun commentaire:

Enregistrer un commentaire