البوابات الأساسية المدمجة
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 39 من 90.
تحتوي لغة Verilog على بوابات أولية (gate primitives) مدمجة تتيح لك وصف الدوائر المنطقية باستخدام رموز البوابات الفعلية. يسمى هذا النمذجة الهيكلية (structural modeling) — حيث تقوم ببناء الدوائر عن طريق توصيل البوابات، تماماً مثل رسم مخطط شماتيك (schematic).
البوابات الأولية (Gate primitives) هي كلمات محجوزة مسبقاً تقوم بنمذجة بوابات المنطق الأساسية. بدلاً من كتابة تعبير مثل assign out = a & b، تقوم بإنشاء مثيل للبوابة:
and(out, a, b); // بوابة AND مع المخرج out، والمدخلات a و bالصيغة العامة
gate_type (output, input1, input2, ...);- الوسيط الأول هو دائماً الـ output
- الوسائط التالية هي المدخلات (1 أو أكثر، حسب البوابة)
بدائيات البوابات المتاحة
| نوع البوابة | الكلمة المفتاحية | عدد المدخلات |
|---|---|---|
| AND | and | 2 أو أكثر |
| OR | or | 2 أو أكثر |
| NOT | not | 1 |
| NAND | nand | 2 أو أكثر |
| NOR | nor | 2 أو أكثر |
| XOR | xor | 2 أو أكثر |
| XNOR | xnor | 2 أو أكثر |
كيفية عمل البوابات الأولية (Gate Primitives)
عندما تكتب and(out, a, b)، تقوم Verilog بإنشاء بوابة AND تقوم بتوجيه القيمة باستمرار إلى out بنتيجة a & b. كلما تغيرت a أو b، يتم تحديث out فوراً — تماماً مثل البوابة الحقيقية.
البوابات الأولية (Gate Primitives) مقابل التعيين المستمر (Continuous Assignment)
تنتج كلتا الطريقتين نفس العتاد (hardware):
// بوابة أولية
and(out, a, b);
// التعيين المستمر (نفس النتيجة)
assign out = a & b;تعد البوابات الأولية مفيدة عندما تريد وصف دائرة كـ مجموعة من البوابات (الأسلوب الهيكلي). بينما يعد التعيين المستمر أفضل لـ الأسلوب السلوكي (التعبيرات).
التحدي
ما يجب القيام به:
- أضف البوابة المنطقية الأولية (gate primitive) الصحيحة لجعل هذه الدائرة تعمل. يجب أن يقوم الموديول بإخراج ناتج عملية AND للمدخلين
aوb. منفذ الإخراج مسمى بالفعلc.
ورقة مرجعية
تسمح البوابات الأولية (Gate primitives) في Verilog بالنمذجة الهيكلية من خلال استدعاء بوابات المنطق مباشرة.
الصيغة (Syntax): الوسيط الأول هو دائماً المخرج (output)، يليه المداخل (inputs):
gate_type(output, input1, input2, ...);البوابات الأولية المتاحة:
| البوابة | الكلمة المفتاحية | المداخل |
|---|---|---|
| AND | and | 2+ |
| OR | or | 2+ |
| NOT | not | 1 |
| NAND | nand | 2+ |
| NOR | nor | 2+ |
| XOR | xor | 2+ |
| XNOR | xnor | 2+ |
تنتج البوابات الأولية و assign عتاداً (hardware) متكافئاً:
and(out, a, b); // structural (gate primitive)
assign out = a & b; // behavioral (continuous assignment)جرّب بنفسك
module gate_challenge (
input a,
input b,
output c
);
// TODO: أضف البوابة المنطقية الصحيحة
// المخرج c يجب أن يكون a AND b
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة