- מדריך למשתמש: נספח 1 מדריך מקוצר לתכנון בסביבת אלטרה רכיבי הלוגיקה המיתכנתים של חברת אלטרה נתמכים ע"י תוכנת. MAX+plus II התוכנה תומכת ברוב סוגי הרכיבים המתוכנתים הקיימים כיום בשוק, ביניהם הסדרות הקלאסיות (לדוגמת,( EP610 סדרות MAX7000, MAX5000 וסדרת ה- FLEX8000 - FPGA התוכנה תומכת במספר שיטות תכנון שונות - א. - AHDL כתיבת משוואות הפעלה בעורך טקסט ב. Very High Speed Intgrated Circuits hardware description language - VHDL ג. תכנון גראפי בעזרת שרטוט מעגל לוגי ד. תכנון על פי האותות בזמן. בדפי הסבר אלו נתמקד בכתיבת משוואות ההפעלה ב-, AHDL שהוא התכנון הפשוט והמיידי מבין הארבעה, המאפשר תכנון מלא של רכיב או מערכת מוכללת, וכן הסבר על קומפילציה וסימולציה של רכיב. דפי הסבר אלו באים לתת הסבר בסיסי על העבודה ברכיבי אלטרה, ולא באים להחליף לימוד מלא ויסודי של עבודה זו. דפי ההסבר מקנים יכולת עבודה בסיסית, אך עם זאת מאפשרת תכנון מלא של רכיב. האפשרויות הגלומות בתכנון ע"י תוכנת MAX+plus II הן כמעט בלתי מוגבלות, ואפשר ומומלץ להעמיק את הידע מתוך הספר. MAX+plus II - AHDL כמו כן מומלץ מאוד לבצע את פרק ה-, TUTORIAL המופיע בספר MAX+plus II - Getting Started 77
תקציר: PLD תוכנת MAX+PLUS 2 הינה תוכנה ייעודית לתכנון סימלוץ ובדיקה של רכיבי מבית.ALTERA לרשות המתכנן עומדים מגוון כלי תכנון: - GRAPHIC EDITOR ממשק המאפשר למתכנן להשתמש במגוון רכיבים (שערים לוגיים דיסקרטיים, משפחות לוגיות כגון, 74xx רכיבי זיכרון, פונקציות מוכנות מראש ועוד) ולחבר ביניהם בצורה גרפית. - TEXT EDITOR עורך טקסט המאפשר תכנון בשפות AHDL - Altera Hardware Description Language VHDL - Very High Speed Integrated Circuit VHSIC - Hardware Description Language העורך מאפשר שימוש בתבניות מוכנות (Templates) עזרה נגישה HELP) (Contexet Sensitive ואפשרות ל.Syntax Coloring - WAVEFORM EDITOR כלי חשוב זה משמש תפקיד כפול: כלי גרפי ליצירת וקטורי בדיקה לסימולטור וצפיה בתוצאות הסימולציה (במבנה נוח של צורות גלים). כלי תכנון המאפשר להורות לקומפיילר ליצור תכנון המיישם מבנה גרפי של צורות גלים רצויות. -FLOORPLAN EDITOR ממשק המאפשר למתכנן להתערב בקביעת המיקום והמשאבים שיתפוס התכנון על גבי רכיב היעד. - COMPILER לב המערכת היוצר מכלי התכנון את הקבצים הדרושים לתכנות הרכיב וסימלוצו. כל תכנון עובר בקומפיילר בדיקת טעויות, סינתזה של הלוגיקה (כוללת מספר גישות צמצום), התאמת הלוגיקה למשאבי רכיב היעד, יצירת קבצי מוצא למטרת סימולצית זמנים ואנליזת זמנים וכן יצירת קובץ תכנות לרכיב היעד. - SIMULATOR כלי בדיקה המאפשר הרצת סימולציות לוגיות (של קיבצי (Waveform תוך שימוש בנתוני הקומפילציה ותזמוני רכיב היעד. בנוסף ניתן לבצע סימולציה לוגית (ללא התחשבות בזמנים), וכן סימולציה של מעגל המכיל מספר רכיבי.PLD הסימולטור מאפשר הכנסת מקרי BRAKE POINT וכן בדיקות כגון עבירות, Setup\Hold time Glitches, Oscilations וכד. 78
-TIMING ANALYZER מאפשר ביצוע אנליזת זמנים לפרויקט לאחר שעובד ע"י הקומפיילר. בעזרת כלי זה ניתן לאתר את המעברים הקריטיים המגבילים את ביצועי התכנון ולנסות לתקן את התכנון בהתאם. האנליזה מתמקדת בשלושה תחומים: - DELAY MATRIX מאפשר לחשב את זמן ההתפשטות הקצר או הארוך ביותר של סיגנל בין שתי נקודות במעגל. - SETUP/HOLD MATRIX מחשב את זמני ההכנה וההחזקה המינימליים של סיגנלים הדוחפים רכיבים מסונכרנים Latches) (Flip-Flops, יחסית לשעון. - REGISTERED PERFORMANCE מחשב את תדר השעון המקסימלי האפשרי במעגל ע"י חישוב זמן ההתפשטות המקסימלי בין מוצא של רגיסטר המקור וכניסה של רגיסטר היעד. - PROGRAMMER בעזרת כלי זה ניתן לתכנת את רכיב היעד וכן לבדוק את תפקודו באמצעות וקטורי בדיקה. - SYMBOL EDITOR ממשק המאפשר ליצור סמלים לפונקציות לוגיות שנוצרו ע"י כל אחת מגישות התכנון וכך לשלב פונקציות אלה לקובץ תכנון גרפי.Graphic Editor 79
פתיחת פרויקט חדש מתוך התפריט FILE בחר. PROJECT NAME רשום את שם הפרויקט החדש או בחר פרויקט מתוך הקיימים. ודא ששם הפרויקט מופיע בראש החלון. בחר NEW מתוך התפריט, FILE בחר TEXT EDITOR FILE מתוך האפשרויות הקיימות. מבנה קובץ TDF החלק הראשון של קובץ AHDL הוא, SUBDESIGN שבו יוגדרו הכניסות והיציאות של המערכת. החלק השני הוא. VARIABLE בחלק זה יוגדרו המשתנים הפנימיים של הרכיב, לרבות משתני מכונת מצבים, משתני טבלאות אמת, הגדרות, Primitives ורכיבי ספריה. החלק השלישי הוא גוף התכנון, התחום במילים BEGIN ו-. END בחלק זה יובאו משוואות ההפעלה, טבלאות האמת, מכונת המצבים, הגדרות תנאים, חיבורי ה-, Primitives חיבורי רכיבי הספריה והכניסות והיציאות. ניתן להתחיל את הקובץ בחלק אשר בו יוגדרו סוג הרכיב וחיבורי הפינים החיצוניים. חלק זה נקרא, DESIGN וצמוד אליו שם סימבולי - כשם ה-. SUBDESIGN לא נפרט כאן את השימוש באופציה זו, וההשמה תיעשה דרך התפריט הראשי, בתפריט. ASSIGN ההגדרות ישמרו כחלק מהפרויקט. SUBDESIGN בראש חלק זה מובאת ההגדרה SUBDESIGN ולאחריה שם התכנון, ששמו כשם קובץ הטקסט ) *.tdf.( רשימת המשתנים תובא בתוך סוגריים. 80
לאותות יוצמד שם, יוכרז סוג האות. האותות מופרדים ע"י פסיקים, בסופם נקודתיים, אחריהם סוג האות ובסופם נקודה-פסיק. סוגי האותות הם:. BIDIR, OUTPUT, INPUT ניתן להצמיד לאות מסוג INPUT את מצב ברירת המחדל שלו - VCC או. GND ניתן לחבר קבוצות של אותות לשם אחד, ע"י ].. [. דוגמא: SUBDESIGN top ( foo, bir, clk1, clk2 : INPUT=VCC; a0, a1, a2, a3 : OUTPUT; b[7..0] : BIDIR; ) אזור המשתנים חלק זה מתחיל במלה. VARIABLE שמות של משתני משתמש מופרדים ע"י פסיקים, בסופם נקודתיים, אחריהם סוג המשתנה. המשתנים יכולים להיות Primitive, Node או. State Machine ההכרזה מסתיימת בנקודה-פסיק. הכרזה על משתנה מסוג NODE NODE הוא משתנה רב שימושי, אסינכרוני, המגדיר אות, המשתנה יכול להופיע בשני אגפי משוואות ההפעלה. דוגמא : ולא הוגדר ב-. SUBDESIGN VARIABLE b : NODE BEGIN b = a; out = b % therefore out = a % END; 81
הכרזה על רגיסטר הכרזה על, Primitive הנעשית בחלק זה, מאפשרת שימוש מגוון ברגיסטרים - פליפ-פלופים מסוגים שונים ובריחים (LATCH). דוגמא: זוהי הכרזה על D-Flip-Flop בשם VARIABLE a : DFF. a עבור דלגלג זה, אפשר להשתמש בכניסות/יציאות הבאות: כניסה שעון Clear Preset יציאה a.d a.clk a.clr a.prn a.q הכרזה על מכונת מצבים הכרזה על מכונת מצבים נעשית בחלק זה, ואילו ההתנהגות בחלק הלוגי. שם המכונה הוא שם סימבולי, אחריו נקודתיים והמילה. MACHINE ההכרזה חייבת לכלול רשימת מצבים. אפשר להכריז על שמות לביטי המכונה, ברשימה מסוגרת ומופרדת בפסיקים, אחרי BITS:. OF רשימת שמות סימבוליים למצבים ברשימה מסוגרת, מופרדת בפסיקים, אחרי STATES:. WITH ההכרזה מסתיימת בנקודה-פסיק. אפשר להשים לביטי המצבים ערך מספרי אחרי הסימן =, שיקבע את מצב הביטים. דוגמא: VARIABLE ss : MACHINE OF BITS (q1, q2, q3) WITH STATES ( s1 = B"000", s2 = B"010", S3 = B"111" ); אזור לוגי באזור זה מגדירים את הפעולות הלוגיות של קובץ טקסט. 82
אזור זה מתחיל במילה BEGIN ומסתיים במילה, END שאחריה נקודה-פסיק. באזור זה מגדירים משוואות בולאניות, משוואות בקרה לרגיסטרים, הגדרות, CASE הגדרות, IF וטבלאות אמת. משוואות בולאניות המשוואות מתארות קשרים בין כניסות, יציאות, Primitives, Nodes ומכונות מצבים. אגף שמאל הוא שם סימבולי, קבוצה או פין. אופרטור הניגוד )! ( מכריז על לוגיקה שלילית. אגף ימין מופרד משמאל ע"י הסימן =, ופועל על פי סדר פעולות חשבון. התו & הוא אופרטור, AND התו # הוא, OR התו $ הוא.XOR דוגמא: BEGIN END;!a = b & c # d; (a, b, c, d) = e[4..1]; (a, b) = B"01"; התניות וברירת מחדל IF מפרט סדרה של התנהגויות המותנות בקיום של ביטויים בולאנים. ביטוי בולאני מפריד בין המילים IF ו-, THEN ואחריו הגדרות התנהגותיות, ונקודה-פסיק. ביטוי בולאני נוסף יכול להכלל בין המילים ELSIF ו-. THEN הגדרת התנהגות לאי קיום הביטוי הבולאני תבוא אחרי המילה. ELSE סוף רשימת התנהגויות במלים, END IF ונקודה-פסיק. ברירת מחדל של אות היא (GND) 0. הגדרת ברירת מחדל אחרת, בין המילים DEFAULTS ו-, END DEFAULTS ואחריהן נקודה- פסיק. 83
דוגמא: BEGIN DEFAULTS a = VCC; END DEFAULTS END; IF y & z THEN a = d; b = c; ELSEIF y == st.q THEN ftt.d = y; ELSE c = VCC; ENDIF; משוואות בקרה לרגיסטרים כאן מגדירים חיבורים לרגיסטרים. חייבים לחבר את כניסת השעון, השאר אופציונלי. הכרזה מסתיימת בנקודה-פסיק. דוגמא: BEGIN END; ff.clk = CLK1; ff.d = a & b; ff.d = tff.q; טבלאות אמת בטבלאות אמת מתאימים לכל קומבינציה בולאנית של כניסות קומבינציה של יציאות. הגדרת הטבלה מתחילה במילה, TABLE ומסתיימת ב-, END TABLE ונקודה פסיק. הכותרת לטבלה היא הכניסות מופרדות בפסיקים, הסימן <=, היציאות ונקודה-פסיק. שורות הטבלה יהיו באותו פורמט של הכותרת. האות X מסמלת. Don't Care דוגמא: BEGIN END; TABLE a, b, f[4..1].q => c, d; 0, 1, B"0000" => 1, 0; 1, X, B"0010" => 1, 1; END TABLE; 84
מכונת מצבים BEGIN ההשמות והמעברים במכונת מצבים מוגדרים כמשוואת בקרה וכטבלת אמת. הדוגמא הבאה ממשיכה את הדוגמא של הכרזת מכונת מצבים, שניתנה קודם: ss.clk = CLK1; ss.reset = HARD_RESET; TABLE ss, a => ss; END; s1, 1 => s2; s1, 0 => s1; s2, 1 => s3; s2, 0 => s2; s3, X => s1; END TABLE; 85
הנחיות בעבודה עם העורך הגרפי: תכנון באמצעות GDF - GRAPHICממשק EDITOR המאפשר למתכנן להשתמש במגוון רכיבים (שערים לוגיים דיסקרטיים, משפחות לוגיות כגון, 74xx רכיבי זיכרון, פונקציות מוכנות מראש ועוד) ולחבר ביניהם בצורה גרפית. העורך הגרפי מתאים במיוחד לתכנונים פשוטים הנתנים למימוש באמצעות מספר רכיבים לוגיים. או למטרת חיבור של מספר רכיבים שתוכננו בעזרת עורך הטקסט לפרוייקט מורכב. שימושו של העורך הגרפי הוא אם כך בד"כ ברמות הגבוהות יותר של התכנון. הנחיות בעבודה עם העורך הגרפי: בחר את הרכיבים הדרושים לתכנון מתוך ספריית הרכיבים של תוכנת. Max+Plus II click) double בנקודה כלשהי במסך יפתח חלון בו ניתן לבחור את הרכיב הדרוש ממגוון ספריות רכיבים.) הוסף את הכניסות והיציאות הדרושות לתכנון ותן להם שמות. חבר באמצעות חוטים (השתמש בעכבר) את הרכיבים בהתאם לתכנון הרצוי. שמור את התכנון בקובץ. כעת ניתן להריץ קומפילציה וסימולציה על התכנון למטרת בדיקתו. קומפילציה בחר COMPILER מתוך התפריט. MAX+plus II 1. בחר DEVICE מתוך התפריט ASSIGN,בחר רכיב לפי הצורך התיכנוני - קודם משפחת רכיבים, ואחריה הרכיב הדרוש, למשל.EP220-PC-10 2.מתוך תפריט PROCESSING בחר ב- Timing SNF Extractor וכן ב-.Design Doctor.3 לחץ על. START בחר FLOORPAN EDITOR מתוך התפריט. MAX+plus II לפניך בתחתית המסך נמצא הרכיב שאותו בחרת כשהוא ריק. עליך לשבץ לתוכו את כל הכניסות והיציאות, המופיעות בצד העליון הימני של המסך. השבוץ יעשה בהתאם לשרטוט המופיע, לכל רכיב, בחוברת. 86
כעת, חזור שוב ל- COMPILER ולחץ שוב על.START ישנן עוד אופציות רבות ומגוונות לקומפילציה, כמו למשל יצירת קבצי VHDL ו-, VERILOG נתח לוגי וכו'. פירוט על כך בספר. User Guide סימולציה הסימולטור ב- MAX+plus II הוא פשוט להפעלה והוא כלי חשוב בבדיקת התכנון. לאחר הקומפילציה על תוכניתך -.1 בחר NEW מהתפריט. FILE 2. בחר קובץ סימולציה (סיומת ). SCF כעת אתה נמצע בקובץ עליו תבצע את הסימולציה. 3. בחר END TIME בתפריט FILE קבע את אורך הזמן שאתה רוצה לבצע בו את הסימולציה. 4. בחר GRID SIZE בתפריט OPTIONS ודאג שיהיה בקצב של השעון המהיר ביותר במערכת שלך. 5. ישנן שתי שיטות להכניס ערוץ לסימולציה - 5.1. הכנסת ערוץ בודד: ע"י כניסה ל- NODE ובחירת ENTER NODE FROM SNF או DOUBLE CLICK על שטח ריק בטבלת הערוצים. פעולה כזאת תפתח חלון ובו ניתן לראות את כל הערוצים האפשריים ע"פ סוגים ע"י סימונם ב- X ולחיצה על.LIST ניתן לבחור אחד מהם ע"י לחיצה על העכבר. 6. סוגי הערוצים - : OUTPUT ו- INPUT.6.1 הם כל הכניסות והיציאות שהוגדרו בקבצים שקומפלו בפרויקט. חובה לבחור את כל הכניסות שמגדירות את היציאות או המשתנים שברצונך לראות. ערוץ כניסה שלא הוגדר יגרום שיציאות או המישתנה יוצגו במצב של חוסר הגדרה. 87
: GROUP.6.2 מציג את כל קבוצות הכניסות שמוגדרות תחת אותו שם לדוגמא: DATA[5..1]. : REGISTER.6.3 מציג את כל המשתנים המוגדרים כרגיסטרים או פליפלופים. : COMBINATORIAL.6.4 מציג מצבים לוגים בנקודות מסוימות בתכנון. השלב הבא הוא הגדרת הכניסות. 7. הגדרת שעון: 7.1. בחירת ערוץ השעון ע"י העכבר..8 7.2. בחר מהתפריט EDIT את, OVERWRITE ובחר. COUNT VALUE בתפריט זה ניתן לקבוע את קצב השעון ביחס ל- GRID שבחרת, ברירת המחדל היא 1. לחצה על OK תאשרר פעולה זו. ניתן לבחור קטעים מתוך הערוץ או את כולו ע"י סימון עם העכבר או בהתאמה. קטעים אלו ניתן להגדיר במצבים לוגים שונים ע"י כניסה לתפריט DOUBLE OVERWRITE CLICK בתפריט. EDIT 9. שמור את הקובץ שיצרת..10 בחר ב- SIMULATOR בתוך תפריט MAX+plus II ולחץ. OK 11. הקובץ שיצרת מוכן כנס ובדוק אם התוצאות כפי שרצית. 12. ניתן לבצע שינויים בקובץ הסימולציה ולבדוק שוב את התוצאות. הערה חשובה: ההסבר לעיל מאפשר למשתמש לבצע סימולציה בסיסית על MAX+plus II.ישנן אופציות רבות ונוספות בסימולציה שלא כוסו בהסבר לעיל כאן ומופיעות בספר ההסבר של ה-.MAX+plus II כמו כן מומלץ לבצע היטב את פרקים 8-9 בחלק ה- TUTORIAL של הספר GETTING STARTED המכסים בצורה ברורה למדי את הנושא. אחוד מספר פרוייקטים לסימולציה עתה, כשברשותך ארבעת הרכיבים שתכנתת - SYSBC2, RESET, WSG, SYSBC1, וכן ארבעה רכיבים מוכנים - DECODERS, BUS TRACKER & 3 88
אפשר לגשת לשלב האחרון שהוא אחוד כל הרכיבים לפרוייקט אחד גדול לצורך סימולציה. לשם כך הוכן לך מבעוד מועד הקובץ - c:\lab1\project.gdf ובו כל הרכיבים וכן כל החיבורים הנדרשים בין הרכיבים. עליך להעתיק לתוך ה- directory lab1 את כל הקבצים שיצרת, כולל כל ה- extensions שלהם, לדוגמה: לא מספיק להעתיק רק את wsg.tdf,צריך גם את... wsg.acf wsg.snf וכו. - בחר COMPILER מתוך התפריט. MAX+plus II - בחר LINKED SNF EXTRACTOR וכן.TOTAL RECOMPILE - לחץ.START עכשיו הפרוייקט מוכן וכל שעליך לעשות הוא ליצור סימולציה באותו אופן כמו בסעיף 4. 89
מכונות מצבים סינכרוניות מכונות מצבים סינכרוניות הינן אבן בניין חשובה בתכנון ב כיוון שזו הדרך הנוחה והטובה ביותר למימוש בקרה או אלגוריתם. מכונת מצבים סינכרונית כהגדרתה בנויה ממספר סופי של מצבים שהמעבר ביניהם מוגדר היטב ומותנה במצב הכניסות ברגע עלית השעון. קימות שתי שיטות עיקריות למימוש מכונות מצבים ב: One Hot State Machine Encoding Binary Encoding One Hot Encoding דוגמא נגדיר את המכונה הבאה שלה ארבעה מצבים : state3 state2 State1 Reset הקצאת המצבים תעשה באופן הבא: Reset=0000 State1=1100 State2=1010 State3=1001 הסבר: למכונה יוקצו רגיסטרים כמספר המצבים. המצב הראשון אפסים. ( Reset זה (במקרה מוגדר כמצב האתחול של המכונה ומיוצג ע"י סדרת המכונה מתעוררת במצב זה וניתן להגיע אליו בצורה אסינכרונית ע"י איפוס אסינכרוני של כל הרגיסטרים. מצב האתחול הוא המצב היחידי שבו ה MSB לעבור בטעות למצב האתחול (לדוגמא ע"י מרוץ). לכל מצב במכונה (למעט מצב האתחול) מוקצה רגיסטר יחיד. X רגיסטר X שהוקצה לה הוא היחידי שדולק הוא אפס וזאת כדי למנוע משאר המצבים כאשר מכונה נמצאת במצב (למעט ה MSB שנשאר זהותית אחד). הלוגיקה שדוחפת את הרגיסטרים דואגת לחילופי המצבים בהתאם לתנאים שהוגדרו מראש. כיוון שהרגיסטרים בלבד (מכונה סינכרונית). לדוגמא מעבר ממצב State1 State2 (שני מימין) להדלק. למצב פעילים בעליות שעון שינוי מצב המכונה יתכן בעליות שעון State2 גורם לרגיסטר State1 (שלישי מימין) להכבות ולרגיסטר 90
חסרונות: מימוש זה בזבזני מאד מבחינת רגיסטרים במיוחד כשמספר המצבים במכונה גדול. כמות המצבים שאינם מוגדרים ע"י המכונה (קימים 2 n מצבים ומתוכם רק מוגדרים) n גורם זה מערער את יציבותה של המכונה הולכת ועולה בהתאם לגודל המכונה. ומגדיל את הסיכויים שהמכונה תגיע בטעות (ע"י מרוץ) למצב לא מוגדר ותתקע. יתרונות: הלוגיקה הדרושה כדי להגדיר את המעבר ממצב למצב במכונה מסוג זה קטנה יחסית ופשוטה למימוש כך שבד"כ מכונה זו חסכונית יותר במשאבי לוגיקה אסינכרונית. מכונה זו מסוגלת לעבוד בקצב מהיר יותר תודות לחיסכו בלוגיקה אסינכרונית. קידוד המצבים אינו מצריך תוספת לוגיקה (השאלה האם אנו במצב הפשוט האם רגיסטר X דלוק). קומפיילר התוכנה משתמש בקידוד זה כברירת מחדל. X שקולה לתנאי Binary Encoding דוגמא נגדיר את המכונה הבאה שלה ארבעה מצבים : state3 state2 State1 Reset הקצאת המצבים תעשה באופן הבא: Reset=00 State1=01 State2=11 State3=10 הסבר: למכונה יוקצו רגיסטרים כמספר לוג לפי בסיס 2 של מספר המצבים. המצב הראשון אפסים. (במקרה זה ( Reset מוגדר כמצב האתחול של המכונה ומיוצג ע"י סדרת המכונה מתעוררת במצב זה וניתן להגיע אליו בצורה אסינכרונית ע"י איפוס אסינכרוני של כל הרגיסטרים. כל מצב במכונה מקודד ע"י כל הרגיסטרים כספרה בינארית. הקידוד נעשה בהתאם לקוד גריי כך שבמעבר ממצב למצב ישתנה רק ביט אחד (הגנה מפני מרוצים). 91
הלוגיקה שדוחפת את הרגיסטרים דואגת לחילופי המצבים בהתאם לתנאים שהוגדרו מראש. כיוון שהרגיסטרים פעילים בעליות שעון שינוי מצב המכונה יתכן בעליות שעון בלבד (מכונה סינכרונית). לדוגמא מעבר ממצב לוגי). חסרונות: State1 למצב State2 גורם לרגיסטר הMSB להחליף מצב (מאפס לוגי לאחד הלוגיקה הדרושה למעבר ממצב למצב הולכת ומסתבכת ככל שגודל המכונה עולה כך שהשיטה בזבזנית יותר מבחינת לוגיקה אסינכרונית. גודל הלוגיקה האסינכרונית מגביל את קצב העבודה של המכונה. יש צורך בתוספת לוגיקה כדי לפענח את מצב המכונה (פענוח הספרה הבינארית ). יתרונות: מספר המצבים הלא מוגדרים קטן יחסית כך שהסיכוי שהמכונה תתקע במצב לא מוגדר קטן. - מכונה יציבה יותר. בעזרת קידוד גריי ניתן להקטין את הסיכוי למרוצים. -מכונה יציבה יותר. השיטה חסכונית יותר במספר הרגיסטרים. שיטה זו אופטימלית בעיקר למכונות קטנות שימוש ב FLOOR PLAN EDITOR למטרת PIN ASSIGNMENT שלבי העבודה.Assign Device.MaxPlus2 1. בחר את סוג הרכיב מתוך תפריט 2. היכנס ל Floorplan Editor באמצעות תפריט ה Floor Plan משמש להצגת המיקום הפיזי של התכנון על הרכיב. אנו מעונינים במיקום הרגליים החיצוניות ולכן נבחר מבט מבחוץ. 3. בחר מתוך תפריט Layout ב.Device view ה Floor Plan מסוגל להציג את המיקום הפיזי שבחר הקומפיילר או לאפשר למתכנן המיקום בעצמו. אנו מעוניינים באפשרות השניה. לקבוע את 4. בחר מתוך תפריט Layout ב.Current Assignment 92
כעת מופיע במרכז המסך שרטוט של הרכיב הכולל את מספרי הרגליים ותפקידם (רגלי מתח רגלי I/O רגליים שמורות וכד). בצדו העליון הימני של המסך מופיעים שמות הסיגנלים הרלוונטיים לתכנון (מתוך הקומפילציה האחרונה ). הסיגנלים מתחלקים לקבוצות: I רגלי כניסה. O רגלי מוצא B סיגנלים פנימיים שניתן להוציא מחוץ לרכיב (אין חובה להגדירם). 5. כדי לקבוע מיקום של סיגנל ברגל ספציפית יש לבחור את הסיגנל מתוך הרשימה ולגרור אותו באמצעות העכבר אל הרגל המבוקשת. חשוב להתאים את סוג הסיגנל לסוג הרגל Input) ל Input וכד.) כמו כן סיגנלים מיוחדים כגון שעון יש להתאים לרגליים המיועדות לשם ביצועים מקסימליים. 6. ניתן במקרה של טעות לגרור סיגנל מרגל לרגל ואפילו בחזרה לתיבה. 7. אין צורך לקבוע את מיקום כל הסיגנלים הקומפיילר ישלים את המלאכה. 8. בתום התהליך יש לסגור את העורך (השינויים נשמרים אוטומטית) ולהריץ קומפילציה כדי לתת תוקף להגדרות החדשות. ייתכן והקומפיילר לא יצליח להתאים את התכנון לדרישות (במיוחד בתכנונים עמוסים). 93
Reserved Pins לעיתים יש צורך להורות לקומפיילר לא להשתמש ברגליים מסוימות (Reserved) מסיבה שלמעגל יש שימוש אחר ברגליים אלה. כדי להגדיר רגליים אלה כשמורות נפעל באופן הבא: 1. נוסיף לתכנון המקורי רגלי דמה כמספר הרגליים שברצוננו לשמור. לדוגמא בקובץ טקסט : reserved [3..0] : input ; 2. נגדיר רגליים אלה באמצעות ה Floor Plan במיקום של הרגליים שברצוננו לשמור הקומפיילר יודיע במהלך הקומפילציה שהוא מצא הגדרה לרגליים שאין בהם שימוש ולכן הוא מתייחס אליהן כרגליים שמורות.Reserved 94
Linked Simulation כלי זה מאפשר להריץ סימולציה של תכנון הכולל יותר מרכיב PLD אחד. הרצת Linked- Simulation כוללת את השלבים הבאים: יש לתכנן ולהעביר קומפילציה לכל רכיב בנפרד. יש לייצר לכל רכיב יש להגדיר לכל רכיב Symbol ולחבר בין הרכיבים בקובץ גרפי. Chip שונה לפי השלבים הבאים: 1. בחר את הרכיב הראשון באמצעות העכבר. 2. בחר באופציה Pin/Location/Chip מתוך תפריט.Assign 3. תן שם לchip. 4. בחר באופציה 5. הקש אישור..Chip ל Device והתאם Assign Device 6. בצע את אותו תהליך לשאר הרכיבים. 7. ניתן באמצעות תפריט Assign Device ע"י אופציה Edit Chips לערוך שינויים סופיים בהגדרות. יש להעביר לקובץ התכנון הגרפי קומפילציה המיועדת ל Linked - Simulation באופן הבא: 1. היכנס למסך הקומפיילר באמצעות תפריט 2. היכנס לתפריט Processing ובחר באופציה 3. לחץ על לחצן Start כדי להתחיל בקומפילציה..MaxPlusII.Linked SNF Extractor בסיום הקומפילציה נוצר קובץ תזמון SNF הרכיבים. שבעזרתו יבצע הסימולטור את סימולצית שני כדי לחזור למצב הרגיל יש לבחור בתפריט Processing באופציה.Timing SNF Extractor 95
שימוש במודולי LPM בתכנון מודולי LPM הינם תכנונים מוכנים מראש של חברת ALTERA לפונקציות לוגיות נפוצות. יתרונן של פונקציות אלה בכך שהן גמישות לדרישות המתכנן וע"י פרמטרים ניתן להתאים אותן לתכנון הספציפי. גישת התכנון: 1. נשתמש בתפריט העזרה כדי לקבל מידע על סוגי ה LPM הקיימים. 2. חשוב מאד לעבור על קובץ העזרה כדי לקבל פרוט מירבי על כל מודול: הפונקציה אותה הוא מממש. כניסות ויציאות (הכרחיות ואופציונליות). הפרמטרים הקובעים את התנהגות הרכיב ומשמשים להתאמתו לתכנון. האם קיימות מספר גישות מימוש ואם כן מהם ביצועיו מבחינת מהירות או לחילופין כמות המשאבים שהוא צורך. לאחר שבחרנו ב LPM מתאים קיימות שתי גישות לייבא אותו אל התכנון: הגישה הגרפית: במידה ובחרנו להשתמש בעורך גרפי נפעל לפי השלבים הבאים: נבחר במודול LPM המבוקש מתוך ספריית הרכיבים ) Double-Click ). המודול מופיע על המסך בצורת Symbol ומייד נפתח חלון הפרמטרים שלו. בחלון זה ניתן לבצע התאמת המודול לתכנון באמצעות שליטה בפרמטרים כמו כן ניתן להוסיף כניסות אופציונליות. החלון מאפשר גישה נוחה לקובץ העזרה שם ניתן כל המידע הדרוש למתכנן. נקבע את הפרמטרים לפי בחירתנו. לאחר שביצענו את כל השינויים הדרושים נלחץ.OK המודול מופיע על המסך כאשר הפרמטרים העיקריים מופיעים בחלונית. ניתן כעת לחבר אותו לשאר התכנון! בכל עת ניתן לחזור ולשנות את הפרמטרים ע"י Double-Click על החלונית. 96
גישת :INCLUDE (בתוך (TDF יצירת קובץ Include הינה דרך לייבא מודול או תכנון כלשהו לקובץ טקסט. קובץ זה מכיל את כל הכניסות היציאות והפרמטרים של המודול החיצוני וניתן לקבוע את החיבורים והערכים בקובץ הטקסט. נפעל לפי השלבים הבאים: 1. יש להגדיר את קובץ ה INCLUDE בראשית קובץ הטקסט באמצעות הפקודה: לדוגמא: 2.יש להגדיר תחת חלק המשתנים לדוגמא: (Variable) שם פנימי למודול באופן הבא: 3. יש לקבוע ערכים לפרמטרים (אם יש צורך) ע"י הפקודה with באופן הבא: INCLUDE המודול ; INC.שם INCLUDE lpm_add_sub.inc ; VARIABLE ; שם המודול : שם_פנימי add : lpm_add_sub ; add : lpm_add_sub with (lpm_width=8); 4. כעת ניתן להשתמש במודול בחלק הלוגי של התכנון תחת שמו הפנימי לדוגמא: כלומר לכניסה clk של המודול add חיברנו סיגנל הנקרא add.clk=clock;.clock הערות: הקומפיילר יודיע על כל שגיאה או חריגה בטיפול במודול. פרמטרים שלא הוגדרו לעיתים מקבלים ערכי ברירת מחדל יש לשים לכך לב. כניסות אופציונליות שאינן בשימוש (כלומר אין אליהן התיחסות בקובץ) אינן ממומשות ע"י הקומפיילר (חיסכון במשאבים). ניתן להשתמש מספר פעמים באותו מודול תחת שמות פנימיים שונים (ניתן כמובן לקבוע לכל אחד פרמטרים שונים. 97