השמה עם אופרטורים
חלק מהיחידה יסודות במסלול ה-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 [3:0] 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 אונליין