
Dans cette leçon, le présentateur explique le concept de décodeur en logique combinatoire, le présentant comme l’inverse d’un codeur. Il rappelle les principes d’un codeur (une entrée active à la fois, nombre d’entrées = 2^nombre de sorties) puis montre que, pour un décodeur, les entrées et les sorties sont permutées, avec la règle S = 2^e (S = nombre de sorties, e = nombre d’entrées). Il décrit la conception d’un décodeur 1‑of‑n à 2 entrées / 4 sorties, en construisant la table de vérité (00‑>S0, 01‑>S1, 10‑>S2, 11‑>S3) et en dérivant les fonctions logiques simplifiées : S0 = ¬E0·¬E1, S1 = ¬E0·E1, S2 = E0·¬E1, S3 = E0·E1. Il poursuit avec un décodeur BCD‑vers‑décimal (4 entrées, 10 sorties) en expliquant pourquoi le nombre de sorties n’est pas toujours une puissance de deux et comment choisir le nombre d’entrées adéquat. Il montre la table de vérité pour les 10 combinaisons valides (0000‑>S0 … 1001‑>S9) et discute brièvement de la simplification de certaines fonctions (ex. S9 = E0·E3). Le présentateur illustre ensuite l’usage typique d’un décodeur pour le décodage d’adresses mémoire, rappelant que le nombre d’entrées dépend de la taille de la mémoire (2 entrées → 4 adresses, 10 entrées → 1024 adresses). Tout au long de la vidéo, il insiste sur le principe qu’une seule sortie doit être active à la fois et donne des conseils de bonnes pratiques (ordre des lignes de la table, éviter les simplifications trop avancées pour les débutants). La leçon se conclut en invitant à appliquer les mêmes méthodes aux autres exemples de décodeurs.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur la logique booléenne. Aujourd'hui, nous allons voir le décodeur. Nous avons vu qu'un encodeur est un circuit logique combinatoire qui permet de générer un code binaire unique à sa sortie en fonction de l'entrée activée. Nous avons aussi vu qu'une seule entrée peut être activée à la fois, c'est-à-dire si une entrée est mise à 1, alors les autres entrées doivent être mises à 0. Le nombre d'entrées d'un codeur est égal à 2 à la puissance le nombre de sorties. Donc, un codeur doté de 4 entrées doit avoir 2 sorties, et s'il dispose de 8 entrées, alors il faut avoir 3 sorties, etc. Un décodeur quant à lui n'est rien d'autre qu'un codeur inversé, c'est-à-dire les entrées deviennent des sorties et les sorties deviennent des entrées. En effet, un décodeur est aussi un circuit logique combinatoire qui permet d'activer une sortie en fonction des valeurs binaires présentes à son entrée. On parle souvent d'un décodeur 1 parmi n pour dire qu'une seule sortie est activée parmi les n sorties dont il dispose. La règle qui relie les entrées et les sorties est la même utilisée pour le codeur, sauf qu'il faut permuter les entrées et les sorties. Donc S= 2^e. S désigne le nombre de sorties et e le nombre d'entrées. Alors, si le décodeur dispose de 2 entrées, il peut avoir jusqu'à 4 sorties, et s'il est équipé de 3 entrées, il peut avoir jusqu'à 8 sorties, etc. Notez que j'ai dit jusqu'à 8 sorties et non pas forcément 8 sorties exactes. En effet, il y a des cas où on n'a pas vraiment besoin de toutes les possibilités en sortie, mais on verra ce cas plus loin dans cette vidéo. Imaginez que nous disposons de 4 voyants lumineux dont on veut commander l'allumage de telle sorte qu'un seul voyant soit allumé à la fois, donc les autres doivent rester éteints. Les lignes connectées à ces voyants seront des sorties de notre décodeur. Si une ligne est mise à 1, alors le voyant concerné est allumé. Encore une fois, quand on parle de 1 en logique, c'est souvent considéré comme si un courant passait, donc cela permet d'allumer un voyant qui n'est rien d'autre qu'un composant électrique ou électronique. Puisqu'on a 4 sorties, alors selon la règle qui régit le décodeur, il faut 2 entrées. On appellera les entrées E0 et E1 et les sorties S0, S1, S2 et S3. En considérant encore une fois que E0 est le bit de poids fort ou MSB. Voyons comment concevoir notre décodeur. Comme d'habitude, on commence par construire la table de vérité. On posera les entrées à gauche et les sorties à droite. Puisqu'on a 2 entrées, alors le nombre de combinaisons possibles est 2 à la puissance 2, donc 4, qui correspond évidemment au nombre de sorties. Ces différentes combinaisons représentent les lignes de notre table de vérité. Elles seront placées dans l'ordre, donc 00, 01, 10 et 11. Comme toujours, nous ne sommes pas obligés de respecter cet ordre, mais il est conseillé de procéder ainsi afin d'éviter toute confusion si on a affaire à un nombre plus élevé d'entrées. Quant aux sorties, on en activera une à la fois pour chaque combinaison d'entrées. Donc pour l'entrée 00, on active la sortie S0, c'est-à-dire qu'on la met à 1 et on met à 0 toutes les sorties restantes. Ce qui veut dire que c'est le premier voyant qui sera allumé. Pour l'entrée 01, la sortie S1 est activée. 10 activera S2 et 11 activera S3. N'oubliez pas, une seule sortie est activée à la fois. Maintenant, on va établir les 4 fonctions logiques qui correspondent à chacune des sorties du décodeur. Pour la sortie S0, on va considérer là où elle vaut 1 pour exprimer sa fonction logique comme on l'a vu dans la leçon consacrée à cette opération. Donc S0 E0 barre E1 barre. Pareil pour S1 qui vaut E0 barre E1. S2 vaut E0 E1 barre. Et S3 qui vaut E0 E1. Les fonctions logiques sont déjà simplifiées comme ça. Donc pas la peine d'aller plus loin. On va directement dessiner le circuit logique qui correspond à notre décodeur et qui va avoir cette forme. Maintenant, imaginez que l'on veut concevoir un décodeur BCD vers le décimal. On sait que le BCD, qui veut dire Décimal Codé Binaire, que j'ai traité dans une vidéo à part dans la série consacrée aux systèmes numériques, n'est rien d'autre que la représentation binaire sur 4 bits des nombres allant de 0 à 9. Donc notre décodeur contiendra 4 entrées que l'on notera E0, E1, E2 et E3. On suppose encore une fois que E0 est le bit de poids fort. Quant aux sorties, on sait que d'après la règle qui régit un décodeur, on doit en avoir 2^nombre d'entrées, donc 16. Mais on sait que le BCD code seulement les chiffres de 0 à 9, ce qui veut dire qu'on n'aura que 10 possibilités, donc 10 sorties. En effet, dans la pratique, il n'est pas rare de tomber sur des cas où on a un nombre de sorties qui n'est pas forcément une puissance de 2, comme c'est le cas ici. Dans ce genre de situation, on va juste prendre un nombre d'entrées de telle sorte que 2 à la puissance ce nombre-là soit supérieur au nombre de sorties. Par exemple, si on a un décodeur qui est censé avoir 5 sorties, alors on ne va pas prendre 2 entrées, car selon la même règle, elles permettent d'avoir 4 combinaisons, donc 4 sorties seulement. Mais on prendra 3 entrées qui peuvent décoder jusqu'à 8 combinaisons, ce qui est largement suffisant pour décoder nos 5 sorties. Bien entendu, les 3 combinaisons restantes ne seront pas exploitées dans ce cas. Donc, notre décodeur BCD vers le décimal contiendra 4 entrées et 10 sorties. On peut imaginer ces sorties comme étant connectées à des afficheurs indépendants portant chacun un chiffre allant de 0 à 9. C'est-à-dire, si la première sortie est activée, alors l'afficheur qui porte le chiffre 0 est allumé, et si la dernière sortie est activée, alors c'est l'afficheur qui porte le chiffre 9 qui sera allumé. Bien entendu, il y a une technique plus robuste pour afficher les chiffres du décimal en n'utilisant qu'un seul afficheur connu sous le nom d'afficheur 7 segments. Mais on aura l'occasion de voir cela dans la leçon consacrée aux transcodeurs. Maintenant, passons à la conception de notre décodeur BCD vers le décimal. On commence par poser la table de vérité qui sera un peu conséquente vu qu'on a 4 entrées et 10 sorties, donc 14 colonnes en tout. Quant au nombre de combinaisons, on ne va pas aller jusqu'à 16 car on sait que le BCD ne compte que 10 valeurs. Donc, on aura 10 lignes. Nous allons poser les 10 combinaisons des entrées dans l'ordre comme ceci: Si l'entrée vaut 0000, alors c'est la sortie S0 qui correspond au nombre décimal 0 qui sera activée. Si l'entrée vaut 0001, la sortie S1 correspondant au nombre décimal 1 sera activée, et ainsi de suite jusqu'à l'entrée 1001 qui activera la sortie S9 qui correspond au nombre décimal 9. Comme d'habitude, seule une sortie est activée à la fois. Cette fois, on aura 10 fonctions logiques correspondant aux 10 sorties de notre décodeur et auront la forme suivante. Notez qu'il est possible de réduire certaines de ces fonctions en recourant à la méthode de la constatation qui consiste à identifier les particularités de certaines combinaisons dans la table de vérité. Par exemple, si on regarde la 10e ligne qui correspond à la valeur décimale 9, on voit que les entrées E0 et E3 valent 1. Alors qu'il n'y a aucune autre combinaison où ces 2 entrées valent 1 aussi. Ce qui signifie que l'on pourra simplifier la fonction logique de la sortie S9 qui devient S9 E0× E3. On peut faire pareil pour d'autres fonctions, mais je ne conseille pas cette méthode aux débutants car elle peut facilement induire en erreur avec le moindre manque d'attention. Donc, on va plutôt établir nos fonctions comme on l'a fait au début. Le circuit logique risque d'être un peu grand. Donc je vais me contenter de représenter seulement les sorties S0 et S9. L'un des usages les plus célèbres d'un décodeur consiste à décoder l'adresse mémoire. On parle donc de décodeur d'adresse. Comme vous le savez, la mémoire d'un ordinateur permet de stocker des données pour un usage ultérieur. On va considérer que l'on a affaire à une mémoire vive. La mémoire peut être vue comme une sorte de casier qui contient des cases d'un octet chacune. Chaque case a une adresse unique qui permet de l'identifier parmi ses homologues. Cette même adresse permet d'accéder à la case souhaitée directement sans traverser toutes les cases précédentes, ce qui est plutôt très pratique et rapide. Pour indiquer à quelle case on souhaite avoir accès, il faut activer la ligne qui lui est connectée en la mettant à 1. Notez qu'il s'agit là seulement d'un exemple explicatif, car dans la réalité les choses sont un poil plus compliquées. Donc, vous avez compris qu'on aura besoin d'un décodeur qui reçoit en entrée l'adresse de la case mémoire et qui active la sortie reliée à cette case-là afin que l'ordinateur puisse y avoir accès. Comme d'habitude, le nombre d'entrées dépend de la taille de la mémoire, donc 2 entrées permettent de décoder 4 adresses, 10 entrées permettent de décoder 1024 adresses, etc. J'imagine que vous pouvez facilement concevoir le décodeur d'adresse mémoire en suivant les mêmes méthodes qu'on a vues pour les 2 exemples précédents. Merci pour votre attention et à la vidéo prochaine.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









