الأعداد محددة الحجم
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 14 من 90.
توجد طريقة لتعريف عدد بحجم محدد في Verilog. يُسمى عددًا محدد الحجم. وهذا مفيد لأنه يمنع الالتباس بشأن عدد البتات التي يتكون منها العدد، ويضمن أن تعمل أجهزتك تمامًا كما هو متوقع.
يتبع الرقم ذو الحجم هذا التنسيق: [bits]'[format][value]
bits: عدد البِتّات (على سبيل المثال،8)': فاصلة عليا تفصل الحجم عن التنسيق (مطلوبة)
format: أساس العدد:bللثنائي، وdللعشري، وhللسداسي عشري، أوoللثمانيvalue: العدد الفعلي (على سبيل المثال،1010)
على سبيل المثال:
4'b1010: 4 بتات، ثنائي 1010 (عشري 10)8'd255: 8 بتات، عشري 255 (ثنائي 11111111)16'hFF: 16 بتًا، ست عشري FF (ثنائي 0000000011111111)3'b1: 3 بتات، ثنائي 001 (تُملأ البتات اليسرى بالأصفار)
مثال على الشيفرة:
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8 بتات، بالنظام العشري 170
data = 8'hAA; // 8 bits, hex AAتُسنِد الأمثلة الثلاثة القيمة نفسها إلى data.
لماذا يُعدّ الحجم مهمًا
من دون تحديد الحجم:
reg [7:0] data;
data = 1; // ماذا يعني هذا؟ 1 بت؟ 8 بتات؟يفترض Verilog أن الأعداد الصغيرة تتكون من 32 بت افتراضيًا، وقد يسبب ذلك مشكلات.
مع تحديد الحجم:
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1الحشو بالأصفار
عند إسناد قيمة أصغر إلى متجه أكبر، يملأ Verilog البتات اليسرى بالأصفار:
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010التحدي
أكمل الكود بكتابة الأعداد ذات الحجم الصحيح.
ما المطلوب:
- عيّن
aإلى عدد ثنائي من 8 بتات يمثّل العدد العشري 170 (ثنائي 10101010) - عيّن
bإلى عدد ثنائي من 4 بتات يمثّل العدد العشري 12 (ثنائي 1100) - عيّن
cإلى عدد سداسي عشري من 16 بتًا يمثّل العدد العشري 255 (سداسي عشري FF)
جرّب بنفسك
module sized_challenge;
reg [7:0] a;
reg [3:0] b;
reg [15:0] c;
initial begin
a = ______; // تمثيل ثنائي من 8 بت للعدد 170 (10101010)
b = ______; // تمثيل ثنائي من 4 بت للعدد 12 (1100)
c = ______; // تمثيل سداسي عشري من 16 بت للعدد 255 (FF)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %h", c);
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت
تحقق من التحويل: محوّل أنظمة الأعداد