Menu
Coddy logo textTech

הזזות ימינה אריתמטיות

חלק מהיחידה תכנון RTL ואימות במסלול ה-Verilog של Coddy. שיעור 8 מתוך 38.

הזזה אריתמטית ימינה משתמשת ב־>>> ומשכפלת את סיבית הסימן כאשר האופרנד השמאלי שלה הוא signed. הזזה לוגית ימינה משתמשת ב־>> וממלאת באפסים. עבור ערך שלילי אי־זוגי, הזזה אריתמטית ימינה אינה זהה לחלוקה ב־integer שמעגלת לכיוון אפס.

קטע רלוונטי; ההצהרות והחיבורים שמסביב מסופקים באתגר.

reg signed [7:0] value;
value = -3;
$display("%0d", value >>> 1);

התוצאה היא מינוס שתיים, מכיוון שהרחבת סימן משמרת את הפרשנות של משלים לשתיים של מספר שלילי.

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

challenge icon

אתגר

בינוני

הסט ערך signed בן 8 סיביות ימינה אריתמטית בכמות (0 עד 7). החזר את התוצאה y בת 8 הסיביות מסוג signed. ערכים שליליים מתמלאים בביט הסימן שלהם. עמודות הפלט: y. כל ערכי הגירוי הם ערכים בינאריים ידועים.

השלם את design.v ושמור על שמות המודולים והיציאות שלו. ה-testbench.v הנעול מספק שינויים בקלט ומדפיס את הפלטים לאחר התייצבותם. הוא בוחר תרחיש באמצעות ארגומנט של סימולטור, כגון +CASE=1; אין צורך בקלט סטנדרטי. אל תוסיף הדפסות, השהיות או סיום סימולציה לתכנון. הפלט הצפוי הוא שורה אחת של ערכים עשרוניים לכל תצפית, מופרדים ברווח אחד ומסתיימת בירידת שורה.

נסו בעצמכם

module dut (input signed [7:0] value, input [2:0] amount, output signed [7:0] y);
    // החליפו את מציין המקום הזה בתכנון שלכם.
    assign y = 0;
endmodule
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה תכנון RTL ואימות

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