Menu
CoddyTech

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

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

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

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

  • bits: מספר הביטים (לדוגמה, 8)
  • ': גרש שמפריד בין הגודל לפורמט (נדרש)
  • format: הבסיס של המספר: b עבור בינארי, d עבור עשרוני, h עבור הקסדצימלי, או o עבור אוקטלי
  • value: המספר עצמו (לדוגמה, 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 אונליין

בדקו המרה: ממיר בסיסי ספירה