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. Où est la réponse? Et bien, si on essaye de l'analyser un petit peu, ici, le zéro de la première bascule, c'est un un sur la bascule suivante. Donc, le Q un va se recopier sur la bascule Q deux, et là, déjà, on voit que c'est manifestement faux. Par contre, la sortie Q deux qui était à zéro, est effectivement copiée sous la forme d'un un, euh, sur la bascule Q un. Donc, cette séquence est correcte. Ici, le transfert est correct. Ensuite, le zéro qui est inversé se retrouve sous forme d'un un. Le un est inversé, se retrouve sous forme d'un zéro. Le un inversé, va se trouver au début de la séquence, de même que le zéro, et on a fait la boucle, on a un compteur par quatre, selon une séquence que l'on retrouvera aussi, puisque on peut remarquer qu'il y a un seul bit qui change à chaque transition. Voilà, on a une petite idée de ce qu'on peut faire avec des systèmes logiques, et maintenant, il nous faudra continuer la complexité pour arriver à un microprocesseur et un microcontrôleur.