Comment un XOR avec plus de 2 entrées est-il censé fonctionner?

27

Je viens de commencer à étudier l'ingénierie informatique et j'ai des doutes concernant le comportement de la porte XOR.

J'ai projeté des circuits avec Logisim, dont les XOR se comportent différemment de ce que j'ai appris. Pour moi, il devrait se comporter comme une porte de parité, donnant une sortie élevée chaque fois que les entrées reçoivent une combinaison étrange. Ce n'est pas le cas, cependant, pour plus de deux entrées. Comment devrait-il se comporter?

J'ai également lu dans un livre que les portes XOR ne sont pas produites avec plus de deux entrées. Est-ce exact? Pourquoi?

gabrieljcs
la source
1
Pourquoi pas (ou presque jamais) avec> 2 entrées? Deux utilisations typiques des portes XOR sont 1) pour vérifier l'égalité et 2) pour contrôler / manipuler la polarité d'un signal. Aucun des deux n'a de sens pour plus de 2 entrées.
Wouter van Ooijen
1
La somme dans un additionneur complet ne serait-elle pas représentée comme A ^ B ^ Cin?
gabrieljcs
Vous pouvez l'exprimer de cette façon, mais cela ne signifie pas que c'est un bon moyen de le mettre en œuvre.
Wouter van Ooijen
1
Je viens de vérifier ma version de Logisim, et le "1 et seulement 1" semble être le comportement par défaut mais il y a la possibilité de le changer en une fonction de parité impaire.
Joe Hass
En effet, Joe. Ce lien a une discussion à ce sujet, répondu par le développeur de Logisim, Carl Burch.
gabrieljcs

Réponses:

23

Il existe différents points de vue concernant le comportement d'une porte OU exclusif avec plus de deux entrées. Le plus souvent, une telle porte XOR se comporte comme une cascade de portes à 2 entrées et remplit une fonction de parité impaire. Cependant, certaines personnes interprètent le sens de OU exclusif plus littéralement et disent que la sortie doit être un 1 si et seulement si exactement l'une des entrées est un 1. Je semble me rappeler que Logisim utilise cette dernière interprétation, et quelque part dans ma mémoire rouillée je l'ai vu dans une bibliothèque de cellules ASIC. L'un des symboles standard internationaux pour une porte XOR est un rectangle étiqueté avec =1lequel semble être plus cohérent avec la définition "1 et seulement 1".

EDIT: La définition de OU exclusif comme "1 et seulement 1" est rare mais elle peut être trouvée. Par exemple, IEEE-Std91a-1991 donne le symbole pour le OU exclusif sur p. 62 avec la note: "La sortie se trouve à son état 1 si une et une seule des deux entrées se trouve à son état 1." Pour plus de 2 entrées, la norme recommande d'utiliser le symbole "parité impaire" à la place. Les sites Web qui discutent de cette situation confuse incluent XOR: The Interesting Gate et des démos de portes chez TAMS . Une recherche Google fera également apparaître des sites qui prétendent qu'à strictement parler, il n'y a pas de porte XOR avec plus de deux entrées.

Joe Hass
la source
4
En ce qui me concerne, le second (1 et seulement 1) est la seule façon correcte de le faire - rien d'autre n'est vraiment exclusif .
Polynôme
3
Il n'y a pas de point de vue différent, les deux points sont techniquement corrects, mais "1 si seulement si exactement l'une des entrées est un 1" ne se développe pas comme vous pourriez le penser. Lorsque vous mettez en cascade des XOR à 2 entrées, chaque sortie alimentant les broches d'un troisième XOR, cela montre le point ci-dessus. Les portes à entrées multiples sont dérivées de leurs primitives à 2 entrées. Ainsi, la table de vérité à 4 entrées est ((A⊕B) ⊕ (C⊕D)), ce qui donne une sortie finale 1 s'il y a un nombre impair d'entrées vraies.
Kris Bahnsen
@KrisBahnsen Comme l'OP l'a souligné, il y a en effet deux points de vue (essayez le XOR par défaut dans Logisim si vous avez besoin de preuves). Votre affirmation selon laquelle les portes à entrées multiples sont dérivées de primitives à 2 entrées est donnée comme si c'était une vérité universelle, mais nous vous avons déjà donné un contre-exemple.
Joe Hass
@JoeHass, je n'ai jamais utilisé logisim, j'utilise principalement LogicWorks; dans lequel, un XOR à entrées multiples se comporte comme je l'ai décrit ci-dessus, un nombre impair d'entrées vraies est une sortie vraie. La page wiki sur XOR (en.wikipedia.org/wiki/XOR) convient que ce que j'ai dit est également vrai. Je n'ai également jamais vu de circuit intégré XOR à entrées multiples, je ne peux donc pas me tourner vers les fiches techniques pour essayer de réfuter ce que j'ai dit. Logisim semble être la seule chose qui implémente le schéma XOR à entrées multiples avec la logique "1 si et seulement ..." Si vous pouvez trouver une autre source, je dois admettre que je me trompe et qu'il existe plusieurs définitions de XOR.
Kris Bahnsen du
Bonne précision, merci d'avoir consacré plus de temps que moi à la recherche des normes.
Kris Bahnsen
11

