3つ以上の入力を持つXORはどのように機能するのですか?


27

私はコンピューター工学の研究を始めたばかりで、XORゲートの振る舞いに疑問を抱いています。

Logisimで回路を投影していますが、LogisimのXORの動作は、私が学んだこととは異なります。私にとって、それは入力が奇数の組み合わせを受け取るたびに高出力を与えるパリティゲートとして動作する必要があります。ただし、3つ以上の入力には対応していません。どのように振る舞うべきですか?

また、XORゲートは3つ以上の入力では生成されないことを本で読みました。あれは正しいですか?どうして?


1
なぜ入力が2を超えない(またはほとんどない)のか?XORゲートの2つの典型的な使用法は、1)同等性をチェックすること、および2)信号の極性を制御/操作することです。どちらも3つ以上の入力には意味がありません。
Wouter van Ooijen

1
全加算器の合計はA ^ B ^ Cinとして表されませんか?
gabrieljcs

あなたはそれをそのように表現することができますが、それはそれがそれを実装する良い方法であることを意味しません。
ウーターヴァンオイジェン

1
Logisimのバージョンを確認したところ、「1 and only 1」がデフォルトの動作のように見えますが、奇数パリティ関数に変更するオプションがあります。
ジョーハス

確かに、ジョー。このリンクには、Logisimの開発者Carl Burchが回答した議論があります。
gabrieljcs

回答:


23

3つ以上の入力を持つ排他的ORゲートの動作については、さまざまな観点があります。ほとんどの場合、このようなXORゲートは2入力ゲートのカスケードのように動作し、奇数パリティ機能を実行します。ただし、一部の人は排他的ORの意味をより文字通りに解釈し、入力の1つだけが 1である場合にのみ出力を1にする必要があると言います。Logisimは後者の解釈を使用し、さびたメモリASICセルライブラリで見ました。XORゲートの国際標準シンボルの1つは、=1「1 and only 1」の定義とより一貫しているようにラベル付けされた長方形です。

編集:排他的ORの定義は「1 and only 1」ですが、一般的ではありませんが、見つけることができます。たとえば、IEEE-Std91a-1991は、pの排他的ORのシンボルを提供します。「2つの入力のうち1つだけが1状態にある場合、出力は1状態になります。」3つ以上の入力の場合、標準では代わりに「奇数パリティ」記号を使用することを推奨しています。この紛らわしい状況について説明しているWebサイトには、XOR:The Interesting GateTAMSのゲートデモがあります。Google検索では、厳密に言えば、3つ以上の入力を持つXORゲートなどは存在しないと主張するサイトも検索されます。


4
私の知る限り、2つ目(1つだけ)がこれを行う唯一の正しい方法です-他のすべては本当に排他的ではありません。
多項式

3
異なる視点はありません。両方の点は技術的には正しいですが、「入力の1つが1である場合のみ1」は、考えられるように拡張されません。2つの入力XORをカスケードすると、各出力が3番目のXORのピンに入力され、上記のポイントが示されます。多入力ゲートは、2つの入力プリミティブから派生します。したがって、4入力の真理値表は((A⊕B)⊕(C⊕D))であり、奇数の真の入力がある場合、最終1出力になります。
クリスバーンセン

@KrisBahnsen OPが指摘したように、実際には2つの視点があります(証拠が必要な場合はLogisimでデフォルトのXORを試してください)。多入力ゲートが2入力プリミティブから派生しているというあなたの主張は、あたかもそれが普遍的な真実であるかのように与えられますが、すでに反例を示しました。
ジョー・ハース

@JoeHass、私はlogisimを​​使ったことがありません。主にLogicWorksを使います。ここで、多入力XORは上記のように動作し、奇数の真の入力は真の出力です。XORのWikiページ(en.wikipedia.org/wiki/XOR)は、私が言ったことも真実であることに同意しています。また、マルチ入力XOR ICを実際に見たことがないので、私が言ったことを反証しようとデータシートに頼ることはできません。Logisimは、ロジック「1 if and only ...」を使用してマルチ入力XORスキームを実装する唯一のものであると思われます。別のソースを見つけることができれば、XORの定義が間違っていると認めます。
クリスバーンセン

明確な説明、標準の調査に時間を割いてくれてありがとう。
クリスバーンセン

11

2ゲートXORでは、入力が異なると出力が高くなります。入力が同じ場合、出力は低くなります。

したがって、この真理値表:

ここに画像の説明を入力してください

3つ以上の入力を持つXORゲートを見つけることができますが、実際には3入力XORではありません。入力AとBをXORし、その結果「R」は入力CとのXORです。そして、R XOR Cの結果は入力4とのXORなどです。

以下に、3つの入力XORの真理値表を示します。

ここに画像の説明を入力してください

単純なパリティアルゴリズムは、たとえばイーサネットを介した受信メッセージのビットのXORです。送信者と受信者が、メッセージビットのXORが0であることを知っている場合(メッセージの1ビットを追加して、XORを行ったときに任意の長さのメッセージが0になるように提供する)、受信者は1ビットが反転しました。奇数のビット変更しか検出できないため、これは悪いパリティチェックですが、概念を示しています。


1
私は数学者です。その答えは私には恐ろしいようです。これは一般に3入力XORが意図した出力であると理解していますが、01101000ははるかに論理的に思えます。+いい答え。
ベンクロスリー

1

4つの入力を取り、2つを1つのXORに供給し、2つを別のXORに供給し、2つのXOR出力を取り、3つ目のXORに供給する場合、その出力はあなたが信じるべきことをします(私は思う)。


1
私は、ハウズではなく、理由をもっと心配しています。しかし、答えてくれてありがとう。
gabrieljcs

@root、実際には、「どのように振る舞うべきですか?」どこに理由があるのか​​尋ねなかった。これは正解です。((A⊕B)⊕(C⊕D))が得られます。これは、4入力XORと同じです。これは、カスケード接続された複数の2入力XORと同じです。
クリスバーンセン

あなたが正しい。誤解して申し訳ありません。
gabrieljcs

1

XORは完全にパリティゲートではありません。入力の1つだけが1であるときにXORの出力を1として定義すると、3入力XORですべての入力が0になります。これはあまり使用されないため、3入力XORゲートはほとんどありません。

XORがモジュロ2加算であると言うとき、ほとんどの人が意味することは、まさにパリティチェッカーです。3入力XORとしてラベル付けされたほとんどのゲートは、実際にはモジュロ2加算ゲートです。2つの入力の場合、モジュロ2加算はXORと同じですが、上記のXORの0はモジュロ2ゲートの1です。任意の数の入力を持つモジュロ2ゲートは、単純な2入力XORゲートから生成できます。


1

私はあなたの質問を見て少し検索し、3入力XORゲートであるICを見つけました。nxpの74LVC1G386 nxpサイトのこの部品番号の検索結果を示すnxpサイトへのリンクはhttp://www.nxp.com/search?q=74lvc1g386&type=keyword&rows=10です


2
貢献していただきありがとうございますが、NXPが検索エンジンを変更した場合、あなたの答えは価値がなくなります。ここで見つけたものを要約してください。
ジョー・ハース

XORに3つ以上の入力を提供する製造業者があるかどうかを検索しましたが、これを見つけました...それを共有するのに役立つと思いました...ここに彼らのデータシートnxp.com/documents/
Mahesh Mohandasan

1
別のリンクを投稿しないでください!その仕組みを教えてください!
ジョーハス

その3入力XORゲートは、私たちが研究/知識したように機能します。つまり、奇数の高入力(データシートから)に対して高いo / pを提供します。それがリンクを共有した理由です。:)
マヘシュモハンダサン

1

だから、そこに行ってテストしました!小さなベリログファイルを作成し、シミュレーションして波形を調べました。

Verilogの正しい解釈は次のとおりです。この記事の AKA Interpretation 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

単純なマルチ入力ORゲートのロジックに従って、すべての入力の中で最も高い値を想定しますが、決定は行いません。EXOR(多値論理EXORでは発生しないため、単なる偶然である半加算器と混同される)に関しては、入力の中でどれが最も高いか(ただし、0 + 0を含む)かどうかを判断します。 1 + 1)入力と同じ選択に失敗した場合、どちらを選択するかを決定できません。たとえば、1人のブランドで1つのブランドの最大数のスイーツを購入するように求められ、2つのブランド(基数= 2)がある場合、スイートカウントが最も高いブランドを選択できますが、両方のブランド両方のブランドが同じ数を提供している場合(1、1)お菓子の彼は、出力がゼロであることを意味する決定を取ることができません。3、4、またはそれ以上のブランド(より高い基数)の菓子についても、同じロジックを拡張できます。これは、多値ロジックにも同様に適用できます。(x + x + .. + x = 0ここでxは任意の値をとることができます)、3つの入力EXORゲート1 + 1 + 1 = 0(通常の解釈とは異なり、間違っているように見える1 + 1 + 1 = 1パリティと混同)。VTインゴール、博士


この説明は不必要に複雑であり、とにかく質問に明確に答えているようには見えません。
夕暮れwuff
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.