مراجعة - تصميم ALU
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 57 من 90.
التحدي
وحدة الحساب والمنطق (ALU - Arithmetic Logic Unit) هي دائرة رقمية تأخذ مدخلين، وتنفذ عملية عليهما، وتنتج مخرجًا واحدًا. تقوم بتنفيذ العمليات الحسابية والمنطقية على مدخلين بناءً على إشارة اختيار. تقوم إشارة select باختيار عملية واحدة لتنفيذها.
كيف تعمل
select | العملية | المخرج |
|---|---|---|
2'b00 | الجمع | a + b |
2'b01 | الطرح | a - b |
2'b10 | AND على مستوى البتات (Bitwise AND) | a & b |
2 me11 | OR على مستوى البتات (Bitwise OR) | a | b |
قم ببناء ALU بسيطة باستخدام عبارة case.
ما يجب فعله:
- إنشاء وحدة (module) باسم
alu - إضافة المدخلات:
a(بعرض 4-bit)، وb(بعرض 4-bit)، وselect(بعرض 2-bit) - إضافة المخرج:
result(بعرض 4-bit، من نوعreg) - إضافة كتلة
always @(*) - بداخله، أضف عبارة
case (select) - إضافة أربع حالات لـ
2'b00،2'b01،2'b10،2'b11 - إضافة حالة
defaultلضبطresult = 0 - الإغلاق باستخدام
endcaseوendmodule
جرّب بنفسك
// TODO: أنشئ module alu
// TODO: أضف المدخلات (a, b, select)
// TODO: أضف المخرج (result)
// TODO: أضف كتلة always @(*)
// TODO: أضف case (select)
// TODO: أضف case 2'b00: result = a + b;
// TODO: أضف case 2'b01: result = a - b;
// TODO: أضف case 2'b10: result = a & b;
// TODO: أضف case 2'b11: result = a | b;
// TODO: أضف default: result = 0;
// TODO: أضف endcase
// TODO: أضف endmoduleجميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة