Dans cette leçon en français, le narrateur explique le principe et la mise en œuvre d’un codeur (ou encodeur) en logique combinatoire. Il commence par illustrer le problème de l’identification d’une touche pressée sur une calculatrice à 10 chiffres et 6 fonctions, en montrant que chaque touche ne produit qu’un signal binaire « 1 ». Pour différencier les touches, il introduit un dispositif à 16 entrées et 4 sorties qui génère un code binaire unique pour chaque touche, en rappelant la règle E = 2^S (E = entrées, S = sorties). Il simplifie ensuite l’exemple en concevant un codeur à 4 entrées (E0‑E3) correspondant aux opérations +, –, ×, ÷, et deux sorties (S0, S1). Après avoir présenté la table de vérité (une ligne par entrée active), il dérive les fonctions logiques des sorties. Deux approches sont comparées : la méthode exhaustive (somme de produits) qui devient lourde pour de nombreux entrées, et une méthode simplifiée qui exploite le fait qu’une seule entrée est active, donnant S0 = E2 + E3 et S1 = E1 + E3. Il souligne une lacune de la méthode simplifiée – l’impossibilité de distinguer l’état « aucune touche pressée » du code 00 correspondant à E0 – et propose d’ajouter une cinquième entrée pour lever ce problème. Enfin, il décrit les applications courantes des codeurs (claviers d’ordinateur, capteurs industriels, télécommunications) et explique comment ils réduisent le nombre de lignes de connexion, économisant ainsi des ressources matérielles. La vidéo se conclut par un rappel de l’objectif pédagogique.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur la logique booléenne et les circuits logiques. Aujourd'hui, nous allons voir le codeur. Imaginez que l'on dispose d'une calculatrice classique qui embarque les 10 touches conventionnelles qui représentent les chiffres du décimal allant de 0 à 9, ainsi que 6 autres touches qui correspondent aux 4 opérations d'addition, de soustraction, de multiplication, de division, la touche= et la touche C qui sert à réinitialiser l'afficheur pour commencer une nouvelle opération de calcul. Bien entendu, il existe d'autres touches comme la virgule, mais il s'agit là d'un exemple simplifié pour mieux comprendre le principe. Du point de vue électrique, les touches sont des interrupteurs ou des boutons-poussoirs qui laissent passer un courant quand elles sont enfoncées. Comme d'habitude, on va représenter cela en binaire et on dira qu'une touche enfoncée correspond à la valeur 1 et une touche relâchée correspond à 0. Maintenant, si on appuie sur la touche 5, ce qui veut dire que cette touche envoie la valeur binaire 1, comment le processeur de notre calculatrice saura-t-il que c'est bien la touche 5 qui a été activée? Car si on appuie sur la touche 9 par exemple, c'est la même valeur binaire 1 qui sera envoyée. Pour résoudre ce problème, on va intercaler un dispositif entre les touches et le processeur. Ce dispositif contient 16 entrées qui représentent les touches de notre calculatrice. Et disons qu'il sera aussi équipé de 4 sorties. Nous allons voir plus loin comment nous avons calculé le nombre de sorties nécessaires. Le dispositif en question va tout simplement générer un code binaire unique qui permet de différencier les touches enfoncées. On suppose par exemple que si on appuie sur la touche 0, le code qui sera généré en sortie vaut 0000. Si on appuie sur la touche 9, alors le code sera 1001, et ainsi de suite. C'est ce code généré qui sera envoyé au processeur qui sera désormais capable d'identifier la touche qui a été activée. Le dispositif de notre exemple est connu sous le nom de codeur. Le codeur, appelé aussi encodeur, est un circuit logique combinatoire qui permet de générer des codes binaires uniques correspondant à chacune de ses entrées. Notez qu'une seule entrée peut être activée à la fois, autrement dit, si une entrée vaut la valeur binaire 1, alors il faut que toutes les entrées restantes soient mises à 0. La règle qui relie le nombre d'entrées et de sorties est la suivante: E= 2^S. E représente le nombre d'entrées et S le nombre de sorties. Pour l'exemple de la calculatrice, nous avons 16 entrées, donc pour que la règle soit satisfaite, il faut avoir 4 sorties. Bien entendu, on peut inverser cette règle comme suit: S= log2, ce qui donnera exactement la même chose. Maintenant, découvrons comment trouver la fonction logique d'un codeur pour dessiner ensuite le circuit logique équivalent. Pour ce faire, nous allons simplifier l'exemple de la calculatrice et nous allons supposer que l'on veut créer un codeur qui permet de coder seulement les 4 opérations de calcul qui sont l'addition, la soustraction, la multiplication et la division. C'est-à-dire un codeur qui indique au processeur de la calculatrice le type d'opération souhaité par l'utilisateur. Dans ce cas, on aura 4 entrées que l'on notera E0, E1, E2 et E3. On va supposer que E0 représente la touche +, E1 la touche -, E2 la touche × et E3 la touche ÷. Bien entendu, nous ne sommes pas obligés de respecter cet ordre, mais on peut faire correspondre les entrées aux touches d'opération autrement. Puisqu'on a 4 entrées, alors on aura 2 sorties conformément à la règle qui relie le nombre d'entrées et de sorties d'un codeur. On notera ces sorties S0 et S1. On va supposer que S0 est le bit de poids fort ou MSB. Comme d'habitude, on va passer par la table de vérité afin d'établir les fonctions logiques de notre encodeur. On en aura 2, une fonction logique par sortie. Nous allons placer les entrées à gauche et les sorties à droite. Quant au nombre de combinaisons possibles, c'est-à-dire le nombre de lignes de notre table de vérité, on en aura 4, car n'oubliez pas qu'une seule entrée est mise à 1 à la fois, donc les entrées restantes sont mises à 0. Donc, en règle générale, le nombre de combinaisons d'une table de vérité d'un codeur vaut le nombre de ses entrées, donc 2 à la puissance le nombre de ses sorties. Nous allons placer les 4 combinaisons possibles comme ceci: 1000 qui signifie que seule l'entrée E0 est activée, ce qui correspond à la touche+ de notre calculatrice. 0100 pour la touche-, 0010 pour la touche×, et enfin 0001 pour la touche Diviser. N'oubliez pas, une seule entrée est mise à 1 à la fois. Quant aux sorties, on va juste respecter l'ordre croissant des combinaisons binaires sur 2 bits qu'on a vu dans les leçons précédentes. Donc, 00, 01, 10 puis 11. Là encore, nous ne sommes pas obligés de respecter cet ordre, mais il est vivement recommandé de procéder ainsi, afin de ne pas avoir de confusion surtout si on a affaire à un codeur qui contient beaucoup d'entrées et de sorties comme ça serait le cas du codeur du clavier d'un ordinateur qui contient généralement 105 touches. Passons maintenant aux fonctions logiques des sorties S0 et S1. Je rappelle que jusqu'ici, pour établir une fonction logique à partir d'une table de vérité, on représente seulement les lignes où les sorties valent 1 en fonction de toutes les entrées de la ligne correspondante. Par exemple, on représente la sortie S0 comme ceci: S0 E0 barre E1 barre E2 E3 barre E0 barre E1 barre E2 barre E3, ce qui donne S0 E0 barre E1 barre E2 XOR E3. Donc on peut adopter cette fonction logique, sauf qu'en procédant de la sorte, on aura beaucoup de mal à exprimer les fonctions logiques d'un codeur qui contient beaucoup d'entrées. Donc cette fois, nous allons procéder différemment. En effet, nous savons qu'une seule entrée est mise à 1 à la fois, donc nous allons nous intéresser seulement aux entrées qui valent 1 pour représenter les sorties qui valent 1 aussi. C'est-à-dire, si on s'intéresse à la sortie S0, on constate qu'elle vaut 1 si l'entrée E2 vaut 1 ou l'entrée E3 vaut 1. Donc, on va simplement établir la fonction logique S0 comme ceci: S0= E2+ E3, c'est-à-dire E2 OU E3. Ce qui simplifie considérablement notre traitement. Pareil pour S1 qui vaut 1 si E1 vaut 1 ou E3 vaut 1. Donc la fonction logique S1 vaut E1 E3, c'est-à-dire E1 OU E3. Vous avez peut-être constaté que E0 ne figure dans aucune fonction, car le seul cas où elle vaut 1, les 2 sorties valent 0, ce qui est sans importance pour nous quand on veut établir la fonction logique puisqu'on s'intéresse seulement aux cas où les sorties valent 1. Donc, le traitement que nous avons fait contient quand même une petite lacune, car il y a un cas où le codeur donnera un résultat erroné. C'est le cas où aucune touche n'a été enfoncée, c'est-à-dire toutes les entrées sont mises à 0. Dans ce cas, on imagine que les 2 sorties vaudront 0 en toute évidence, ce qui, selon la table de vérité, correspond à l'activation de l'entrée E0. Donc, on n'arrive pas vraiment à différencier le cas où aucune touche n'a été enfoncée et la touche correspondant à l'entrée 0 a été enfoncée. Car le codeur produit la même combinaison de sortie qui est 00. Donc, si vous tenez à ce que votre codeur fonctionne parfaitement, alors il faut adopter la première méthode pour produire la fonction logique, et si vous voulez une solution rapide mais avec la lacune que je viens d'expliquer, alors la deuxième méthode est acceptée aussi. Figurez-vous qu'on peut avoir une fonction logique parfaite en utilisant la deuxième méthode, mais pour cela, il faut ajouter une cinquième entrée qui indique si une touche a été enfoncée ou non. Mais je préfère ne pas traiter cela afin de simplifier le principe, car l'objectif de cette vidéo consiste à ce que vous compreniez le principe de fonctionnement d'un codeur. Alors, ce qu'il faut retenir c'est qu'un codeur est un circuit combinatoire largement utilisé afin de générer un code correspondant à une entrée. Par exemple, on le trouve dans un ordinateur pour coder les touches du clavier en binaire, ou dans l'industrie afin de convertir des signaux de capteurs en codes numériques exploitables, ou encore en télécommunications pour convertir un signal en code binaire utilisable par les équipements informatiques. Mis à part le fait qu'un encodeur permet de représenter les données sous une forme compréhensible par l'ordinateur, il permet également de réduire le nombre de lignes en sortie. Dans l'exemple de la calculatrice à 16 touches, au lieu d'avoir 16 lignes connectées au processeur, on n'en a eu que 4, ce qui permet de réduire considérablement les ressources utilisées par l'ordinateur pour traiter les informations provenant de sources pareilles. Merci pour votre attention et à la vidéo prochaine.