Comparateur binaire - Logique combinatoire

Dans cette leçon en français, le présentateur explique le fonctionnement et la conception des comparateurs binaires, circuits logiques combinatoires qui comparent deux mots binaires et indiquent s’ils sont égaux, si le premier est supérieur ou inférieur au second. Il commence par le comparateur à 1 bit, en présentant la table de vérité, les expressions booléennes (E = A0'B0' + A0B0, S = A0B0', I = A0'B0) et le schéma logique correspondant. Il montre ensuite comment combiner deux comparateurs 1‑bit pour obtenir un comparateur à 2 bits, en détaillant les règles de combinaison pour les sorties E, S et I (E = E1·E0, S = S1 + (E1·S0), I = I1 + (E1·I0)). Le même principe est généralisé à n bits en empilant les comparateurs de poids de plus en plus élevés. Enfin, il illustre une application pratique : le contrôle de parité pour détecter une erreur de bit unique lors de la transmission d’un code de 4 bits. Le générateur de parité (XOR à plusieurs entrées) crée un 5ᵉ bit, le récepteur recalcule la parité, puis utilise un comparateur 1‑bit pour vérifier l’égalité des bits de parité. Le présentateur rappelle que cette méthode ne détecte qu’une seule erreur de bit et mentionne la nécessité d’autres techniques pour des erreurs multiples. La leçon se conclut par un rappel des concepts et une invitation à la prochaine vidéo.
Chapters
Bonjour à tous et bienvenue dans cette nouvelle leçon sur la logique booléenne. Aujourd'hui, nous allons voir le comparateur binaire. Le comparateur binaire ou comparateur logique, connu aussi sous le nom de comparateur de magnitude, est un circuit logique combinatoire qui dispose d'entrées qui accueillent 2 mots binaires à comparer et 3 sorties qui indiquent respectivement si les 2 mots binaires de l'entrée sont égaux, si le premier mot est supérieur au deuxième, ou si le premier mot est inférieur au deuxième. La sortie à activer est mise à 1 alors que les 2 sorties restantes sont mises à 0. À l'instar de l'addition et la soustraction qui sont des opérations arithmétiques, la comparaison est une opération très courante en informatique, et aussi en électronique numérique. En effet, on est souvent amené à comparer 2 nombres afin de prendre la décision adéquate par la suite. Nous aurons l'occasion de voir un exemple vers la fin de cette vidéo. Imaginons que l'on souhaite comparer 2 nombres binaires que l'on appellera A et B composés d'1 bit chacun. On notera ces bits A0 et B0. Si on veut comparer ces 2 mots binaires, on utilisera un comparateur logique qui dispose de 2 entrées et qui accueilleront respectivement les bits A0 et B0, et de 3 sorties qui indiquent si le mot A est égal à B, si A est supérieur à B ou si A est inférieur à B. On notera respectivement ces sorties par E, Il s'agit des initiaux des mots=, supérieur et inférieur. On commence par établir la table de vérité qui accueillera les entrées A0 et B0 et les sorties E, S et I. On pose ensuite les combinaisons possibles des entrées, donc 00, 01, 10 et 11. Maintenant, si A0 vaut 0 et B0 vaut 0 aussi, alors les 2 mots binaires A et B sont égaux, donc on met la sortie E à 1 et les 2 sorties restantes S et I à 0. Si A0 vaut 0 et B0 vaut 1, alors le mot binaire A est inférieur à B, donc on met la sortie I à 1 et les autres sorties à 0. Si A0 vaut 1 et B0 vaut 0, alors le mot binaire A est supérieur à B, donc on met la sortie S à 1 et les autres sorties à 0. Enfin, si A0 vaut 1 et B0 vaut 1 aussi, alors les 2 mots binaires A et B sont égaux, donc on active la sortie E comme pour le premier cas. Maintenant, on établit les fonctions logiques de chacune des 3 sorties et on aura: E= A0 barre B0 barre+ A0 B0, ce qui est équivalent à A0 XOR B0 barre. S= A0 B0 barre. I= A0 barre B0. On peut désormais dessiner le circuit logique qui aura cette forme. On imagine maintenant que les mots binaires A et B que l'on souhaite comparer sont constitués chacun de 2 bits et qu'on notera A1 A0 et B1 B0, A1 et B1 étant des bits de poids fort. Comme dans le cas d'un mot d'un seul bit, on peut recourir à la table de vérité, mais elle sera un peu grande car on aura 4 entrées, donc 16 lignes. Donc cette fois nous allons opérer différemment, mais on prendra en compte le comparateur à 2 mots d'1 bit chacun que l'on vient de traiter. D'ailleurs, on ne va pas s'intéresser à la composition interne de ce dernier, mais on va supposer qu'il s'agit d'un circuit logique à 2 entrées A0 et B0 et 3 sorties E, S et I comme ceci. On sait que le mot binaire A vaut 11 A0 et B vaut B1 B0. Donc pour que les 2 mots soient égaux, il faut que a1 soit égal à b1 et a0 égal à b0. C'est le cas par exemple de a égal à 00 et b égal à 00, ou a égal à 01 et b égal à 01. Retenez bien cette règle car on y reviendra quand on traitera les 2 cas restants. Maintenant, pour que le mot a soit supérieur au mot b, il faut que le bit de poids fort a1 soit supérieur au bit de poids fort b1, comme c'est le cas pour a qui vaut 10 et B qui vaut 01. Or, si A1 est égal à B1, dans ce cas on passe au bit suivant, c'est-à-dire A0 et B0. Donc, pour que A soit supérieur à B dans ce cas, il faut que A0 soit supérieur à B0, comme c'est le cas de A qui vaut 01 et B qui vaut 00. En résumé, pour que le mot binaire A soit supérieur au mot binaire B, il faut que A1 soit supérieur à B1, ou bien A1 égal à B1 et A0 supérieur à B0. Et enfin, pour que le mot A soit inférieur à B, on va encore s'intéresser aux bits de poids fort en premier. Donc il faut que A1 soit inférieur à B1. C'est le cas du mot binaire A qui vaut 01 et B qui vaut 10 par exemple. De même, si jamais ces 2 bits sont égaux, donc on passe aux bits suivants, donc A0 et B0. Dans ce cas, il faut que A0 soit inférieur à B0. C'est par exemple le cas du mot A qui vaut 00 et B qui vaut 01. En résumé, pour que le mot binaire A soit inférieur à B, il faut que A1 soit inférieur à B1 ou bien A1 B1 et A0 inférieur à B0. Nous avons maintenant les 3 cas possibles pour comparer 2 mots binaires de 2 bits chacun. Pour dessiner le circuit logique d'un comparateur de 2 mots à 2 bits, nous allons nous servir des 2 comparateurs de 2 mots à 1 bit qu'on a vus précédemment et que l'on va connecter d'une certaine manière afin de produire notre comparateur sur 2 bits en utilisant les 3 règles que l'on vient de traiter. Comme vous l'aurez certainement deviné, nous allons placer les bits A0 et B0 aux entrées du premier comparateur, et les bits A1 et B1 aux entrées du deuxième comparateur. Maintenant, pour que le mot binaire A soit égal au mot binaire B, il faut que A1 soit égal à B1 et A0 égal à B0. Autrement dit, il faut que les sorties E des 2 comparateurs soient activées. En effet, chaque comparateur se charge de comparer 2 bits du même poids. Donc, nous allons juste relier les sorties E de chaque comparateur à travers une porte ET comme ceci. La sortie de la porte logique ET va constituer la nouvelle sortie E de notre comparateur à 2 bits. De même, pour que le mot binaire A soit supérieur à B, il faut que A1 soit supérieur à B1 ou A1 B1 et A0 supérieur à B0, comme on l'a vu il y a quelques instants. Donc le fait que A1 soit supérieur à B1 va activer la sortie S du deuxième comparateur. Le fait que A1 soit égal à B1 va activer la sortie E du deuxième comparateur aussi, et le fait que A0 soit supérieur à B0 va activer la sortie S du premier comparateur. On va juste relier ces sorties-là en utilisant les portes logiques adéquates comme c'est décrit dans la règle. À la fin, la sortie de la porte logique OU va constituer la nouvelle sortie S de notre comparateur à 2 bits. Enfin, pour que le mot binaire A soit inférieur à B, il faut que A1 soit inférieur à B1 ou A1 B1 et A0 inférieur à B0. Donc on va faire en sorte de relier les sorties I et E du deuxième comparateur et la sortie I du premier comparateur en suivant le même raisonnement que l'on vient de voir. Donc, et une fois de plus, la sortie de la porte logique OU constituera la nouvelle sortie I de notre comparateur à 2 bits. Voilà à quoi ressemblera notre comparateur à 2 bits. Si on veut comparer 2 mots binaires de 3 bits chacun, on va suivre le même raisonnement. Donc, on considère que le comparateur à 2 bits que l'on vient de traiter est un circuit à part entière qui va se charger de comparer les bits A1 et A0 avec B1 et B0. On ajoute un comparateur à 1 bit qui va comparer A2 avec B2 et on suit la même logique. Et ainsi de suite pour comparer 4 bits, 5 bits, etc. Comme je l'ai mentionné au début de cette vidéo, le comparateur binaire est largement utilisé dans la pratique et on va voir un exemple d'utilisation courant de ce circuit logique. Vous vous souvenez de l'exemple de l'envoi d'un code binaire de 4 bits d'un bout à l'autre à travers une ligne qui ne laisse passer qu'un seul bit à la fois en utilisant un multiplexeur et un démultiplexeur. Maintenant, comment le destinataire du code peut-il être sûr que le code qu'il a reçu est bien le même qui a été envoyé? En effet, il arrive parfois qu'un code change pendant le transfert, souvent accidentellement à cause d'erreurs qui peuvent survenir pendant le traitement de données. Pour répondre à cette question et pour simplifier l'exemple, on va supposer qu'un seul bit du code envoyé peut être touché par une erreur, donc 0 peut devenir 1 et 1 peut devenir 0. Si on suppose que le code à envoyer est 1001. Maintenant, si au moment du transfert le deuxième bit qui vaut 0 devient 1, Le destinataire recevra 1101, mais il ne dispose d'aucun moyen pour savoir si le code est intègre ou non. L'une des solutions à ce problème s'appelle contrôle de parité. En effet, comme son nom l'indique, on va vérifier la parité du nombre de bits mis à 1. Si ce nombre est pair, alors on va produire un 5e bit qui vaut 0 par exemple, et si ce nombre est impair, alors le 5e bit vaut 1. Notez qu'on peut aussi parler de la somme des bits qui constituent le code. Et ça donnera exactement la même parité. Nous avons déjà traité la porte XOR à plus de 2 entrées, et nous avons vu qu'il s'agit d'un générateur de parité. Donc, il pourra bien nous servir pour calculer la valeur du 5e bit. En tout cas, nous allons calculer la parité du code initial qui vaut 1001. Puisqu'il contient 2 1, alors ce nombre est pair. Donc le 5e bit de parité vaut 0. On l'ajoute par exemple à la fin du code à envoyer et qui vaut 10010. À l'autre bout de la ligne, il suffit que le destinataire fasse le même traitement, c'est-à-dire, il va calculer la parité des 4 premiers bits du code qu'il a reçu. Il compare ensuite le résultat avec la valeur du 5e bit du code reçu. Si c'est la même valeur, alors le code n'a pas été modifié pendant le transfert. Sinon, alors il y a eu une erreur et le destinataire demande à ce qu'on lui envoie le code une deuxième fois. Par exemple, si le code reçu est 11010, Le contrôle de parité des 4 premiers bits donnera 1, car on a 3 bits à 1 qui est un nombre impair, alors que le bit de parité reçu vaut 0. Donc le destinataire sait qu'un bit a été modifié, alors le code qu'elle a reçu est invalide. Vous avez compris que dans ce cas, le comparateur binaire nous sera utile pour comparer le bit de parité reçu avec le bit de parité calculé. Bien entendu, on aura besoin d'un comparateur à 1 bit seulement, comme celui qu'on a vu au tout début. Si la sortie E du comparateur est activée, alors les bits de parité sont égaux, donc le code reçu est valide. Si la sortie E vaut 0, ce qui signifie que soit la sortie S vaut 1 ou la sortie I vaut 1, dans ce cas le code reçu n'est pas valide. Je rappelle que l'usage du contrôle de parité comme décrit dans cet exemple est valable seulement si on suppose qu'un seul bit peut être sujet d'erreur, sinon cette solution ne conviendra pas et il faudra en adopter une autre. 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









