הוראת השבתה
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 62 מתוך 90.
הפקודה disable עוצרת את הביצוע של בלוק בעל שם (כמו לולאת forever, בלוק begin-end או משימה). היא שימושית ליציאה מלולאות שאחרת היו רצות לנצח.
תחביר:
disable block_name;יש לסמן את הבלוק בשם.
השבתה באמצעות לולאה אינסופית
initial begin : counter // counter נותן לבלוק את השם counter.
forever begin
#10 count = count + 1;
if (count == 5) begin
disable counter; // disable counter עוצר את כל הבלוק בעל השם הזה.
end
end
endלולאת forever נמצאת בתוך בלוק בשם counter. הפקודה disable counter ממוקמת בתוך הלולאה. כאשר count מגיע ל־5, הפקודה disable counter מתבצעת ועוצרת את כל הבלוק counter, מה שעוצר מיד גם את לולאת forever.
השבתה בבלוק נפרד
initial begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // עוצר את הבלוק counter מבחוץ
endכאן, לולאת forever פועלת ברציפות בתוך הבלוק ששמו counter. המשפט disable counter ממוקם בבלוק initial נפרד. לאחר 50 יחידות זמן, disable counter מתבצע ועוצר את הבלוק counter, ובכך מסיים את לולאת forever מבחוץ.
כללים חשובים
| כלל | הסבר |
|---|---|
| חובה לתת שם לבלוק | begin : block_name |
| השבתה מפסיקה את הביצוע מיד | הקוד נעצר באותו רגע |
| אפשר להשתמש בזה מכל מקום | מכל בלוק במודול |
שימושי לעצירת לולאות forever | אחרת הן לעולם לא נעצרות |
אתגר
ניתן לך מודול עם מונה שרץ לנצח.
מה לעשות:
השלם את הבלוק הריק על ידי החלפת כל הערה בקוד המתאים:
- הוסף
#50;כדי להמתין 50 יחידות זמן - הוסף
disable counter;כדי לעצור את בלוק המונה - הוסף
$display("Counter stopped");כדי להדפיס את ההודעה - הוסף
$finish;כדי לסיים את הסימולציה
נסו בעצמכם
module disable_challenge;
integer count;
initial begin
count = 0;
fork
begin : counter
forever begin
#10 count = count + 1;
$display("count = %d", count);
end
end
begin
// שלב 1: המתן 50 יחידות זמן
// שלב 2: השבת את הבלוק counter
// שלב 3: הדפס "Counter stopped"
// שלב 4: סיים את הסימולציה
end
join
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין