Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

بوابات XOR و XNOR

جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 41 من 90.

يتناول هذا الدرس بوابتين منطقيتين إضافيتين: XOR (أو الحصرية) و XNOR (NOR الحصرية). تفيد هاتان البوابتان في مقارنة البتات والتحقق من التكافؤ (parity checking).

بوابة XOR

تعطي بوابة XOR القيمة 1 عندما تكون المدخلات مختلفة.

جدول الحقيقة (مدخلان):

about
000
011
101
110

عنصر البوابة المبدئي في Verilog:

xor(out, a, b);

المكافئ للتعيين المستمر (Continuous assignment):

assign out = a ^ b;

بوابة XNOR

تعطي بوابة XNOR الخرج 1 عندما تكون المدخلات same (متماثلة). وهي عكس بوابة XOR.

جدول الحقيقة (بمدخلين):

about
001
010
100
111

العنصر الأولي للبوابة في Verilog:

xnor(out, a, b);

مكافئ الإسناد المستمر:

assign out = a ~^ b;   // أو ~(a ^ b)

مدخلات متعددة

يمكن لبوابات XOR و XNOR أن تحتوي على أكثر من مدخلين (2). يكون الخارج (output):

  • XOR: 1 إذا كان عدد المدخلات التي قيمتها 1 فردياً
  • XNOR: 1 إذا كان عدد المدخلات التي قيمتها 1 زوجياً
xor(out, a, b, c);      // XOR بـ 3 مدخلات
xnor(out, p, q, r, s);  // XNOR بـ 4 مدخلات

مثال (XOR بثلاثة مدخلات):

abcout
0000
0011
0101
0110
1001
1010
1100
1111

الاستخدامات الشائعة

الاستخداممثال
مقارنة ما إذا كان بتّان مختلفينxor(diff, a, b)
مقارنة ما إذا كان بتّان متماثلينxnor(same, a, b)
توليد التكافؤ (عدد فردي من 1)xor(parity, data[0], data[1], data[2], data[3])
فحص التكافؤ (عدد زوجي من 1)xnor(parity, data[0], data[1], data[2], data[3])

مثال على الكود

module xor_xnor_demo (
  input a, b,
  output xor_out,
  output xnor_out
);
  xor(xor_out, a, b);
  xnor(xnor_out, a, b);
endmodule

جدول الملخص

Gateالـ Output يساوي 1 عندماPrimitiveالمعامل
XORالمدخلات مختلفةxor(out, a, b)^
XNORالمدخلات تكون samexnor(out, a, b)~^
challenge icon

التحدي

قم بـ `Add` بوابات primitives المفقودة بناءً على المهام.

ما يجب القيام به:

  1. أنشئ بوابة `XOR` بـ `output` يسمى xor_result و `input` هما x و y
  2. أنشئ بوابة `XNOR` بـ `output` يسمى xnor_result و `input` هما x و y

جرّب بنفسك

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: أضف بوابة XOR (xor_result = x ^ y)
  
  // TODO: أضف بوابة XNOR (xnor_result = x ~^ y)

endmodule
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات