الأعداد محددة الحجم
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 14 من 90.
هناك طريقة للإعلان عن رقم بحجم محدد في Verilog. وتسمى sized number (رقماً محدد الحجم). وهي مفيدة لأنها تمنع التلبيس بشأن عدد الـ bits التي يمتلكها رقمك وتضمن تصرف العتاد (hardware) الخاص بك تماماً كما هو متوقع.
يتبع الرقم المحدد الحجم (sized number) هذا التنسيق: [bits]'[format][value]
<strong>bits</strong>— عدد الـ bits (على سبيل المثال،8)<strong>'</strong>— فاصلة عليا تفصل بين الحجم والتنسيق (مطلوبة)
<strong>format</strong>— أساس الرقم:bللثنائي (binary)، أوdللعشري (decimal)، أوhللست عشري (hexadecimal)، أوoللثماني<strong>value</strong>— الرقم الفعلي (على سبيل المثال،1010)
على سبيل المثال:
4'b1010— 4bits،binary1010 (decimal10)8'd255— 8bits،decimal255 (binary11111111)16'hFF— 16bits،hexFF (binary0000000011111111)3'b1— 3bits،binary001 (الخانات جهة اليسار تُملأ بالأصفار)
مثال على الكود:
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 بت (bits)، وهو ما قد يتسبب في حدوث مشكلات.
مع الحجم:
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1Zero Padding
عندما تقوم بتعيين قيمة أصغر لمتجه أكبر، فإن Verilog يملأ الأبتات اليسرى بالأصفار:
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010التحدي
أكمل الكود بكتابة الأرقام ذات الحجم المحدد بشكل صحيح.
ما يجب فعله:
- قم بضبط
aعلى رقم ثنائي ذي 8bitsللمقدار العشري 170 (الثنائي 10101010) - قم بضبط
bعلى رقم ثنائي ذي 4bitsللمقدار العشري 12 (الثنائي 1100) - قم بضبط
cعلى رقم سداسي عشر ذي 16bitللمقدار العشري 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المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة