Casex ו-Casez
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 56 מתוך 90.
לפעמים אכפת לך רק מסיביות מסוימות בערך, בעוד שאפשר להתעלם מסיביות אחרות. לדוגמה, במקודד עדיפויות, רוצים למצוא את סיבית ה־1 הראשונה בלי קשר לסיביות האחרות.
משפט case רגיל ידרוש ממך לציין כל צירוף אפשרי של סיביות ה״לא משנה״, דבר שאינו אפשרי באפיקים רחבים.
casez ו-casex פותרים את הבעיה הזאת בכך שהם מאפשרים לך לסמן ביטים מסוימים כ״לא משנה״ באמצעות ?, z או x.
Casez לעומת Casex לעומת Case רגיל
| הצהרה | ביטים שלא אכפת לנו מהם | מתאים במיוחד ל־ |
|---|---|---|
case | אין | התאמה מדויקת |
casez | z או ? | מקודדי עדיפות (מומלץ) |
casex | x, z או ? | יש להימנע (מסתיר באגים) |
casezמתעלם מביטים שהםzאו?(מומלץ)casexמתעלם גם מביטיx, מה שעלול להסתיר שגיאות בסימולציה
השתמשו תמיד ב־casez, ולא ב־casex. casex מסוכן כי הוא מתעלם מערכי x (שלעיתים קרובות מציינים אוגרים שלא אותחלו או שגיאות סימולציה). casez הוא החלופה הבטוחה יותר, כי הוא אינו מתייחס ל־x כאל ערך שאין להתחשב בו.
דוגמה
casez (data)
4'b???1: out = 0; // Bit0 must be 1, others don't matter
4'b??1?: out = 1; // Bit1 must be 1, others don't matter
4'b?1??: out = 2; // Bit2 must be 1, others don't matter
4'b1???: out = 3; // Bit3 must be 1, others don't matter
endcase? פירושו "לא משנה". הסיבית הזאת יכולה להיות 0, 1 או כל דבר אחר.
אתגר
מה לעשות:
הוסף את פקודת casez החסרה כדי שהמפענח הזה יעבוד.
איך זה עובד:
input = 4'b???1→out = 4'b0001input = 4'b??1?→out = 4'b0010input = 4'b?1??→out = 4'b0100input = 4'b1???→out = 4'b1000- ברירת מחדל →
out = 4'b0000
נסו בעצמכם
module decoder (
input [3:0] in,
output reg [3:0] out
);
always @(*) begin
// TODO: הוסף משפט casez
// in = 4'b???1 -> out = 4'b0001
// in = 4'b??1? -> out = 4'b0010
// in = 4'b?1?? -> out = 4'b0100
// in = 4'b1??? -> out = 4'b1000
// default -> out = 4'b0000
end
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין