Combinatoire vs séquentiel

Circuits logiques combinatoires

Un circuit logique combinatoire est un circuit électronique qui réalise une fonction – au sens mathématique du terme – dont les paramètres et le résultat sont des valeurs binaires. Le mot « combinatoire » signifie que l’on peut énumérer toutes les combinaisons possibles de valeurs d’entrée et associer à chacune un résultat. Autrement dit, il est possible de représenter le comportement du circuit sous la forme d’une table de vérité.

Dans un circuit logique combinatoire, la même combinaison de valeurs en entrée produit toujours la même combinaison de valeurs en sortie. À chaque fois qu’une entrée change, le circuit recalcule automatiquement ses sorties.

Tous les circuits que nous avons étudiés dans le chapitre précédent font partie de la famille des circuits combinatoires : les portes logiques, les multiplexeurs, les additionneurs, etc.

Circuits logiques séquentiels

Vu de l’extérieur, un circuit logique séquentiel se présente également comme un circuit électronique qui traite des données binaires en entrée et qui produit des données binaires en sortie. Ici, cependant, les valeurs des sorties ne dépendent pas seulement de la valeur des entrées à l’instant courant, mais également de la séquence des valeurs d’entrée reçues précédemment.

Exemple

Dans le système de commande de robot que nous avons réalisé, le robot avance tant que le bouton Avancer de la télécommande est pressé. Dès que l’utilisateur relâche ce bouton, le robot s’arrête. Nous pouvons imaginer un fonctionnement différent, dans lequel un premier appui sur le bouton déclencherait le mouvement, et un second appui l’arrêterait. On pourrait alors écrire le scénario suivant :

  1. Au démarrage, le robot est arrêté et tous les boutons de la télécommande sont relâchés.
  2. L’utilisateur presse le bouton Avancer. Le robot se met à avancer.
  3. L’utilisateur relâche le bouton Avancer. Le robot continue à avancer.
  4. L’utilisateur presse le bouton Avancer. Le robot s’arrête.
  5. L’utilisateur relâche le bouton Avancer. Le robot reste arrêté.
  6. Retourner à l’étape 2.

Verrouillage du déplacement du robot

Ce fonctionnement peut être représenté plus précisément sous la forme d’un chronogramme. Sur la figure ci-dessous, les valeurs successives de BABA ont été représentées sous la forme de niveaux bas et hauts. L’axe horizontal représente le temps. Nous avons introduit une variable MAMA qui vaut 1 lorsque le robot doit avancer et 0 lorsqu’il doit être immobile.

Verrouillage du déplacement du robot (chronogramme)

Pouvons-nous établir la table de vérité de MAMA en fonction de BABA ? D’après le chronogramme, elle devrait ressembler à ceci :

BABA MAMA
0 Ça dépend
1 Ça dépend

Le calcul de MAMA ne peut pas être réalisé par un circuit logique combinatoire car la valeur de MAMA dépend du nombre de fois que le bouton a été pressé depuis la mise en marche du système : MAMA vaut 0 si le bouton a été pressé un nombre pair de fois, 1 si le bouton a été pressé un nombre impair de fois.

Pour déterminer la valeur de MAMA, il faut que le circuit conserve des informations sur les événements passés. La sortie est donc calculée en fonction de l’entrée et des informations mémorisées. Dans la table de vérité ci-dessous, nous faisons l’hypothèse que le circuit connaît la valeur courante de BABA et se souvient des valeurs que BABA et MAMA avaient à l’instant précédent (BAprecBA_{prec}, MAprecMA_{prec}). En observant le chronogramme, nous pouvons identifier huit cas. Sur la figure ci-dessous, nous les avons numérotés et nous avons mis en évidence les valeurs mémorisées en bleu et les valeurs courantes en rouge.

Verrouillage du déplacement du robot (chronogramme avec valeurs précédentes et courante)

À présent, nous pouvons établir la table de vérité suivante :

BAprecBA_{prec} BABA MAprecMA_{prec} MAMA Chronogramme
0 0 0 0 (1)
0 0 1 1 (5)
0 1 0 1 (2)
0 1 1 0 (6)
1 0 0 0 (8)
1 0 1 1 (4)
1 1 0 0 (7)
1 1 1 1 (3)

Nous retrouvons la table de vérité d’un circuit logique combinatoire, avec pour seule particularité la présence de deux signaux internes qui fournissent des valeurs précédentes de BABA et MAMA.

On remarque que dans les cas 2 et 6, MA=MAprecMA = \overline{MA_{prec}}. Dans les autres cas, MA=MAprecMA = MA_{prec} :

MA={MAprecsi BABAprecMAprecsinonMA = \begin{cases} \overline{MA_{prec}} & \text{si } BA \cdot \overline{BA_{prec}} \\ MA_{prec} & \text{sinon} \end{cases}

Cette observation suggère un circuit utilisant un multiplexeur. Sur le schéma ci-dessous, nous avons fait apparaître des composants de mémorisation (Mem). Leur fonctionnement sera détaillé dans la suite de ce chapitre.

Verrouillage du déplacement du robot (circuit)

Anatomie d’un circuit logique séquentiel

Dans le cas général, un circuit logique séquentiel est constitué d’un assemblage de circuits logiques combinatoires et d’éléments de mémorisation. On dit que ces éléments de mémorisation contiennent l’état interne du circuit. Au cours de son fonctionnement, le circuit :

Le schéma ci-dessous illustre ce fonctionnement. Le nuage « Comb » représente une fonction logique combinatoire qui calcule les sorties et l’état suivant. Le rectangle « Mem » représente les éléments de mémorisation qui conservent l’état du circuit.

Anatomie d'un circuit séquentiel

Dans la suite de ce document, nous noterons avec une étoile (par exemple ss^*) l’état suivant de manière à le distinguer de l’état courant (par exemple ss).

Résumé

Dans un circuit logique combinatoire, la même combinaison de valeurs en entrée produit toujours la même combinaison de valeurs en sortie.

Dans un circuit logique séquentiel, les valeurs des sorties dépendent également de la séquence des valeurs d’entrée reçues précédemment.

Ainsi, un circuit logique séquentiel calcule ses sorties en fonction d’informations qu’il a mémorisées au cours de son fonctionnement. Ces informations constituent l’état interne du circuit.

Un circuit logique séquentiel est constitué d’un assemblage