Systèmes électroniques
Fermer ×

Logique combinatoire

Simulation des circuits en logique combinatoire

Il est possible de simuler l'essentiel des montages de logique combinatoire avec le logiciel libre Logisim.

Définition

Dans un système combinatoire, chaque sortie Sk de k=0 à k=m-1 est une expression booléenne des entrées ej de j=0 à j=n-1.

Les expressions booléennes peuvent être simplififiées, ce qui fait que certaines variables d'entrée peuvent ne pas apparaître dans l'expression booléenne des sorties.
A chaque combinaison des variables d'entrées correspond une valeur et une seule pour chaque sortie.
Le nombre de combinaison des entrées est égale à 2n
Le nombre de sorties est défini par la fonction combinatoire à réaliser.

Mon conseil :
Avant de lire la suite, il est vivement recommandé, si cela n'est déjà fait, de lire le chapitre concernant la représentation et l'addition des entiers signés et non signés en binaire.

Codage et décodage

Le codeur ou encodeur

Le codeur ou encodeur est un système combinatoire qui possède de n entrées et m sorties qui respectent la relation n=2m.

Exemple de codeur 8 vers 3 :

e0e1e2e3e4e5e6e7S2S1S0
10000000000
01000000001
00100000010
00010000011
00001000100
00000100101
00000010110
00000001111

Si on affecte un poids binaire aux sorties par rapport à l'indice, alors la valeur binaire des sorties correspond au numéro de l'indice de l'entrée activée.

On peut remarquer que la table de vérité est imcomplète car elle ne représente que les combinaisons des entrées utilisées. Pour les expressions booléennes des sorties, on peut soit écrire l'expression en fonction de toutes les sorties et faire en sorte que toute autre combinaison que celle de la table donne 0, ou encore simplifier les expressions booléennes, ce qui fait que les combinaisons des entrées non prévues donneront un résultat inattendu.

Exemple de codeur 8 vers 3 prioritaire

Un codeur prioritaire fournit une valeur en fonction de la valeur maximale de l'entrée activée.

e0e1e2e3e4e5e6e7S2S1S0
10000000000
X1000000001
XX100000010
XXX10000011
XXXX1000100
XXXXX100101
XXXXXX10110
XXXXXXX1111

Dans ce cas toutes les combinaisons des entrées sont définies. Le code en sortie correspond à l'entrée de plus grand indice qui est activée.

Exemple :
si les entrées e1 et e2 sont activées le code en entrée est 01100000, code qui correspond au code de sortie 010 (210), ce code indique que l'entrée de plus haut niveau activée est 2.

Si l'on affecte un poids binaire aux entrées par rapport aux indices, l'exemple précédent montre que l'image de la valeur 6 est 2

Plus généralement, la fonction mathématique réalisée par ce circuit est : y = log 2 ( x )

Voir un exemple de simulation avec logisim
e0e1e2e3e4e5e6e7S2S1S0
00000000xxx
10000000000
11000000001
01000000001
01100000010
00100000010
00110000011
00010000011
00011000100
00001000100
00001100101
00000100101
00000110110
00000010110
00000011111
00000001111

Le décodeur

Le décodeur est un système combinatoire qui possède de n entrées et m sorties qui respectent la relation m=2n.

Exemple de décodeur 3 vers 8 :

e2e1e0S0S1S2S3S4S5S6S7
00010000000
00101000000
01000100000
01100010000
10000001000
10100000100
11000000010
11100000001

Ici on a 3 entrées et 8 combinaisons, toutes les combinsaisons sont donc définies.

Comme pour le codeur, si on affecte un poids binaire aux entrées pour obtenir une valeur décimale, le numéro de la sortie activée correspond à la valeur décimale des entrées.

Exemple
avec la combinaison d'entrée e2=1, e1=0 et e0=0 qui donne 01002=410, c'est la sortie d'indice 4 qui est activée. Si on affecte également une valeur décimale à la sortie en utilisant les indices comme références des poids binaires, avec la valeur 4 en entrée, on obtient 24=16 en sortie.

Plus généralement, la fonction mathématique réalisée par cette fonction est : S=2E avec S qui représente la valeur décimale équivalente des sorties de poids binaire de 0 à 7, et E qui représente la valeur décimale équivalente des entrées de poids binaire de 0 à 2.

Voir un exemple de simulation avec logisim
e2e1e0S0S1S2S3S4S5S6S7
00010000000
00101000000
01000100000
01100010000
10000001000
10100000100
11000000010
11100000001

Le multiplexeur

