Accueil > Électronique > Circuits logiques combinatoires
ÉlectroniqueLes bases de l'automatisme

Circuits logiques combinatoires

Partagez l'article sur les réseaux sociaux

Un circuit logique est dit “combinatoire” quand aucune sortie n’est reliée à une entrée, c’est à dire quand le circuit est en boucle ouverte. Ainsi une sortie ne dépend que de l’état des entrées.

Plan :

1. Circuits multiplexeurs
2. Circuits démultiplexeurs et décodeurs
3. Circuits encodeurs
4. Circuits comparateurs et détecteurs d’égalité

1. Circuits multiplexeurs

    Ces circuits ont 1 sortie.
     S’ils ont un nombre n de commandes, alors ils auront 2^n entrées.

     Dans notre exemple nous prendrons un multiplexeurs à 3 commandes (A, B et C) qui aura donc 2^3 = 8 entrées (D0, D1, …, D7) et une sortie Y. Ce circuit est composé d’un NOR (NON OU), de 8 AND et de 8 INVERSEURS :

multiplexeur
Circuits multiplexeurs

    Table de vérité :

/GCBAY
1XXX0
0000D0
0001D1
0010D2
0011D3
0100D4
0101D5
0110D6
0111D7

     Fonctionnement :

    – si /G = 1 alors quelques soient la valeur des commandes A, B et C (0 ou 1) la sortie Y sera à 0
    
– si /G = 0 alors la sortie Y va dépendre de l’état des 3 commandes. Si dans notre commande à 3 bits, C est le bit de poids fort (valeur 2^2 = 4 en base 10) et A le bit de poids faible (valeur 2^0 = 1 en base 10) alors voilà comment varie Y :
        – si CBA = 000 en base 2 => 0 en base 10, alors la sortie Y va prendre la valeur (0 ou 1) de l’entrée D0.
        – si CBA = 001 en base 2 => 1 en base 10, alors la sortie Y va prendre la valeur (0 ou 1) de l’entrée D1.
        – si CBA = 010 en base 2 => 2 en base 10, alors la sortie Y va prendre la valeur (0 ou 1) de l’entrée D2.
        … ainsi de suite jusqu’à :
        – si CBA = 111 en base 2 => 7 en base 10, alors la sortie Y va prendre la valeur (0 ou 1) de l’entrée D7.

    Conclusions :
    La variable /G est en fait une commande qui permet de valider le fonctionnement du multiplexeur : il faut qu’elle soit à 0 pour que le circuit fonctionne en multiplexeur. C’est la commande qui à la priorité la plus haute du circuit (tant qu’elle n’est pas à 0, le multiplexeur ne fonctionne pas !).
    Une fois cette commande à 0, alors la sortie Y dépend de la valeur de CBA. En fonction de cette valeur, Y va prendre l’état d’une des entrées D0,…,D7.

    Un mulitplexeur permet donc la sélection de la valeur d’une entrée parmis plusieurs.

2. Circuits démultiplexeurs et décodeurs

    1. Les démultiplexeurs

    Ces circuit ont 1 entrée.
    S’ils ont un nombre n de commande, alors ils auront 2^n sorties.

    Dans notre exemple, nous prendrons un démultiplexeur à 2 commandes (A et B) qui aura donc 2^2 = 4 sorties (Y0,Y1,Y2 et Y3) et une entrée “data”.
    Ce circuit est composé d’un NOR, de 4 NAND et de 4 INVERSEURS :

demultiplexeur
démultiplexeurs

    Table de vérité :

/StrobeABY0Y1Y2Y3
1XX1111
000data111
0011data11
01011data1
011111data

   Fonctionnement :

    – si /Strobe = 1 alors quelques soient les états de A et B, toutes les sorties sont à 1.
    – si /Strobe  = 0 alors les sorties vont dépendre de l’état des commandes A et B. Si A est le bit de poids fort (valeur 2^1 = 2 en base 10) et B le bit de poids faible (valeur 2^0 = 1 en base 10), alors les sorties varient ainsi :
        – si AB = 00 en base 2 => 0 en base 10, alors la sortie Y0 prend la valeur de “data” (0 ou 1) et les autres sorties sont à 1.
        – si AB = 01 en base 2 => 1 en base 10, alors la sortie Y1 prend la valeur de “data” (0 ou 1) et les autres sorties sont à 1.
        – si AB = 10 en base 2 => 2 en base 10, alors la sortie Y2 prend la valeur de “data” (0 ou 1) et les autres sorties sont à 1.
        – si AB = 11 en base 2 => 3 en base 10, alors la sortie Y3 prend la valeur de “data” (0 ou 1) et les autres sorties sont à 1.

    Conclusions :

    La variable /Strobe est en fait une commande qui permet de valider le fonctionnement du circuit en démultiplexeur. Elle a la priorité la plus importante car tant qu’elle n’est pas à 0, le circuit ne peut pas fonctionner en démultiplexeur !

    Une fois cette commande à 0, on se rend compte qu’un circuit démultiplexeur permet de transmettre l’état d’une entrée (ici “data”) sur une seule sortie parmis plusieurs.

2. Les décodeurs

    Si un circuit décodeur à un nombre n de commande, alors il a 2^n sorties.

    Dans notre cas, nous prendrons comme exemple un décodeur à 3 commandes (A, B et C) et donc 2^3 = 8 sorties (Y0,Y1,…,Y7). Ce circuit est composé de 8 NAND et de 4 INVERSEURS :

decodeur
Les décodeurs

    Table de vérité :

