مستويات تجريد التصميم
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 3 من 90.
في التصميم الرقمي، يمكننا وصف الدائرة نفسها بمستويات مختلفة من التفصيل. Verilog هي لغة يمكنها وصف الدوائر في أي من مستويات التجريد هذه. هذا ما يجعلها قوية!
هذه هي المستويات:
المستوى 1: السلوكي (Behavioral)
يصف هذا المستوى ما تفعله الدائرة، وليس كيفية قيامها بذلك. فهو يركز على الوظيفة أو السلوك، مثل "العد التصاعدي" أو "جمع رقمين".
لا تظهر التفاصيل الداخلية لكيفية حدوث العد أو الإضافة. هذا المستوى هو الأقرب إلى التفكير البشري وأسهل في الكتابة.
المستوى 2: RTL
يوضح هذا المستوى كيفية انتقال البيانات بين السجلات والعمليات التي تُجرى على تلك البيانات. يمكنك رؤية مسار البيانات: تنتقل البيانات من سجل إلى جامع (adder)، ثم تعود إلى السجل.
هذا هو المستوى الذي يعمل عنده معظم المصممين الرقميين لأنه يوفر توازناً جيداً بين كونه قابلاً للفهم وبين كونه مفصلاً بما يكفي لإنشاء الأجهزة.
المستوى 3: مستوى البوابات
يصف هذا المستوى الدائرة باستخدام بوابات منطقية أساسية مثل AND و OR و XOR. يتم عرض كل اتصال بشكل صريح.
هذا المستوى مفصل للغاية ويصعب كتابته يدوياً. وعادة ما يتم إنتاجه بواسطة أدوات من أوصاف عالية المستوى، وليس كتابته يدوياً.
لماذا يهم هذا
- **المستوى الأعلى** = أسهل في الكتابة، تحكم أقل
- **المستوى الأدنى** = أصعب في الكتابة، تحكم أكبر
- **RTL** هو الخيار الأمثل لمعظم أعمال التصميم
التحدي
ماذا تفعل:
- قم بتشغيل هذا الكود وشاهد كيف يتم وصف نفس العملية في ثلاثة مستويات مختلفة:
ورقة مرجعية
يمكن لـ Verilog وصف الدوائر في مستويات تجريد مختلفة:
- السلوكي (Behavioral) – يصف ماذا تفعل الدائرة (مثلاً، "جمع رقمين"). الأسهل في الكتابة، والأقل تحكماً.
- مستوى نقل السجلات (RTL - Register Transfer Level) – يصف كيفية انتقال البيانات بين السجلات وما هي العمليات التي تحدث. المستوى القياسي لمعظم أعمال التصميم الرقمي.
- مستوى البوابات (Gate Level) – يصف الدائرة باستخدام بوابات منطقية صريحة (AND، OR، XOR). الأكثر تفصيلاً، والأصعب في الكتابة؛ يتم إنشاؤه عادةً بواسطة الأدوات.
المقايضة: مستوى أعلى = أسهل في الكتابة، تحكم أقل. مستوى أدنى = أصعب في الكتابة، تحكم أكبر. RTL هو الخيار الأمثل.
جرّب بنفسك
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة