قائمة الحساسية
جزء من قسم الأساسيات في رحلة 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 للقلابات |
التحدي
ما المطلوب:
- أضف قائمة الحساسية الصحيحة لجعل هذه القلّابة تعمل. يجب أن تُنفَّذ الكتلة عند الحافة الصاعدة لـ
clk.
جرّب بنفسك
module flipflop (
input clk,
input d,
output reg q
);
always @(______) begin
q <= d;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت