Menu
CoddyTech

قائمة الحساسية

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

تُخبر قائمة الحساسية كتلة always متى تُنفَّذ. وتُكتب داخل أقواس بعد الرمز @.

قائمة الحساسية هي مجموعة من الإشارات أو الأحداث التي تُفعِّل كتلة always. عندما تتغير أي إشارة في القائمة، تُنفَّذ الكتلة.

البنية النحوية:

always @(sensitivity_list) begin
  // يُنفَّذ الكود عندما تتغير الإشارات الموجودة في القائمة
end

أنواع قائمة الحساسية

النوعالصياغةمتى تُنفَّذ الكتلة
جميع الإشارات (توافقي)always @(*)عندما تتغير أي إشارة داخلها
إشارات محددةalways @(a or b)عندما تتغير a أو b
تحفيز بالحافة (تتابعي)always @(posedge clk)عند الحافة الصاعدة للساعة
حواف متعددةalways @(posedge clk or posedge reset)عند حافة الساعة أو حافة إعادة الضبط

الخيار 1: جميع الإشارات (*)

الخيار الأكثر أمانًا والأشيع للمنطق التوافقي.

always @(*) begin
  out = a & b;   // يُنفَّذ عند تغيّر a أو b
end

تتضمن * تلقائيًا جميع الإشارات التي تتم قراءتها في الكتلة.

الخيار 2: إشارات محددة

always @(a or b) begin
  out = a & b;   // يُنفَّذ عند تغيّر a أو b
end

إذا نسيت إشارة، فلن يتحدّث الناتج في المحاكاة عند تغيّر تلك الإشارة، وبالتالي لن تعود المحاكاة مطابقةً للأجهزة المُركَّبة.

الخيار 3: الاستثارة عند الحافة (posedge)

always @(posedge clk) begin
  q <= d;        // يعمل عند الحافة الصاعدة لإشارة الساعة
end

استخدم posedge للحافة الصاعدة، وnegedge للحافة الهابطة.

الخيار 4: حواف متعددة

always @(posedge clk or posedge reset) begin
  if (reset)
    q <= 0;
  else
    q <= d;
end

يعمل عند حافة الساعة أو حافة إعادة الضبط.

أخطاء شائعة

الخطأسبب الخطأ
always @(a or b or c) لكن يستخدم dإغفال d → تصبح قيمة الخرج قديمة في المحاكاة (عدم تطابق المحاكاة والتركيب)
always @(posedge clk or reset)إغفال posedge لإعادة الضبط
always @(clk)ينبغي استخدام posedge clk للقلابات
challenge icon

التحدي

ما المطلوب:

  1. أضف قائمة الحساسية الصحيحة لجعل هذه القلّابة تعمل. يجب أن تُنفَّذ الكتلة عند الحافة الصاعدة لـ clk.

جرّب بنفسك

module flipflop (
  input clk,
  input d,
  output reg q
);
  
  always @(______) begin
    q <= d;
  end

endmodule
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: مترجم Verilog عبر الإنترنت