Blocking Assignment
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 49 من 90.
يحتوي Verilog على نوعين من الإسنادات الإجرائية: الحاجبة (=) وغير الحاجبة (<=). في هذا الدرس، نركّز على الإسناد الحاجب.
يستخدم Blocking assignment عامل =. ويُسمّى «الحجب» لأنه يمنع تنفيذ التعليمة التالية حتى يكتمل assignment الحالي. يُنفَّذ الكود step by step، بالترتيب.
البنية النحوية:
variable = expression;متى تستخدم عملية الإسناد Blocking
تُستخدم عملية الإسناد Blocking (=) في المنطق التوافقي: وهي دوائر تتغير مخرجاتها فورًا عند تغير المدخلات، من دون ساعة ومن دون ذاكرة.
أمثلة على المنطق التوافقي:
- بوابات AND / OR / XOR
- دوائر الجمع والطرح
- المُبدِّلات
- فكّاك الشيفرة
مثال على Verilog:
always @(*) begin
sum = a + b; // تعيين حاجز
carry = a & b; // تعيين حاجز
endBlocking في كتل always (المنطق التوافقي)
always @(*) begin
temp = a & b; // الخطوة 1
out = temp | c; // الخطوة 2 (تستخدم temp من الخطوة 1)
endالترتيب مهم. هذا مناسب للمنطق التوافقي.
Blocking مقابل غير حاجب
Blocking (=) | غير حاجب (<=) | |
|---|---|---|
| التنفيذ | واحدًا تلو الآخر | كلها في الوقت نفسه |
| هل ينتظر السطر التالي؟ | نعم | لا |
| Uses | المنطق التوافقي | المنطق التسلسلي (القلابات) |
مهم: لا تستخدم Blocking مع القلابات
التحدي
أضف تعيينات blocking المفقودة لمبادلة قيم x وy باستخدام متغير مؤقت.
ما يجب فعله:
- Assign قيمة
xإلىtemp(احفظ x في temp) - Assign قيمة
yإلىx(انقل y إلى x) - Assign قيمة
tempإلىy(انقل قيمة x المحفوظة إلى y)
جرّب بنفسك
module swap;
reg x, y;
reg temp;
initial begin
x = 1;
y = 0;
$display("Before swap: x=%d, y=%d", x, y);
// TODO: الخطوة 1 - أسند x إلى temp
// TODO: الخطوة 2 - أسند y إلى x
// TODO: الخطوة 3 - أسند temp إلى y
$display("After swap: x=%d, y=%d", x, y);
$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 عبر الإنترنت