Sur un XOR à deux portes, la sortie est élevée lorsque les entrées sont différentes. Si les entrées sont les mêmes, la sortie est faible.

D'où cette table de vérité:

entrez la description de l'image ici

Vous pouvez trouver une porte XOR qui a plus de deux entrées, mais ce n'est pas en fait un XOR à 3 entrées. Ils XOR entrée A et B et le résultat d'eux "R" est alors XOR avec entrée C. Et le résultat de R XOR C est alors XOR avec entrée 4 et ainsi de suite.

Voici une table de vérité pour les trois entrées XOR montrées:

entrez la description de l'image ici

Un algorithme de parité simple consiste à XORing bits dans un message reçu sur par exemple Ethernet. Si l'expéditeur et le récepteur savent que XORing, les bits de message doivent être 0 (un bit dans le message est fourni pour pouvoir en ajouter un de sorte qu'un message de n'importe quelle longueur puisse être 0 lorsqu'il est XORed), alors le récepteur peut savoir si 1 bit a été retourné. Il s'agit d'un mauvais contrôle de parité car il ne peut trouver qu'un nombre impair de changements de bits, mais montre le concept.

iQt
la source
1
Je suis mathématicien, cette réponse me semble horrible. Je comprends que c'est la sortie généralement destinée à un XOR à 3 entrées mais 01101000 me semble beaucoup plus logique. + Belle réponse.
Ben Crossley
1

Si vous prenez 4 entrées et alimentez deux à un XOR et deux à un autre, alors, prenez les deux sorties XOR et alimentez-les vers un troisième XOR, sa sortie fait ce que vous pensez qu'il devrait (je pense).

Andy aka
la source
1
Je m'intéresse plus au pourquoi, pas au comment. Merci pour la réponse.
gabrieljcs
@root, en fait, vous avez demandé "Comment devrait-il se comporter?" Vous n'avez demandé pourquoi nulle part. C'est une bonne réponse, elle donne ((A⊕B) ⊕ (C⊕D)) qui est la même chose qu'un XOR à 4 entrées, qui est la même chose que plusieurs XOR à 2 entrées en cascade.
Kris Bahnsen
Tu as raison. Désolé pour le malentendu.
gabrieljcs
1

XOR n'est pas complètement une porte de parité. Si vous définissez la sortie de XOR comme 1 lorsqu'une et une seule des entrées est 1, un XOR à trois entrées vous donnera 0 pour l'entrée tout-1. Ceci n'est pas utilisé très souvent et il y a donc peu de portes XOR à 3 entrées.

Ce que la plupart des gens veulent dire quand ils disent que XOR est l'addition de modulo 2 qui est exactement un vérificateur de parité. La plupart des portes étiquetées comme XOR à 3 entrées sont en fait des portes d'addition modulo 2. Pour deux entrées, l'addition de modulo 2 est la même chose que XOR mais le 0 du XOR décrit ci-dessus est à la place un 1 dans les portes modulo 2. Les portes Modulo 2 avec un nombre arbitraire d'entrées peuvent être produites à partir de portes XOR à deux entrées simples.

Duggie
la source
1

j'ai fait un peu de recherche en voyant votre question et j'ai trouvé un IC qui est une porte XOR à 3 entrées. 74LVC1G386 de nxp. le lien vers le site nxp montrant les résultats de recherche pour ce numéro de pièce sur le site nxp est http://www.nxp.com/search?q=74lvc1g386&type=keyword&rows=10

Mahesh Mohandasan
la source
2
Merci d'avoir contribué, mais votre réponse sera sans valeur si NXP change de moteur de recherche. Veuillez résumer ce que vous avez trouvé ici afin qu'il ait une valeur durable.
Joe Hass
J'ai juste cherché pour voir s'il y avait une fabrication fournissant plus de 3 entrées à XOR et j'ai trouvé celle-ci ... alors j'ai pensé que cela aiderait à la partager ... voici un lien vers leur fiche technique nxp.com/documents/ data_sheet / 74LVC1G386.pdf
Mahesh Mohandasan
1
Merci de ne pas poster un autre lien! Dites-nous comment ça marche!
Joe Hass
C'est une porte XOR à 3 entrées qui fonctionne exactement comme nous l'avons étudié / connu. c'est-à-dire, il donne un o / p élevé pour un nombre impair d'entrées élevées (comme à partir de la fiche technique). C'est pourquoi a partagé le lien. :)
Mahesh Mohandasan
1

Alors j'y suis allé et j'ai testé! J'ai écrit un petit fichier verilog, simulé et regardé la forme d'onde.

Il s'avère que l'interprétation correcte de Verilog est la suivante: il y a un nombre impair de 1 dans l'entrée AKA Interprétation 2 de cet article

module top (y1, y2);
output y1, y2;
reg a, b, c;
wire x1, x2;
wire t;

xor(t, a, b);
xor(x2, t, c);

assign y2 = x2;
assign y1 = x1;

xor(x1, a, b, c);

initial
begin
  $dumpfile("test.vcd");
  $dumpvars(y1, y2, a, b, c, x1, x2);

#20
#10  a = 0; b = 0; c = 0;
#10  a = 0; b = 0; c = 1;
#10  a = 0; b = 1; c = 0;
#10  a = 0; b = 1; c = 1;
#10  a = 1; b = 0; c = 0;
#10  a = 1; b = 0; c = 1;
#10  a = 1; b = 1; c = 0;
#10  a = 1; b = 1; c = 1;
#10  a = 0; b = 0; c = 0;
end

endmodule

entrez la description de l'image ici

mentatkgs
la source
-1

Selon la logique de la porte OU à entrées multiples simples, il prend la valeur la plus élevée parmi toutes les entrées, mais il ne prend pas de décision. En ce qui concerne EXOR (être mélangé avec un demi-additionneur n'est qu'une coïncidence, car cela ne se produit pas dans la logique à valeurs multiples EXOR), il décide quelle est la plus élevée parmi les entrées mais si la plus élevée (y compris 0 + 0 .. 1 + 1) sont les mêmes, il ne parvient pas à sélectionner parmi les entrées signifie qu'il ne peut pas prendre la décision à choisir. Aucune décision ne signifie que la sortie est nulle.Par exemple, si quelqu'un est invité à acheter le nombre maximum de bonbons d'une marque dans une poupée et s'il y a deux marques (radix = 2), il peut sélectionner celle qui a le plus grand nombre de bonbons, mais si les deux marques sont disponibles gratuitement, il ne peut pas en sélectionner de même (signifie 0,0) de même si les deux marques proposent le même numéro (1, 1) de bonbons qu'il ne peut pas prendre de décision signifie que la sortie est nulle. La même logique peut être étendue pour 3, 4 ou plus de marques (radix supérieur) de bonbons. Cela s'applique également à la logique à valeurs multiples. (x + x + .. + x = 0 où x peut avoir n'importe quelle valeur), en trois entrées porte EXOR 1 + 1 + 1 = 0 (par opposition à l'interprétation normale 1 + 1 + 1 = 1 qui semble être faux, étant confondu avec la parité). VT Ingole, PhD

vijay ingole
la source
Cette explication est inutilement compliquée et ne semble de toute façon pas répondre définitivement à la question.
duskwuff