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

البوابات الأساسية المدمجة

جزء من قسم الأساسيات في رحلة 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 أو أكثر، حسب البوابة)

بدائيات البوابات المتاحة

نوع البوابةالكلمة المفتاحيةعدد المدخلات
ANDand2 أو أكثر
ORor2 أو أكثر
NOTnot1
NANDnand2 أو أكثر
NORnor2 أو أكثر
XORxor2 أو أكثر
XNORxnor2 أو أكثر

كيفية عمل البوابات الأولية (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;

تعد البوابات الأولية مفيدة عندما تريد وصف دائرة كـ مجموعة من البوابات (الأسلوب الهيكلي). بينما يعد التعيين المستمر أفضل لـ الأسلوب السلوكي (التعبيرات).

challenge icon

التحدي

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

  1. أضف البوابة المنطقية الأولية (gate primitive) الصحيحة لجعل هذه الدائرة تعمل. يجب أن يقوم الموديول بإخراج ناتج عملية AND للمدخلين a و b. منفذ الإخراج مسمى بالفعل c.

ورقة مرجعية

تسمح البوابات الأولية (Gate primitives) في Verilog بالنمذجة الهيكلية من خلال استدعاء بوابات المنطق مباشرة.

الصيغة (Syntax): الوسيط الأول هو دائماً المخرج (output)، يليه المداخل (inputs):

gate_type(output, input1, input2, ...);

البوابات الأولية المتاحة:

البوابةالكلمة المفتاحيةالمداخل
ANDand2+
ORor2+
NOTnot1
NANDnand2+
NORnor2+
XORxor2+
XNORxnor2+

تنتج البوابات الأولية و 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
quiz iconاختبر نفسك

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

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