Gate Delays
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 68 من 90.
في الدرس السابق، تناولنا التأخيرات العامة المستخدمة مثل #10 a = b;. وهي تنتظر قبل تنفيذ عبارة.
في هذا الدرس، نتناول تأخيرات gate، وهي خاصة ببدائيات gate المضمّنة مثل and وor وnot. تحاكي تأخيرة gate المدة التي تستغرقها بوابة الأجهزة لإنتاج output بعد تغيّر inputs الخاصة بها.
في الأجهزة الحقيقية، لا تستجيب البوابات فورًا. هناك تأخير صغير. عند استخدام بدائيات البوابات المضمّنة، يمكنك إضافة تأخير لمحاكاة وقت انتشار البوابة. يتغير output فقط بعد التأخير المحدد.
الفرق بين التأخير العام وتأخير البوابة
| التأخير العام | تأخير البوابة | |
|---|---|---|
| البنية | #10 a = b; | and #5 (out, a, b); |
| الموضع | # قبل عبارة | # داخل primitive البوابة |
| الغرض | الانتظار قبل التنفيذ | نمذجة زمن انتشار البوابة |
الصياغة:
gate_type #(delay) (output, input1, input2, ...);تحدد #(delay) عدد وحدات time التي تستغرقها البوابة للاستجابة.
مثال بسيط
and #5 (out, a, b);تستغرق بوابة AND هذه 5 من وحدات time لتغيير output الخاص بها بعد تغيّر a أو b.
تأخير البوابة مع مدخلات متعددة
nand #8 (out, a, b, c, d); // NAND رباعي المدخلات مع تأخير 8 وحدات زمنيةقواعد مهمة
| القاعدة | الشرح |
|---|---|
| يأتي التأخير بعد اسم gate | and #5 (out, a, b) |
| قيمة التأخير بوحدات time | استنادًا إلى التوجيه timescale |
| تؤثر جميع inputs في output | يؤدي أي تغيير في input إلى تشغيل التأخير |
| غير قابل للتوليف | تُستخدم تأخيرات gate للمحاكاة فقط |
التحدي
Add تأخيرات gate المفقودة إلى هذه الوحدة. استخدم تأخيرات مختلفة لكل gate.
ما يجب فعله:
- بوابة AND: تأخير بمقدار 5 time unit
- بوابة OR: تأخير بمقدار 3 time unit
- بوابة NOT: تأخير بمقدار 2 time unit
جرّب بنفسك
module gate_delay_challenge;
reg a, b;
wire and_out, or_out, not_out;
// TODO: أضف بوابة AND بتأخير 5 وحدات زمنية (المدخلات a, b)
// TODO: أضف بوابة OR بتأخير 3 وحدات زمنية (المدخلات a, b)
// TODO: أضف بوابة NOT بتأخير 2 وحدات زمنية (المدخل a)
initial begin
$monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b",
$time, a, b, and_out, or_out, not_out);
a = 1; b = 1;
#10 $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 Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators 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 عبر الإنترنت