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

بوابات XOR و XNOR

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

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

بوابة XOR

تُعطي بوابة XOR مخرجاً قيمته 1 عندما تكون المدخلات مختلفة.

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

about
000
011
101
110

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

xor(out, a, b);

ما يعادل التعيين المستمر:

assign out = a ^ b;

بوابة XNOR

تنتج بوابة XNOR القيمة 1 عندما تكون المدخلات متماثلة. وهي عكس بوابة XOR.

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

about
001
010
100
111

بوابة Verilog الأساسية:

xnor(out, a, b);

مكافئ التعيين المستمر:

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

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

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

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

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

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

جدول ملخص

البوابةالمخرج 1 عندماالأولية (Primitive)المعامل
XORالمدخلات مختلفةxor(out, a, b)^
XNORالمدخلات متماثلةxnor(out, a, b)~^
challenge icon

التحدي

أضف البوابات المنطقية (gate primitives) المفقودة بناءً على المهام.

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

  1. أنشئ بوابة XOR بمخرج xor_result ومدخلات x و y
  2. أنشئ بوابة XNOR بمخرج xnor_result ومدخلات x و y

ورقة مرجعية

تُنتج بوابة XOR القيمة 1 عندما تكون المدخلات مختلفة. بينما تُنتج بوابة XNOR القيمة 1 عندما تكون المدخلات متماثلة.

البوابة (Gate)تُنتج 1 عندماالوظيفة الأولية (Primitive)المعامل (Operator)
XORتكون المدخلات مختلفةxor(out, a, b)^
XNORتكون المدخلات متماثلةxnor(out, a, b)~^

بالنسبة للمدخلات المتعددة: تُنتج XOR القيمة 1 إذا كان هناك عدد فردي من المدخلات قيمته 1؛ بينما تُنتج XNOR القيمة 1 إذا كان هناك عدد زوجي من المدخلات قيمته 1.

xor(out, a, b, c);      // 3-input XOR
xnor(out, p, q, r, s);  // 4-input XNOR

جرّب بنفسك

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

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

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

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