XOR XNOR Gates
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 41 من 90.
يتناول هذا الدرس بوابتي منطق إضافيتين: XOR (OR الحصرية) وXNOR (NOR الحصرية). تُعد هذه البوابات مفيدة لمقارنة البتات والتحقق من التكافؤ.
بوابة XOR
تُخرج بوابة XOR القيمة 1 عندما تكون المدخلات مختلفة.
جدول الحقيقة (بمدخلين):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
بدائية بوابة Verilog:
xor(out, a, b);المكافئ للتعيين المستمر:
assign out = a ^ b;بوابة XNOR
تُخرج بوابة XNOR القيمة 1 عندما تكون input متطابقة. وهي عكس XOR.
جدول الحقيقة (بمدخلين):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
البدائية المنطقية في 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 بثلاثة مُدخلات):
| a | b | c | out |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
الاستخدامات الشائعة
| الاستخدام | مثال |
|---|---|
| Compare ما إذا كان البِتان مختلفين | xor(diff, a, b) |
| Compare ما إذا كان البِتان same | xnor(same, a, b) |
| توليد التكافؤ (عدد فردي من 1's) | xor(parity, data[0], data[1], data[2], data[3]) |
| التحقق من التكافؤ (عدد زوجي من 1's) | 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 عندما | البدائي | العامل |
|---|---|---|---|
| XOR | تكون المدخلات مختلفة | xor(out, a, b) | ^ |
| XNOR | تكون المدخلات متماثلة | xnor(out, a, b) | ~^ |
التحدي
أضف بوابات المنطق البدائية المفقودة استنادًا إلى المهام.
ما يجب فعله:
- أنشئ بوابة XOR بمخرج
xor_resultومدخلين هماxوy - أنشئ بوابة XNOR بمخرج
xnor_resultومدخلين هما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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logicتدرّب بنفسك: مترجم Verilog عبر الإنترنت