26
הטכניון, לישראל טכנולוגי מכון חשמל להנדסת הפקולטה ל מעבדהVLSI- שפת של מקוצר תיאורVHDL אחרון עדכון- 01/03/2005 16:01 / vlsi / il . ac . technion . ee . ww w :// http

המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

מכון טכנולוגי לישראל, הטכניון הפקולטה להנדסת חשמל

-VLSI מעבדה ל

VHDLתיאור מקוצר של שפת

16:01 01/03/2005 - עדכון אחרון

/vlsi/il.ac.technion.ee.www://http

Page 2: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

תוכן עניינים

3..................................................................................................... הקדמה- 1פרק VHDL....................................................................................................................3שפת

3..................................................................................................... מבואות- 2פרק 3...............................................................................................המרכיבים הבסיסיים של השפה

5........................................................................................................................תיאור מקבילי 6.........................................................................................................................תיאור סדרתי

8..................................................................................................................יחידות סינכרוניות 9......................................................................................................הערות נוספות לתכנות נכון

9......................................................................................................................שילוב תהליכים generate : ..................................................................................................................10משפט

generic:.................................................................................................................10 -שימוש ב 11......................................................................................................................מכונות מצבים 12.....................................................................................................................הגדרות תצורה

std_logic_vectors............................................................................................13פעולות על 13............................................................................... למטרות סינתזהVHDL – 3פרק

13............................................................................................................כללים לסינתזה CLK.....................................................................................................................13משפטי . א 14..........................................................................................: לא רצויים Latches -יצירה של . ב types......................................................................................................................14בחירת . ג 14............................................................................:אלמנטים שאינם מוכרים לצורך סינתזה. ד undefined............................................................................................................14-שימוש ב. ה 15.....................................................................................................ביצוע אתחול רגיסטרים. ו 15...................................................................................שימוש בערכים התחלתיים לסיגנלים. ז 15...........................................................................................ון היררכי מול תכנון שטוחתכנ. ח VHDL.....................................................................................16 - דוגמאות ב- 4פרק

16.................................................................................................מימוש מעגלים פשוטים 18................................................................................................קריאה וכתיבה לקבצים

19............................................................................ סימולציות ובדיקות תזמון- 5פרק 19............................................................................................................................סימולציה

21................................................................................................סימולציה בעזרת רכיב מעורר SYNOPSYS.......................................................................................23סינתזה בכלים של

Unix - Solaris.....................................................24 רקע בסיסי למערכת ההפעלה - 6פרק Solaris....................................................................................................24מנשק המשתמש של

24...................................................................................................................מערכת הקבצים 25........................................................................................................................עורכי טקסט

25...............................................................................................................................הדפסות 26............................................................................................................מידע נוסף

2

Page 3: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

הקדמה- 1פרק

: שבחובה לקרוא את כל החוברת הזאת וגם את החוברת VHDL לפני כתיבת קוד : הערה

pdf.2004_351ams_synopsys/manuals/vlsi/il.ac.technion.ee.www://http

VHDLשפת

VHDLהמהווה תקן רשמי בתעשייה , 1 שפה לתיאור חומרה היא(IEEE 1076) . בעזרתVHDL ניתן לתאר מערכת בכל רמת הפשטה . רכות מורכבותאפשר לתכנן לתאר ולבצע סימולציה על מע

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

משפחה זו נבדלת באופן משמעותי מהשפות . משתייכת למשפחת השפות התיאוריותVHDLשפת , ++BASIC ,C, פסקל, Assembly ,Fortran ,C , שפת מכונה,Microcodeבהן , )Procedural(הנוהליות

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

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

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

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

.דיאגרמת מצבים מפורטת

מבואות- 2פרק

המרכיבים הבסיסיים של השפה

מילות מפתח פונקציונאליות בדומה למילות : לשפה מילות מפתח המתחלקות למספר קבוצות

המתארות מרכיבים , מילות מפתח תיאוריות; ...),FOR ,BEGIN ,IF(המפתח בשפה פונקציונאלית וספריה ; אופרטורים מסוגים שונים; )PROCESS ,ARCHITECTURE: כגון(ות ותכונות של מערכ

מדיניות אולם , )Case-Insensitive(השפה חופשית מרישיּות . תקנית של סוגי נתונים ופונקציות-ואילו את השמות הניתנים על, לרשום את מילות המפתח השונות באותיות גדולותהמעבדה היא

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

.כלומר ערכם מתעדכן בסוף התהליך, )ראה המשך ( זהה להתנהגות הסיגנליםPortהתנהגות של

:מילות המפתח התיאוריות

מכונה עליונה הת התכןרמ. הבסיסית בתכן כל מערכת אבן הבניין היא ):ENTITY(יישות top-level entity, ישות . רמות נמוכות יותרות המתארתכיל ישויות נוספות ובתכנון היררכי היא

VHDLלה מקביל -Symbolלכל ישות מוגדר מנשק מול שאר חלקי המערכת. בתיאור סכמטי , יםניתן להגדיר את הפתח. )PORTs" (פתחים" באופן כללי יותר או, כניסות ויציאותב המאופיין

.INOUT או IN ,OUT-כ

מהווה VHSICהשם . VHSIC Hardware Description Language מהווה ראשי תיבות של VHDLהשם 1

Veryכלומר , VLSI אפשר גם VHSICבמקום . Very High Scale Integrated Circuitראשי תיבות של Large Scale Integration.

3

Page 4: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

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

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

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

. מקבילה לסכמה בתיאור הסכמטיVHDL תארכיטקטור

המאפשרת תיאור תפקודי של פעילות רכיב , שפה יחידת ביצוע בסיסית ב):PROCESS (תהליך .כל פעולות הסימולציה מחולקות לתהליך אחד או יותר. אלגוריתמי-באופן סדרתי, או מערכת

רכיב . מאפשרת תיאור מבני של פעילות התקן מורכב יותרה, אבן בניין): COMPONENT (רכיב

.לבין ישות בה מעוניינים להשתמש עבורו, מגדיר מנשק בין ההתקן הנבנה

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

.ביצוע סימולציה

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

: לדוגמא,להשתמשLibrary IEEE; USE IEEE.std_logic_1164.ALL;

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

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

)Data Types(סוגי נתונים

:ניסוי נשתמש במספר מצומצם של סוגיםהבמסגרת . רביםהשפה כוללת סוגי נתונים

INTEGER:סימטרי סביב אפס (2147483647± מספר שלם שערכו בתחום.(

STD_LOGIC :ביניהם ,שונים ערכים 9 שיכול לקבל סוג נתונים:

.אפס לוגי: '0' .אחד לוגי: '1''X' :לא ידוע. 'U' :לא מאותחל. 'Z' : עכבה גבוהה)High Impedance או HIGHZ.( ).Don't Care(חסר משמעות : '-'

STD_LOGIC_VECTOR : וקטור שלSTD_LOGIC .דוגמאות לשימוש בסוג זה: vec : STD_LOGIC_VECTOR(7 downto 0) vec2 : STD_LOGIC_VECTOR(0 to 15)

):Enumerated Data Types(רשימות ערכים

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

: אם יש לבצע פעולות על ימי השבוע ניתן להגדירPACKAGE days_package IS TYPE day_t IS (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday); END days_package;

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

4

Page 5: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

USE WORK.days_package.all;

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

AND OR NAND NOR XOR NOT :אופרטורים לוגיים =< < => > =/ = :אופרטורי יחס

/ * - + :אופרטורים אריתמטיים )Port - או פתח Signal -לאות (=> )Variable -למשתנה (=: :אופרטורי השמה <= :אופרטור הפעלה

):Attributes (תכונות

, פתחים ומשתנים, הוא היכולת לקבל נתונים שונים לגבי מצבם של אותותמרכיב מעניין בשפהולמרכיבים שוני של השפה יש תכונות , )Attributes" (תכונות"נתונים אלו מכונים . מעבר לערכםתכונות של משתנה שלם יכולות להיות , תכונה של מערך יכולה להיות אורכו, למשל. רבות ושונות

מיד לאחר הרכיב אליו ) Tick(רושמים תג , כדי לקבל את ערך התכונה. שלוהערך המזערי והמירבי .ולאחריו את שם התכונה, מתייחסים אם התרחש שינוי trueמחזיר , std_logic הוא מסוג clockכאשר , clock'EVENTהביטוי , לדוגמא

ייתן clock'LAST_VALUEהביטוי ). Current Delta(בפרק הזמן הנוכחי , clockכלשהו בערך של כיוון שלעתים עצם העובדה שהערך , ערך חשוב כשלעצמו; clockבמקרה זה את הערך הקודם של

כן היה הערך בלתי -ייתכן שלפני', 0'אין בה כדי לומר שקודם היה , כרגע' 1'השתנה והוא למשל .עובדה העשויה לדרוש התייחסות שונה, מוגדר

למשתנה זמן או ns 10כמו ( לעבור מערך פיסיקלי נתון מנת-הוא על, שימוש טיפוסי נוסף בתכונות בעלת הצורה VALזאת באמצעות התכונה ). 4 או 10כמו (לערך מספרי פשוט ) std_logic-ל' 1'

.sometype'VAL(some_val): הכללית

):Comments (הערות תיעודשמופיע אחרי שני כל מה ). --( רושמים אחרי זוג מקפים VHDLהערות תיעוד פנימי בקבצי שפת

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

C++) שם התווים הפותחים הם.(//

תיאור מקבילי

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

)RSFF) Reset-Set Flip-Flop ישות המייצגת תהגדר: א דוגמא

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

ENTITY rsff IS PORT (set, reset: IN STD_LOGIC; q, qb: INOUT STD_LOGIC); END rsff;

: בתיאור התנהגותי מקביליRSFF -של הת הארכיטקטורה הגדר

ARCHITECTURE arc_rsff OF rsff IS BEGIN q<= NOT (qb AND set); qb<= NOT (q AND reset); END arc_rsff;

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

5

Page 6: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

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

reset והערך q = 1אם , למשל. מתורגמת לשינוי ערך הצד השמאלי, הערכים הימנייםהשתנות עשויה להיכנס לפעולה , כעת. ה השניהשמבהתאם לה', 0' מקבל ערך qb אזי', 1'-ל' 0'-הופך מ

