具有两个以上输入的XOR应该如何工作?


27

我刚刚开始研究计算机工程,并且对XOR门的行为有一些疑问。

我一直在用Logisim投影电路,其XOR的行为与我所学的有所不同。对我来说,它应该充当奇偶校验门,每当输入接收到奇数组合时都将提供高输出。但是,输入的内容不超过两个。它应该如何表现?

我还读过一本书,指出异或门的产生不超过两个输入。那是对的吗?为什么?


1
为什么不使用(>几乎从来不使用)> 2个输入?XOR门的两种典型用法是:1)检查是否相等,以及2)控制/操纵信号的极性。超过2个输入都不有意义。
Wouter van Ooijen

1
全加器中的和不代表A ^ B ^ Cin吗?
gabrieljcs

您可以用这种方式表示它,但这并不意味着它是实现它的好方法。
Wouter van Ooijen

1
刚刚检查了我的Logisim版本,“ 1 and only 1”似乎是默认行为,但可以选择将其更改为奇校验功能。
Joe Hass 2013年

的确,乔。Logisim开发人员Carl Burch对此链接进行了讨论。
gabrieljcs

Answers:


23

对于具有两个以上输入的异或门应该如何工作,存在不同的观点。通常,这种XOR门的行为类似于2输入门的级联,并执行奇校验功能。但是,有些人更确切地解释“异或”的含义,并说当且仅当输入中的一个正好是1 时,输出才应为1。我确实记得Logisim使用后一种解释,并且在我生锈的内存在ASIC单元库中已经看到过。XOR门的国际标准符号之一是标记为的矩形,=1它似乎与“ 1并且只有1”的定义更加一致。

编辑:异或的定义为“ 1并且只有1”并不常见,但可以找到。例如,IEEE-Std91a-1991在p上给出了“异或”的符号。62,带有注释:“如果两个输入中只有一个处于其1状态,则输出将处于其1状态。” 对于2个以上的输入,标准建议改用“奇校验”符号。讨论这种令人困惑的情况的网站包括XOR:有趣的门TAMS上的门演示。谷歌搜索还将打开那些声称严格来说不存在具有两个以上输入的XOR门的网站。


4
就我而言,第二个方法(1并且只有1)是执行此操作的唯一正确方法-其他任何方法也不是唯一的
多项式

3
没有不同的观点,这两种观点在技术上都是正确的,但是“ 1,只要输入中的一个正好是1,就不会像您想象的那样扩展”。级联2个输入XOR时,每个输出都馈入第三个XOR的引脚,这表明了以上几点。多输入门从其2input基元派生。因此,第4输入真值表为((A⊕B)⊕(C⊕D)),如果存在奇数个真实输入,则最终输出1。
克里斯·巴恩森

@KrisBahnsen正如OP所指出的,确实存在两种观点(如果需要证据,请尝试在Logisim中使用默认XOR)。您认为多输入门是从2输入基元派生的,这是普遍真理,但我们已经给了您一个反例。
Joe Hass 2013年

@JoeHass,我从未使用过logisim,我主要使用LogicWorks;其中,多输入XOR的行为如上所述,真实输入的奇数是真实输出。XOR上的Wiki页面(en.wikipedia.org/wiki/XOR)同意我所说的也是正确的。我也从来没有真正看到过多输入XOR IC,所以我不能转向数据手册来试图反驳我所说的话。Logisim似乎是唯一使用逻辑“ 1 if and only ...”实现多输入XOR方案的东西。如果您可以找到其他来源,我承认我错了,而且XOR有多个定义。
克里斯·巴恩森

很好的澄清,谢谢您花费大量的时间研究标准。
克里斯·巴恩森

11

当输入不同时,在两门XOR上输出为高电平。如果输入相同,则输出为低。

因此,此真值表:

在此处输入图片说明

您可以找到具有两个以上输入的XOR门,但实际上它们不是3输入XOR。它们对输入A和B进行XOR,然后将其“ R”的结果与输入C进行XOR。然后,将R XOR C的结果与输入4进行XOR。依此类推。

这是显示的三个输入XOR的真值表:

在此处输入图片说明

一种简单的奇偶校验算法是通过例如以太网对接收到的消息中的位进行异或。如果发送方和接收方都知道对消息的位进行XOR运算(消息中的一位可以加1,以便在XOR运算后任意长度的消息都可以为0),那么接收方就可以知道是否为1位已被翻转。这是一个不好的奇偶校验,因为它只能找到奇数个位更改,但可以说明这一概念。


1
我是数学家,这个答案对我来说似乎很可怕。我了解这通常是3输入XOR的输出,但01101000对我来说似乎更合乎逻辑。+好答案。
Ben Crossley

1

如果您有4个输入,并把两个输入到一个XOR,然后又有两个输入到另一个XOR,则取两个XOR输出,然后输入到第三个XOR,它的输出就完成了您认为应该的(我认为)。


1
我更关心的是为什么,而不是如何。不过,谢谢您的回答。
gabrieljcs

@root,实际上,您问“它的行为如何?” 您没有问为什么在任何地方。这是一个正确的答案,它得出的((A⊕B)⊕(C⊕D))与4输入XOR相同,与级联在一起的多个2输入XOR相同。
克里斯·巴恩森

你是对的。很抱歉对于这个误会。
gabrieljcs

1

XOR并不是完全的奇偶门。如果在一个输入且只有一个输入为1的情况下将XOR的输出定义为1,则三输入XOR将为全1输入提供0。这不是很经常使用,因此很少有3输入XOR门。

大多数人说XOR是模2加法时的意思,这恰好是一个奇偶校验器。实际上,大多数标为3输入XOR的门都是模2加法门。对于两个输入,模2加法与XOR相同,但上述XOR的0取模2门的1。可以从简单的两输入XOR门产生具有任意数量输入的Modulo 2门。


1

我对您的问题进行了一些搜索,发现了一个3input XOR门的IC。来自nxp的74LVC1G386。在nxp网站上显示该零件号在nxp网站上的搜索结果的链接是http://www.nxp.com/search?q=74lvc1g386&type=keyword&rows=10


2
感谢您的贡献,但是如果NXP更改其搜索引擎,您的答案将一文不值。请总结一下您在这里找到的内容,这样才有价值。
Joe Hass 2013年

我只是搜索一下是否有任何制造商为XOR提供了3种以上的输入,并发现了这一点...所以认为这将有助于我共享它...这是指向其数据表nxp.com/documents/
Mahesh Mohandasan

1
请不要发布其他链接!告诉我们这件事是如何运作的!
Joe Hass 2013年

它的3输入XOR门的功能与我们研究/了解的功能相同。即,它为高输入的奇数个提供高o / p(如从数据表中获取)。这就是为什么共享链接的原因。:)
Mahesh Mohandasan

1

所以,我去了那里测试!我编写了一个小的verilog文件,进行了仿真并查看了波形。

事实证明,对verilog的正确解释是:本文的输入AKA解释2中存在奇数1。

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

在此处输入图片说明


-1

根据简单的多输入“或”门的逻辑,它假定所有输入中的最大值,但是不作决定。至于EXOR(与半加法器混合只是一个巧合,因为在多值逻辑EXOR中不会发生),它决定输入中哪个最高,但是否最高(包括0 + 0)。 1 + 1)相同,它无法选择输入,这意味着它无法决定从哪个选择。没有小数表示输出为零,例如,如果有人要求在一个娃娃中购买一个品牌的最大糖果数量,并且如果有两个品牌(基数= 2),那么他可以选择糖果数量最高的糖果,但是如果两个品牌都是免费提供的,如果两个品牌都提供相同的编号(1,1)他无法做出决定的糖果意味着产量为零。相同的逻辑可以扩展到3、4或更多品牌(较高基数)的糖果。这同样适用于多值逻辑。(x + x + .. + x = 0,其中x可以具有任何值),在三个输入EXOR门中1 + 1 + 1 = 0(与通常的解释1 + 1 + 1 = 1似乎是错误的,是与平价混在一起)。VT Ingole博士


这种解释不必要地复杂,而且似乎也无法最终回答问题。
duskwuff 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.