הערכים המיוחדים X ו־Z
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 17 מתוך 90.
X ו-Z הם ערכים מיוחדים שמספקים לנו מידע על מצב החומרה במהלך סימולציה.
X (לא ידוע), לצורך איתור באגים
X מופיע בסימולציה כדי להצביע על בעיות בתכנון שלך.
כשאתה רואה X, לרוב המשמעות היא:
- אוגר שלא אותחל: שכחת להגדיר ערך לפני השימוש בו
- מספר התקנים שולטים באותו חוט: שני דברים שונים מנסים לשלוט באותו חוט באותו זמן
- הפרת תזמון: אות השתנה בזמן הלא נכון, ויצר מצב לא יציב
X אינו קיים בחומרה אמיתית. זהו כלי סימולציה שמודיע לך שמשהו לא תקין בתכנון שלך, כדי שתוכל לתקן זאת לפני בניית השבב בפועל.
בלי X, ייתכן שתראה אפסים או אחדות אקראיים ולא תבין שיש בעיה. X הופך באגים לגלויים.
סיבות נפוצות:
reg a; // בתחילה X (לא ידוע)
reg 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 אונליין