Menu
Coddy logo textTech

Casex ו-Casez

חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 56 מתוך 90.

לפעמים חשובים לך רק סיביות מסוימות בערך, ואפשר להתעלם משאר הסיביות. לדוגמה, במקודד עדיפויות, רוצים למצוא את הסיבית הראשונה שערכה 1, בלי קשר לשאר הסיביות.

הצהרת case רגילה תדרוש ממך לפרט כל שילוב אפשרי של הביטים שאין להם חשיבות, דבר שאינו אפשרי באפיקים רחבים.

<strong>casez</strong> ו-<strong>casex</strong> פותרים את הבעיה הזו בכך שהם מאפשרים לך לסמן סיביות מסוימות כ״לא משנה״ באמצעות ?, z או x.

casez לעומת casex לעומת case רגיל

הצהרהסיביות שלא משנותהכי מתאים ל־
caseאיןהתאמה מדויקת
casezz או ?מקודדי עדיפות (מומלץ)
casexx, z או ?יש להימנע (מסתיר באגים)
  • <strong>casez</strong> מתעלם מביטים שהם z או ? (מומלץ)
  • <strong>casex</strong> מתעלם גם מביטי x, דבר שעלול להסתיר שגיאות בסימולציה

השתמשו תמיד ב־<strong>casez</strong>, ולא ב־<strong>casex</strong>. casex נוצרה קודם, אבל מהנדסים הבינו שהיא מסוכנת כי היא מתעלמת מערכי x (שלעיתים קרובות מציינים אוגרים שלא אותחלו או שגיאות סימולציה). casez הוצגה כחלופה בטוחה יותר.

דוגמה

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 או כל דבר אחר.

challenge icon

אתגר

מה צריך לעשות:

הוסף את פקודת casez החסרה כדי שהמפענח הזה יפעל.

איך זה עובד:

  • input = 4'b???1 → out = 4'b0001
  • input = 4'b??1? → out = 4'b0010
  • input = 4'b?1?? → out = 4'b0100
  • input = 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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר Verilog אונליין