If - Else
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 53 من 90.
تتيح لك عبارة if-else الاختيار بين إجراءين مختلفين استنادًا إلى شرط. إذا كان الشرط صحيحًا، تُنفَّذ كتلة واحدة. وإذا كان خاطئًا، تُنفَّذ الكتلة الأخرى.
تمنح عبارة if-else في شفرتك نقطة لاتخاذ القرار: نفّذ شيئًا واحدًا إذا كان الشرط صحيحًا، ونفّذ شيئًا آخر إذا كان الشرط خاطئًا.
الصياغة:
if (condition) begin
// يُنفَّذ عندما يكون الشرط صحيحًا (1)
end else begin
// يُنفَّذ عندما يكون الشرط خاطئًا (0)
endمثال بسيط
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- إذا كانت
resetتساوي 1 → تصبحcountتساوي 0 - إذا كانت
resetتساوي 0 → تزدادcountبمقدار 1
عبارات متعددة
استخدم begin وend عندما يكون لديك أكثر من عبارة واحدة:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endإذا-وإلا مع شروط متعددة
يمكنك تسلسل عبارات if-else:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a و b متساويان
endقواعد مهمة
| القاعدة | الشرح |
|---|---|
else اختياري | يمكنك استخدام if من دون else |
ينتمي else إلى أقرب if | انتبه إلى التداخل |
استخدم begin/end لعدة عبارات | مطلوب لأكثر من سطر واحد |
التحدي
ما يجب فعله:
- أضف عبارة
if-elseالمفقودة لجعل هذا يعمل. - عندما تكون قيمة
enableهي 1، يجب أن تساويoutالقيمةa & b. - عندما تكون قيمة
enableهي 0، يجب أن تساويoutالقيمةa | b.
جرّب بنفسك
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: أضف عبارة if-else
// إذا كان enable يساوي 1: out = a & b
// وإلا: out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$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 عبر الإنترنت