מה ההבדל בין רצף לרכוש בקביעה Verilog של המערכת?


תשובה 1:

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

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

הנה דוגמא למאפיין (המשמש כטענה) הקובע שאם האות A נכון, B נכון לאחר 10 מחזורים

טען נכס (@posedge clk) A ## 10 B;

אתה יכול לשכתב אותו באמצעות הגדרת רצף, ולהשתמש באותה הגדרת מאפיין כמפורט להלן.

רצף sig_delay (x, y, numcyc);
  x ## numcyc y;
תוצאה

טען נכס (@posedge clk) sig_delay (A, B, 10);

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


תשובה 2:

מאפיין הוא פיסת תיאור או אוסף של ביטוי בוליאני ורצף המייצג בתורו את ההתנהגות.

מאפיין מכיל הגדרה של רצף אירועים. ניתן להגדיר נכס בתוך נכס ההכרזה ... סוף-תכונה.

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

הדוגמה הבאה תפרט זאת:

נכס P1;
 @ (posedge clk) השבתה (! איפוס)
  a | => b ## 1 c ## 2 d;
רכוש קצה
טען בנכס P1
 אחר
שגיאה $ ("נכס נכשל");

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

רצף s1;
 a # # 2 ב;
תוצאה

רצף S2;
 a | -> c;
תוצאה

נכס P1;
 @ (posedge clk)
S1 | -> S2;
endproperty.

אז מהקוד שלעיל יש לציין שני דברים: -

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