/GABCY0Y1Y2Y3Y4Y5Y6Y7
1XXX11111111
000001111111
000110111111
001011011111
0
011111111110

    Fonctionnement :

    – si /G = 1 alors quelques soient l’état des commandes, toutes les sorties sont à 1.
    – si /G = 0 alors les sorties vont dépendre de l’état des commandes A, B et C. Si A est le bit de poids fort (valeur 2^2 = 4 en base 10) et C le bit de poids faible (valeur 2^1 en base 10) alors les sorties varient ainsi :
        – si ABC = 000 en base 2 => 0 en base 10 alors la sortie Y0 = 0 et toutes les autres sont à 1.
        – si ABC = 001 en base 2 => 1 en base 10 alors la sortie Y1 = 0 et toutes les autres sont à 1.
        – si ABC = 010 en base 2 => 2 en base 10 alors la sortie Y2 = 0 et toutes les autres sont à 1.
        …
        – si ABC = 111 en base 2 => 7 en base 10 alors la sortie Y7 = 0 et toutes les autres sont à 1.

    Conclusions :

    La variable /G est en fait une commande qui permet de valider le fonctionnement du circuit en décodeur. Elle a la priorité la plus importante car tant qu’elle n’est pas à 0, le circuit ne peut pas fonctionner en décodeur !

3. Circuits encodeurs

   Si un encodeur a un nombre n de sorties, alors il a 2^n entrées.

    Dans notre exemple nous prendrons un encodeur à 3 sorties (Y2,Y1,Y0), c’est à dire à  2^3 = 8 entrées (e0,e1,e2…,e7).
 À noter : Gs est aussi une sortie, mais elle n’est pas indispensable. Nous verrons que Gs a un rôle d’encodeur de priorité…

    Ce circuit comporte 12 ET, 2 NAND, 3 NOR et 12 INVERSEURS :

encodeur
Circuits encodeurs


    Table de vérité :

/Ge0e1e2e3e4e5e6e7Y2Y1Y0Gs
1XXXXXXXX1111
0111111111111
0XXXXXXX00000
0XXXXXX010010
0XXXXX0110100
0XXXX01110110
0XXX011111000
0XX0111111010
0X01111111100
0011111111110

    Fonctionnement :

    Considérons, qu’en sortie, Y2 soit le bit de poids fort (valeur 2^2 = 4 en base 10) et que Y0 soit le bit de poids faible (valeur 2^0 = 1 en base 10).
    – si /G = 1 : quelques soient les entrées, toutes les sorties sont à 1.
    – si /G = 0 :
        – si toutes les entrées sont à 1 alors toutes les sorties sont à 1.
        – si e7 = 0 (et peu importe l’état des autres sorties) alors toutes les sorties sont à 0 (Y2Y1Y0 = 000 en base 2 => 0 = 7-7 en base 10).
        – si e6 = 0 et e7 = 1 (et peu importe l’état des autres sorties) alors Y0 = 1 et les autres sorties sont à 0(Y2Y1Y0 = 001 en base 2 => 1 = 7-6 en base 10).
        – si e5 = 0 et les entrées superieures à e5 à 1 alors Y2Y1Y0 = 010 en base 2 => 2 = 7-5 en base 10)
        …
        – dans le cas général : si eN = 0 et les entrées supérieures à eN à 1 alors Y2Y1Y0 sera tel qu’en base 10 il vaudra 7-N. C’est l’encodage réalisé par notre encodeur.

    Remarque :
    On peut voir que, lorsque /G = 0, dans le cas où e0e1e2e3e4e5e6e7 = 1111111 et dans le cas où e0e1e2e3e4e5e6e7 = 0111111 alors on a la même sortie Y2Y1Y0 = 111. Alors comment différencier ces 2 états d’entrée puisqu’ils on la même sortie ?
    On les différencie grâce au bit Gs. En effet dans le cas où toutes les entrées sont à 1 alors Gs = 1 et dans l’autre Gs = 0. Voilà à quoi sert la sortie Gs. On l’appelle encodeur de priorité : il permet de faire la différence entre 2 états d’entrée identiques.

    Conclusions :

    La variable /G est en fait une commande qui permet de valider le fonctionnement du circuit en encodeur. Elle a la priorité la plus importante car tant qu’elle n’est pas à 0, le circuit ne peut pas fonctionner en encodeur !

    Le circuit étudié peut paraître déjà un peu compliqué et pourtant l’encodage qu’il réalise est plutôt simple. Il existe des encodeurs bien plus complexes puisqu’il existe des codages bien plus tordus !

4. Circuits comparateurs et détecteurs d’égalité

    Ces circuits permettent de comparer la valeurs de 2 entrées. Ces entrées peuvent être écrites sur un ou plusieurs bits.

    Prenons comme exemple la comparaison de 2 bits “a” et “b” :

comparateur_simple
comparateurs et détecteurs d’égalité

    Fonctionnement :

    – si a > b (<=> a = 1 et b = 0) alors a_sup_b = 1 et  eg = a_inf_b = 0.
    – si a = b alors eg = 1 et a_sup_b = a_inf_b = 0.
    – si a < b (<=> a = 0 et b = 1) alors a_inf_b =1 et eg = a_sup_b = 0.  
    Remarque :

    Pour comparer 2 entrées écrites sur plusieurs bits, le principe reste le même.
    Par exemple si on veut comparer une entrée A sur 2 bits : a1a0 avec une entrée B : b1b0, on va d’abord comparer les bits de poids fort a1 et b1 :
        – si a1 = 1 et b1 = 0 alors on en déduit immédiatement que A > B sans comparer a0 et b0.
        – si a1 = 0 et b1 = 1 alors on en déduit immédiatement que A < B sans comparer a0 et b0.
        – si a1 = b1 alors il faut comparer a0 et b0 de la même façon avant de pouvoir en tirer une conclusion.


Partagez l'article sur les réseaux sociaux

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Résoudre : *
15 − 1 =