.ה הראשונהשמההזהו המצב הרגיל בהגדרות ). Concurrent Statements (משפטים מקבילייםכאן נתקלנו במקרה של

) END- לBEGIN-בין ה(ות המופיעות בבלוק הארכיטקטורה שמכאשר כל הה, ארכיטקטורה !ומומלץ לזכור אותה בכל עת, עובדה זו מהותית מאוד .מתבצעות במקביל

: בתיאור מבניRSFF -של הת הארכיטקטורה הגדר

ARCHITECTURE arc2_rsff OF rsff IS COMPONENT nand2 PORT (a,b :IN STD_LOGIC; c :OUT STD_LOGIC); END COMPONENT; BEGIN U1: nand2 PORT MAP (set, qb, q); U2: nand2 PORT MAP (reset, q, qb); END arc2_rsff;

ההנחה היא ששערים אלו הוגדרו . nand2 בעזרת שערי RSFFארכיטקטורה מבנית זו מממשת מגדיר את COMPONENTהבלוק , כאן. מראש כישויות בעלות ארכיטקטורה ותצורה מתאימה

, rsffיר את הרכיבים השונים השותפים במבנה ואילו הבלוק הראשי מגד, nand2המנשק לשערי לבין , rsffהשונים של ) Ports(ידי מיפוי מהפתחים -הרכיבים מוגדרים על. בארכיטקטורה זו

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

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

תיאור סדרתי

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

(Sequential Statement)באופן זהה רעיונית לדרך ביצוען של , אחר זה לפי סדרםמתבצעים זה ה VHDLקיימות בשפת , בהתאם .(Procedural Languages)תוכניות אלגוריתמיות בשפות נוהליות

. LOOP - וCASE ,IF ,FOR: כגון, לשפות כאלותמילות מפתח האופייניולכן הוא נפוץ יותר . לילרוב תיאור סדרתי הוא טבעי יותר מתיאור מקבי, מבחינת התוכניתן

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

IFמשפט : ב דוגמא

IF (day = Sunday) THEN weekend := TRUE; ELSIF (day = Saturday) THEN weekend := TRUE; ELSE weekend := FALSE; END IF;

CASEמשפט : ג דוגמא

CASE vector IS WHEN “10” => a := 1;

6

Page 7: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

WHEN “01” => a := 2; WHEN OTHERS => a := 0; END CASE;

RSFF-התנהגות ה סדרתי של תיאור :ד דוגמא

ARCHITECTURE arc3_rsff OF rsff IS BEGIN PROCESS(set , reset) BEGIN IF set = ‘1’ AND reset = ‘0’ THEN q <= ‘0’; qb <=’1’; ELSIF set = ‘0’ AND reset = ‘1’ THEN q <=’1’; qb <=’0’ ; ELSIF set = ‘0’ AND reset = ‘0’ THEN q <=’1’; qb <=’1’; END IF; END PROCESS; END arc3_rsff;

וסופו PROCESSשתחילתו במילה , בודד ידי בלוק תהליך-וגדרת על משלעילהארכיטקטורה END PROCESS .תהליך (הבלוקכל המשפטים בין שתי שורות אלה הם חלק מ .(

משתנים אותות ופתחים

. )Ports( ופתחים )Signals(אותות ,)Variables (ניתן להגדיר משתנים VHDLשפת בהגדרות המשתנים . בתכנות מבני) Procedures( למשתנים מקומיים של שגרות דומים VHDLמשתני

משפטי השמה של . כיר אותומ, תהליך שבו מוגדר המשתנההרק ו; מופיעות בתוך בלוק התהליך .מתבצעים מיד) num := 1 הצורהמ(משתנים

נעזרים רכיבים בהתקן כאשר רוצים לחבר שתי . לחוטים בסכמה לרוב שקוליםVHDLאותות כותרת הבלוק אחרי ה מופיעהאותותהגדרת ). בהמשך 'ה דוגמא ראה (אותותב"ARCHITECTURE" ,רההצומ (אותותכל משפטי השמה של . והם מוּכרים בארכיטקטורה כולה

sig <= ’1’ (או כאשר מגיעים תהליך למשל בסוף ה; עוצרתהליךמתבצעים בו זמנית כאשר ה כלשהו אותאם בתהליך מסוים קיים עבור . WAIT UNTIL clock`EVENT כמו ,"WAIT "למשפט

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

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

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

קרוא ניתן רק ל, פתח המוגדר ככניסה). INOUT(או שילוב ) OUT( יציאה ,)IN(מוגדרים גם ככניסה .לקרוא ממנהולא ניתן , ליציאה ניתן רק לכתוב, בדומה; תוכוכתוב לולא ל, ממנו

רצוי להשתמש . במימוש של לוגיקה) ולא במשתנה(מומלץ תמיד להשתמש רק באותות : חשוב .במשתנים למטרות כגון האינדקס של לולאה

אותותחיבור שני מהפכים בעזרת : ה דוגמא

הוא buf( .inv_in_outשות של מוגדרות בהגדרת הי( הן כניסות המעגל buf_out -ו buf_in : להבהרה .buf של U2-ו U1 הרכיבים המחבר ביןאות

ARCHITECTURE arc_buf OF buf IS SIGNAL inv_in_out : STD_LOGIC; COMPONENT inv

7

Page 8: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

PORT (inv_in :IN STD_LOGIC; inv_out :OUT STD_LOGIC); END COMPONENT; BEGIN U1: inv PORT MAP (buf_in, inv_in_out); U2: inv PORT MAP (inv_in_out, buf_out); END arc_buf;

לולאות ושימוש במשתנים במסגרת תהליך: ו דוגמאENTITY add IS PORT (a, b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END add; ARCHITECTURE arc_add OF add IS BEGIN PROCESS(a,b) VARIABLE i : INTEGER; BEGIN FOR i IN 0 TO 3 LOOP s(i) <= a(i) xor b(i) ; END LOOP; END PROCESS; END arc_add;

יחידות סינכרוניות

: מהסוג בעזרת משפטFlip-Flopניתן לבנות יחידות סינכרוניות כגון , במסגרת תהליך

IF clock'EVENT AND clock = 1 THEN

). ת שעוןיכלומר הייתה עלי(' 1 '-אם השעון השתנה וכעת הוא שווה ל: משמעות המשפט הוא

)Attributes( בעזרת תכונות DFFמימוש : ז דוגמא

ENTITY dff_asynch IS PORT( clock, reset, din : IN std_logic; dout : OUT std_logic ); END dff_asynch; ARCHITECTURE arc_dff_asynch OF dff_asynch IS BEGIN PROCESS(reset, clock) BEGIN IF (reset = ‘1’) THEN dout <= ‘1’; ELSIF ( clock’EVENT ) AND ( clock = ‘1’) THEN dout <= din; END IF; END PROCESS;

8

Page 9: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

END arc_dff_asynch;

הערות נוספות לתכנות נכון

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

זו רשימה של אותות המופיע מיד לאחר .(Sensitivity List) רשימת רגישויותהראשונה היא עד , גורמת לעצירת התהליך לפני תחילתו כאשר מוגדרת כזו היא .PROCESSמילת המפתח

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

יופיע אותה, מופיע בצד ימין של משפט השמהה )Signal(קיים אות אם בתהליך , כלליכדאי להביט גם . reset- וset רשימת הרגישויות מורכבת מהאותות שלעיל 'ד דוגמאב .רשימהב

.הגדרתה בכל מקרהבשאר הדוגמאות ולזהות את רשימת הרגישויות ואת תפקידה וסיבות

שימוש בהמתנה : וגם זאת ניתן לבצע בשתי דרכים, WAITהדרך השניה היא שימוש במשפטי או שימוש בהמתנה עד לקיום צירוף קומבינטורי , ) למשלWAIT FOR 10 ns(לזמן קבוע

המקרה האחרון דומה במידה ). למשל 'WAIT UNTIL clk'EVENT AND clk = '1(מסויים .בעיקר עבור צירופים קומבינטוריים פשוטים, ימת רגישויותמסויימת לרש

-בניגוד ל (ELSEכמעט תמיד נדרש בסוף הסדרה משפט , IFכאשר אנו משתמשים במשפטי •ELSIF( ,החסרת חלק זה כשהוא נדרש תביא . מנת לכסות מצבים שאינם מכוסים אחרת-על

.ותרתרצויה ומי-יצירה שהיא לרוב בלתי ;ש במימוLatchesליצירת במצב קומבינטורי ) Signal(מסויים נותן ערך לאות ) Process(כאשר תהליך , באופן כללי יותר

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

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

.)std_logicלאות מסוג () Z ')HIGHZ 'לאות התהליכים הנותנים ערך חסר משמעות להציב שאינם שייכים תויות של תהליך קומבינטורי אותואין להכניס לרשימת הרגיש, באופן כללי •

.כגון אותות שעון, לאותו תהליך

שילוב תהליכים

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

Synchronous (הכולל את הלוגיקה הצירופיתשניהו )קומבינטורי - Combinational, Combinatorial(. , בשעוןניתן לראות כי הלוגיקה הצירופית פועלת בתהליך הראשון ללא תלות , למשל'ח דוגמאב

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

צירופי ומתוזמן –מימוש מונה בעזרת שני תהליכים : ח דוגמא

PACKAGE count_types IS TYPE bit4 IS range 0 to 15; END count_types; Library IEEE; USE IEEE.std_logic_1164.ALL; USE WORK.count_types.ALL; ENTITY count IS PORT (clock, load, clear : IN std_logic; din : IN bit4; dout : INOUT bit4); END count; ARCHITECTURE arc_count OF count IS

9

Page 10: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

SIGNAL count_val : bit4; BEGIN PROCESS (load, clear, din, dout) -- Combinational BEGIN IF (load = ’1’) THEN count_val <= din; ELSIF (clear = ’1’) THEN count_val <= 0; ELSIF (dout >= 15) THEN count_val <= 0; ELSE count_val <= dout + 1; END IF; END PROCESS; PROCESS -- Synchronous BEGIN WAIT UNTIL clock’EVENT and clock = ’1’; dout <= count_val; END PROCESS; END arc_count;

: generateמשפט

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

add_label: -- Note that a label is required here for i in 4 downto 1 generate FA: full_adder port map(C(i-1), A(i), B(i), C(i), Sum(i)); end generate;

:קוד מתורגם ל

FA4: full_adder port map(C(3), A(4), B(4), C(4), Sum(4)); FA3: full_adder port map(C(2), A(3), B(3), C(3), Sum(3)); FA2: full_adder port map(C(1), A(2), B(2), C(2), Sum(2)); FA1: full_adder port map(C(0), A(1), B(1), C(1), Sum(1));

.generate -בלולאה של ה) שלםprocessכולל (ניתן לשים כל משפט מקבילי

:generic -שימוש ב

:לדוגמא. גדרת יחידות בעלי פרמטרים משתניםמאפשר ה

library IEEE; use IEEE.std_logic_1164.all; entity reg_g is generic(left : natural := 31; -- top bit prop : time := 100 ps); -- delay port (clk : in std_logic; input : in std_logic_vector (left downto 0); output : out std_logic_vector (left downto 0) ); end entity reg_g;

10

Page 11: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

architecture behavior of reg_g is begin -- behavior reg: process(clk) begin if clk='1' then -- rising edge output <= input after prop; end if; end process reg; end architecture behavior; -- of reg_g

. יכולים לקבל ערך משתנה בזמן הצבת הרכיב בארכיטקטורהprop - וleftהפרמטרים

:דוגמא של שימוש היחידה. הם ערכי בררת המחדלentity -הערכים המוגדים ב

library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; architecture test of test_g is constant prop : time := 50 ps; constant left : natural := 7; -- top bit number ……. begin -- test load <= '0' after 1 ps; -- one shot clk <= not clk after 5 ns; -- 10 ns period ……. reg:entity WORK.reg_g generic map(left=>left, prop=>prop) port map(clk=>clk, input=>inp, output=>outp); end test; -- of test_g

מכונות מצבים

התהליך . מתוזמן וצירופי- שני תהליכיםבעזרת מכונת מצבים לממשמקובל , בדומה לאמור לעילוהתהליך המתוזמן , mealy )עבור מכונת ( ואת ערכי היציאותהצירופי קובע מה יהיה המצב הבא

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

.המכונה

מתוזמן וצירופי – מימוש מכונת מצבים בעזרת שני תהליכים: ט דוגמא

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

ENTITY fsm IS PORT (clk :IN STD_LOGIC; reset,i1: IN STD_LOGIC; z1: OUT STD_LOGIC); END fsm;

11

Page 12: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

ARCHITECHTURE arc_fsm OF fsm IS SIGNAL next_state, present_state: STD_LOGIC; BEGIN PROCESS (present_state, i1) –- Combinational BEGIN CASE present_state IS WHEN '1' => IF i1 = '0' THEN next_state <= '1'; z1 <= '0'; ELSE next_state <= '0'; z1 <= '1'; END IF; WHEN '0' => IF i1 = '0' THEN next_state <= '0'; z1 <= '1'; ELSE next_state <= '1'; z1 <= ‘1’; END IF; END CASE; END PROCESS; PROCESS (clk, reset) -- Synchronous BEGIN IF reset = '1' THEN present_state <= '0'; ELSIF clk'EVENT AND clk = '1' THEN present_state <= next_state; END IF; END PROCESS; END arc_elev;

הגדרות תצורה

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

.מבין כל הקיימות עבור ישות נתונה, במקרה מסוים

RSFFתיאור תצורה של : י דוגמאCONFIGURATION cfg_rsff OF rsff IS FOR arc2_rsff FOR U1, U2 : nand2 USE ENTITY WORK.mynand(arc_mynand); END FOR; END FOR; END cfg_rsff;

עבור שני שערי rsffל ש arc2_rsffה היא שבארכיטקטורהגדרת התצורה שבדוגמאמשמעות הארכיטקטורה . arc_mynand עם ארכיטקטורה ,mynand הישותבחר את, U2- וNAND :U1-ה

arc_mynand נמצא בספריה WORKשהיא ספרית העבודה .

12

Page 13: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

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

CONFIGURATION cfg2_rsff OF rsff IS FOR arc_rsff END FOR; END cfg2_rsff;

std_logic_vectorsפעולות על

$SYNOPSYS/packages/IEEE/src/std_logic_1164.vhdמגדיר את ה- type הנפוץ std_logic ו- std_logic_vector .על במקרים רבים יש צורך בביצוע פעולות חשבוניות או לוגיות

packages קיימים קבצים של /SYNOPSYS/packages/IEEE/src$ ספריה. וקטורים אלה type אלה מוגדרות פונקציות הממירות packages - ב כמו כן.בדיוק למטרות אלהשימושיים

בשלב מוקדם packages -חשוב לעבור על ה). integer - לstd_logic_vectorלדוגמא (אחד לאחר .של הפרויקט

למטרות סינתזהVHDL – 3פרק

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

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

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

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

.מהטכנולוגיה שבשימוש

VHDLת כתיבת תוכנית המשמשת לצורך אבל בע, היא שפה המאפשרת חופש רב למשתמשים בהמנת לעשות את החיים קלים יותר ולהימנע -יש להקפיד על מספר כללים על, VLSI תכנון רכיב

.מבעיות בזמן סינתזה וסימולציה ברמת שערים

כללים לסינתזה

CLKמשפטי .א

! עון בלבד עבור אותות שif (clock’event and clock=‘1’) then: יש להשתמש במשפטים מסוג - אחד לכל ""IF CLK’EVENT או במשפט WAIT מותר להשתמש במשפט PROCESSבכל -

.היותר .כי הם לא עוברים סינתזה” WHILE“ אין להשתמש במשפטי - : אין להשתמש במשפט מסוג -

if (clock’event and clock=‘1’ and en=‘1’) then

: במקום זה יש לרשום if (clock’event and clock=‘1’) then

if (en=‘1’) then .מאחד לא יעברו סינתזהמערכים בעלי מימד גדול , יש להשתמש רק במערכים חד מימדיים -

13

Page 14: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

packagesבצע בעזרת ניתן ל STD-LOGIC-VECTOR פעולות אריתמטיות או לוגיות על - או STD_LOGIC_ARITH כגון packages יש להשתמש Synopsysבכלי של . מוכנים

STD_LOGIC_UNSIGNED. ה- packagesל מוגדרים בקבצים שנמצאים ב" הנ: $SYNOPSYS/packages/IEEE/src

: לא רצויים Latches - יצירה של. ב

Latch לדוגמא. את פעולת המעגלמגדירים באופן מלא נוצר למשל כאשר לא: sample_proc : process(ENABLE,A) begin if (ENABLE=‘1’) then Z <= not A; end if; end if; end process sample_proc;

ולכן היא שומרת על ENABLE=0 - יופיע כי המערכת לא יודעת מה לעשות כאשר הlatch -ה

צריך . י המתכנן" שלא הוכנס בכוונה עLatchאין להשלים עם הופעה של . latchקודם עם המצב הלמשל להלן הדרך . מלאה בצורה VHDL -י כתיבת ה" לא רצויים עLatchesלמנוע היוצרות של

:הנכונה לכתוב את הדוגמא הקודמת sample_proc : process (ENABLE,A) begin if (ENABLE=‘1’) then Z <= not A; else Z <= A; end if; end if; end process sample_proc;

.ENABLE ערך אפשרי של כל יש להגדיר את ההתנהגות עבור :הערה types בחירת .ג

וידוע integerאם נדרש להשתמש במשתנה מסוג , לדוגמא. בגודל מוגבלtypes - יש להשתמש ב- .255 - ל0 מוגבל למספרים בין integer של subtypeצריך להגדיר , למשל200שערכו אינו עולה על

:אלמנטים שאינם מוכרים לצורך סינתזה. ד

:י הסינתיסייזר"האלמנטים הבאים אינם מוכרים ע

).textio -שימוש ב( כתיבה לקבצים - .Assertions - שימוש ב- ).afterי שימוש בפקודה "ע (VHDL - מימוש השהיות ב- .time שימוש במשתנה - .'wait for... '- שימוש ב- undefined-שימוש ב. ה

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

14

Page 15: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

ביצוע אתחול רגיסטרים. ו

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

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

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

. וזו שברמת שעריםVHDLכתוצאה מכך יתכנו אי התאמות בין תוצאת הסימולציה ברמת ת יש לבצע אתחול במקום זא. signals-מסיבה זו מומלץ לא להשתמש במתן ערכים התחלתיים ל

.י מנגנון שניתן למימוש בחומרה"ע תכנון היררכי מול תכנון שטוח. ח

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

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

15

Page 16: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

VHDL -דוגמאות ב - 4פרק

מימוש מעגלים פשוטים

: בעל שלוש כניסותORשער . א

Library IEEE; USE IEEE.std_logic_1164.ALL; ENTITY or3 IS PORT (a, b, c : IN std_logic; d : OUT std_logic); END or3;

ARCHITECTURE arc_or3 OF or3 IS BEGIN d <= a OR b OR c; END arc_or3;

: אסינכרוניRESET בעל DFF. ב

Library IEEE; USE IEEE.std_logic_1164.ALL; ENTITY dff_asynch IS PORT( clock, reset, din : IN std_logic; dout : OUT std_logic); END dff_asynch;

ARCHITECTURE arc_dff_asynch OF dff_asynch IS BEGIN PROCESS(reset, clock) BEGIN IF (reset = ‘1’) THEN dout <= ‘1’; ELSIF (clock’EVENT) AND (clock = ‘1’) THEN dout <= din; END IF; END PROCESS; END arc_dff_asynch;

: PRESET-וCLEAR בעל DFF. ג

Library IEEE; USE IEEE.std_logic_1164.ALL; ENTITY dff_pc IS PORT( preset, clear, clock, din : IN std_logic; dout : OUT std_logic); END dff_pc;

16

Page 17: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

ARCHITECTURE arc_dff_pc OF dff_pc IS BEGIN PROCESS(preset, clear, clock) BEGIN IF (preset = ‘1’) THEN dout <= ‘1’; ELSIF (clear = ‘1’) THEN dout <= ‘0’; ELSIF (clock’EVENT) AND (clock = ‘1’) THEN dout <= din; END IF; END PROCESS; END arc_dff_pc;

bit shifter-4. ד

Library IEEE; USE IEEE.std_logic_1164.ALL; PACKAGE shift_types IS SUBTYPE bit4 IS std_logic_vector(3 downto 0); END shift_types; USE WORK.shift_types.ALL; Library IEEE; USE IEEE.std_logic_1164.ALL; ENTITY shifter IS PORT( din : IN bit4; clk, load, left_right : IN std_logic; dout : INOUT bit4); END shifter; ARCHITECTURE arc_shifter OF shifter IS SIGNAL shift_val :bit4; BEGIN nxt: PROCESS(load, left_right, din, dout) BEGIN IF (load = ’1’) THEN shift_val <= din; ELSIF (left_right = ’0’) THEN shift_val(2 downto 0) <= dout(3 downto 1); shift_val(3) <= ’0’; ELSE shift_val(3 downto 1) <= dout(2 downto 0); shift_val(0) <= ’0’; END IF; END PROCESS;

17

Page 18: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

current: PROCESS BEGIN WAIT UNTIL clock’EVENT and clock = ’1’; dout <= shift_val; END PROCESS; END arc_shifter;

קריאה וכתיבה לקבצים

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

הוא רק goתפקיד האות . מעלה אותו בריבוע ורושם את התוצאה בקובץ פלט, מספר מקובץ : ךלתת למשתמש שליטה על הפעלת התהלי

library IEEE; use IEEE.STD_LOGIC_1164.ALL; library std; use std.textio.all; entity square is port (go : in std_logic); end square; architecture simple of square is begin process(go) file infile : text is in "example1"; file outfile : text is out "outfile1"; variable out_line, my_line : line; variable int_val : integer; begin while not (endfile(infile)) loop readline(infile,my_line); read(my_line,int_val); int_val := int_val ** 2; write(out_line, int_val); writeline(outfile,out_line); end loop; end process; end simple;

18

Page 19: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

תזמוןבדיקות סימולציות ו - 5פרק

מקובל לא לערב את בעיות . הוא שלב הסימולציהVHDL השלב לאחר תיאור המעגל בשפת

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

.עוזר בקביעת הסדר) FFs -יחד עם ה(הנכון והשעון

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

ומנסים לבנות VHDL -שמנסים לבקש מכלי הסינתזה ליצור מעגל מהיר יותר או שחוזרים ל .מימוש יעיל יותר

סימולציה

מתבצעות באמצעות כלים של VLSI - במעבדה לVHDLהסימולציות והסינתזות של תכנוני , לרב :חוברת הסברים על הפעלת הכלים מובאים ה. Synopsysחברת

pdf.2004_351ams_synopsys/manuals/vlsi/il.ac.technion.ee.www://http

בסעיף המסביר על ( בחוברת .VHDLל לפני תחילת כתיבת קוד "חובה לקרוא את החוברת הנ .ים על יכולות הכלים העלולים לעזור מאד בשלב כתיבת הקודקיימים הסבר) סינתזה

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

. ")ׁשירֹוקֹו ("sciroccoהמכונה

המבצעscript פועלת כקובץ run_scirocco"" הפקודה run_scirocco.להפעלת הסימולטור יש להריץ . את כל השלבים הנחוצים להפעלת הסימולטור

:יש לבצע את הפקודה באופן הבא scirocco_run filename configuration_name

הוא שם configuration_name-ו) vhdולרוב יכלול סיומת (VHDL- הוא שם קובץ הfilenameכאשר ניתן להריץ , )Simulation Terminated: למשל מתקבלת הודעת(אם התהליך נכשל . תצורת התכנון

:את השלבים בנפרד על מנת למצוא את מקור השגיאהvhdlan -noevent filename scs -ccpath /usr/local/bin/gcc -exe /tmp/scsim$$ configuration_name scirocco +sim+/tmp/scsim$$ +simargs+-debug_all

:הערות המנתח את קבצי המקור ויוצר קבצים להפעלת , (VHDL Analyzer) מפעילה נתחvhdlanהפקודה

.WORK בספריה mra.*- וsim.*בין אלו נמצא קבצים מהסוגים . הסימולציה במספר צורות גורמת לכך שלא יווצרו קבצים עבור noevent-האופציה . הסימולטור משתמש בקבצים אלה

ם הנוצרים הם עבור סימולציה סינכרונית והקבצי, )Event Simulation(סימולציה תלוית אירועים )Cycle Simulation.(

מנת ליצור קובץ סימולציה -על, המעבד את קובץ התצורה, )Compiler( מפעילה מהדר scsהפקודה exe-האופציה . ccpath-שמיקומו נקבע בהתאם לאופציה , Cהמהדר משתמש במהדר . ניתן להרצה

. ההרצה המתאיםקובעת מה יהיה שמו ומיקומו של קובץהמאפשר הרצה אינטראקטיבית של , VirSim מפעילה את המנשק הגראפי של sciroccoהפקודה

. הסימולציה : יש לבצע,לפני הפעלת הסימולטור, בקובץ נפרדPackageאם התכנון מכיל מימוש

vhdlan -noevent package_filename

: לחץ על שנפתחבחלון - window->waveform - window->hierarchy

19

Page 20: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

- window->source . חדשים חלונות3תקבלו י

י יד-ל יש לבחור אותו ע- All Groupיופיע בחלון , נהעליוה תהשמאלי לחץ על הצלמית Sourceבחלון כעת . לחץ פעם אחת על החץ הימני. שני חיצים צהובים" ידלקו"כתוצאה מכך . לחיצת העכבר

.יופיע הקוד בחלון

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

.Waveformיוצגו האותות שנבחרו בחלון

בשדה , Interactiveבחלון 1000000יש לרשום , למשל1000nSec-כדי להריץ את הסימולציה ב .סמוך לשדהה OK לחיצה על הכפתור ייד-ל ולאשר ע, שבתחתית החלוןStep Time -הסמוך ל

:Waveformכדי להציג את צורות הגל באופן נוח יש לבחור בחלון

Zoom → Zoom percent → Zoom 100%.

.כעת בדוק את תוצאות הסימולציה

.Print Command בשדה lpr –Pbp ורשום File → Printלחץ על , להדפסת צורות הגל

על מנת למנוע את הצורך להגדיר את צורת החלונות עם כל כניסה :שמירת תצורת חלונותניתן . File → Save Configurationלסימולטור רצוי לשמור את תצורת החלונות בקובץ בעזרת

.File → Load Configurationלהעלות את הקובץ מיד לאחר כניסה לסימולטור בעזרת

:לדוגמא. assignניתן להזין ערכים לכניסות בעזרת הפקודה : הזנת ערכים לכניסותassign '1' /decoder/A0 assign x"F3" /decoder/P assign b"0001" /decoder/A

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

assign b"1010" /e/data

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

source decoder

קובץ סימולציה: דוגמאassign '1' /e/EN assign '0' /e/A0 assign '1' /e/A1 run 4 assign '1' /e/A0 run 4 assign '0' /e/A1 run 4 assign '0' /e/A0 run 4

. "ls –v"בכל רגע ניתן לראות את הערך של כל אות או משתנה בעזרת הפקודה : הצגת ערכים . e/A0/ מדפיסה את הערך של ls –v /e/A0הפקודה

השייכים לרמת ההיררכיה , מדפיסה את הערכים של כל האותותls –vור לחיצה על הכפת . לדוגמאcd /eניתן לעבור רמה בעזרת הפקודה . Interactive בחלון scopeהמצויינת על יד

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

20

Page 21: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

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

Drivers : במקרה של קבלתXניתן לבדוק איזה , כערך של אותdriversמאלצים ערך על האות על -

.drivers [sig]-צה על כפתור ה ולחיSource-ידי סימון האות בחלון ה

. File → Quitיציאה מהסימולציה נעשה עם

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

). VHDL- ניפוי שגיאות לוגיות בתוכנית ה- שכיחה יותרזו פעולה , שהסימולציה מורכבת יותרמבלי צורך , שמירת קובץ התצורה מאפשרת לחזור במהירות לאותה תמונה של הסימולטור

יש , מנת להעלות מחדש את התצורה השמורה-על. להגדיר מחדש את כל צורת החלונות בכל פעםולבחור את קובץ התצורה שנשמר , ולטורעם הכניסה לסימ, File → Load Configuration -להיכנס ל

.כן-לפני

סימולציה בעזרת רכיב מעורר

במקום לאלץ . TestBench 1.2המכונה , לביצוע סימולציה) ואולי עדיפה (נוספתקיימת שיטה

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

רכיב מעורר סימולציה : דוגמא

יוצר את האותותהוהשני , יוצר אות שעוןהאחד , מורכבת משני תהליכיםשלהלן הארכיטקטורה "a "ו-"b "שיחוברו לכניסות" j "ו-"k "של ה-JKFF.

Library IEEE; USE IEEE.std_logic_1164.all; ENTITY jktest IS PORT (clk : INOUT std_logic; a,b : OUT std_logic); END jktest; ARCHITECTURE arc_jktest OF jktest IS BEGIN PROCESS BEGIN WAIT FOR 50 ns; IF (clk = '1') THEN clk <= '0'; ELSE clk <= '1'; END IF; END PROCESS; PROCESS BEGIN a <= '0'; b <= '1'; WAIT FOR 90 ns; a <= '1'; b <= '0'; WAIT FOR 100 ns;

21

Page 22: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

END PROCESS; END arc_jktest;

, המעורר את הרכיב הנבדק ואת הרכיבהמכילה תצורת היישות לסימולטור את כעת ניתן לקלוט

להקליד את הזמן הרצוי ישInteractive)בחלון (Step Timeליד . יוצר את האותות הרצוייםה. של האותות המענייניםהצגהרך לבקש וציש עדיין גם כאן . OKידי לחיצה על -ולאשר על, להרצה

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

.) למשלVHDL) WAITבכל משפט חוקי של

22

Page 23: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

SYNOPSYS של םסינתזה בכלי

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

י כלי "הסינתזה מבוצעת ע. תהליך זה נקרא סינתזה. ל למעגל חשמלי"זה הופכים את התיאור הנבחלון שנפתח מפעילים את הפקודה . ”da“ שמופעל בעזרת הפקודה design analyserבשם

“read” על קובץ ה - VHDL . פעולה זו מבצעת את השלב הראשון של הסינתזה כלומר נוצרהאלמנטים שמרכיבים את . VHDL -אור ה יאור של מעגל שמתנהג מבחינה לוגית כמו תית

. ם קשורים לאף ספריה או טכנולוגיהשאינ) שערים כללים(המעגל הם אלמנטים גנריים

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

הנתונה שבמקרה שלנו בעזרת הספרייהVHDL -המימוש האופטימלי שניתן לקבל עבור קובץ העל המימוש המתקבל ניתן לבצע סדרה של בדיקות . מיקרון0.35בטכנולוגית AMS היא ספרית

:כגון a . שטח כולל(מדידת מספר השערים.( b . מציאת מסלולים קריטיים במעגל.

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

pdf.2004_351ams_synopsys/manuals/vlsi/il.ac.technion.ee.www://http .מעבדהשל ה

23

Page 24: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

Unix - Solarisמערכת ההפעלה לרקע בסיסי - 6פרק

Solarisמנשק המשתמש של זו מערכת חלונאית . Solaris 7 (SunOS 5.7) עליהם מותקנת מערכת ההפעלה Sunבמעבדה מחשבי

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

Front(ובתחתיתו לוח הפעלה ) Desktop (מופיע על המסך שולחן עבודה, עם הכניסה למערכתPanel .(שולחנות עבודה שונים4מעבר בין , לוח ההפעלה מאפשר הפעלת תוכניות נפוצות רבות ,

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

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

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

פעולה מפעיל

Unix Terminal( Tools → Terminal(חלון לשורת פקודה

File Manager( Files → File Manager(מנהל קבצים

MS-Windows( Applications → Text Editor של Notepad-דומה ל(עורך טקסט בסיסי

Web Browser( Links → Web Browser ( אינטרנטהפעלת דפדפן …Log out )בסיום העבודה(יציאה מהמערכת

מערכת הקבצים

שורת פקודה דרך , Unix-להלן מספר פקודות בסיסיות לניהול מערכת הקבצים ב ):File Manager - פעולות דומות ניתן לבצע גם ממנהל הקבצים(

פקודה פירוש

pwd שם הספריה הנוכחית

[שם ספריה] cd שינוי הספריה הנוכחית

.. cd מעבר לספרית האב של ההנוכחית

[קובץ יעד] [קובץ מקור] cp העתקת קובץ

] cp העתקת קובץ לספרית בת של הנוכחית ם קובץש [שם ספריה] [

.. [שם קובץ] cp העתקת קובץ לספרית האב

[שם ספריה] [שם קובץ] mv העברת קובץ לספרית בת של הנוכחית

[שם חדש] [שם ישן] mv שינוי שם קובץ

.. [שם קובץ] mv העברת קובץ לספרית האב

[שם קובץ] rm מחיקת קובץ

] mkdir יצירת ספרית בת לספריה הנוכחית ספריהשם ]

[שם ספריה] rmdir מחיקת ספרית בת של הנוכחית

ls רשימת שמות הקבצים הגלויים בספריה הנוכחית

ls -la רשימת פרטי כל הקבצים בספריה הנוכחית

).נקודה-נקודה".." (שם ספרית האב של הנוכחית הוא תמיד , כפי שניתן לראות

[שם ספריה]/.. :ניתן לרשום, )ותו אבהנמצאת תחת א(כשברצוננו להתייחס לספריה אחות

24

Page 25: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

עורכי טקסט

קיימים מספר . הקבצים כדי ליצור ,(Text Editor)עורך טקסט להשתמש בנדרש יםבמהלך הניסוילפי להשתמש בכל עורך ניתן . ועודvi ,vim ,nedit ,textedit ,xemacs : כגון,עורכים שונים במערכת

. VHDLשפת " מכירים "vim-ו xemacs ,neditהעורכים . שיקול המשתתפים בניסוי

, Text Editorמומלץ על , ורגיל דווקא לסביבת חלונותUnix-למי שאינו מכיר היטב עורכי טקסט ב-עורך זה עובד באופן דומה מאוד ל. של התפריט המהירApplicationsהתפריט -תתהמופעל מתוך

Notepadשל חלונות .

:)בשורת פקודה (בעזרת הפקודהמופעל ה ,NEditעט יותר הוא אך חזק מ, עורך חלונאי דומהnedit filename.vhd

.עורך זה גם מראה בהדגשה את המלים השמורות של השפה

:בעזרת הפקודה מופעל xemacs הוא, חזק ומורכב יותר, חלונאי נוסףעורךxemacs filename.vhd

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

בעזרת UNIX Terminal-בניתן להפעילו . vim הוא, לא חלונאי אך חזק במיוחד, עורך נוסף :הפקודה

vim -g filename.vhd .עריכה של צב ומ,מלל חדש הכנסת מצב : )Modes(מצבים בעורך זה שני

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

BACKSPACE מחזיר את הסמן תו אחד ENTER מעביר את הסמן לשורה הבאה

מעביר את הסמן לשורה הקודמת -

:w שומר את הקובץ בדיסק

:q! יוצא מהעורך בלי לשמור

:wq שומר ויוצא

x מוחק את התו מתחת לסמן

dd מוחק את השורה עליה נמצא הסמן

D מהתו שעליו הסמן עד סוף השורה מוחק

u מבטל את הפקודה האחרונה

חוזר שוב על הפעולה האחרונה .

):Esc - יציאה מהמצבל(פקודות כניסה למצב הכנסת מלל חדש

o פותח שורה חדשה אחרי השורה שעליה הסמן

O פותח שורה חדשה לפני השורה שעליה הסמן

a מאפשר הכנסת textעליו הסמן אחרי התו ש

i מאפשר הכנסת textלפני התו שעליו הסמן

הדפסות

בעזרת , ניתן להדפיס בדומה למערכת חלונות, ברוב עורכי הטקסט והחלונות בהם נעשה שימושFile → Print , ולחיצה על>Enter <ללא שום שינויים או תוספות.

:בעזרת הפקודה) PostScriptטקסט או (ידי המדפסת - המוכר עלניתן להדפיס קובץ, כן-כמו lpr -Pbp filename

25

Page 26: המעבדה ל-VLSIvlsi.eelabs.technion.ac.il/.../18/2018/05/VHDL.pdf · VHSIC Hardware Description Language לש תובית ישאר הווהמ VHDL םשה 1 Very רמולכ ,VLSI

מידע נוסף

: מומלץ להרחבה ולהבהרהVHDLספר Douglas L. Perry, "VHDL", McGraw-Hill. Third Ed. - 1998; Fourth Ed. - 2002.

.המושאל בנפרד בספריה, עם תוכניות) CD(לספר זה מצורף דיסק

: באתר) מתוך הטכניון בלבד( למצוא באינטרנט המלא והמעודכן ניתןVHDLאת תקן

jsp.standards/xpl/org.ieee.ieeexplore://http .IEEE 1076יש לחפש תקן

":תכן לוגי "\" מערכות ספרתיות"ספר מומלץ לחזרה על נושאי

Stephan A. Ward & Robert H. Halstead, Jr., "Computation Structures", McGraw-Hill, 1989.

: חופשי לסביבת חלונותVHDLסימולטור

htm.proddownloads/com.symphonyeda.www://http

Windows98/NTת אלו טוב עבור שבעת כתיבת שורו, סימולטור חופשי נוסף לסביבת חלונות

html.download/com.bluepc.www://http: בלבד

:האתר הראשי של התחום

org.vhdl.www://http

:הסברים נוספים

htm.inhalt/englisch/rialtuto/vhdl~/de.online-vhdl.www://http

26