Sized Numbers
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 14 من 90.
توجد طريقة لتعريف عدد بحجم محدد في Verilog. يُسمّى عددًا محدد الحجم. وهذا مفيد لأنه يمنع الالتباس بشأن عدد البتات التي يتكوّن منها العدد، ويضمن أن تتصرّف أجهزتك كما هو متوقّع تمامًا.
يتبع الرقم المحدد الحجم هذا التنسيق: [bits]'[format][value]
<strong>bits</strong>: عدد البتات (على سبيل المثال،8)<strong>'</strong>: فاصلة عليا تفصل الحجم عن التنسيق (مطلوبة)
<strong>format</strong>: أساس العدد:bللنظام الثنائي، وdللنظام العشري، وhللنظام السداسي عشري، أوoللنظام الثماني<strong>value</strong>: العدد الفعلي (على سبيل المثال،1010)
على سبيل المثال:
4'b1010: 4 bits، binary 1010 (decimal 10)8'd255: 8 bits، decimal 255 (binary 11111111)16'hFF: 16 bits، hex FF (binary 0000000011111111)3'b1: 3 bits، binary 001 (تُملأ bits الموجودة على اليسار بالأصفار)
مثال على الكود:
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8 بت، عشري 170
data = 8'hAA; // 8 bits, hex AAتُسنِد all three أمثلة القيمة نفسها إلى 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التحدي
أكمل الكود بكتابة الأرقام ذات الأحجام الصحيحة.
What يجب فعله:
- عيّن
aإلى رقم binary بحجم 8-bit للقيمة decimal 170 (binary 10101010) - عيّن
bإلى رقم binary بحجم 4-bit للقيمة decimal 12 (binary 1100) - عيّن
cإلى رقم hex بحجم 16-bit للقيمة decimal 255 (hex 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يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logicتدرّب بنفسك: مترجم Verilog عبر الإنترنت