השמה עם אופרטורים
חלק מהיחידה יסודות במסלול ה-Verilog של Coddy. שיעור 38 מתוך 90.
לאחר שתבינו השמה רציפה, תוכלו לשלב אותה עם אופרטורים כדי ליצור לוגיקה שימושית. פקודת assign יכולה להשתמש בכל אופרטור כדי לקבוע את הערך של חוט.
תחביר בסיסי
assign wire_name = expression;הביטוי יכול לכלול:
- אופרטורים אריתמטיים (
+,-,*,/) - אופרטורים ברמת הסיביות (
&,|,^,~) - אופרטורים לוגיים (
&&,||,!)
- אופרטורי השוואה (
>,<,==,!=) - אופרטורי הזזה (
<<,>>) - האופרטור המותנה (
? :)
דוגמאות עם אופרטורים שונים
AND ביטי:
assign out = a & b;חיבור:
assign sum = a + b;השוואה:
assign is_greater = (a > b);תנאי (מרבב):
assign out = sel ? a : b;הזזה:
assign shifted = data << 2;שרשור:
assign bus = {high_byte, low_byte};דוגמת קוד
module assign_operators (
input [3:0] a, b,
input sel,
output [3:0] and_out,
output [4:0] sum_out,
output is_equal,
output mux_out
);
assign and_out = a & b; // AND ברמת הסיביות
assign sum_out = a + b; // חיבור
assign is_equal = (a == b); // השוואה
assign mux_out = sel ? a : b; // תנאי (מרבב)
endmoduleכמה אופרטורים בהשמה אחת
אפשר לשלב אופרטורים בביטוי אחד:
assign result = (a & b) | (c ^ d);
assign final = (a + b) > (c - d);
assign parity = ^data; // XOR מצמצם (מספר אי־זוגי של 1's)קדימות אופרטורים
Verilog פועלת לפי קדימות אופרטורים תקנית. השתמשו בסוגריים ( ) כדי להבהיר את כוונתכם:
// לא ברור
assign out = a & b | c;
// ברור
assign out = (a & b) | c;אתגר
הוסף את פקודות ה־assign החסרות בהתאם למשימות.
מה לעשות:
- הגדר את
and_resultכשווה ל־input_a AND input_b(ברמת הביטים) - הגדר את
or_resultכשווה ל־input_a OR input_b(ברמת הביטים) - הגדר את
xor_resultכשווה ל־input_a XOR input_b(ברמת הביטים) - הגדר את
not_resultכשווה ל־NOT input_a(ברמת הביטים)
נסו בעצמכם
module assign_challenge (
input input_a,
input input_b,
output and_result,
output or_result,
output xor_result,
output not_result
);
// TODO: הוסיפו פקודות assign עבור:
// and_result = input_a & input_b
// or_result = input_a | input_b
// xor_result = input_a ^ input_b
// not_result = ~input_a
endmoduleהשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7השמות ושערים
השמה רציפההשמה עם אופרטוריםרכיבי שערים מובניםשערי AND, OR ו-NOTשערי XOR ו-XNORסיכום – מעגל שערים לוגיים5אופרטורים חלק 2
אופרטורים לוגייםאופרטורי צמצוםאופרטורי הזזהאופרטור שרשוראופרטור תנאיסיכום – אתגר האופרטורים3שיטת המספרים
ייצוג בינארימספרים בעלי גודל מוגדרמספרים ללא גודל מוגדרמספרים שלילייםהערכים המיוחדים X ו־Zסיכום – תבניות מספרים6מודולים
מבנה מודוליציאות קלט ופלטיציאות קלט-פלטיצירת מופע של מודולמיפוי יציאות לפי שםמיפוי יציאות לפי סדרסיכום – בניית מודולתרגלו בעצמכם: קומפיילר Verilog אונליין