Le multiplexeur est un système combinatoire qui possède de m entrées d'adresses, n=2m lignes d'entrées et une sortie. La valeur binaire de l'adresse permet de connecter l'entrée correspondante à la valeur décimale de l'adresse à la sortie.

Exemple de multiplexeur de 8 entrées

a2a1a0S
000e0
001e1
010e2
011e3
100e4
101e5
110e6
111e7

La table de vérité complète comporte 11 entrées et 1 sortie, ce qui donne 2048 combinaisons. La table de vérité proposée est simplififiée en donnant l'entrée qui est connectée à la sortie en fonction des valeurs binaires des adresses.

Si on prend la valeur de l'adresse a2=1, a1=0, a0=0 qui donne A=1002=410, on peut lire que la sortie S est reliée à l'entrée e4. Ce qui signifie que si e4=0 alors S=0 et si e4=1 alors S=1.

Le démultiplexeur

Le démultiplexeur est un système combinatoire qui possède de m entrées d'adresses, 1 ligne d'entrée, n=2m sorties. La valeur binaire de l'adresse permet de connecter l'entrée à la sortie correspondante à la valeur décimale de l'adresse.

Exemple de démultiplexeur 8 sorties

a2a1a0S0S1S2S3S4S5S6S7
000e0000000
0010e000000
01000e00000
011000e0000
1000000e000
10100000e00
110000000e0
1110000000e

La table de vérite comporte 4 entrée et 8 sorties. On aurait pu la représenter complètement, mais on préfère utiliser la même représentation que pour le multiplexeur.

Si on prend la valeur de l'adresse a2=1, a1=0, a0=0 qui donne A=1002=410, on peut lire que la sortie S4 est reliée à l'entrée e. Ce qui signifie que si e=0 alors S4=0 et si e=1 alors S4=1, les autres sorties étant toutes à 0 quelue soit la valeur de l'entrée e.

Opérations arithmétiques

Le comparateur

C'est un système qui permet de comparer deux valeurs exprimées en binaire et de fournir des booléens qui indiquent si a=b, a<b ou encore a>b.

Le comparateur 1 bit

La sortue Eg est vraie si a=b, la sortie Sup est vraie si a>b et la sortie Inf est vraie si a<b.

abEgSupInf
00100
01001
10010
11100

Cela donne les équations :

  • Eg = a ⊕ b
  • Sup = ab̅
  • Inf = a̅b

Comparateur 1 bit cascadable

On ne va pas donner la table de vérité avec 5 entrées et 3 sorties.
Les règles de la mise en cascade sont les suivantes :

  • Si l'entrée eSup est vraie alors la sortie Sup est vraie quelque soit les valeurs a et b
  • Si l'entrée eInf est vraie alors la sortie Inf est vraie quelque soit les valeurs a et b
  • Si l'entrée eEg est vraie alors l'état des sorties est défini en fonction des valeurs de a et b en respectant la règle du comparateur 1 bit précédent.

Cela donne les équations :

  • Sup = eSup + eEg.a.b̅
  • Inf = eInf + eEg.a̅.b
  • Eg = eEg.(a ⊕ b)

Comparaison de deux mots définis sur n bits

On utilise les comparateurs 1 bit cascadables, en commmençant par comparer les bits de poids fort pour terminer par les bits de poids faible. Il ne faut pas oublier les entrées du premier comparateur de façon à ce que la comparaison des bits de poids fort soit effective.


Mise en cascade de comparateurs pour la comparaison d'entiers non signés.

Exemple avec la comparaison de deux mots de 4 bits (n=4) non signés.

a3a2a1a0b3b2b1b0Résultat
1XXX0XXXa>b
01XX00XXa>b
001X000Xa>b
Voir un exemple de simulation de comparateur d'entiers non signés sur 4 bits
AABBEgInfSup
0000000000100
8100000000001
8100040100001
8100050101001
8100070111001
8100030011001
0000030011010
4010030011001
12110030011001
Voir un exemple de simulation de comparateur d'entiers signés sur 4 bits
AABBEgInfSup
0000000000100
-8100000000010
-8100040100010
-8100050101010
-8100070111010
-8100030011010
0000030011010
4010030011001
-4110030011010

L'additionneur

Additionneur 1 bit

L' additionneur 1 bit réalise l'addition de deux nombres exprimés sur 1 bit avec ou sans retenue d'entrée. On va étudier l'additionneur avec retenue d'entrée appelé additionneur complet (full-adder en Anglais).

ReabRsS
00000
00101
01001
01110
10001
10110
11010
11111
Il n'y a aucune simplification dans le tableau de Karnaugh.
S = Re ⊕ a ⊕ b
S = ab + Re(a + b)
ab est la retenue anticipée et Re(a + b) la retenue propagée

