التوليد الشرطي
جزء من قسم تصميم RTL والتحقق منه في رحلة Verilog على Coddy. الدرس 14 من 38.
يختار generate-if بنيةً عتاديةً باستخدام parameter ثابت. تتم صياغة فرع واحد فقط لمثيل معيّن. يختار تعبير if إجرائي أو شرطي السلوك في وقت التشغيل؛ ولا يحل محل تهيئة generate.
مقتطف ذو صلة؛ يتم توفير التصريحات والتوصيلات المحيطة في التحدي.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateيحدد parameter أيّ مشغّل يتم إنشاؤه لهذا المثيل.
استخدم generate-if للإعدادات الثابتة، واختر RTL العادي لعناصر التحكم في وقت التشغيل.
التحدي
متوسطاستخدم generate الشرطي: MODE=0 يمرّر a دون تغيير؛ أما MODE=1 فيعكس جميع البتات الثمانية لـ a. الإدخال b غير مستخدم. تكون قيمة MODE إما 0 أو 1. ينشئ testbench تكوينَي التشغيل ويطبع y0 ثم y1.
أكمل design.v وحافظ على أسماء الوحدات ومنافذها. يوفّر testbench.v المقفل تغييرات الإدخال ويطبع المخرجات بعد استقرارها. ويختار سيناريو باستخدام وسيط للمحاكي مثل +CASE=1؛ ولا حاجة إلى إدخال قياسي. لا تضف طباعة أو تأخيرات أو إنهاءً للمحاكاة إلى التصميم. يجب أن يكون الناتج المتوقع صفًا واحدًا من القيم العشرية لكل ملاحظة، مفصولة بمسافة واحدة ومنتهية بسطر جديد.
جرّب بنفسك
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس تصميم RTL والتحقق منه
1دوائر RTL التوافقية الموثوقة
القيم الافتراضية تمنع المزالجمشفّرات الأولويةالتحقق من One-Hotفك ترميز Case الآمنمراجعة - موجّه الطلبات4RTL تسلسلي متحكَّم فيه
أولوية إعادة الضبط والتمكينالعدادات التشبُّعيةتسلسل البيانات والإشارة الصالحةاكتشاف الحواف المُعايَنةمراجعة - عداد الأحداث7المشروع - مراقب العينات
تجميع العيناتقبول العينات المفعّلة2الأحجام والحساب الموقّع
الحفاظ على بتّات الحملالمقارنات الموقّعةالإزاحات الحسابية إلى اليمينالتجاوز والتشبّعمراجعة - الفرق الموقّع3وحدات RTL قابلة لإعادة الاستخدام
دوال توافقيةمعلمات آمنة العرضحلقات التوليدالتوليد الشرطيمراجعة - قناع بتات قابل لإعادة الاستخدامتدرّب بنفسك: مترجم Verilog عبر الإنترنت