logo

הצהרת הקצאת Verilog

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

אותות מסוג חוט או סוג נתונים דורשים הקצאה רציפה של ערך. כל עוד סוללת +5V מופעלת על קצה אחד של החוט, הרכיב המחובר לקצה השני של החוט יקבל את המתח הנדרש.

דוגמה למחרוזת משנה ב-java

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

תחביר

תחביר ההקצאה מתחיל עם מילת המפתח assign, ואחריה שם האות, שיכול להיות אות או שילוב של רשתות אותות שונות.

ההבדל בין אריה לנמר

ה כוח כונן ו לְעַכֵּב הם אופציונליים ומשמשים בעיקר למידול של זרימת נתונים מאשר סינתזה לחומרה אמיתית.

האות בצד ימין מוערך ומוקצה לרשת או לביטוי של רשתות בצד שמאל.

 assign = [drive_strength] [delay] 

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

כללים

יש להקפיד על כמה כללים במהלך השימוש בהצהרת assign:

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

הקצה reg משתנים

אנחנו לא יכולים לנהוג או להקצות reg סוג משתנים עם משפט assign מכיוון שמשתנה reg מסוגל לאחסן נתונים ואינו מונע באופן רציף.

bash for loop

ניתן להניע אותות Reg רק בבלוקים פרוצדורליים כמו תמיד וראשוני.

הקצאה רציפה מרומזת

כאשר נעשה שימוש במשפט assign כדי להקצות לרשת הנתונה ערך כלשהו, ​​היא נקראת an מְפוֹרָשׁ מְשִׁימָה

אם מוצהרת מטלה שיש לבצע במהלך הרשת, היא נקראת an משתמע מְשִׁימָה.

 wire [1:0] a; assign a = x & y; // Explicit assignment wire [1:0] a = x & y; // Implicit assignment 

עיצוב לוגי קומבינציוני

שקול את המעגל הדיגיטלי הבא העשוי משערים קומבינציוניים והמתאים Verilog קוד.

הצהרת הקצאת Verilog

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

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

mvc עם java
 // This module takes four inputs and performs a Boolean // operation and assigns output to o. // logic is realized using assign statement. module combo (input a, b, c, d, output o); assign o = ~((a & b) | c ^ d); endmodule 

סכמטי חומרה

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

הצהרת הקצאת Verilog

האות o הופך ל-1 בכל פעם שהביטוי השילובי ב-RHS הופך נכון.

באופן דומה, o הופך ל-0 כאשר RHS שקרי. פלט o הוא X מ-0ns ל-10ns מכיוון שהכניסות הן X באותו זמן.