bitGateLab Digital · Apprendre
Français
Ouvrir le simulateur

Apprendre › Chapitre 8

Multiplexeurs, décodeurs et encodeurs expliqués

8 min de lecture · Équipe bitGateLab

Les blocs combinatoires de taille moyenne sont les pièces avec lesquelles on assemble presque n'importe quel système numérique : le multiplexeur choisit une donnée parmi plusieurs, le démultiplexeur aiguille une donnée vers une destination, le décodeur active une seule ligne en fonction d'un nombre binaire et l'encodeur fait l'inverse. Vous allez voir ici leurs équations, leurs tables de vérité et deux applications qui tombent à tous les examens : réaliser une fonction logique avec un multiplexeur et concevoir un décodeur pour afficheur 7 segments.

Le multiplexeur (MUX)

Un multiplexeur à 2n entrées de données possède n entrées de sélection et une sortie. Le nombre binaire présent sur les lignes de sélection indique quelle entrée de données est transmise à la sortie. Le plus simple est le MUX 2 vers 1 :

Y = S·I0 + S·I1

Avec S = 0, la sortie recopie I0 ; avec S = 1, elle recopie I1. Le MUX 4 vers 1 utilise deux lignes de sélection S1 S0, et chaque entrée de données est multipliée par le minterme de sélection qui lui correspond :

Y = S1·S0·I0 + S1·S0·I1 + S1·S0·I2 + S1·S0·I3

S1S0Y
00I0
01I1
10I2
11I3

Chaque terme est une AND de l'entrée de données avec les lignes de sélection (directes ou complémentées), et toutes ces AND sont réunies par une OR.

Réaliser une fonction avec un MUX

Comme le MUX contient déjà tous les mintermes de ses variables de sélection, il sert de « fonction programmable ». Avec un MUX à 2n entrées, vous pouvez réaliser n'importe quelle fonction de n variables en appliquant 0 ou 1 sur chaque entrée de données. Mieux encore : le même MUX permet de réaliser une fonction de n + 1 variables si vous reliez la variable restante (ou son complément) aux entrées de données.

Exemple : réalisez F(A, B, C) = Σm(1, 2, 6, 7) avec un MUX 4 vers 1, en prenant A et B pour la sélection (A = S1, B = S0).

  1. Regroupez les lignes de la table de vérité par paires ayant la même valeur de A B et regardez comment F dépend de C.
  2. AB = 00 : m0 = 0 (C = 0), m1 = 1 (C = 1). F = C, donc I0 = C.
  3. AB = 01 : m2 = 1 (C = 0), m3 = 0 (C = 1). F = C, donc I1 = C.
  4. AB = 10 : m4 = 0, m5 = 0. I2 = 0.
  5. AB = 11 : m6 = 1, m7 = 1. I3 = 1.

Vérification avec A = 0, B = 1, C = 0 (minterme 2) : la sélection 01 choisit I1 = C = 1. Correct, m2 appartient bien à la fonction.

Le démultiplexeur et le décodeur

Le démultiplexeur (DEMUX) 1 vers 4 prend une donnée D et l'envoie sur l'une de ses quatre sorties selon S1 S0 ; les autres restent à 0 : Y0 = D·S1·S0, Y1 = D·S1·S0, Y2 = D·S1·S0, Y3 = D·S1·S0.

Si, dans le DEMUX, vous fixez D = 1 et que vous l'appelez « validation », vous obtenez un décodeur : n entrées et 2n sorties, dont une seule est active, celle qui correspond au nombre présent en entrée. Un décodeur 3 vers 8 génère les 8 mintermes de trois variables. C'est pourquoi n'importe quelle fonction de trois variables se réalise avec un décodeur et une porte OR qui réunit les sorties de ses mintermes.

Exemple : additionneur complet avec un décodeur 3 vers 8. Entrées A, B et Cin.

  • Somme S = Σm(1, 2, 4, 7) : OR à 4 entrées reliée aux sorties Y1, Y2, Y4, Y7.
  • Retenue Cout = Σm(3, 5, 6, 7) : OR à 4 entrées reliée à Y3, Y5, Y6, Y7.

Vérifiez un cas : A = 1, B = 1, Cin = 0 correspond au nombre 110 = 6. Seule Y6 s'active ; Y6 ne figure pas dans la OR de S (S = 0), mais figure dans celle de Cout (Cout = 1). En effet, 1 + 1 + 0 = 10 en binaire.

Le décodeur 3 vers 8 typique de la famille 74HC a des sorties actives à l'état bas : la sortie sélectionnée passe à 0 et les autres restent à 1. Dans ce cas, la OR des mintermes devient une NAND des mêmes sorties, d'après la loi de De Morgan.

L'encodeur de priorité

L'encodeur effectue l'opération inverse : à partir de 2n lignes, il fournit le numéro binaire sur n bits de la ligne active. Le problème est de savoir que faire si deux lignes s'activent en même temps ; la solution pratique est l'encodeur de priorité, qui fournit le numéro de la ligne active la plus élevée. Pour 4 entrées, de D3 (la plus prioritaire) à D0 :

Y1 = D3 + D2, Y0 = D3 + D2·D1, V = D3 + D2 + D1 + D0

La sortie V (« valide ») indique qu'au moins une entrée est active ; sans elle, vous ne pourriez pas distinguer « D0 active » de « aucune active », car les deux cas donnent Y1 Y0 = 00. Essayez avec D2 = D1 = 1 : Y1 = 1 et Y0 = 0 + 0·1 = 0, soit 10 = 2. C'est D2 qui l'emporte, comme il se doit.

Décodeur BCD vers 7 segments

a b c d e f g
Nom des segments d'un afficheur 7 segments.

Un afficheur 7 segments comporte une LED par segment. Le décodeur reçoit un chiffre BCD (A B C D, A étant le bit de poids fort) et allume les segments qui dessinent ce chiffre. Pour un afficheur à cathode commune, 1 signifie segment allumé :

ChiffreABCDabcdefg
000001111110
100010110000
200101101101
300111111001
401000110011
501011011011
601101011111
701111110000
810001111111
910011111011

Les codes 1010 à 1111 ne sont pas des codes BCD valides ; on les traite donc comme des cas indifférents (X) dans le tableau de Karnaugh. Cela simplifie beaucoup chaque segment.

Segment a : il ne vaut 0 que pour les chiffres 1 et 4. Dans le tableau à 4 variables, avec des X de 10 à 15, les plus grands groupes sont : A (8 cases avec les X), C (8 cases), B·D (mintermes 5, 7, 13, 15) et B·D (les quatre coins : 0, 2, 8, 10).

a = A + C + B·D + B·D

Vérifiez le 4 (0100) : A = 0, C = 0, B·D = 1·0 = 0, B·D = 0·1 = 0. Résultat 0 : le segment a reste éteint, c'est correct.

Si l'afficheur est à anode commune, chaque segment s'allume avec un 0 ; toutes les sorties sont donc inversées.

Erreurs fréquentes

Essayez dans le simulateur

Comparez la table de vérité de la fonction avec sa version réalisée à l'aide d'un multiplexeur.

  1. Créez une table de vérité à trois entrées A, B, C et mettez F = 1 sur les lignes 1, 2, 6 et 7.
  2. Placez dans l'éditeur un multiplexeur 4 vers 1 (ou réalisez-le avec quatre AND, deux NOT et une OR à quatre entrées) et reliez A et B à la sélection.
  3. Reliez C, le complément de C, un 0 fixe et un 1 fixe aux entrées de données, dans cet ordre.
  4. Parcourez les huit combinaisons d'entrée et observez que la sortie coïncide avec la table.
  5. Recommencez avec le segment a de l'afficheur : saisissez sa colonne dans une table à 4 variables, marquez les lignes 10 à 15 comme X et examinez les groupes que propose le tableau de Karnaugh.

Exercices

  1. Réalisez F(A, B, C) = Σm(0, 3, 5, 6) avec un MUX 4 vers 1 en prenant A et B pour la sélection.
    Réponse

    AB = 00 : m0 = 1, m1 = 0, I0 = C. AB = 01 : m2 = 0, m3 = 1, I1 = C. AB = 10 : m4 = 0, m5 = 1, I2 = C. AB = 11 : m6 = 1, m7 = 0, I3 = C. C'est la fonction de parité paire (elle vaut 1 lorsque le nombre de uns est pair) : F = A ⊕ B ⊕ C.

  2. Combien de lignes de sélection faut-il à un MUX à 16 entrées, et combien de variables peut avoir au maximum la fonction qu'il réalise ?
    Réponse

    4 lignes de sélection (24 = 16). En reliant la variable restante aux données, il peut réaliser n'importe quelle fonction ayant jusqu'à 5 variables.

  3. Trouvez l'équation du segment e en utilisant les combinaisons 10 à 15 comme cas indifférents.
    Réponse

    e = 1 pour 0, 2, 6 et 8. Groupes : B·D (0, 2, 8, 10) et C·D (2, 6, 10, 14). Résultat : e = B·D + C·D = D·(B + C).

  4. Dans l'encodeur de priorité à 4 entrées, quelle sortie obtient-on pour D3 = 0, D2 = 0, D1 = 1, D0 = 1 ?
    Réponse

    Y1 = 0 + 0 = 0, Y0 = 0 + 1·1 = 1, V = 1. Sortie 01 : D1 l'emporte sur D0.