Additionneur n bits

On utilise n additionneurs complets 1 bit en commençant par l'addtion du bit de poids faible. La retenue d'entrée de chaque additionneur de rang k est reliée à la retenue de sortie de rang k-1. Rek=Rsk-1 avec Re0=0.

L'inconvénient de la mise en cascade d'additionneur est la propagation de la retenue définit le temps de propagation de l'additionneur. Il existe de nombreuses méthodes d'optimisation de calcul de la retenue afin de minimiser le temps de propagation d'un additionneur comme l'additionneur à retenue anticipée.

Le schéma représente un additionneur 4 bits avec retenue d'entrée C0 et retenue de sortie C3.

La soustraction sur n bits

Elle se fait en ajoutant le complément à deux de la deuxième opérande : A-B=A+B̅+1 avec + qui est l'opération d'addition.

En utilisant la relation ci-dessus, réaliser un soustracteur 4 bits à l'aide d'un additionneur 4 bits et de portes logiques

Solution [ Voir ]

La valeur B devient B̅ à l'entrée de l'additionneur ce qui donne l'addition S=A+B̅.
Le positionnement de la retenue d'entrée C0 à 1 permet d'ajouter 1.
Finalement on obtient S=A+B̅+1 qui est bien la soustraction de A-B.

Entiers non signés
AABBA+B̅SS
81000401001011001101004
121100701111000010001015
Entiers signés
AABBA+B̅SS
30011-211100001010001015
-4110030011110010001001-7

En utilisant la relation ci-dessus, réaliser un additionneur/soustracteur 4 bits à l'aide d'un additionneur 4 bits et de portes logiques. Le choix de l'opération se fait à l'aide d'un signal de commande as qui, lorsqu'il vaut 0 réalise une addition, et une soustraction lorsque'il vaut 1.

Solution [ Voir ]

La porte OU exclusif est un invserseur commandé lorsque l'une des entrée est à 0, la sortie est égale à l'autre entrée, lorsqu'une entrée est à 1, la sortie est égale à l'inverse de l'autre entrée.
S=ab̅+a̅b

  • a=0 ⇒ S=b
  • a=1 ⇒ S=b̅
asCIS
00A+B
11A+B̅+1=A-B

L'unité arithmétique et logique

l'UAL (ALU en Anglais) est un circuit combinatoire qui réalise les opérations logiques et arithmétiques en fonction d'un code d'entrée :

Ce circuit fournit le résultat de l’opération et positionne les bits spéciaux :

Le dépassement correspond à deux cas de fonctionnement :
La somme S de deux nombres positifs A et B donne un nombre négatif

Rsn-2
0......a0
0......b0
Rsn-1Sn-1......S0

Le résultat est négatif si Sn-1=1 ce qui implique que Rsn-2=1 et Rsn-1=0.

On a donc un dépassement O=Rsn-1¯.Rsn-2

La somme S de deux nombres négatifs A et B donne un nombre positif

Rsn-2
1......a0
1......b0
Rsn-1Sn-1......S0

Le résultat est positif si Sn-1=0 ce qui implique que Rsn-2=0 et Rsn-1=1.

On a donc un dépassement O=Rsn-1.Rsn-2¯

L'expression complète de O est donc : O=Rsn-1¯.Rsn-2+Rsn-1.Rsn-2¯=Rsn-1Rsn-2

L'UAL n'a pas de sorties de comparaisons, pour comparer deux entiers A et B, on réalise la soustraction A-B, puis on déduit le résultat de la comparaison des bits ZNCO.
L'interprétation de ces bits n'est pas le même suivant que l'on compare des entiers signés ou non signés.

Le tableau suivant donne le résultat de la comparaison A-B :
type entierEquationComparaison
non signéC=1A ≥ B
non signéC=0A < B
signéN ⊕ O=0A ≥ B
signéN ⊕ O=1A < B

Exemple 1

Soit à comparer les valeurs A=12 et B=7 exprimés sur 4 bits non signes

  1. Additionner A et le complément à 2 de B
  2. Déduire les valeurs des bits Z,N,C,O
  3. Donner le résultat de la comparaison

Eléments de solution

  1. Le complément à 2 de B qui vaut :
    0 1 1 1
    est :
    1 0 0 1

    Le résultat de l'opération est :
    0 1 0 1

    Les retenues sont Rs3 = 1 et Rs2 = 1
  2. Les valeurs des bits sont :
    Z=0
    N=0
    C=1
    O=1
  3. Le résultat de la comparaison est 12 > 7

Exemple 2

Soit à comparer les valeurs A=2 et B=8 exprimés sur 4 bits non signes

  1. Additionner A et le complément à 2 de B
  2. Déduire les valeurs des bits Z,N,C,O
  3. Donner le résultat de la comparaison

Eléments de solution

  1. Le complément à 2 de B qui vaut :
    1 0 0 0
    est :
    1 0 0 0

    Le résultat de l'opération est :
    1 0 1 0

    Les retenues sont Rs3 = 0 et Rs2 = 0
  2. Les valeurs des bits sont :
    Z=0
    N=1
    C=0
    O=1
  3. Le résultat de la comparaison est 2 < 8

Exemple 3

Soit à comparer les valeurs A=-5 et B=-4 exprimés sur 4 bits signes

  1. Additionner A et le complément à 2 de B
  2. Déduire les valeurs des bits Z,N,C,O
  3. Donner le résultat de la comparaison

Eléments de solution

  1. Le complément à 2 de B qui vaut :
    1 1 0 0
    est :
    0 1 0 0

    Le résultat de l'opération est :
    1 1 1 1

    Les retenues sont Rs3 = 0 et Rs2 = 0
  2. Les valeurs des bits sont :
    Z=0
    N=1
    C=0
    O=0
  3. Le résultat de la comparaison est -5 < -4

Jouons avec les comparaisons

sur bits, puis demander une

Solution [ Voir ]

Synthèse des systèmes logiques

Autrefois, l'implémentation des solutions logiques se faisait avec des circuits intégrés incluant uniquement des portes logiques et les fonctions combinatoires décrites précédement. La synthèse servait à élaborer les schémas des solutions logiques avec des portes logiques.

Le logigramme

Le logigramme est, dans le cas pérsent, le schéma de la fonction logique simplifiée qui est réalisée avec des opérateurs et fonctions logiques. Généralement on utilise des opérateurs NON, des fonctions ET et des fonctions OU.

Les exemples suivants sont repris des exemples du chapitre Algèbre de boole

Premier exemple

Table de vérité
abcS
0001
0010
0100
0110
1001
1010
1101
1111

La fonction est S=f(0,4,6,7).

Tableau de karnaugh
La solution simplifiée est S = b̅c̅ + ab
Voir la simulation
abcS
0001
0010
0100
0110
1001
1010
1101
1111

Deuxième exemple

Table de vérité
abcS
0000
0010
0100
0111
1000
1011
1101
1111

La fonction est S=f(3,5,6,7).

Tableau de karnaugh
La solution simplifiée est S = bc + ab + ac
Voir la simulation
abcS
0000
0010
0100
0111
1000
1011
1101
1111

Troisième exemple

Table de vérité
abcdS
00001
00010
00101
00110
01000
01010
01100
01110
10001
10010
10101
10110
11001
11011
11101
11111

La fonction est S=f(0,2,8,10,12,13,14,15).

Tableau de karnaugh
La solution simplifiée est S = ab + b̅d̅

Jouons avec les logigrammes

puis demander une

Solution [ Voir ]

Le multiplexeur

Le multiplexeur permet de fournir une solution logique directement à partir de la table de vérité. Pour cela il suffit de connecter les variables d'entrée de la table de vérité aux entées d'adresses du multiplexeur. Pour chaque entrée présente dans la fonction, il suffit de connecter l'entrée correspondante à 1 et les autres entrées à 0 pour reproduire la table de vérité.

Les exemples suivants sont repris des exemples du chapitre Algèbre de boole

Premier exemple

Table de vérité
abcS
0001
0010
0100
0110
1001
1010
1101
1111

La fonction est S=f(0,4,6,7).

Deuxième exemple

Table de vérité
abcS
0000
0010
0100
0111
1000
1011
1101
1111

La fonction est S=f(3,5,6,7).

Troisième exemple

Table de vérité
abcdS
00001
00010
00101
00110
01000
01010
01100
01110
10001
10010
10101
10110
11001
11011
11101
11111

La fonction est S=f(0,2,8,10,12,13,14,15).

Jouons avec les multiplexeurs

puis demander une

Solution [ Voir ]

Ces méthodes de synthèses ne sont plus utilisées directement, mais laisse la place aux logiciels de conception des circuits intégrés numériques : les ASICs et FPGA qui utilise un langage de haut niveau comme VHDL. La méthode qui met en oeuvre le multiplexeur, peut éventuellement être utilisée, dans le cas où les logiciels de conception acceptent une saisie de type schéma de la fonction à mettre en oeuvre.