סיכום – אתגר האופרטורים
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 29 מתוך 90.
אתגר
השלימו את הקוד על ידי כתיבת הביטויים הנכונים לכל משימה. האתגר הזה מכסה את כל האופרטורים מהפרק הזה.
מה צריך לעשות:
- לוגי: בדקו אם גם
value1וגםvalue2אינם אפס, ושמרו את התוצאה ב-logic_out - צמצום: בדקו אם כל הביטים של
vectorהם 1, ושמרו את התוצאה ב-reduction_out - הזזה: הזיזו את
dataשמאלה ב-2 ביטים, ושמרו את התוצאה ב-shift_out - שרשור: שלבו את
highואתlowלערך של 8 ביטים, ושמרו את התוצאה ב-concat_out - תנאי: שמרו את הגדול מבין `a` ו-`b` ב-
cond_out
נסו בעצמכם
module operator_challenge;
reg [3:0] value1, value2;
reg logic_out;
reg [3:0] vector;
reg reduction_out;
reg [7:0] data;
reg [7:0] shift_out;
reg [3:0] high, low;
reg [7:0] concat_out;
reg [3:0] a, b;
reg [3:0] cond_out;
initial begin
// לוגי
value1 = 4'd6;
value2 = 4'd0;
logic_out = ______; // בדקו אם גם value1 וגם value2 אינם אפס
// צמצום
vector = 4'b1111;
reduction_out = ______; // Check if all bits of vector are 1
// Shift
data = 8'b00001111;
shift_out = ______; // הזיזו את data שמאלה ב-2 ביטים
// שרשור
high = 4'b1010;
low = 4'b1100;
concat_out = ______; // שלבו את high ואת low לערך של 8 ביטים
// תנאי
a = 4'd7;
b = 4'd12;
cond_out = ______; // אחסנו את הגדול מבין `a` ו-`b`
$display("6 && 0 = %d", logic_out);
$display("&4'b1111 = %d", reduction_out);
$display("00001111 << 2 = %b", shift_out);
$display("{1010, 1100} = %b", concat_out);
$display("max(7, 12) = %d", cond_out);
$finish;
end
endmoduleכל השיעורים ביחידה יסודות
5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין