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

الإسناد الحاجب

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

تحتوي Verilog على نوعين من procedural assignments: blocking (=) و non-blocking (<=). في هذا الدرس، نركز على blocking assignment.

يستخدم التعيين من نوع Blocking المعامل =. ويُطلق عليه اسم "blocking" لأنه يحجب تنفيذ العبارة التالية حتى يكتمل التعيين الحالي. يتم تشغيل الكود خطوة بخطوة، بالترتيب.

الصياغة (Syntax):

variable = expression;

متى تستخدم Blocking assignment

يُستخدم Blocking assignment (=) للـ combinational logic — الدوائر التي تتغير مخرجاتها فورًا عند تغير المدخلات، مع عدم وجود clock وعدم وجود ذاكرة.

أمثلة على المنطق التجميعي (Combinational logic):

  • بوابات AND / OR / XOR
  • الجامعات والطوارح (Adders and subtractors)
  • المُجمِّعات (Multiplexers)
  • فكاك الشفرات (Decoders)

مثال Verilog:

always @(*) begin
  sum = a + b;      // إسناد حاجز
  carry = a & b;    // إسناد حاجز
end

Blocking في Always Blocks (المنطق التجميعي)

always @(*) begin
  temp = a & b;    // الخطوة 1
  out = temp | c;  // الخطوة 2 (تستخدم temp من الخطوة 1)
end

الترتيب مهم. هذا ممتاز بالنسبة للمنطق التجميعي (combinational logic).

المانع (Blocking) مقابل غير المانع (Non-Blocking)

 Blocking (=)Non-blocking (<=)
التنفيذواحدًا تلو الآخردفعة واحدة
هل ينتظر السطر التالي؟نعملا
الاستخدامات (Uses)المنطق التجميعي (Combinational logic)المنطق التتابعي (Sequential logic - قلابات)

هام: لا تستخدم Blocking لـ Flip-Flops

challenge icon

التحدي

أضف تخصيصات blocking المفقودة لتبادل قيم x و y باستخدام متغير مؤقت.

ما يجب فعله:

  1. قم بتعيين قيمة x إلى temp (احفظ x في temp)
  2. قم بتعيين قيمة y إلى x (انقل y إلى x)
  3. قم بتعيين قيمة temp إلى y (انقل x المحفوظة إلى y)

جرّب بنفسك

module swap;
  reg x, y;
  reg temp;
  
  initial begin
    x = 1;
    y = 0;
    
    $display("Before swap: x=%d, y=%d", x, y);
    
    // TODO: الخطوة 1 - عيّن x إلى temp
    
    // TODO: الخطوة 2 - عيّن y إلى x
    
    // TODO: الخطوة 3 - عيّن temp إلى y
    
    $display("After swap: x=%d, y=%d", x, y);
    $finish;
  end
endmodule
quiz iconاختبر نفسك

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

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