logo

מפעילי Verilog

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

1. אופרטורים אריתמטיים

עבור FPGA, החלוקה והכפל הם מאוד יקרים, ולפעמים אנחנו לא יכולים לסנתז את החלוקה. אם נשתמש ב-Z או X עבור ערכים, התוצאה אינה ידועה. הפעולות מתייחסות לערכים כלא חתומים.

אופי הפעולה בוצעה דוגמא
+ לְהוֹסִיף b + c = 11
- Subtrac b - c = 9, -b=-10
/ לחלק b / a = 2
* לְהַכפִּיל a * b = 50
% מודולוס b % a = 0

2. מפעילי Bitwise

כל ביט מופעל, התוצאה היא גודל האופרנד הגדול ביותר, והאופרנד הקטן נותר מורחב עם אפסים לגודל האופרנד הגדול יותר.

אופי הפעולה בוצעה דוגמא
~ הפוך כל סיביות ~a = 3'b010
& וכל פיסת b & c = 3'b010
| או כל קטע א | b = 3'b111
^ או כל סיביות a ^ b = 3'b011
^~ או ~^ Xnor כל סיביות a ^~ b = 3'b100

3. מפעילי הפחתה

אופרטורים אלו מצמצמים את הוקטורים לביט אחד בלבד. אם יש את התווים z ו-x, התוצאה יכולה להיות ערך ידוע.

אופי הפעולה בוצעה דוגמא
& וכל החלקים &a = 1'b0, &d = 1'b0
~& נאנד כל החלקים ~&a = 1'b1
| או כל החלקים |a = 1'b1, |c = 1'bX
~| וגם לא כל החלקים ~|a= 1'b0
^ או כל החלקים ^a = 1'b1
^~ או ~^ Xnor כל החלקים ~^a = 1'b0

4. מפעילים יחסיים

אופרטורים אלה משווים אופרנדים ומביאים לערך בוליאני סקלרי של 1 סיביות. ניתן להשתמש באופרטורים של שוויון מקרה ואי-שוויון עבור ערכי עכבה לא ידועים או גבוהים (z או x), ואם שני האופרנדים אינם ידועים, התוצאה היא 1.

אופי הפעולה בוצעה דוגמא
> גדול מ a > b = 1'b0
< קטן יותר א
>= גדול או שווה a >= d = 1'bX
<=< td> קטן או שווה א<= e='1'bX</td'>
== שוויון a == b = 1'b0
!= אי שיוויון a != b = 1'b1
=== שוויון בתיקים e === e = 1'b1
!=== אי שוויון בתיקים ו-!== d = 1'b1

5. אופרטורים לוגיים

אופרטורים אלה משווים אופרנדים ומביאים לערך בוליאני סקלרי של 1 סיביות.

אופי הפעולה בוצעה דוגמא
! לא נכון !(a && b) = 1'b1
&& שני הביטויים נכונים a && b = 1'b0
|| אחד או שני הביטויים נכונים ו || b = 1'b1

6. מפעילי משמרת

אופרטורים אלה מעבירים אופרנדים ימינה או שמאלה, הגודל נשמר קבוע, ביטים מוזזים הולכים לאיבוד, והווקטור מתמלא באפסים.

כיצד לקרוא קובץ csv ב-java
אופי הפעולה בוצעה דוגמא
>> העבר ימינה ב >> 1 תוצאות 4?b010X
<< העבר שמאלה a << 2 תוצאות 4?b1000

7. מפעילי משימה

ישנם שלושה אופרטורים של הקצאות, שכל אחד מהם מבצע משימות שונות, ונעשה בהם שימוש עם סוגי נתונים שונים:

  • להקצות (הקצאה רציפה)
  • <= (non-blocking assignment)< li>
  • = (הקצאה חוסמת)

8. מפעילים אחרים

אלו הם אופרטורים המשמשים לבדיקת מצב וליצירת וקטורים.

אופי הפעולה בוצעה דוגמא
?: בדיקת תנאים תנאי מבחן ? אם זה נכון תעשה את זה או אם לא תעשה את זה
{} שרשור c = {a,b} = 8'101010x0
{{}} שכפל {3{2'b10}}= 6'b101010

9. עדיפות מפעילים

סדר הטבלה אומר איזו פעולה מתבצעת תחילה. לראשון יש את העדיפות הגבוהה ביותר. ניתן להשתמש ב-() כדי לעקוף את ברירת המחדל.

עדיפות מפעילים
+, -, !, ~ (Unary)
+,- (בינארי)
<>
,=
==, !=
&
^, ^~ או ~^
|
&&
||
?: