Parlons maintenant de systèmes
logiques qui permettent de construire des machines spécialisées, et en particulier
des microcontrôleurs. Les éléments de base sont des
portes que l'on peut assembler pour former
des blocs intermédiaires, que l'on assemblera eux-mêmes
pour faire des machines. Alors, le premier élément que l'on a déjà,
euh, trouvé, c'est l'inverseur logique qui a en fait
deux états. L'entrée peut valoir zéro et
un. La sortie est tout simplement l'inverse,
si c'est un zéro, on a un; si c'est un, c'est un zéro.
L'élément suivant que tout le monde connaît, c'est la porte ET,
avec quatre possibilités, je note A, B, je
pourrais continuer, s'il y avait plus d'entrées; j'ai une sortie S.
Les combinaisons possibles, on les note selon la numérotation binaire,
habituellement.
Et puis, la sortie est à un, si les deux entrées sont à un.
Donc, voilà la table de vérité de la
fonction ET, que l'on peut réaliser avec des
transistors, qui s'appellent le, euh, porte ET,
euh, et traditionnellement, euh, on écrit A fois
B, pour cette porte ET. La porte OU est aussi bien connue;
je vous laisse faire la table de vérité. On utilise le signe
plus, et le dernier élément de base, c'est
la porte OU exclusif,
en anglais, XOR, qui dit
l'un ou l'autre, mais
pas les deux. Il y a d'autres
portes, puisque on voit qu'il pourrait y avoir d'autres tables de vérité.
Mais, c'est là que les systèmes logiques montrent que
toutes ces portes peuvent être générées, à partir
uniquement de l'inverseur et de la porte ET.
Mais, il faut quand même avoir bien présent dans l'esprit, l'existence de ces
quatre fonctions, que l'on va retrouver
en programmation mais avec des notations naturellement
qui ne sont pas inspirées de l'âge où on pouvait taper avec la machine à écrire, un
O par-dessus un plus. Un C, on a le
tilde pour dire que c'est l'inverse logique.
On a le ET logique, c'est normal. On a la barre verticale
qui veut dire le OU, et puis le petit chapeau qui veut
dire OU exclusif.
Alors, un élément un peu plus complexe serait un aiguillage.
Alors, on connaît bien les, les
aiguillages électriques, hein, qui permettent d'amener
le courant de deux sources différentes, avec un interrupteur mécanique qui bouge.
Et bien, on peut, euh, on a besoin de la même fonction, dans le fond, au niveau
des circuits logiques. Vous avez une entrée A, une entrée B; on
aimerait envoyer sur la sortie S, soit A, si I
vaut zéro, soit ET si I vaut
un. Et dans ce, cette nouvelle figure que j'ai
agrandie d'une page d'un catalogue de circuit intégré, et bien,
euh, vous voyez que c'est utilisé pour écrire le comportement,
euh, de l'interface, euh, le processeur va recevoir un signal qui
vient de cette source ou de celle-là, en fonction d'une condition, d'une
condition logique, et ce signal va être réutilisé plus loin.
Euh, c'est le langage,
dans le fond, pour comprendre le schéma logique.
Donc, comment est-ce que je peux, euh, convertir la description
verbale que j'ai fait tout à l'heure sous forme d'une équation?
Et bien je vais écrire S est égal à,
si I vaut zéro, c'est I barre qui est actif,
fois un, condition ET plus, si I est un un, on va
prendre le signal B fois B.
Et là, on va trouver une porte ET dans une porte, se trouve une porte OU.
C'est le dessin qui est ici, I a été transposé en I barre.
Si on ne veut pas
dessiner l'inverseur, on peut mettre un petit rond, directement avec I.
Ici, on aura I barre.
Voilà, nous voyons un autre exemple de, de notation.
Les multiplexeurs sont les aiguillages à plus d'entrées, et si vous
imaginez une mémoire de un gigabite, et bien, il faut un aiguillage de un mégabite
position pour choisir le mot mémoire qui vous intéresse.
Naturellement, ça va se construire d'une façon
électronique un petit peu plus astucieuse, et,
et, plus rapide que avec les systèmes
logiques, euh, que, que l'on vient d'é, d'évoquer.
Les dimé, démultiplexeurs vont en sens inverse;
c'est des aiguillages en pointe, des EF FF.
Vous avez encore des décodeurs, euh, le décodeur, c'est le segment qui
permet de convertir un, un nombre, un groupe de bits dans l'affiche
d'un serment de segment, est un exemple bien connu, et tous ces éléments sont
appelés des éléments combinatoires; vous les retrouverez dans la prochaine leçon.
Evoquons maintenant les éléments
séquentiels, et je vous remontre deux inverseurs, l'un derrière l'autre.
Si j'ai un zéro sur l'entrée de cet
inverseur, on va trouver un un à sa sortie.
Le un va être de nouveau inversé, on aura un zéro.
Si j'ai par exemple, par contre, un un, et bien, inversé, ça va devenir un zéro,
et on va retrouver un un.
Et étant donné que j'ai à chaque fois la même chose en entrée et en sortie, et
bien, je peux boucler cet élément, et il sera stable.
En l'enclenchant, je ne sais pas quelle, quelle valeur il va prendre.
C'est l'élément mémoire le plus simple que l'on peut réaliser sous
forme électronique, que l'on peut dessiner avec les inverseurs, comme cela, que l'on
peut dessiner encore, en faisant aparaître un certaine symétrie.
Ici, la symétrie est meilleure, et elles nous prépare, dans le fond, à, à dire,
mais cet élément mémoire, j'aimerais pouvoir le faire modifier.
Si j'ai un un, ici, et bien, j'aimerais avoir un zéro, par exemple, ou l'inverse.
Donc, si maintenant, vous considérez cette porte OU,
si vous avez un zéro sur ces entrées,
la porte OU avec cette petite inversion, devant,
c'est exactement l'équivalent de l'inverseur qu'on a vu, ici.
Mais l'intérêt de la porte I, où c'est que
si maintenant vous insérez, vous forcez un état logique un,
sur cette entrée, à travers la porte OU, vous allez trouver un un.
Vous vous trouvez, ici, avec un un, mais un zéro de ce côté.
Zéro zéro, sur une porte OU, ça fait un zéro.
Le zéro vient, ici, et on retrouve un un, ce qui veut dire que
lorsque le signal set aura disparu, et bien, vous
aurez toujours le serpent qui se mord la queue, toujours la porte qui reste stable.
Donc, ça, c'est la bascule la plus fameuse
du début des, des ordinateurs, des systèmes logiques.
La bascule RS, on ne s'intéresse plus à savoir comment elle
est câblée, et avec des portes ET, des portes OU, des inverseurs.
On a une fonction bascule avec deux sorties, une
sortie Q et puis la sortie inverse Q barre,
une entrée de mise à un, une entrée de remise à zéro, qu'on appelle reset
ou clear, et cette bascule, on peut représenter son
comportement sous forme d'un diagramme d'état.
Il y a deux équilibres possible, Q égal zéro, Q égal
un. Il y a une entrée S, ici, qui si
elle à zéro, et bien, elle ne va pas influencer l'état, mais
si S est égal à un, on va basculer, on va passer dans l'état
Q égal un, ou on va, euh, rester, que ce que
l'on ait, S égal zéro, ou que l'on ait S
égal un. Et puis maintenant, si on veut faire champ
d'état, et bien, il faudra agir sur l'entrée R qui par défaut, elle
est à zéro, et de nouveau, et bien on va attérrir de l'autre côté,
avec un état R qui est indifférent égal zéro ou égal à un.
Donc, ce qui nous intéresse, et bien c'est de savoir,
euh, qu'avec l'état S égal un, R égal un, on peut
faire basculer, et puis maintenant, si on posait la question, que
se passe-t-il si on agit simultanément sur S et sur R?
Et bien, on ne doit pas le faire.
Comme avec une bascule d'enfant, vous la faite basculer d'un côté ou de l'autre.
Si vous agissez des deux côtés à la fois, vous
la cassez, et on vous dit qu'il ne fallait pas faire.
Voilà pour une explication.
Alors, encore un aspect de cette bascule, c'est que elle va être réalisée
avec de l'électronique, et puis, l'électronique a toujours
un certain temps de retard. Donc, au moment où on agit sur la
sortie S, statiquement vous
avez la sortie qui va passer à l'état un, et y rester
jusqu'à ce que, euh, il y ait, euh, un autre, une autre réaction de l'autre côté.
Alors,
vu à l'oscilloscope, si vous avez un signal,
euh, d'entrée,
cette qui est aussi parfait que ça; souvent, il y a des petits arrondis.
Et bien, la sortie va évoluer avec un certain retard,
et si vous regardez à très haute fréquence, et bien, vous verrez
toujours un arrondi, dû à des capacités parasites qui existent
partout, et puis que, que l'on essaye de minimaliser, euh,
où il faut faire attention uniquement quand on travaille à
très haute fréquence, ce qui n'est pas notre, euh, préoccupation.
On vient de voir une première bascule dit stable, la bascule RS.
En système
logique, il existe plusieurs types de bascules, on va se contenter
d'en étudier une seule, la bascule D, avec laquelle on peut déjà faire
beaucoup de choses, en particulier des registres à décalage et des compteurs.
À quoi ressemble une bascule D?
Et bien, c'est une bascule RS, dans laquelle on a rajouté de la
logique pour avoir un signal qui s'appelle clock, et qui
a une caractéristique nouvelle. Ce signal n'est pas
statique comme on l'a vu pour le set et le reset.
C'est un signal qui est dynamique, qui va être
sensible à une transition. C'est lorsque le signal
passe de l'état un à l'état zéro que l'entrée D va être
échantillonnée et copiée sur la sortie.
Donc, le diagramme des temps montre cette
fonctionnalité, au moment du flanc montant de
l'horloge, l'entrée D est échantillonnée; il faut
qu'elle soit un petit peu stable avant,
à un petit peu stable après.
Mais c'est des microsecondes ou des nanosecondes, même actuellement.
Entre temps, la valeur peut être quelconque.
C'est, autre prochaine instant d'horloge que
la nouvelle valeur sera échantillonnée et transférée.
Alors, ici, on avait un zéro, ce zéro est transféré sur la sortie.
Ici, on avait un un, il est transféré sur la sortie.
Ici, on avait de nouveau un un, l'état est maintenu à un.
Donc, on voit qu'il y a des concepts très importants, le concept
d'éléments statiques qui va être dominant. L'horloge
dynamique qui agit à une transition, et puis les signaux
qui sont échantillonnés, qui doivent juste exister, être valables
à l'instant du transfert. Plusieurs de ces bascules
côte à côte, et bien, on a ce qu'on appelle un registre parallèle.
Si vous avez, par exemple, la formation un, un zéro un sur les entrées, à
l'instant d'horloge, vous allez retrouver cette information un
zéro un sur les sorties et l'information peut changer
sur les entrées, ça n'aura pas d'effets sur les sorties.
Alors, c'est vraiment un élément mémoire que l'on va retrouver partout.
On ne va pas le dessiner avec des bascules, on va dessiner un
rectangle, un faisceau d'entrée huit bits, mais ça pourrait être, euh,
différent, un faisceau de ligne en sortie et cette
fameuse horloge qui va faire le transfert de
l'entrée sur la sortie. On peut aussi brancher
ces bascules l'une derrière l'autre, et ce qui va se
passer, c'est que au premier instant d'horloge qui
se répète partout, et bien, l'entrée va être copiée sur la sortie.
L'entrée de la bascule suivante, on ne le connaît pas, puisque, euh, je
ne vous ai pas dit que toutes les bascules avaient été remises à zéro, initialement.
Ça va être copié tel quel sur la sortie, et de même sur Q trois.
Alors, l'information que l'on a assigné, elle
va se propager petit à petit d'une
bascule à l'autre, et puis ensuite, on avait programmé
un un, qui va aussi se propager d'une bascule à l'autre, et on va retrouver
en sortie, en fait, la séquence que l'on a entrée,
euh, trois impulsions dans l'âge, plus tôt.
Donc, c'est un élément, ça, euh, que l'on retrouvera beaucoup, pour transmettre de
l'information en particulier, puisqu'il suffit d'avoir deux lignes seulement,
pour transférer des mos, d'une longueur absolument quelconque.
Voilà une autre réalisation intéressante avec la bascule dit stable.
On a une horloge,
comme d'habitude; la sortie Q est connectée à l'entrée.
Qu'est-ce que ça veut dire?
Si j'ai un zéro sur cette bascule, la sortie Q barre est inversée, on
trouve cette valeur inversée sur l'entrée. Donc, au prochain
coup d'horloge, il va y avoir un transfert sur la sortie,
inversion. Et puis, on a une bascule qui mérite son
nom de bascule, puisqu'elle va changer d'état à chaque transition de l'horloge.
Donc, on a fait, en fait, un, un diviseur par deux, et si on sait faire un
diviseur par deux, et bien, on va faire un petit train de diviseur par deux
et connecter ça de façon à faire un compteur binaire.
Donc, la première bascule passe à un au premier coup d'horloge.
Elle passe à zéro au deuxième coup d'horloge, et c'est
à ce moment-là que la bascule suivante devrait être activée.
Donc, la sortie, ça fait un montant, qui active la bascule.
Donc, sur la sortie, ici, Q un, on a un flanc
descendant, mais sur la sortie inverse, on a un flanc montant.
Donc, le diagramme des temps, ici, vous montre que à chaque flanc descendant, on
a action sur l'étage suivant, et on va compter en binaire.
Donc, on a fait un compteur binaire.
Ces valeurs décimales ne nous intéressent en fait pas.
Ce qui est intéressant de remarquer, c'est que au moment où on
à l'état un, un, un, et qu'on envoie une impulsion d'horloge, la
première bascule change, agit sur l'horloge,
la suivante, qui change, agit sur
la suivante qui change pour qu'on lise le zéro qui apparaît, ici,
ensuite là, ensuite là.
Mais vous voyez qu'il y a un certain retard, un temps de propagation, euh, qui
n'est pas du tout souhaitable, parce que
ça va ralentir, en fait, le, le processeur.
Donc, c'est là que les systèmes logiques interviennent pour trouver des solutions
un petit peu plus élégantes, un peu plus efficaces pour enregistrer un décalage.
Un petit exercice, pour
terminer.
On a câblé deux bascules; vous reconnaissez,
ici, un petit élément de registre en décalage.
Vous reconnaissez, ici, la rétroaction du compteur par deux.
Euh, comment va, ce système va évoluer?
L'habitude, c'est de noter les états successifs, et puis, quand on recommence
au début, et bien, on ne va pas réécrire, hein, toute la séquence des états.
Donc ici, il y a trois
états successifs.
Là, il y a quatre états successifs, et bien, réfléchissons un
petit peu, et répondez à la question.