Menu
Coddy logo textTech

מספרים בעלי גודל מוגדר

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

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

מספר מוגדר־גודל מופיע בפורמט הזה: [bits]'[format][value]

  • <strong>bits</strong>: מספר הסיביות (לדוגמה, 8)
  • <strong>'</strong>: גרש שמפריד בין הגודל לפורמט (נדרש)
  • <strong>format</strong>: בסיס המספר: b לבינארי, d לעשרוני, h להקסדצימלי, או o לאוקטלי
  • <strong>value</strong>: המספר עצמו (לדוגמה, 1010)

לדוגמה:

  • 4'b1010: 4 סיביות, בינארי 1010 (עשרוני 10)
  • 8'd255: 8 סיביות, עשרוני 255 (בינארי 11111111)
  • 16'hFF: 16 סיביות, הקסדצימלי FF (בינארי 0000000011111111)
  • 3'b1: 3 סיביות, בינארי 001 (הסיביות משמאל מתמלאות באפסים)

דוגמת קוד:

reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary 10101010
data = 8'd170;        // 8 ביטים, עשרוני 170
data = 8'hAA;         // 8 bits, hex AA

כל שלוש הדוגמאות מציבות את אותו הערך ב-data.

למה הגודל חשוב

בלי ציון גודל:

reg [7:0] data;
data = 1;        // מה המשמעות של זה? 1 ביט? 8 ביטים?

Verilog מניחה שמספרים קטנים הם בגודל 32 ביט כברירת מחדל, וזה עלול לגרום לבעיות.

עם גודל:

reg [7:0] data;
data = 8'b00000001;   // Clear: 8-bit value 1

ריפוד באפסים

כשמקצים ערך קטן יותר לווקטור גדול יותר, Verilog ממלא את הביטים השמאליים באפסים:

reg [7:0] data;
data = 4'b1010;    // Becomes 8'b00001010
challenge icon

אתגר

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

מה לעשות:

  1. הגדירו את a כמספר בינארי בן 8 סיביות עבור המספר העשרוני 170 (בינארי 10101010)
  2. הגדירו את b כמספר בינארי בן 4 סיביות עבור המספר העשרוני 12 (בינארי 1100)
  3. הגדירו את c כמספר הקסדצימלי בן 16 סיביות עבור המספר העשרוני 255 (הקסדצימלי FF)

נסו בעצמכם

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // מספר בינארי בן 8 ביטים עבור 170 (10101010)
    b = ______;   // מספר בינארי בן 4 ביטים עבור 12 (1100)
    c = ______;   // מספר הקסדצימלי בן 16 ביטים עבור 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", c);
    $finish;
  end
endmodule
quiz iconבחנו את עצמכם

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

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

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