私はコンピューター工学の研究を始めたばかりで、XORゲートの振る舞いに疑問を抱いています。
Logisimで回路を投影していますが、LogisimのXORの動作は、私が学んだこととは異なります。私にとって、それは入力が奇数の組み合わせを受け取るたびに高出力を与えるパリティゲートとして動作する必要があります。ただし、3つ以上の入力には対応していません。どのように振る舞うべきですか?
また、XORゲートは3つ以上の入力では生成されないことを本で読みました。あれは正しいですか?どうして?
私はコンピューター工学の研究を始めたばかりで、XORゲートの振る舞いに疑問を抱いています。
Logisimで回路を投影していますが、LogisimのXORの動作は、私が学んだこととは異なります。私にとって、それは入力が奇数の組み合わせを受け取るたびに高出力を与えるパリティゲートとして動作する必要があります。ただし、3つ以上の入力には対応していません。どのように振る舞うべきですか?
また、XORゲートは3つ以上の入力では生成されないことを本で読みました。あれは正しいですか?どうして?
回答:
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 GateとTAMSのゲートデモがあります。Google検索では、厳密に言えば、3つ以上の入力を持つXORゲートなどは存在しないと主張するサイトも検索されます。
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ビットが反転しました。奇数のビット変更しか検出できないため、これは悪いパリティチェックですが、概念を示しています。
4つの入力を取り、2つを1つのXORに供給し、2つを別のXORに供給し、2つのXOR出力を取り、3つ目のXORに供給する場合、その出力はあなたが信じるべきことをします(私は思う)。
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ゲートから生成できます。
私はあなたの質問を見て少し検索し、3入力XORゲートであるICを見つけました。nxpの74LVC1G386 nxpサイトのこの部品番号の検索結果を示すnxpサイトへのリンクはhttp://www.nxp.com/search?q=74lvc1g386&type=keyword&rows=10です
だから、そこに行ってテストしました!小さなベリログファイルを作成し、シミュレーションして波形を調べました。
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
単純なマルチ入力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インゴール、博士