הערכים המיוחדים X ו־Z
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 17 מתוך 90.
X ו-Z הם ערכים מיוחדים שמספקים לנו מידע על מצב החומרה במהלך סימולציה.
X (לא ידוע), לצורכי איתור שגיאות
X מופיע בסימולציה כדי לציין בעיות בתכנון שלך.
כשאתה רואה X, לרוב המשמעות היא:
- אוגר שלא אותחל: שכחת להגדיר ערך לפני השימוש בו
- כמה התקנים שולטים באותו חוט: שני דברים שונים מנסים לשלוט באותו חוט בו-זמנית
- הפרת תזמון: אות השתנה בזמן הלא נכון ויצר מצב לא יציב
X אינו קיים בחומרה אמיתית. זהו כלי סימולציה שמודיע לך שמשהו אינו תקין בתכנון שלך, כדי שתוכל לתקן אותו לפני בניית השבב בפועל.
בלי X, ייתכן שתראה 0 או 1 אקראיים ולא תבין שיש בעיה. X הופך באגים לגלויים.
סיבות נפוצות:
reg a; // בתחילה X (לא ידוע)
wire b;
assign b = a; // b הופך ל-X כי a הוא XZ (עכבה גבוהה)
Z מייצג מצב של עכבה גבוהה או ניתוק.
- אות הוא Z כשהוא לא מונע על ידי שום דבר
- Z פירושו "החוט הזה מנותק"
- משמש למאגרי תלת־מצב ולאפיקים משותפים
סיבות נפוצות:
wire c; // בתחילה Z (לא מחובר)
assign c = 1'bZ; // Explicitly set to Zכתיבת X ו-Z ב-Verilog
אפשר להציב ערכי X ו-Z בדיוק כמו 0 ו-1:
reg [3:0] data;
data = 4'b10X0; // Bit 1 is unknown (0-indexed from the right)
data = 4'b01Z1; // ביט 1 הוא בעל עכבה גבוהה
data = 4'bXXXX; // All bits unknown
data = 4'bZZZZ; // כל הביטים בעלי עכבה גבוההX ו-Z בצורות גל
בצורות גל של סימולציה:
- X מופיע כקו אדום או כ-"X"
- Z מופיע כקו באמצע או כ-"Z"
אלה עוזרים לך לנפות שגיאות בתכנון שלך באמצעות הצגת המקומות שבהם האותות אינם ידועים או מנותקים.
הערות חשובות
- X מתפשט דרך פעולות לוגיות (X AND 0 = 0, אבל X AND 1 = X)
- Z משמש בדרך כלל לאפיקים תלת־מצביים
- בסינתזה, ייתכן שמתייחסים ל־X ול־Z באופן שונה
- אתחלו תמיד אותות reg כדי להימנע מ־X בסימולציה
אתגר
השלימו את הקוד על ידי כתיבת הערכים הנכונים שמכילים X ו-Z.
מה לעשות:
- הגדירו את
aלערך של 4 סיביות שבו סיבית 1 אינה ידועה (האחרות 0) - הגדירו את
cכך שכל הסיביות אינן ידועות (4 סיביות) - הגדירו את
dכך שלכל הסיביות תהיה עכבה גבוהה (4 סיביות)
נסו בעצמכם
module xz_challenge;
wire [3:0] a, c, d;
assign a = 4'b______; // Bit 1 is X (others 0)
assign c = 4'b______; // כל הביטים הם X
assign d = 4'b______; // All bits Z
initial begin
$display("a = %b", a);
$display("c = %b", c);
$display("d = %b", d);
$finish;
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין