بوابات AND و OR و NOT
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 40 من 90.
يغطي هذا الدرس بوابات المنطق الثلاث الأكثر أساسية: AND، و OR، و NOT. تشكل هذه البوابات أساس تصميم المنطق الرقمي.
بوابة AND
تُنتج بوابة AND القيمة 1 فقط عندما تكون جميع المدخلات 1.
جدول الحقيقة (مدخلان):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
عنصر بوابة Verilog الأساسي:
and(out, a, b);ما يعادل التعيين المستمر:
assign out = a & b;بوابة OR
تُنتج بوابة OR القيمة 1 عندما يكون مدخل واحد على الأقل هو 1.
جدول الحقيقة (مدخلان):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
عنصر بوابة Verilog الأساسي:
or(out, a, b);ما يعادل التعيين المستمر:
assign out = a | b;بوابة NOT
تُنتج بوابة NOT عكس مدخلها الوحيد. وتُسمى أيضاً العاكس (inverter).
جدول الحقيقة:
| a | out |
|---|---|
| 0 | 1 |
| 1 | 0 |
عنصر بوابة Verilog الأساسي:
not(out, a);ما يعادل التعيين المستمر:
assign out = ~a;مدخلات متعددة
يمكن أن تحتوي بوابات AND و OR على أكثر من مدخلين:
and(out, a, b, c); // بوابة AND بـ 3 مدخلات (out = a & b & c)
or(out, x, y, z, w); // بوابة OR بـ 4 مدخلاتبوابات NOT تحتوي دائماً على مدخل واحد فقط.
مثال على الكود
module and_or_not (
input a, b,
output and_out,
output or_out,
output not_out
);
and(and_out, a, b); // بوابة AND
or(or_out, a, b); // بوابة OR
not(not_out, a); // بوابة NOT (عاكس)
endmoduleالتحدي
أضف البوابات المنطقية (gate primitives) المفقودة بناءً على المهام.
ما يجب القيام به:
- أنشئ بوابة AND بمخرج
and_resultومدخلاتpوq - أنشئ بوابة OR بمخرج
or_resultومدخلاتpوq - أنشئ بوابة NOT بمخرج
not_resultومدخلp
ورقة مرجعية
بوابات المنطق الأساسية في Verilog باستخدام النماذج الأولية للبوابات (gate primitives) والتعيين المستمر (continuous assignment):
| البوابة | النموذج الأولي (Primitive) | التعيين (Assign) | يكون المخرج 1 عندما... |
|---|---|---|---|
| AND | and(out, a, b); | assign out = a & b; | تكون جميع المدخلات 1 |
| OR | or(out, a, b); | assign out = a | b; | يكون مدخل واحد على الأقل 1 |
| NOT | not(out, a); | assign out = ~a; | يكون المدخل 0 |
تدعم بوابات AND و OR أكثر من مدخلين؛ بينما تمتلك بوابة NOT دائماً مدخلاً واحداً فقط:
and(out, a, b, c); // بوابة AND بـ 3 مدخلات
or(out, a, b, c, d); // بوابة OR بـ 4 مدخلاتmodule example (input a, b, output and_out, or_out, not_out);
and(and_out, a, b);
or(or_out, a, b);
not(not_out, a);
endmoduleجرّب بنفسك
module gates_challenge (
input p,
input q,
output and_result,
output or_result,
output not_result
);
// TODO: (and_result = p & q) AND أضف بوابة
// TODO: (or_result = p | q) OR أضف بوابة
// TODO: (not_result = ~p) NOT أضف بوابة
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة